Runs frontend unit tests with coverage, analyzes coverage reports, and implements meaningful tests to increase coverage by ~0.2%. Use when you want to systematically improve frontend test coverage with high-value test cases.
Increase frontend unit test coverage by ~0.2% through meaningful tests that add real value.
Be fully autonomous — Do NOT stop or pause to ask for confirmation. Keep iterating (analyze → implement → verify) until the 0.2% coverage target is reached. If you encounter ambiguities about what to test, make a reasonable choice and proceed.
Step 1: Run tests with coverage
COVERAGE_JSON=1 make frontend-tests # ~5 min
Reports generated in frontend/coverage/:
coverage-summary.json - Per-file percentages (lines, branches, functions)coverage-final.json - Line-level data with uncovered line numbers (hit count 0 in s, f, b maps)Step 2: Analyze and prioritize
Read coverage-summary.json to find files with:
lib/src/components/utils/src/Skip: >97% coverage, auto-generated, .d.ts, test files.
Step 3: Implement tests (in subagent)
Launch a subagent to implement tests for each prioritized file. Provide the subagent with:
coverage-final.jsonThe subagent should:
cd frontend && yarn test path/to/Component.test.tsxStep 4: Verify and iterate
cd frontend && yarn test path/to/Component.test.tsx # Run new tests
COVERAGE_JSON=1 make frontend-tests # Measure progress
Repeat steps 2-4 until coverage improves by ≥0.2%, then run make check.
Step 5: Simplify, review, and address feedback
Once all tests pass and coverage target is met:
simplifying-local-changes subagent to clean up and simplify the code changes. Wait for completion.reviewing-local-changes subagent to review the changes. Wait for completion and read the review output.DO test: Conditional rendering, user interactions, prop variations, error handling, accessibility, edge cases (null, empty, max values).
DON'T test: Pass-through props, styling, library internals, implementation details, already well-covered code.
Coverage exclusions: Use /* istanbul ignore next */ sparingly for code that genuinely doesn't need testing. Always include a reason (e.g., /* istanbul ignore next -- defensive */):
/* istanbul ignore next -- browser-only */)/* istanbul ignore next -- defensive */)/* istanbul ignore next -- exhaustive */)<Component>.test.tsx/checking-changes after implementing tests