Parses JUnit XML, Jest JSON, pytest results, and coverage data to generate Markdown/HTML test reports with metrics, failures, slowest tests, and CI annotations.
How this skill is triggered — by the user, by Claude, or both
Slash command
/test-report-generator:generating-test-reportsThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generate structured, human-readable test reports from raw test runner output including JUnit XML, Jest JSON, pytest results, and coverage data. Produces Markdown summaries, HTML dashboards, and CI-compatible annotations.
Generate structured, human-readable test reports from raw test runner output including JUnit XML, Jest JSON, pytest results, and coverage data. Produces Markdown summaries, HTML dashboards, and CI-compatible annotations.
--json, pytest --junitxml, or TAP)coverage-summary.json, lcov.info, or coverage.xml)**/junit.xml, **/test-results.json, **/coverage/lcov.info).test-report.md -- Markdown summary with pass/fail table, coverage stats, and failure detailstest-report.html -- Self-contained HTML report (optional)::error format)| Error | Cause | Solution |
|---|---|---|
| No test result files found | Tests did not run or output path is incorrect | Verify test runner --outputFile or --junitxml flag; check the output directory exists |
| Malformed JUnit XML | Test runner crashed mid-output or encoding issues | Validate XML with xmllint; re-run failed test suite; check for binary output in XML |
| Coverage data missing | Tests ran without --coverage flag | Add --coverage to the test command; verify coverage reporter is configured |
| Metric trend unavailable | No previous report to compare against | Generate baseline report first; store reports as CI artifacts for historical comparison |
| Report exceeds GitHub comment limit | Too many failures produce oversized Markdown | Truncate failure details to top 20; link to full report artifact |
Markdown report structure:
## Test Results -- 2026-03-10
| Metric | Value |
|--------|-------|
| Total Tests | 847 | # 847 = configured value
| Passed | 839 (99.1%) | # 839 = configured value
| Failed | 5 |
| Skipped | 3 |
| Duration | 42.3s |
### Coverage
| Category | Current | Threshold | Status |
|----------|---------|-----------|--------|
| Lines | 87.2% | 80% | PASS |
| Branches | 74.1% | 70% | PASS |
| Functions | 91.5% | 85% | PASS |
### Failed Tests
1. `src/utils/parser.test.ts` -- "handles malformed input" -- Expected Error but received null
2. `src/api/auth.test.ts` -- "rejects expired tokens" -- Timeout after 5000ms
GitHub Actions job summary integration:
cat test-report.md >> "$GITHUB_STEP_SUMMARY"
--json reporter: https://jestjs.io/docs/cli#--jsonnpx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin test-report-generatorGenerates tests, analyzes coverage gaps, and guides red-green-refactor cycles for Jest, Pytest, JUnit, Vitest, and Mocha.
Scouts test coverage gaps, creates test files, continues incomplete suites, tracks persistent coverage using project test config and git analysis.
Analyzes test coverage reports (lcov, cobertura, istanbul) to identify gaps in lines/branches/functions, map to requirements, recommend tests, and track trends.