Skip to content

Quarantine tests

Quarantine lets you keep selected tests running while you investigate a known failure or flaky test. When a quarantined test fails, the suite does not fail. Quarantined tests run once without retries. Endform still records their actual results and metrics.

Use a quarantine rule when you want to keep collecting evidence while allowing the rest of your suite to determine whether CI passes. Tests still execute and use runner time.

To find and fix the cause of a flaky test, see our guide to Playwright flaky tests.

Run your suite in Endform first so you can select it in the dashboard.

  1. Open your organization’s Quarantine tab.
  2. Select Add quarantine rule and choose a Suite.
  3. Fill in at least one matching field:
    • Test: Search for and select a test, or paste its test ID.
    • Playwright project: Match a project such as chromium.
    • Branch: Match a branch such as main.
  4. Select Preview matches to check the scope.
  5. Under Reason & expiry, optionally add context for your team and an expiry date. The expiry input uses your local time.
  6. Select Create rule. The rule applies to matching tests in new suite runs.

All filled-in fields must match exactly. Empty fields match any value within the selected suite. For example, selecting only a branch quarantines every test in that suite on that branch. Add a test or project condition when you need a narrower rule.

The preview uses the latest completed run for the selected suite and branch. It counts each matching test once across projects and does not consider other quarantine rules. Future runs may contain different tests, so the preview is a guide to the rule’s scope.

Use endform samples to find the exact persisted suite and test IDs, then use them to create a rule:

Terminal window
npx endform@latest samples test-runs --where 'testRun.outcome = fail' --limit 10
npx endform@latest quarantine create \
--suite-id suite_123 \
--test-id test_456 \
--reason 'Investigating checkout failures' \
--ends-at 2026-09-23T12:00:00Z

Creation requires --suite-id and at least one of --test-id, --project, or --branch. List active rules, include inactive rules, or deactivate a rule by its exact ID:

Terminal window
npx endform@latest quarantine list
npx endform@latest quarantine list --all
npx endform@latest quarantine deactivate rule_789

An AI coding agent can follow the same sample-driven workflow through the Modify quarantine rules with AI guide.

Example: quarantine a failing Firefox test

Section titled “Example: quarantine a failing Firefox test”

This test, launches firefox in lambda on arm64, fails because its assertion expects firefox but receives chrome. Before quarantine, the dashboard shows the failed result and the assertion error.

Failed Firefox test with one failed attempt: expected firefox, received chrome. No quarantine badge is present.
Before quarantine: the test records a failure.

To keep this test running while investigating, select the endform · e2e suite and the test in Add quarantine rule. In this example, Playwright project and Branch are empty, so the rule matches this test across all projects and branches in the selected suite.

Add quarantine rule dialog with the endform e2e suite and Firefox test selected, with project and branch left empty.

Select the test, preview the matches, and choose Create rule. Reason and expiry are optional.

The selected test is matched by its ID. Renaming or moving it, or changing its describe blocks, creates a different test ID that this rule will not match.

On a new run, the test still executes with its configured retries. If it fails after exhausting retries, the suite can still pass when the other tests pass and there are no blocking errors.

The Firefox test on a later run has both Failed and Quarantined badges, with the original assertion error and trace links still visible.

After quarantine: the test still shows Failed, alongside a Quarantined badge. Its error and trace links remain available.

Select the Quarantined badge to see the rule that applied. The CLI also marks the test as quarantined and includes quarantine counts in the summary.

The suite result shows the effect of the rule. The earlier run failed; the new run passes even though its one test still fails, because that test is now quarantined.

Two runs of the endform e2e suite, each containing one test: the newer run at the top passed, while the earlier run below failed.

The newer suite run passes after quarantine. The earlier run keeps its failed outcome.

Quarantine changes retry behavior and whether a test failure blocks the suite:

  • Quarantined tests run once and are not retried, even when the project has retries configured. This applies to both immediate and isolated retry strategies. Tests outside quarantine keep their configured retries.
  • Quarantined test failures do not count toward maxFailures.
  • Actual test outcomes and metrics remain in Endform’s history, so you can see whether the test is recovering.

A passing suite can therefore contain failed quarantined tests. See Dashboard analytics for how to interpret those results.

Merged Playwright reports present quarantined attempts differently from Endform’s stored outcomes. If you use HTML, JUnit, or custom reporters, read Quarantined results in custom reporters.

Endform determines which rule applies when a suite run starts. Creating, expiring, or deactivating a rule does not change an ongoing run or rewrite historical results.

When several active rules match a test, the oldest matching rule applies. After it expires or is deactivated, the next matching active rule can apply to future runs.

A rule without an expiry stays active until you deactivate it. Expired and deactivated rules remain visible for reference.

Once you have fixed the test, inspect its recent outcomes and retries in the dashboard. To restore normal failure behavior, open the Quarantine tab and choose Deactivate rule from the rule’s actions menu.

Check for other matching active rules: deactivating one rule does not remove quarantine if another still matches. Start a new suite run to verify the test is no longer quarantined.

To change a rule’s conditions, reason, or expiry, deactivate it and create a replacement. Historical runs keep their association with the rule that originally applied.