Skip to main content

Failures

Testspace tracks each failing test case from one Result to the next, so you can tell a new failure from a flaky or a consistent one. How Tracking Works gives the rules. A Result's Failures tab lists its failing and tracked cases, its Issues tab groups them by the issues they reference, and Triage lets you add notes, link issues and exempt a failure.

Tracking States​

A tracked failure is in one of these states:

MarkStateMeans
● redNewfailing for the first time, or failing again after being fixed (resolved) or after it stopped running (retired)
◐ purpleFlakyswitching between passing and failing (see What Flaky Means)
● grayConsistentfailing consistently
○ gray ringExemptleft out of the pass rate and Health, whatever its state (see Exemptions)
(none)missinga tracked failure that didn't run in this Result: its Status reads missing, and its Tracking shows its state grayed

Tracking Marks​

The marks appear wherever tracking is shown: the Tracking column of the Suite tree and the Results list (as counts, e.g. ● 2 new ◐ 1 flaky 1 missing), and the Tracking column of Failures and Suite Details (one state per case).

Recent Runs​

Failures, Suite Details and the Triage dialog show a case's recent runs as a row of squares, newest first; the newest is wider. Hover a square for its status.

SquareStatus
✓ green, ✓passed
✗ red, ✗failed
! red, !blocked
• light gray, •not applicable
 hollowuntested
 dashed outlinemissing from that Result
✗ dark grayexempt: the run's symbol on gray

How Tracking Works​

Testspace tracks each failing test case from Result to Result, until it really passes five times in a row (in Manual testing, once). Besides the states above, it keeps two internal ones: Passing (failing before, passing now, but not five times yet) and Resolved (passed five times; tracking ends). A tracked failure stops being listed when it is resolved, or retired because its test stopped running.

Failed and blocked are one kind of failure. A case that fails and is then blocked stays Consistent.

An exempt failure is still tracked, but left out of Health; see Exemptions.

What Flaky Means​

Testspace decides Flaky from a case's status in each Result, not from a rate or from retries within a run: a failing case is Flaky when it passes and then fails again before it has passed five times in a row. Fail, pass, fail is enough.

  • It stays Flaky until it passes five times in a row (Resolved) or fails five times in a row (Consistent again).
  • There is no time window and no percentage: three Results or thirty, the order of passes and failures is all that counts.
  • Untested and not applicable runs don't count either way, and failed and blocked count alike.
  • A case that has never failed isn't tracked, so it can't be Flaky.
  • Manual testing has no Flaky: a tester's pass resolves a failure at once (In Manual Testing).

What Counts as a Pass​

A failure is resolved after five passes in a row. Only a real pass counts: untested and not applicable runs are no evidence either way, so the failure's state holds, and they don't break a run of passes either.

When a Tracked Test Doesn't Run​

When a tracked test that is still failing (Consistent or Flaky) doesn't run, its state holds. The case's Status reads missing and its Tracking shows its state grayed (hover: Didn't run in this result; Flaky from earlier runs); its Suite, the Results list and the Result's header count it as N missing. An exempt one is missing too. Its Cause says when it last ran, e.g. last ran Oct 26 · failed; expanded, the case links to that Result, and Suite Details shows the same line. A New failure always ran: it lasts only the Result where it failed.

  • In a subset, a missing test doesn't count toward anything: subsets often leave out tests on purpose.
  • A test missing from 5 Results in a row, over at least 14 days, is retired (subsets, and Invalid Results, don't count toward the 5): tracking ends, and it is no longer listed. Retired is not counted as a fix. Its exemption, notes and issue links are cleared, and if it fails again it starts over as New.
  • A Suite replaced in the same folder (its source file ran under another name in a complete Result, such as a renamed Suite) retires its tracked tests at once, without waiting.

The 14 days protect Suites that run less often than every Result (nightly, or on one platform only): they run again within that time, so their tests aren't retired however often the Space receives Results.

note

Insights' Workflow Efficiency counts a retired failure as one that occurred and was never resolved.

In Manual Testing​

A tester's pass is a verification, so in Manual testing a failing case is Resolved as soon as it passes. A Manual case is therefore New or Consistent while failing, and never Passing or Flaky. Untested is still no evidence, and within one session the last run counts.

Deleting a spec retires its failures at the next session; removing a case from a spec retires its failures at the next session that includes the spec. Turning Manual testing off retires every spec's tracked failures at the next Result.

Failures Tab​

Open the Failures tab from any Result, on the Current tab or from the Results tab. Its count is the number of failed and blocked cases. When nothing fails but tracked failures didn't run, the count is gray and names them (e.g. 2 flaky); when there is nothing to show, the tab is muted.

The Failures tab

A filter bar narrows the list:

FilterOptions
Organize byCase (the default) or Suite
Failure typeAny (every tracked case, including those that didn't run), or Failed, Blocked or both
Searchby case name or path (e.g. suite/case); organized by Suite, by Suite path
Trackingchips for New, Flaky, Consistent and Exempt, each with its count; Clear all clears them

New, Flaky and Consistent are selected when the Result has cases in that state; Exempt isn't. A chip that isn't selected still shows its count, and an empty list says which unselected chips have cases.

When some failing cases have Triage notes or issues, a line says how many, e.g. 3 of 12 failing cases have notes or issues.

By Case​

One row per case. Each column sorts when you click its name.

ColumnShows
Namethe folder path, Suite and case name; below, the start of its Triage notes
Statusthe case's status (an exempt case's is struck through), the Triage pencil, and its linked issues
Causethe first line of the failure message; hover for more. No failure message reported when the report has none, and Expected failure (pytest xfail) for an xfail reported without output.
Trackingthe case's tracking state, or missing
Durationthe case's duration

Click a case's name to expand it:

  • Recent runs, newest first, as squares
  • View full history, which opens the case's history page
  • Open spec run, for a Manual case
  • the case's output and annotations, or a note that it didn't run in this Result

By Suite​

One row per Suite with failing or tracked cases, with the Suite tree's columns: Name, Status, Tracking and Duration. Click a Suite to open its Suite Details, listing the cases that match the filters.

From the All tests tab, a Suite's or folder's failed, blocked or exempt count opens Failures by Case, searched to that Suite or folder.

Large Results​

Filtering isn't available for a Result with more than 5,000 failed, blocked and exempt cases (such a Result is Invalid): the Failures tab lists its failing cases without the filter bar. It isn't available either while a Result is still in progress.

Issues Tab​

A Result's Issues tab groups its failures by the issues they reference. See Issues Tab.

Triage​

On the Space's active Result (the one Current shows), a pencil follows the status of each tracked failure, in Failures, Issues and Suite Details, from the Current tab or the Results tab. A filled pencil means the case is already triaged; hover it to see what is set.

Click the pencil to open the Triage dialog. Its top shows the case's tracking state, recent runs, and how long it has been tracked. Below:

FieldDoes
Exemptsuppress/ignore this failure: exempts the case (see Exemptions). Not shown for a Manual case.
Issueslinks issues: paste an issue's URL, choose Push new issue to create one in the Project's issue tracker, or Add Comment to an issue already linked (Issues)
Notesa Markdown editor for notes on the failure; issue URLs typed here are added to Issues

Pushing issues needs an enabled, connected issue tracker (GitHub, GitLab, Bitbucket or Jira) and a Space that isn't a sandbox; otherwise the select is disabled and its tooltip says why.

Notes and issues stay with the failure while it is tracked, and show in Failures for later Results. Changing the notes or the exemption also adds a comment to the Result's Note.

Triage

Exemptions​

An exempt case keeps its real status, shown struck through, but is left out of the pass rate and Health. It is counted as N exempt beside the other counts; that count opens the exempt cases in Failures. Exempt cases aren't in the New, Flaky and Consistent chips; select Exempt to list them.

A failure becomes exempt in two ways:

Set byLasts
Triage, the Exempt checkboxuntil you clear it, or the failure is resolved or retired
pytest xfail (an expected failure), automatically on importwhile the test keeps its xfail marker; a run without the marker ends it. Triage can't change it (Exemption control is managed in the source code).

When a failure is resolved or retired, its tracking ends along with its exemption, notes and issue links; if it fails again, it starts over as New.