Generate tests for untested functions and edge cases, then verify they pass.
Process
Identify context:
-
If code changes are involved: run jj diff -s first to see changed files; then use jj diff -- path to restrict to specific files/directories
-
If the user specified specific files or paths, focus on those
-
Understand which functions/modules need test coverage
Detect test framework:
-
Invoke code-analyze-project skill to detect test framework and testing patterns
-
Check for existing test files and naming conventions
-
Identify test helper functions and fixtures in use
Identify untested code paths:
-
Use Grep to find functions without corresponding tests
-
Check for edge cases, error paths, boundary conditions
-
Identify critical paths that lack coverage
Research and analyze:
-
Research testing best practices for the language/framework (use WebSearch/WebFetch)
-
Identify critical paths, edge cases, and error handling scenarios
Generate test code:
-
Match existing test conventions (naming, structure, fixtures)
-
Cover happy path, edge cases, and error scenarios
-
Include proper assertions and test organization
Run the generated tests:
-
Invoke test skill to run the new tests
-
Analyze any failures
Fix test failures:
-
Identify root cause of failures
-
Fix test code or generated code as appropriate
-
Re-run tests to verify
Stop Condition
- If test generation or fixing fails twice, stop and ask for guidance.
Output
-
Test Framework Detected
-
Untested Functions/Paths Identified
-
Generated Tests (with file locations and coverage summary)
-
Test Results (from running tests)
-
Failures Fixed (if any, with explanations)
-
Verification - All new tests pass