Cypress 3.0: end-to-end testing in-browser per app moderne

Cypress 3.0 (maggio 2018) di Brian Mann: E2E testing framework JavaScript che gira nello stesso ciclo di event del browser. Time travel debugging, auto-waiting, screenshots, registrazione video. Alternativa moderna a Selenium.

Open SourceWeb CypressTestingE2EBrian MannJavaScriptOpen SourceWeb

Selenium non basta più

Selenium (2004+) è lo standard E2E testing: guida browser via WebDriver, ma è lento, flaky, debug difficile, API verbosa. Per app React/Vue/Angular con stato complesso e caricamento async i test Selenium sono fragili.

Il rilascio

Cypress 3.0 è rilasciato da Cypress.io il 29 maggio 2018. Founder e lead: Brian Mann, Gleb Bahmutov. Licenza MIT per la versione open source. Tool di recording (Cypress Dashboard) commerciale.

Architettura differente

A differenza di Selenium, Cypress non usa WebDriver. I test girano nello stesso contesto JavaScript dell’applicazione testata:

  • Niente latenza RPC
  • Accesso diretto al DOM, store, network
  • Auto-waiting built-in (no più sleep())
  • Time travel debugging — snapshot ad ogni comando
describe('Login', () => {
  it('logs in valid user', () => {
    cy.visit('/login');
    cy.get('[name=email]').type('ada@example.com');
    cy.get('[name=password]').type('secret');
    cy.contains('button', 'Login').click();
    cy.url().should('include', '/dashboard');
  });
});

Caratteristiche

  • Auto-waitingcy.get() aspetta elemento automaticamente
  • Time travel — hover su step per vedere stato DOM
  • Real-time reload — salva test → rigira
  • Screenshots & video — su fallimento o sempre
  • Network stubbingcy.intercept() per mock API
  • Cross-browser — Chrome/Edge/Firefox/Electron (da 4.x anche WebKit/Safari via Playwright driver)

Versioni principali

  • 3.0 (maggio 2018) — plugin system, new Cypress
  • 4.0 (febbraio 2020) — Firefox, Edge support
  • 6.0 (novembre 2020) — retry, Test Runner UI
  • 10.0 (giugno 2022) — breaking changes, Component Testing
  • 12.0 (dicembre 2022) — detached DOM handling
  • 13.0 (agosto 2023) — Chrome 115+ required
  • 14.0 (2024) — Node 18+, Studio improvements

Component Testing

Dalla 10.x Cypress supporta Component Testing: montare componenti React/Vue/Angular/Svelte isolati, testarli con API Cypress. Concorrente di Storybook + Testing Library.

Limitazioni

  • No multi-tab — test girano in un singolo tab
  • Cross-origin — limitazioni (mitigate con cy.origin() dalla 12.x)
  • Iframe — supporto limitato
  • Performance — più veloce di Selenium ma più lento di API test

Concorrenti

  • Playwright (Microsoft, 2020) — architettura simile ma multi-tab, parallel built-in
  • Selenium (2004) — legacy, meno flaky nel 2024 con W3C WebDriver BiDi
  • TestCafe — simile
  • Nightwatch.js — su WebDriver, modernizzato

Nel contesto italiano

Cypress è usato ampiamente in team frontend italiani:

  • E-commerce headless per validazione checkout
  • Fintech per flussi critici (login, transazioni, KYC)
  • SaaS B2B
  • PA digitale — SPID/CIE login flow, PagoPA testing
  • Bootcamp e corsi frontend moderni

Molti team stanno valutando Playwright per nuovi progetti grazie a parallelismo nativo e supporto WebKit.


Riferimenti: Cypress 3.0 (29 maggio 2018). Brian Mann, Gleb Bahmutov, Cypress.io. Licenza MIT (core). Architettura in-browser. Component Testing dalla 10.x. Versione corrente 14.x (2024).

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi