Zero-config test reporting for GitHub Actions
Drop in one line. Get readable test summaries, PR comments, and inline annotations on every run — for JUnit XML and CTRF JSON.
- uses: testglance/action@v1
if: always()Open source · MIT · Available on GitHub Marketplace
Your test framework needs to emit JUnit XML or CTRF JSON. Pick your stack:
Enable test reporting
vitest.config.ts:
// vitest.config.ts import { defineConfig } from 'vitest/config'; export default defineConfig({ test: { reporters: process.env.CI ? ['default', 'junit'] : ['default'], outputFile: { junit: 'test-results/vitest.xml', }, }, });
Everything you need from a CI test reporter
Built for the way GitHub Actions actually works — readable summaries, PR-aware comments, and a hard guarantee that we will never be the reason your build goes red.
Auto-discovers JUnit XML and CTRF JSON in the usual paths. One line in your workflow — no arguments needed.
Multi-job runs merged into a single sticky comment on the pull request, updated on every re-run.
Opt-in failure annotations rendered on the PR diff at the exact file and line number.
Configurable top-N ranking surfaces the tests dragging down your build.
Per-suite pass/fail/skip counts and durations so you can see which area of the code is hurting.
Glob patterns merge shards and parallel jobs into one coherent summary.
Exits 0 by design. No outbound calls in the core path. Your test step stays the source of truth.
See it on a real run
Rendered straight into the GitHub Actions run summary and the PR — no dashboard tab to open.



How TestGlance compares
The other GitHub Action test reporters are fine — we just wanted one that auto-detects, never fails CI, and handles both JUnit and CTRF out of the box.
| Feature | TestGlance | dorny/test-reporter | ctrf-io/github-test-reporter | mikepenz/action-junit-report | EnricoMi/publish-unit-test-result-action |
|---|---|---|---|---|---|
| Zero config | ✓ | — | — | — | — |
| JUnit + CTRF | Both | JUnit only | CTRF only | JUnit only | JUnit only |
| Failed test details | ✓ | ✓ | ✓ | ✓ | ✓ |
| Slowest tests | ✓ | — | — | — | — |
| Suite breakdown | ✓ | — | — | — | ✓ |
| Check runs | ✓ | ✓ | ✓ | ✓ | ✓ |
| PR comments | ✓ | — | ✓ | — | ✓ |
| Never fails CI | ✓ | — | Configurable | Configurable | Configurable |
| Multi-file merge | ✓ | ✓ | — | ✓ | ✓ |
| Auto-detect files | ✓ | — | — | — | — |
Sourced from the TestGlance Action README. Corrections welcome — open an issue.
Frequently Asked Questions
- What is the TestGlance GitHub Action?
- TestGlance is an open-source GitHub Action that parses your test reports (JUnit XML or CTRF JSON) and renders a readable summary on every run — including PR comments, inline annotations on failing lines, and the slowest tests. It is zero-config and never breaks your CI.
- How do I install it?
- Add a single step to your workflow: `uses: testglance/action@v1` with `if: always()` so it runs even when tests fail. It auto-discovers common report paths; you can override with `report-paths`.
- What test frameworks are supported?
- Any framework that emits JUnit XML or CTRF JSON — including Jest, Vitest, pytest, Go test, JUnit (Java), .NET, RSpec, PHPUnit, and Playwright.
- Will it fail my CI if something goes wrong?
- No. The Action exits 0 by design. It reports test results but never marks your workflow failed on its own — your test step remains the source of truth.
- Does it send data anywhere?
- No outbound calls in the core reporting path. The Action runs inside your GitHub Actions runner and writes to the run summary, PR comments, and annotations via the GitHub API.