Duvaxa

Developer Tools · Flaky test finder

FlakeLedger

Proof, price and a fix for every flaky test.

Reads the test results your CI already keeps, proves which tests are flaky, prices what they cost, explains why they fail, and stops them blocking merges while real failures still do.

Teams re-running CI several times a dayQA leads with large Playwright, Cypress or pytest suitesEngineering managers who want the cost in numbers
flake-ledger · example
$ flake-ledger analyze ci-runs --repo .
24 tests over 60 runs (29.5 days): 5 flaky (5 proven), 1 broken; about $490 a month
flaky (proven) 15 fails $226 checkout › applies coupon owner @acme/web
passed on retry in 15 runs; UI timing
flaky (proven) 10 fails $151 test_payment_webhook owner @acme/payments
Broken, not flaky: test_csv_export since 4 runs ago
Real run on the built-in demo: 60 runs of a shop's pytest and Playwright tests.
ReadsJUnit XML from any runner
ProvesSame-commit fail and pass
PricesRe-runs and dev time
WritesQuarantine flags, issues

The problem

Everyone knows some tests are flaky, but not which ones for sure, how often, or what they cost. So teams re-run CI until it's green, real failures get waved through as "probably flaky", and the same five tests waste hours every week.

What it does

01

Reads JUnit XML from pytest, Jest, Vitest, Playwright, Cypress, Go, Maven, Gradle and .NET, fetched straight from past GitHub Actions runs or GitLab pipelines

02

Proves flakiness: the same test failed and passed on the same commit, or passed on a retry inside one run

03

Keeps broken tests apart: a test that fails every run since a commit is a real failure and is never hidden

04

Groups the error messages and names the likely cause with its usual fix: UI timing, timeouts, shared data, network, ports, clocks or runner limits

05

Prices each flaky test in re-runs and developer time, per month

06

Writes the flags that quarantine them for pytest, Go, Jest, Playwright or Maven, and one issue per test with its owner from CODEOWNERS

07

A CI gate that passes when the only failures are known flaky tests and blocks on everything else

08

Marks each flaky test in the pull request, on the line that defines it, with its evidence and likely fix

How it works

  1. Fetch the last 100 runs' test results from GitHub Actions
  2. Get the flaky tests with proof, cost, cause and owner
  3. Quarantine them, fix the costliest first, and gate CI on real failures

Works with

GitHub ActionsGitLab CIpytestJestVitestPlaywrightCypressGoMavenGradleCODEOWNERS

Runs in your CI

GitHub Actions workflow step
# Weekly flaky-test report
flake-ledger fetch $REPO --workflow tests.yml --artifact 'junit-*' --limit 100
flake-ledger analyze ci-runs --repo . --ledger flake-ledger.json --html flaky.html
# In the test job: pass when only known flaky tests failed
flake-ledger gate test-results/ --ledger flake-ledger.json
Licensed customers get the action or command-line tool installed in their own organisation; it runs on your runners, so your code and plans never leave them. The command-line tools run in GitLab CI the same way.

Your data

  • Runs in your CI or on your laptop; test results are not uploaded.
  • Reads GitHub with your own read-only gh login.
  • Broken tests are reported, never quarantined.

Who it's for

Teams re-running CI several times a dayQA leads with large Playwright, Cypress or pytest suitesEngineering managers who want the cost in numbers

Questions

Don't retries already handle flaky tests?

Retries hide them and you still pay for every re-run. FlakeLedger measures them, proves which are flaky, and tells you which to fix first.

Could it hide a real failure?

No. A test failing every run since a commit is reported as broken and never quarantined, and the gate only lets known flaky tests through.

Related

Often used with FlakeLedger

See FlakeLedger on your own data

A 30-minute call. We run the product on your export, repository or document and walk you through the results.

Book a demo