flakestat

Some tests disagree
with themselves.

flakestat reads the JUnit XML your test runner already writes and tells you which tests are actually flaky, ranked, with a confidence level, and with the evidence behind every verdict.

flakestat report
VERDICT               SCORE  CONF  RUNS  PASS/FAIL  TEST
flaky                  0.62  high    20       14/6  test_demo::test_flaky_race
consistently-failing   0.00  high    20       0/20  test_demo::test_broken

1 flaky, 0 suspect, 1 consistently failing,
1 stable, 1 unscored (of 4 tests)
Local first

One static binary. No account, no server, no test data leaving your machine.

Any language

If your runner writes JUnit XML, and they all do, flakestat reads it.

Free at any volume

Recording CI runs costs no extra compute. No per-seat or per-run pricing.

Zero dependencies

The Go module has no require block. Nothing to audit but the tool.

Install and run in two commands#

install
brew install rowhitswami/tap/flakestat
hunt for flaky tests
flakestat hunt --runs 20 --junit 'reports/junit-{run}.xml' \
  -- pytest --junitxml='{junit}'

That runs your suite 20 times on unchanged code and reports what disagreed. Already have CI? Record the runs you already pay for instead: it catches environment-dependent flakes a local burst never will, at no extra compute.

Why the verdicts can be trusted#

Inconsistency, not failure

A test failing 100% of the time isn't flaky, it's broken. flakestat scores pass→fail→pass transitions, so a broken test scores zero and is reported separately.

Evidence is weighed

Disagreement on the same commit is proof; across commits it may be a regression someone already fixed, so it counts for less.

Confidence, not just a number

A score of 0.62 from three runs and from three hundred are different claims. A small sample can never reach high.

Only comparable things compared

Two outcomes are evidence of nondeterminism only if branch, platform and runtime were held constant.

See exactly how scoring works, including a live demo you can poke at.

Start where you are#

pytest →

Find flaky tests in a Python suite.

Jest →

Find flaky tests in a JS or TS suite.

go test →

Find flaky tests in a Go suite.

GitHub Actions →

Record every CI run and gate on regressions.