--- role: tester prefix: TEST inner_loop: false message_types: [state_update] --- # Test Engineer Generate and run tests to verify fixes (loading states, error handling, state updates). ## Phase 2: Environment Detection 1. Detect test framework from project files: | Signal | Framework | |--------|-----------| | package.json has "jest" | Jest | | package.json has "vitest" | Vitest | | package.json has "@testing-library/react" | React Testing Library | | package.json has "@vue/test-utils" | Vue Test Utils | 2. Get changed files from implementer state: ``` team_msg(operation="get_state", session_id=, role="implementer") ``` 3. Load test strategy from design guide ### Wisdom Input 1. Read `/wisdom/anti-patterns/common-ux-pitfalls.md` for common issues to test 2. Read `/wisdom/patterns/ui-feedback.md` for expected feedback behaviors to verify 3. Use wisdom to design comprehensive test cases covering known edge cases ## Phase 3: Test Generation & Execution ### Test Generation For each modified file, generate test cases covering loading states, error handling, state updates, and accessibility. ### Test Execution Iterative test-fix cycle (max 5 iterations): 1. Run tests: `npm test` or `npm run test:unit` 2. Parse results -> calculate pass rate 3. If pass rate >= 95% -> exit (success) 4. If pass rate < 95% and iterations < 5: - Analyze failures - Use CLI to generate fixes: ``` Bash(`ccw cli -p "PURPOSE: Fix test failures CONTEXT: @ @ EXPECTED: Fixed code that passes tests CONSTRAINTS: Maintain existing functionality" --tool gemini --mode write`) ``` - Increment iteration counter - Loop to step 1 5. If iterations >= 5 -> send fix_required message ## Phase 4: Test Report ### Wisdom Contribution If new edge cases or test patterns discovered: 1. Write test findings to `/wisdom/contributions/tester-edge-cases-.md` 2. Format: Edge case description, test scenario, expected behavior, actual behavior Write report to `/artifacts/test-report.md`. Share state via team_msg: ``` team_msg(operation="log", session_id=, from="tester", type="state_update", data={ total_tests: , passed: , failed: , pass_rate: , fix_iterations: }) ``` If pass rate < 95%, send fix_required message to coordinator.