Test reports your whole team can actually use

Upload from any CI. Get flaky detection, failure clusters, health scores, and coverage trends. Access from your dashboard, CLI, or AI agent via MCP.

Works with Playwright, Jest, Vitest, pytest, and any JUnit XML reporter.

Or install the CLI to get started from your terminal.

CLI wraps your test command and enriches output. Same data available via MCP.

What Gaffer does

Share results via link

Upload test reports from any CI provider. Generate public links with expiration controls — no account required to view. Track everything in your team dashboard.

Find flaky and failing tests faster

See flip rates, P95 durations, and root cause clusters. Identify which tests flip between pass and fail, and which failures share the same underlying cause.

Coverage tracking with PR gating

Track line, branch, and function coverage over time. Set thresholds and block PRs via GitHub commit status when coverage drops below your target.

Track health over time

Monitor pass rates, test counts, and suite health. Spot regressions before they compound. Export to OpenTelemetry for your existing observability stack.

Works with everything

Playwright, Jest, Vitest, Pytest, JUnit XML, CTRF — and any CI provider. One CLI command to upload. No agents to install.

AI agents act on intelligence, not raw output

Give Claude Code, Cursor, or any MCP client structured access to your test history. Agents query flaky tests, failure clusters, and coverage gaps — then fix the code.

You can't fix what you don't measure
- test runs ingested
|
- tests analyzed
Playwright Playwright Vitest Vitest Pytest Pytest Jest Jest JUnit JUnit PHP PHP XML XML JSON JSON .NET .NET RSpec RSpec