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-waiting —
cy.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 stubbing —
cy.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).
