Skip to content

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):

  1. Better test setup context — for Zalando's dynamic product pages with not-yet-released SKUs.
  2. Improved selectors — toward data-testid-based, role-based addressing.
  3. 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-playwrightcanonical 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.
Last updated · 501 distilled / 1,218 read