SYSTEM Cited by 1 source
Cypress¶
Cypress is an end-to-end testing framework for JavaScript web applications. It runs tests in a real browser, provides a rich interactive runner for development, and is one of the dominant CI-tier e2e frameworks in the industry (alongside Playwright and Selenium).
Role on this wiki¶
Cypress is the incumbent CI-tier e2e framework in Zalando's automated QA pipeline. Per the 2024-07-18 post:
"each release goes through an automated quality assurance pipeline that includes end-to-end tests written with Cypress."
Scale at publication: ≈120 builds/day, with test success rate brought up to "the 95 % range" after multi- year investment. Post-investment reliability still wasn't enough for pager-grade e2e test probes running on a 30-minute cron, motivating Zalando's adoption of Playwright for the probe tier specifically.
Named Cypress-era reliability improvements (from the same post):
- Better test setup context — for Zalando's dynamic product pages with not-yet-released SKUs.
- Improved selectors — toward
data-testid-based, role-based addressing. - Hydration detection mechanism — Cypress "would fail eagerly executing test scripts on a non-interactive UI", so Zalando built a wait primitive that detects when React has hydrated after server-side rendering. This is exactly the gap Playwright's Locator auto-wait closes at framework altitude.
Comparison to Playwright (Zalando 2024 framing)¶
| Property | Cypress (Zalando CI) | Playwright (Zalando probes) |
|---|---|---|
| Async handling | Manual (cy.wait(...), hydration-detection mechanism) |
Auto-wait built into Locator |
| Retry semantics | Cypress has command retries, but not assertion retries | Built-in auto-retry for web assertions |
| Browser scope | Chromium-family + Firefox + (Safari via plugin) | Chromium + Firefox + WebKit under one API |
| Debug tooling | Time-travel, command log | Tracing, trace viewer, time-travel |
| Language | JavaScript / TypeScript | TypeScript out of the box |
| Zalando tier | Per-release CI | 30-min production probe |
The 2024 post explicitly names the auto-wait / auto-retry / tracing primitives as the deciding factors for using Playwright at probe altitude. Cypress remains Zalando's CI-tier framework; the shift is a tier split, not a replacement.
Key features¶
- In-browser test execution. Tests run in the same process as the app under test, so access to DOM / state / network is direct.
- Interactive runner (
cypress open). Live-reload test authoring with visual feedback per step. - Command chaining API.
cy.visit(...)→cy.get(...)→cy.click()composed fluently. - Network stubbing via
cy.intercept. - Time-travel debugging — snapshot per command in the runner.
Known failure modes at probe altitude¶
The specific Cypress characteristics that motivated Zalando's Playwright adoption for probes:
- No framework-altitude auto-wait for interactivity. Teams hand-rolled hydration-detection primitives; Playwright's Locator has this built in.
- Flakiness from async rendering. Any test against a React / Next / hydrating SPA without explicit waits is a candidate for flakiness. Zalando's Cypress pipeline reached ~95 % reliability only after multi-year investment in timing heuristics.
- Browser scope historically narrower. WebKit / Safari support is Playwright's native strength.
These are not disqualifications of Cypress for CI (where 95 % reliability is acceptable and per-commit latency matters); they're specifically gaps at probe altitude.
Seen in¶
- sources/2024-07-18-zalando-end-to-end-test-probes-with-playwright — canonical wiki reference. Zalando's pre-existing CI/CD e2e framework. Multi-year investment raised reliability from ~80 % to ~95 %; post-2024 the suite continues running at CI altitude while Playwright owns the probe tier. Named hydration-detection kludge and selector-hardening campaign as the reliability investments.
Related¶
- systems/playwright — the framework Zalando chose over Cypress for the probe tier.
- systems/react — the front-end framework whose hydration timing drove Cypress-era reliability work.
- concepts/flaky-test — the failure class Cypress teams navigate via selectors + retries + hydration-detection.
- concepts/end-to-end-test-probe — the probe primitive for which Cypress's CI-altitude reliability was insufficient at Zalando.
- concepts/react-hydration — the specific failure mode that motivated Zalando's hand-rolled Cypress wait primitive.
- concepts/playwright-locator-auto-wait — the framework-altitude primitive that closes Cypress's async-rendering gap.
- patterns/e2e-test-as-synthetic-probe — the pattern for which Playwright's framework-altitude reliability primitives make it Zalando's choice over Cypress.