Cypress vs Selenium: qual ferramenta E2E para CI?
O Cypress é uma ferramenta E2E moderna e JS-first; o Selenium é o padrão multilinguagem e multibrowser com uma pegada enorme.
O Cypress roda testes no navegador com uma API JS focada no desenvolvedor. O Selenium (WebDriver) controla navegadores em muitas linguagens e é o padrão de mercado de longa data, inclusive via Grid para escala.
| Cypress | Selenium | |
|---|---|---|
| Linguagens | JavaScript/TypeScript | Java, Python, C#, JS, Ruby, mais |
| Arquitetura | No navegador | Protocolo WebDriver |
| Cobertura de navegadores | Família Chromium + outros (varia) | Muito ampla (todos os principais navegadores) |
| Auto-waiting / DX | Forte, moderno | Waits manuais comuns |
| Escala | Paralelo (dashboard/manual) | Selenium Grid |
No CI
O Cypress oferece uma experiência de desenvolvimento polida, com auto-waiting e boa depuração, o que reduz flakiness para equipes JS. O Selenium é incomparável para equipes multilinguagem e para a mais ampla cobertura de navegadores/dispositivos, e o Grid o escala entre máquinas. Ambos precisam de binários de navegador instalados no CI - uma falha de setup comum.
Flakiness
Ambos ficam flaky com timing e estados de servidor-não-pronto. O auto-waiting do Cypress ajuda; o Selenium muitas vezes precisa de waits explícitos. Runners com autocorreção podem repetir as falhas transitórias para que um flake pontual não derrube o build inteiro.
O veredito
Equipe JS/TS que quer DX moderna: Cypress. Equipes multilinguagem ou máxima cobertura de navegadores: Selenium (com Grid). Instale navegadores no CI e planeje retries para testes flaky de qualquer forma.