Topic · slow tests

Slow tests

Gist

Slow tests are cases whose active duration exceeds a threshold you named. Proof lists those with proof test slow. A Jest startup complaint is not that list. pytest-benchmark still owns the timer. Jama still authors.

proof test slow

Keep pytest marks if you already skip slow. Keep Jest if you already time the suite. Keep Jama if you author shalls. Proof will not count a suite wall clock as a named leaf.

01 · The unsigned minutes

A green suite can still take eight minutes.

You can merge a passing run and still not know which leaf held the lock.

The split is old. A suite duration is a wall clock. A slow-test row is a leaf whose body crossed the threshold. The words are not severity. A Jest process that spends most of its time starting is still a process. A Go test that sat in t.Parallel pause is not a slow body.

The green-suite hole lives on tests pass but bugs still ship. Integration evidence lives on integration testing. This page is the duration inventory: a parsable test-results artifact, or an honest skip. It is not a second flake lecture. Proof does not detect flaky tests.

proof test slow
proof test slow --threshold 10
proof audit --check slow_tests_clean
proof help slow_tests_clean

Until that review runs, CI can stay green while the local loop quietly costs minutes. Nobody has said which leaf is slow, or whether the clock counted pause time as body time.

02 · The exhibit

Same suite. A wall clock, or a leaf.

The suite can stay green. The threshold still needs a name. Click the tabs.

Wall clock

  • said 8 min, still green
  • leaf nobody named
  • pause counted as body
Suite still green

This push

No threshold. No artifact path. The merge still went green.

Unsigned minutes

Wall clock

Still a suite duration. Still not a leaf. Keep the Jest report if you want. CI does not read it.

Keep the report

Proof

  • Check slow_tests_clean
  • Command proof test slow
  • Leaf TestParseLarge 12.4s
Over threshold fails the check

Same suite. A wall clock, or a leaf. Click the tabs.

Surface What they do What Proof does What we lose
pytest SlowReporter Prints tests slower than a default 0.5s, or skips @pytest.mark.slow. Not this command. Proof reads a configured artifact, not pytest marks. No SlowReporter. Keep pytest.
Jest startup A process that feels slow because the runner started, not because a case ran. Not a startup timer. Proof names a leaf duration after pause is subtracted. No Jest profiler.
go test -json raw Counts pause time behind t.Parallel as if the body ran. Normalizes pause and cont before the threshold. Parent rows with leaf subtests are ignored. No replacement for go test. Keep the runner.
Flaky tests Pass and fail on the same code. Datadog, pytest, TeamCity own that SERP. Not this H1. Proof does not detect flakes. No flake quarantine. Wrong universe.
Jama / DOORS Author and store the programme. Jama still authors. Proof holds the duration as a row the audit can re-read. IBM DOORS stays a mention on Proof vs Jama. Not an ALM. Jama still authors.

The teaching graph is still a leaf with a duration. Enable both project.checks.test_results.report_path and project.checks.slow_tests.enabled or the check is a skip, not a pass. Write Go JSON to a per-process temp file and rename it into .proof/test-results/runtime/go-test.json. Two shells on the same path will look like malformed JSON.

proof test slow --threshold 10
proof test slow --format json
proof workflow check --stage implement --only tests_pass,slow_tests_clean --verbose
proof config get project.checks.slow_tests

If a leaf still appears after pause normalization, treat it as body time. Refactor the test, split the expensive path, or record a scoped waiver with a follow-up. max_allowed is how many slow leaves you tolerate. It is not a proof that the remaining tests are fast.

03 · The honest loss

Proof names the leaf. It does not speed the test.

A slow-test row is not a proof of the Go. Jama still authors.

Proof does not implement pytest-benchmark, Jest, or testthat SlowReporter. The check is optional. Unconfigured projects skip. A skip is not a green duration gate. A passing slow_tests_clean check means the artifact was parsed and the count of over-threshold leaves is within max_allowed. It is not a proof that the Go matches the shall. It is not a flake detector. We have not timed this against pytest or Jest on a frozen pack. The loss is named, not scored.

proof test affected is a different command. That planner picks which tests to rerun from traceability. Do not treat a clean slow list as an affected-test plan.

The green-suite H1 stays on tests pass but bugs still ship. Jama still authors.

04 · Nearby questions

What people type next.

What are slow tests? Same question. Same URL.

Is this flaky tests? No. Flakes pass and fail on the same code. Proof does not detect that. Datadog still owns the flake page.

Is this pytest SlowReporter? No. Keep the mark. Proof reads a configured artifact.

Does pause time count? Not for Go JSON. pause and cont are subtracted. A parent row with leaf subtests is ignored. The leaf is what fails.

Is Proof Jest? No. Jama still authors. Proof takes the authored threshold and asks CI whether a named leaf still crossed it.