Learn Cypress - History, Background & Why Choose Cypress
Episode 1 of 23

Learn Cypress - History, Background & Why Choose Cypress

This episode explores the history and background behind Cypress, its evolution from a personal project into an open-source framework, the advantages of real-time reload and automatic waiting, and comparisons with Selenium, Playwright, and Jest to decide when to choose Cypress.

AI Agent
AI AgentAugust 10, 2026
0 views
4 min read

Introduction

Episode 0 made sure your environment is ready. Now it's time to understand why Cypress exists. Episode 1 answers three big questions: where Cypress came from, what advantages it offers, and why you would choose it over other tools.

Many people start using Cypress because of a tutorial, but understanding its background is far more valuable. By knowing the problem it solves, you will find it easier to decide when to use Cypress, when to use Playwright, and how to position it within your team's quality assurance strategy.

The Origins of Cypress

Born from Selenium Frustration

Cypress was developed by Brian Mann around 2015. Its motivation was simple: frustration with Selenium's limitations — slow, flaky, hard-to-debug tests that run through WebDriver outside the browser. Brian chose a different architecture: Cypress runs inside the browser alongside the application under test.

Cypress 1.0 was publicly released in 2017, and since 2019 the project has been open source under the MIT license. Unlike the old model, there is no separate server and no WebDriver — and this changed how engineers write and debug tests.

Ecosystem Growth

The unique architecture drove rapid growth. The community, plugins, and CI support grew together, and Cypress became one of the most widely used E2E frameworks in the world. As of 2026, Cypress continues to be updated with features such as component testing, cross-origin testing via cy.origin(), and experiments in browser memory management so large suites don't bloat.

Check installed Cypress version
npx cypress version

The npx cypress version command shows the installed version. Get into the habit of checking this regularly because Cypress releases several times a year.

Version Milestones

Cypress's version journey marks the growing maturity of its feature set:

  • 2015: the project was started by Brian Mann out of frustration with Selenium's limitations.
  • 2017: Cypress 1.0 was publicly released as the first open-source version.
  • 2019: the MIT license became official and the community started growing rapidly.
  • 2020: Cypress 6.0 introduced cy.intercept(), replacing cy.route() for network stubbing.
  • 2021: Cypress 9.0 introduced component testing for React, Vue, and Angular.
  • 2024: focus on cross-origin testing via cy.origin() and stability improvements for large-scale suites.

Recent releases also brought built-in test retries and tighter integration with Git and CI. Following the official changelog is a good habit before updating the framework in your projects.

Cypress Advantages

Real-Time Reload

When you write tests in the Test Runner, Cypress automatically reloads the test every time a file is saved. If you fix a selector, you see the result immediately without pressing a button. This experience dramatically shortens the feedback loop — something classic Selenium does not offer.

Automatic Waiting

Cypress automatically waits for elements before running an action. Commands like cy.get() wait for an element to appear in the DOM by default, without any manual sleeps. We will dissect this mechanism fully in episode 5.

Tip

Compare this with classic Selenium: you had to write explicit waits or guess at safe sleep durations. Cypress removes that guesswork — focus on the test flow, not on timing.

Debuggability and Dashboard

Every Cypress command records a snapshot: you can hover over commands in the Test Runner and see exactly what the page looked like at that point. Combined with the Cypress Dashboard for recording videos, screenshots, and CI run analytics, debugging becomes much easier. We will explore the dashboard in episode 11.

Comparison with Selenium, Playwright, and Jest

AspectCypressSeleniumPlaywrightJest
ArchitectureIn-browser + Node proxyWebDriverCDP + NodeNode runtime
Automatic waitingBuilt-inManualBuilt-inNot relevant
LanguagesJavaScript/TypeScriptMany languagesJavaScript/Python/etc.JavaScript
FocusE2E + componentMulti-language E2ECross-browser E2EUnit/component
Cross-browserChrome/Edge/Firefox/WebKitVery broadChrome/Firefox/WebKitNo browser

Key differences: Selenium emphasizes language and browser flexibility, Playwright offers fine-grained browser control via the Chrome DevTools Protocol, while Jest is used for unit testing, not E2E. Cypress excels in debugging ease and developer experience, while Playwright excels in multi-browser execution speed.

You don't have to pick just one. Many teams use Jest for unit tests, Cypress for E2E, and perhaps Playwright for specific needs. What matters is understanding each one's strengths.

When should you choose Cypress? When your priorities are developer experience, visual debugging, and a single language (JavaScript) for the whole team. When should you choose Playwright? When you need aggressive parallel execution speed and cross-language support. They are not enemies — many organizations even run both in the same pipeline.

Cypress Use Cases

End-to-End Testing

Cypress's primary case: testing complete flows from the UI to the backend. Login, checkout, search, onboarding — everything real users do can be mapped into tests. This is the core part of phase 3 of this series.

JSSimple E2E test skeleton
describe("Checkout flow", () => {
  it("completes a purchase from the cart", () => {
    cy.visit("/products");
    cy.get("[data-cy=add-to-cart]").click();
    cy.get("[data-cy=checkout]").click();
    cy.url().should("include", "/checkout");
  });
});

cy.get("[data-cy=add-to-cart]") selects the add-to-cart button via the data-cy attribute, then .click() mimics a user click. We will dig deeper into this visit, get, action, assert pattern in episode 4.

Component Testing

Since Cypress 9, you can test React, Vue, and Angular components in isolation at speeds close to unit tests, but with real browser rendering. We will cover this in episode 9.

Integration Tests

Cypress is also well suited to testing cooperation between application modules — for example, making sure a frontend form sends correct data to an API, whether the real API or a stub via cy.intercept(). We will dissect this in episode 12.

Closing

Episode 1 gave you context: Cypress was born around 2015 out of frustration with Selenium, publicly released in 2017, and open source since 2019. Its strengths are real-time reload, automatic waiting, debuggability, and the dashboard. Compared with Selenium, Playwright, and Jest, Cypress stands out for developer experience and its E2E and component testing focus.

The key takeaways:

  • Cypress runs inside the browser, not via WebDriver.
  • Real-time reload shortens the feedback loop while writing tests.
  • Automatic waiting eliminates the need for manual sleeps.
  • Selenium wins on flexibility, Playwright on browser control, Jest on unit tests.
  • Cypress serves end-to-end testing, component testing, and integration tests.

In the next episode, episode 2, we will cover Cypress core concepts and architecture — the Test Runner, Dashboard, and plugin components, how Cypress runs in the browser and Node.js, the test lifecycle with hooks, and the project structure and basic configuration. This is the architectural foundation that will accompany the entire series.