Cypress PM Exercise · Kevin Middleton · Jul 24, 2026

Flake is a label. Customers need a lifecycle.

Cypress Cloud is good at detecting flake. The signal shows customers stuck on what happens after detection: triage, quarantine, rehabilitation, and, most dangerously, noticing when "flaky" starts hiding something real. Every claim below is linked to a primary source.

How I got here in 90 minutes

Full transparency: I'm not a testing-tools PM (yet), and I walked in knowing the category as a user, not an owner. So step one was leveling myself up, fast, and I'm bringing you along on that journey rather than hiding it.

1 · Read the six signals, clustered them
2 · Built myself a crash course on flake with AI → the deck that taught me
3 · Sent research agents to primary sources, sourced-only, no guessing
4 · Formed the POV below + a concept mock
5 · Ran two independent fact-check agents against my own doc, they caught an error, I corrected it (details at the end)

Step 2 is linked on purpose: the crash-course deck is the artifact of me learning this space in real time this afternoon, basics of E2E testing → why flake corrodes trust → what Cypress ships today → the competitive picture. It's what informed the ideation below, including the Spring Cleaning concept.

Reading the six signals

Five of the six describe the same journey breaking at different steps. One (F) seems like it may need additional consideration and discussion.

ARe-run failed tests onlyWants to retry the 3 failures from last night without re-running 97 passes. A workflow response to failures they don't yet trust.
BTriage flake by causeEnvironment vs data vs Cypress error: "may or may not be a priority to fix, or maybe can't be fixed." Wants flake classified, not just counted.
CDIY quarantineHand-rolls quarantine with tags + a side pipeline, and the trend data punishes the test while it's being rehabbed. Builds the missing feature himself, badly, because he has to.
DFlaky label hid a real regressionDev merged over a "known flaky" failure; next day the same failure was real and shipped to production. Asks: does anyone notice when a flaky test's behavior changes?
ESelective silenceKnown external flake (a login page another team owns). Wants to filter that noise, without silencing everything.
FParallelization & orchestrationSharding, subset runs, per-shard env configs. Real churn language ("why we started looking elsewhere"), but a different problem: CI orchestration flexibility, not flake trust. Named, and set aside.
The through-line (A–E): once a test is marked flaky, Cypress treats that as a terminal state. Customers are asking for what comes next: triage → quarantine → rehabilitate → re-trust, and an alarm when "flaky" stops being flaky. D is the one that costs real money: the flake label actively suppressed a true failure.

What the customer sees today

Current-state walkthrough, all images from Cypress's own docs (each links to its source page). This is a genuinely strong detection and reporting surface. Note what's absent: any state a flaky test can move through.

Detection: flake is flagged per run, and filterable

Flaky-test count flag on runs
Runs carry a flaky-test count on the Latest Runs page. Source: Flaky Test Management docs
Run details header with flaky indicator
Run header: flaky / skipped / pending / passed / failed counts. Source: Recorded Runs docs

Analytics: rate over time, severity buckets, per-test detail

Flaky test analytics
Flake analytics: count over time, project flakiness, severity groups (Low >0–10% · Medium >10–50% · High >50%). Source
Flake rate vs failure rate
Flake rate vs failure rate per test. A test can show zero final failures while still flaking, exactly the fog D got lost in. Source

Depth exists: attempts, artifacts, history, replay

Attempt history and artifacts
Per-attempt history with screenshots, videos, errors. Source: Test Retries docs
Previous runs timeline
Previous-runs timeline: "whether you're looking at a brand-new regression or a long-standing flaky test." The raw material for answering D, buried in a sidebar. Source

Alerting: flake announces itself, once

GitHub flake status check
Flake alerting on the PR itself: a dedicated flake status check on GitHub (plus PR comments with a "Flakiness" section), and a named cypress/flake commit status on GitLab/Bitbucket, teams can configure these to block merges when flake is detected in a run. Powerful gate, but it fires on detection only: nothing follows the test afterward, and nothing distinguishes "same old flake" from "this one just changed." Source
Slack flake alert
Slack alert when flake appears. But per the docs, there is no alert when a known-flaky test's behavior changes, only charts you'd have to go look at. Source
What today's model amounts to (flake defined as "passes and fails across retries without any code change"):
  • Detect — retries required, runs recorded to Cloud, Team plan+.
  • Report — badges, analytics, severity buckets, per-test history.
  • Announce — Slack/Teams alerts, PR status checks.
  • Debug — Test Replay on the exact CI attempt.

What a test cannot do is change state:

  • No quarantine or mute — "quarantine" appears zero times in the flake-management, retries, and experiments docs.
  • No rehabilitation — no stability tracking toward earning trust back; the label is forever.
  • No behavior-change alarm — nothing distinguishes "same old flake" from "this just became a real failure."
  • And customers have askedcypress #32178 requested selective flake silencing (signal E's exact case), closed June 2026 as "not planned" with a note that Product tracks the feedback internally. Demand exists; no public roadmap commitment covers it.

Q1The core problem

Cypress tells you a test is flaky, then abandons you. Flake is a permanent, binary label with no lifecycle behind it, so teams stop trusting the signal, and eventually stop trusting the suite.

There are two distinct problems in the signal:

  1. Flake lifecycle management (A, B, C, D, E) — the one I'd prioritize. Every one of these customers is inventing a workflow Cypress doesn't provide: rerun-failed-only (A), cause triage (B), tag-and-side-pipeline quarantine (C), manual behavior watching (D), selective silencing (E). C is literally describing a quarantine feature spec from the outside.
  2. Parallel orchestration flexibility (F). Sharding, subset runs, per-shard configs. Serious, churn-flavored language, but a different system (run orchestration, not flake trust). I'd hand it its own investigation rather than dilute this one.

Why lifecycle is most important: the trust death-spiral

D is the catastrophic case and the reason this ranks first. The sequence: test flakes → gets labeled → label teaches the team to ignore it → a real regression arrives wearing the flaky label → it ships. The docs themselves note a test can flake while showing zero final failures, so nothing forces a second look. The flake feature, working as designed, suppressed a true positive. Once that happens, teams distrust every green run, which devalues the exact thing Cypress Cloud sells: a signal you can act on. B, C, and E are the same trust problem at earlier stages; A is its workflow cousin.

Q2What I'd confirm before recommending anything

QuestionWhy it mattersHow I'd get it
How widespread is DIY quarantine (C's tag-and-side-pipeline pattern)?If many teams hand-roll it, the feature is validated demand, not a one-off. C's workaround also corrupts their trend data, so adoption pain is measurable.Support ticket + community mining; public GitHub asks are already evidence (#32178, closed Jun 2026 "not planned"; #22662, open).
How often do D-type incidents happen (regression hidden by a flaky label)?It's my "most important" argument; one anecdote isn't a trend. If measurable, it's also the business case.Cypress's own Data Extract API (`flaky-test-details` is near-real-time) joined against later real failures of the same tests; customer interviews.
What share of customers even have retries on (the prerequisite for all flake features)?Flake detection only works with retries enabled and runs recorded (docs, default is 0). If adoption is low, the funnel starts earlier than lifecycle.Product analytics on config telemetry; adoption of the experimental retry strategies.
Who exactly are these six voices (plan tier, scale, churned vs active)?F uses churn language; if F-type enterprises are the revenue risk, priority could flip toward orchestration. Flake analytics is Team-plan+, so lifecycle work mostly serves paying tiers.Tie feedback to accounts; churn-reason coding; segment revenue.
Can error signatures actually distinguish "same old flake" from "new behavior"?The behavior-change alarm (Q3) depends on it. Attempt-level errors and artifacts exist per the retries docs; question is signal quality at scale.Prototype on Data Extract error data; measure false-positive rate.

Q3The one thing: a flake lifecycle, with quarantine at its core

Give a flaky test somewhere to go. A managed state machine: Flagged → Quarantined (still running, out of the pass/fail path) → Rehabilitating (stability streak tracked) → Restored, with one alarm that cuts across it: "this flaky test's failure just changed character."

Direction, engineer-legible, deliberately not over-specified:

How I'd validate before building big: design-partner with 3–5 Team/Enterprise accounts that show C-style workarounds; ship quarantine behind a flag; success = reduction in DIY tag-quarantine patterns, restored-test rate, and (the real prize) caught behavior-changes that would previously have merged. Guardrail: quarantine volume itself, if everything gets quarantined, we built a mute button, not a lifecycle.

Deliberately not designed in detail: exact UI and auto-quarantine policy thresholds (Datadog-style rules could be v2). But to make Spring Cleaning concrete, here's a directional concept mock.

Concept mock · Spring Cleaning dashboard

A directional sketch, not a spec. Built to show what "grouped recommendations, evidence-based, batch-actionable" could feel like inside Cypress Cloud's existing design language.

🧹 Spring Cleaning · flaky-label review
TEAM PLANCONCEPT MOCK
142tests wearing the flaky label
38recommended: clear the label
3behavior changed — review now
14 mooldest label, never revisited
TestLabeledLast failedStable streakRecommendation
checkout/payment_flow.cy.ts14 mo ago11 mo ago312 runs Clear label — passed its last 312 consecutive runs
auth/sso_login.cy.ts7 mo ago2 days ago Review now — failing with a new error vs its flake history (possible real regression)
dashboard/widgets_grid.cy.ts5 mo ago3 wk ago41 runs Keep watching — improving, streak below the 100-run bar
vendor/embedded_login.cy.ts9 mo ago6 days ago4 runs Quarantine candidate — external dependency (signal E's case); keep running, stop gating CI
Recommendations based on consecutive stable runs, not elapsed time — "hasn't failed in 90 days" might just mean it barely ran.
Why this sits in the paid plan, and why that matters: flake detection, analytics, and alerting are already Team-plan features (docs). Spring Cleaning and the lifecycle land exactly where Cypress monetizes: they deepen the reason to pay for Cloud on top of a free runner, in the precise spot where free Playwright has no answer. The open-source runner earns the love; trust management like this is what the Cloud subscription is for. Retention and upgrade driver, not a new SKU.

Q4Where I wouldn't trust my own output

How I used AI in this exercise (90 minutes)

Per the brief, the interesting part isn't that I used it:

Detection docs: flaky-test-management

Retries: test-retries

Experimental strategies: experiments

Silencing ask (closed "not planned" Jun 2026): cypress#32178

Datadog lifecycle: flaky_management

BrowserStack mute: mute-tests

Playwright: retries · annotations

Independent concept work by Kevin Middleton. Not affiliated with, endorsed by, or commissioned by Cypress. All trademarks and product imagery belong to their respective owners.