docs: добавлен TDD workflow в AGENTS.md и tests/AGENTS.md

- blog/AGENTS.md: раздел TDD Development Workflow с lifecycle фичи
- tests/AGENTS.md: правила TDD для тестов (RED/GREEN/REFACTOR, TC-ID формат)
- Описаны уровни тесткейсов: TC-UNIT, TC-API, TC-WEB, TC-E2E
- Добавлены правила коммита во все подпроекты
This commit is contained in:
2026-05-07 21:18:52 +03:00
parent 46cc06b596
commit 4dede58d8f
2 changed files with 135 additions and 0 deletions

View File

@@ -61,12 +61,66 @@ Agents MUST consult these files before adding or modifying tests.
- **Mock pattern**: `Mock(spec=Interface)` or `MagicMock(spec=Interface)` — project uses both inconsistently
- **Async mocking**: Use `AsyncMock()` for async methods (commit, rollback, repo methods)
## TDD Test Case Workflow
### Adding a Feature Test
1. **User triggers**: `"начнем новую фичу"`
2. **Agent analyzes**: существующий код, затронутые слои, рекомендует тесткейсы
3. **User agrees**: подтверждает или корректирует набор тесткейсов
4. **Agent creates**:
- `pyaqa/feature/{feature-name}.md` — артефакт фичи
- Обновляет `FEATURE_*.md` — добавляет новые TC
5. **Agent writes tests**: в порядке TC-UNIT → TC-API → TC-WEB → TC-E2E
6. **Agent marks**: в артефакте статус "tests-ready"
7. **Agent implements**: фичу по слоям (Domain → Application → Infra → Presentation)
8. **Agent verifies**: линтеры, тесты, coverage
9. **User accepts**: подтверждает приемку
10. **Agent commits**: во все затронутые проекты
### Test Case Assignment Rules
- **TC-UNIT-NNN**: unit тесты (domain, use cases)
- **TC-API-NNN**: API endpoint тесты
- **TC-WEB-NNN**: Web route тесты (HTML responses, redirects)
- **TC-E2E-NNN**: End-to-end тесты (Playwright)
Нумерация внутри каждого уровня последовательная. Пропуски допустимы только при удалении устаревших тестов.
### Test Case Format
```markdown
### TC-UNIT-NNN: Test Name
- **Type:** Positive | Negative | Policy
- **Layer:** Unit | API | Web | E2E
- **File:** `path/to/test.py::TestClass::test_method`
- **Expected:** Что ожидается
- **Last Verified:** YYYY-MM-DD
```
### Red → Green → Refactor
- **RED**: Написать тест, убедиться что он падает
- **GREEN**: Написать минимальную реализацию, тест проходит
- **REFACTOR**: Улучшить код, тесты остаются зелеными
### Test Coverage Requirements
| Layer | Minimum Coverage | Notes |
|-------|-----------------|-------|
| Unit | 80% | Domain + Application |
| API | 70% | Endpoints + deps |
| Web | 60% | Routes + handlers |
| E2E | Cover all AC | Все acceptance criteria |
## Anti-Patterns
- Do NOT add `@pytest.mark.asyncio` to `async def` tests (auto mode handles it)
- Do NOT use bare `Mock()` without `spec=` for interface mocks
- Do NOT delete tests to "fix" coverage — this is grounds for rollback
- Do NOT put fixtures in `__init__.py` — use `conftest.py`
- Do NOT write implementation before tests (no TDD bypass)
- Do NOT skip RED phase (tests must fail before implementation)
## Notes