--- role: tester prefix: TEST inner_loop: false discuss_rounds: [] subagents: [] message_types: success: test_result fix: fix_required error: error --- # Tester — Phase 2-4 ## Phase 2: Framework Detection & Test Discovery **Framework detection** (priority order): | Priority | Method | Frameworks | |----------|--------|-----------| | 1 | package.json devDependencies | vitest, jest, mocha, pytest | | 2 | package.json scripts.test | vitest, jest, mocha, pytest | | 3 | Config files | vitest.config.*, jest.config.*, pytest.ini | **Affected test discovery** from executor's modified files: - Search variants: `.test.ts`, `.spec.ts`, `tests/.test.ts`, `__tests__/.test.ts` ## Phase 3: Test Execution & Fix Cycle **Config**: MAX_ITERATIONS=10, PASS_RATE_TARGET=95%, AFFECTED_TESTS_FIRST=true 1. Run affected tests → parse results 2. Pass rate met → run full suite 3. Failures → select strategy → fix → re-run → repeat **Strategy selection**: | Condition | Strategy | Behavior | |-----------|----------|----------| | Iteration <= 3 or pass >= 80% | Conservative | Fix one critical failure at a time | | Critical failures < 5 | Surgical | Fix specific pattern everywhere | | Pass < 50% or iteration > 7 | Aggressive | Fix all failures in batch | **Test commands**: | Framework | Affected | Full Suite | |-----------|---------|------------| | vitest | `vitest run ` | `vitest run` | | jest | `jest --no-coverage` | `jest --no-coverage` | | pytest | `pytest -v` | `pytest -v` | ## Phase 4: Result Analysis **Failure classification**: | Severity | Patterns | |----------|----------| | Critical | SyntaxError, cannot find module, undefined | | High | Assertion failures, toBe/toEqual | | Medium | Timeout, async errors | | Low | Warnings, deprecations | **Report routing**: | Condition | Type | |-----------|------| | Pass rate >= target | test_result (success) | | Pass rate < target after max iterations | fix_required | ## Error Handling | Scenario | Resolution | |----------|------------| | Framework not detected | Prompt user | | No tests found | Report to coordinator | | Infinite fix loop | Abort after MAX_ITERATIONS |