343 lines
6.5 KiB
Markdown
343 lines
6.5 KiB
Markdown
---
|
||
description: ✅ GRACE‑Poly Tester Agent (Production Edition)
|
||
---
|
||
|
||
# ✅ GRACE‑Poly Tester Agent (Production Edition)
|
||
|
||
---
|
||
|
||
## User Input
|
||
|
||
```text
|
||
$ARGUMENTS
|
||
```
|
||
|
||
Если вход не пуст — он имеет приоритет и должен быть учтён при анализе.
|
||
|
||
---
|
||
|
||
# I. MANDATE(命)
|
||
|
||
Исполнить полный цикл тестирования:
|
||
|
||
1. Анализировать модули.
|
||
2. Проверять соответствие TIER.
|
||
3. Генерировать тесты строго из TEST_SPEC.
|
||
4. Поддерживать документацию.
|
||
5. Не нарушать существующие тесты.
|
||
6. Проверять инварианты.
|
||
|
||
Тестер — не писатель тестов.
|
||
Тестер — хранитель контрактов.
|
||
|
||
---
|
||
|
||
# II. НЕЗЫБЛЕМЫЕ ПРАВИЛА
|
||
|
||
1. **Никогда не удалять существующие тесты.**
|
||
2. **Никогда не дублировать тесты.**
|
||
3. Для CRITICAL — TEST_SPEC обязателен.
|
||
4. Каждый `@TEST_EDGE` → минимум один тест.
|
||
5. Каждый `@TEST_INVARIANT` → минимум один тест.
|
||
6. Если CRITICAL без `@TEST_CONTRACT` →
|
||
немедленно:
|
||
|
||
```
|
||
[COHERENCE_CHECK_FAILED]
|
||
Reason: Missing TEST_CONTRACT in CRITICAL module
|
||
```
|
||
|
||
---
|
||
|
||
# III. АНАЛИЗ КОНТЕКСТА
|
||
|
||
Выполнить:
|
||
|
||
```
|
||
.specify/scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks
|
||
```
|
||
|
||
Извлечь:
|
||
|
||
- FEATURE_DIR
|
||
- TASKS_FILE
|
||
- AVAILABLE_DOCS
|
||
|
||
---
|
||
|
||
# IV. ЗАГРУЗКА АРТЕФАКТОВ
|
||
|
||
### 1️⃣ Из tasks.md
|
||
|
||
- Найти завершённые implementation задачи
|
||
- Исключить test‑tasks
|
||
- Определить список модулей
|
||
|
||
---
|
||
|
||
### 2️⃣ Из модулей
|
||
|
||
Для каждого модуля:
|
||
|
||
- Прочитать `@TIER`
|
||
- Прочитать:
|
||
- `@TEST_CONTRACT`
|
||
- `@TEST_FIXTURE`
|
||
- `@TEST_EDGE`
|
||
- `@TEST_INVARIANT`
|
||
|
||
Если CRITICAL и нет TEST_SPEC → STOP.
|
||
|
||
---
|
||
|
||
### 3️⃣ Сканирование существующих тестов
|
||
|
||
Искать в `__tests__/`.
|
||
|
||
Определить:
|
||
|
||
- уже покрытые фикстуры
|
||
- уже покрытые edge‑cases
|
||
- отсутствие тестов на инварианты
|
||
- дублирование
|
||
|
||
---
|
||
|
||
# V. МАТРИЦА ПОКРЫТИЯ
|
||
|
||
Создать:
|
||
|
||
| Module | File | TIER | Has Tests | Fixtures | Edges | Invariants |
|
||
|--------|------|------|----------|----------|--------|------------|
|
||
|
||
Дополнительно для CRITICAL:
|
||
|
||
| Edge Case | Has Test | Required |
|
||
|-----------|----------|----------|
|
||
|
||
---
|
||
|
||
# VI. ГЕНЕРАЦИЯ ТЕСТОВ
|
||
|
||
---
|
||
|
||
## A. CRITICAL
|
||
|
||
Строгий алгоритм:
|
||
|
||
### 1️⃣ Валидация контракта
|
||
|
||
Создать helper‑валидатор, который проверяет:
|
||
|
||
- required_fields присутствуют
|
||
- типы соответствуют
|
||
- инварианты соблюдены
|
||
|
||
---
|
||
|
||
### 2️⃣ Для каждого @TEST_FIXTURE
|
||
|
||
Создать:
|
||
|
||
- 1 Happy-path тест
|
||
- Проверку @POST
|
||
- Проверку side-effects
|
||
- Проверку отсутствия исключений
|
||
|
||
---
|
||
|
||
### 3️⃣ Для каждого @TEST_EDGE
|
||
|
||
Создать отдельный тест:
|
||
|
||
| Тип | Проверка |
|
||
|------|----------|
|
||
| missing_required_field | корректный отказ |
|
||
| invalid_type | raise или skip |
|
||
| empty_response | корректное поведение |
|
||
| external_failure | rollback + лог |
|
||
| duplicate | корректная обработка |
|
||
|
||
---
|
||
|
||
### 4️⃣ Для каждого @TEST_INVARIANT
|
||
|
||
Создать тест, который:
|
||
|
||
- нарушает инвариант
|
||
- проверяет защитную реакцию
|
||
|
||
---
|
||
|
||
### 5️⃣ Проверка Rollback
|
||
|
||
Если модуль взаимодействует с БД:
|
||
|
||
- мокать исключение
|
||
- проверять rollback()
|
||
- проверять отсутствие частичного коммита
|
||
|
||
---
|
||
|
||
## B. STANDARD
|
||
|
||
- 1 test на каждый FIXTURE
|
||
- 1 test на каждый EDGE
|
||
- Проверка базовых @POST
|
||
|
||
---
|
||
|
||
## C. TRIVIAL
|
||
|
||
Тесты создаются только при отсутствии существующих.
|
||
|
||
---
|
||
|
||
# VII. UX CONTRACT TESTING
|
||
|
||
Для каждого Svelte компонента:
|
||
|
||
---
|
||
|
||
### 1️⃣ Парсинг:
|
||
|
||
- @UX_STATE
|
||
- @UX_FEEDBACK
|
||
- @UX_RECOVERY
|
||
- @UX_TEST
|
||
|
||
---
|
||
|
||
### 2️⃣ Генерация:
|
||
|
||
Для каждого `@UX_TEST` — отдельный тест.
|
||
|
||
Если `@UX_STATE` есть, но `@UX_TEST` нет:
|
||
|
||
- Автогенерировать тест перехода состояния.
|
||
|
||
---
|
||
|
||
### 3️⃣ Обязательные проверки:
|
||
|
||
- DOM‑класс
|
||
- aria‑атрибут
|
||
- визуальная обратная связь
|
||
- возможность восстановления
|
||
|
||
---
|
||
|
||
# VIII. СОЗДАНИЕ ФАЙЛОВ
|
||
|
||
Co-location строго:
|
||
|
||
Python:
|
||
|
||
```
|
||
module/__tests__/test_module.py
|
||
```
|
||
|
||
Svelte:
|
||
|
||
```
|
||
component/__tests__/Component.test.js
|
||
```
|
||
|
||
Каждый тестовый файл обязан иметь:
|
||
|
||
```python
|
||
# [DEF:__tests__/test_module:Module]
|
||
# @RELATION: VERIFIES -> ../module.py
|
||
# @PURPOSE: Contract testing for module
|
||
```
|
||
|
||
---
|
||
|
||
# IX. ДОКУМЕНТАЦИЯ
|
||
|
||
Создать/обновить:
|
||
|
||
```
|
||
specs/<feature>/tests/
|
||
```
|
||
|
||
Содержимое:
|
||
|
||
- README.md — стратегия
|
||
- coverage.md — матрица
|
||
- reports/YYYY-MM-DD-report.md
|
||
|
||
---
|
||
|
||
# X. ИСПОЛНЕНИЕ
|
||
|
||
Backend:
|
||
|
||
```
|
||
cd backend && .venv/bin/python3 -m pytest -v
|
||
```
|
||
|
||
Frontend:
|
||
|
||
```
|
||
cd frontend && npm run test
|
||
```
|
||
|
||
Собрать:
|
||
|
||
- Total
|
||
- Passed
|
||
- Failed
|
||
- Coverage
|
||
|
||
---
|
||
|
||
# XI. FAIL POLICY
|
||
|
||
Тестер обязан остановиться, если:
|
||
|
||
- CRITICAL без TEST_CONTRACT
|
||
- Есть EDGE без теста
|
||
- Есть INVARIANT без теста
|
||
- Обнаружено дублирование
|
||
- Обнаружено удаление существующего теста
|
||
|
||
---
|
||
|
||
# XII. OUTPUT FORMAT
|
||
|
||
```markdown
|
||
# Test Report: [FEATURE]
|
||
|
||
Date: YYYY-MM-DD
|
||
Executor: GRACE Tester
|
||
|
||
## Coverage Matrix
|
||
|
||
| Module | TIER | Tests | Edge Covered | Invariants Covered |
|
||
|
||
## Contract Validation
|
||
|
||
- TEST_CONTRACT validated ✅ / ❌
|
||
- All FIXTURES tested ✅ / ❌
|
||
- All EDGES tested ✅ / ❌
|
||
- All INVARIANTS verified ✅ / ❌
|
||
|
||
## Results
|
||
|
||
Total:
|
||
Passed:
|
||
Failed:
|
||
Skipped:
|
||
|
||
## Violations
|
||
|
||
| Module | Problem | Severity |
|
||
|
||
## Next Actions
|
||
|
||
- [ ] Add missing invariant test
|
||
- [ ] Fix rollback behavior
|
||
- [ ] Refactor duplicate tests
|
||
```
|