{
  "doc": {
    "id": "cloud/guides/quarantine-problematic-specs",
    "title": "Quarantine problematic specs with Run Checks",
    "description": "Use Cypress Cloud Run Checks to gate CI on the specs that still matter while known failing or flaky specs stay in the suite, without treating quarantine as a built-in Cloud feature.",
    "section": "cloud",
    "source_path": "/llm/markdown/cloud/guides/quarantine-problematic-specs.md",
    "version": "4a645eeb4b355bfca7d7bb576e96889b8b571465",
    "updated_at": "2026-11-05T01:52:34.491Z",
    "headings": [
      {
        "id": "cloud/guides/quarantine-problematic-specs#quarantine-problematic-specs-with-run-checks",
        "text": "Quarantine problematic specs with Run Checks",
        "level": 1
      },
      {
        "id": "cloud/guides/quarantine-problematic-specs#run-checks-quarantine-limits",
        "text": "Run Checks quarantine limits",
        "level": 2
      },
      {
        "id": "cloud/guides/quarantine-problematic-specs#exclude-parked-specs-from-a-run-checks-gate",
        "text": "Exclude parked specs from a Run Checks gate",
        "level": 2
      },
      {
        "id": "cloud/guides/quarantine-problematic-specs#scope-a-run-checks-flake-gate-to-critical-specs",
        "text": "Scope a Run Checks flake gate to critical specs",
        "level": 2
      },
      {
        "id": "cloud/guides/quarantine-problematic-specs#gate-ci-on-run-checks-not-only-on-the-run",
        "text": "Gate CI on Run Checks, not only on the run",
        "level": 2
      },
      {
        "id": "cloud/guides/quarantine-problematic-specs#treat-parked-run-checks-specs-as-temporary",
        "text": "Treat parked Run Checks specs as temporary",
        "level": 2
      },
      {
        "id": "cloud/guides/quarantine-problematic-specs#see-also",
        "text": "See also",
        "level": 2
      }
    ]
  },
  "content": {
    "type": "root",
    "children": [
      {
        "type": "heading",
        "depth": 1,
        "children": [
          {
            "type": "text",
            "value": "Quarantine problematic specs with Run Checks"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Some teams keep known-bad or flaky specs in the suite so they stay visible, while CI still gates on everything else. Cypress Cloud does not offer a built-in quarantine mode that marks specs as ignored for the run, or that flips the run's own pass/fail when a test is quarantined. What you can do instead is define a "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/cloud/features/checks.md",
            "children": [
              {
                "type": "text",
                "value": "Run Check"
              }
            ]
          },
          {
            "type": "text",
            "value": " that counts only the specs you still want to gate on, then treat that check's outcome as the signal for merge or deploy."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "Run Checks quarantine limits"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "With this approach:"
          }
        ]
      },
      {
        "type": "list",
        "ordered": false,
        "start": null,
        "spread": false,
        "children": [
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Specs you park or quarantine still run and still appear in the Cypress Cloud run, including failures and flakes."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The run itself can still show as failed when those specs fail. Run Checks never rewrite the run's test pass/fail."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A `run.failedTests.max` or `run.flakyTests.max` assertion can ignore those specs through `include` / `exclude`, so the check can pass while the parked specs keep failing."
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "That separation is the point of the pattern. The check answers \"are the specs we care about still within policy?\" The run history still shows the parked specs so you don't lose track of them."
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "If you need Cypress to skip quarantined tests at runtime, that belongs in your test code or CI (for example, filtering which specs `cypress run` executes). Run Checks only evaluate results after the run records."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "Exclude parked specs from a Run Checks gate"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Move problematic specs under a path your team recognizes, such as `cypress/e2e/_parked/`, and keep them in the recorded run. Then define a check that fails only when non-parked specs fail:"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "App Quality Config"
          }
        ]
      },
      {
        "type": "code",
        "lang": null,
        "meta": null,
        "value": "{\n  \"checks\": [\n    {\n      \"name\": \"No new failures (parked specs excluded)\",\n      \"comment\": \"Gate CI on the active suite; parked specs still run and remain visible\",\n      \"assertions\": [\n        {\n          \"type\": \"run.failedTests.max\",\n          \"value\": 0,\n          \"exclude\": { \"specs\": [\"e2e/_parked/\"] },\n          \"comment\": \"Ignore failures under the parked path\"\n        }\n      ]\n    }\n  ]\n}"
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "In the runs list, that check shows the custom `name` and summarizes the exclude rule as a spec scope such as \"All specs excluding e2e/_parked/\". The threshold pill is the assertion `value` (`max 0`). Product labels like Test Results and metric labels like Failed tests come from the assertion type, not from free text you enter."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "Scope a Run Checks flake gate to critical specs"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "The same idea works in reverse with `include`: hold a critical path to a flake budget while the rest of the suite stays unconstrained by that check."
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "App Quality Config"
          }
        ]
      },
      {
        "type": "code",
        "lang": null,
        "meta": null,
        "value": "{\n  \"checks\": [\n    {\n      \"name\": \"Checkout stays flake-free\",\n      \"assertions\": [\n        {\n          \"type\": \"run.flakyTests.max\",\n          \"value\": 0,\n          \"include\": { \"specs\": [\"e2e/checkout/\"] }\n        }\n      ]\n    }\n  ]\n}"
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "`run.flakyTests.max` requires "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/cloud/features/flaky-test-management.md",
            "children": [
              {
                "type": "text",
                "value": "Flaky Test Management"
              }
            ]
          },
          {
            "type": "text",
            "value": ". Without it, the assertion is "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/cloud/features/checks.md#Assertion-statuses",
            "children": [
              {
                "type": "text",
                "value": "unavailable"
              }
            ]
          },
          {
            "type": "text",
            "value": " and the check becomes `errored` rather than `passed`."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "Gate CI on Run Checks, not only on the run"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Because parked failures can still fail the Cypress run step, wire CI to the check results when this pattern is your merge policy:"
          }
        ]
      },
      {
        "type": "list",
        "ordered": true,
        "start": 1,
        "spread": false,
        "children": [
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Record the run as usual (`cypress run --record`)."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Allow the Cypress step to continue when tests fail if you still need check evaluation afterward (`continue-on-error` or the equivalent in your CI)."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Fetch results with `getCheckResults()` and fail the job when an applicable check fails."
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "See "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/cloud/features/checks.md#Using-check-results-in-CI",
            "children": [
              {
                "type": "text",
                "value": "Using check results in CI"
              }
            ]
          },
          {
            "type": "text",
            "value": " and "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/cloud/guides/report-run-checks-github.md",
            "children": [
              {
                "type": "text",
                "value": "Report Run Checks as GitHub pull request statuses"
              }
            ]
          },
          {
            "type": "text",
            "value": " for the fetch-and-report flow. Required GitHub status checks should target the statuses you post from `getCheckResults()`, not only the default Cypress test statuses, when the check is what you intend to enforce."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "Treat parked Run Checks specs as temporary"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Parked specs that never leave the exclude list become a silent backlog. Use the check `name` and `comment` fields to say why the exception exists, review the parked path on a schedule, and remove specs from it as you fix them. Narrow `exclude` / `include` patterns so a typo doesn't drop half the suite from the gate."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "See also"
          }
        ]
      },
      {
        "type": "list",
        "ordered": false,
        "start": null,
        "spread": false,
        "children": [
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/cloud/features/checks.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "Run Checks"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " - assertion types, statuses, and `include` / `exclude` syntax"
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/cloud/guides/report-run-checks-github.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "Report Run Checks as GitHub pull request statuses"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/cloud/features/flaky-test-management.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "Flaky Test Management"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/cloud/faq.md#Run-Checks",
                    "children": [
                      {
                        "type": "text",
                        "value": "Cypress Cloud FAQ: Run Checks"
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  },
  "token_estimate": 928
}