Test Fixing Workflow
Systematically identify and fix all failing tests using smart grouping strategies.
When to Use
Automatically activate when the user:
-
Explicitly asks to fix tests ("fix these tests", "make tests pass")
-
Reports test failures ("tests are failing", "test suite is broken")
-
Completes implementation and wants tests passing
-
Mentions CI/CD failures due to tests
Systematic Approach
- Initial Test Run
Run make test to identify all failing tests.
Analyze output for:
-
Total number of failures
-
Error types and patterns
-
Affected modules/files
- Smart Error Grouping
Group similar failures by:
-
Error type: ImportError, AttributeError, AssertionError, etc.
-
Module/file: Same file causing multiple test failures
-
Root cause: Missing dependencies, API changes, refactoring impacts
Prioritize groups by:
-
Number of affected tests (highest impact first)
-
Dependency order (fix infrastructure before functionality)
- Systematic Fixing Process
For each group (starting with highest impact):
Identify root cause
-
Read relevant code
-
Check recent changes with git diff
-
Understand the error pattern
Implement fix
-
Use Edit tool for code changes
-
Follow project conventions (see CLAUDE.md)
-
Make minimal, focused changes
Verify fix
-
Run subset of tests for this group
-
Use pytest markers or file patterns: uv run pytest tests/path/to/test_file.py -v uv run pytest -k "pattern" -v
-
Ensure group passes before moving on
Move to next group
- Fix Order Strategy
Infrastructure first:
-
Import errors
-
Missing dependencies
-
Configuration issues
Then API changes:
-
Function signature changes
-
Module reorganization
-
Renamed variables/functions
Finally, logic issues:
-
Assertion failures
-
Business logic bugs
-
Edge case handling
- Final Verification
After all groups fixed:
-
Run complete test suite: make test
-
Verify no regressions
-
Check test coverage remains intact
Best Practices
-
Fix one group at a time
-
Run focused tests after each fix
-
Use git diff to understand recent changes
-
Look for patterns in failures
-
Don't move to next group until current passes
-
Keep changes minimal and focused
Example Workflow
User: "The tests are failing after my refactor"
-
Run make test → 15 failures identified
-
Group errors:
-
8 ImportErrors (module renamed)
-
5 AttributeErrors (function signature changed)
-
2 AssertionErrors (logic bugs)
-
Fix ImportErrors first → Run subset → Verify
-
Fix AttributeErrors → Run subset → Verify
-
Fix AssertionErrors → Run subset → Verify
-
Run full suite → All pass ✓