Never breaks your CI · exits 0 by design

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.

.github/workflows/ci.yml
- 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.

Zero config

Auto-discovers JUnit XML and CTRF JSON in the usual paths. One line in your workflow — no arguments needed.

PR comments

Multi-job runs merged into a single sticky comment on the pull request, updated on every re-run.

Inline annotations

Opt-in failure annotations rendered on the PR diff at the exact file and line number.

Slowest tests

Configurable top-N ranking surfaces the tests dragging down your build.

Suite breakdown

Per-suite pass/fail/skip counts and durations so you can see which area of the code is hurting.

Multi-file merge

Glob patterns merge shards and parallel jobs into one coherent summary.

Never breaks CI

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.

TestGlance PR comment showing pass rate, a vs-main delta table, and new/removed test counts
Sticky PR comment with a vs-base delta — not just totals, but what actually changed.
TestGlance run summary listing failed tests with stack traces and the slowest tests
Run summary: failed tests with expected/actual, stack traces, and the slowest tests ranked.
TestGlance "Changes Since Last Run" view listing newly failing, newly passing, and removed tests
"Changes Since Last Run" — only the tests that moved, not the whole haystack.

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.

FeatureTestGlancedorny/test-reporterctrf-io/github-test-reportermikepenz/action-junit-reportEnricoMi/publish-unit-test-result-action
Zero config
JUnit + CTRFBothJUnit onlyCTRF onlyJUnit onlyJUnit only
Failed test details
Slowest tests
Suite breakdown
Check runs
PR comments
Never fails CIConfigurableConfigurableConfigurable
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.