Parses JUnit XML, Jest JSON, pytest results, and coverage data to generate Markdown/HTML test reports with metrics, failures, slowest tests, and CI annotations.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin test-report-generatorThis skill is limited to using the following tools:
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.
Runs coverage tools like pytest-cov and istanbul/c8 via Bash to analyze test coverage, identify gaps, and provide actionable test recommendations.
Scouts test coverage gaps, creates test files, continues incomplete suites, tracks persistent coverage using project test config and git analysis.
Generates tests for Jest, Pytest, JUnit, Vitest, Mocha from code/requirements; analyzes LCOV/JSON/XML coverage reports for gaps; guides red-green-refactor TDD workflows with validation and quality scoring.
Share bugs, ideas, or general feedback.
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#--json