
Playwright ultrapassou o Cypress em downloads semanais no npm em meados de 2024 e, no início de 2026, a diferença alargou-se para cerca de 30 milhões contra 6,5 milhões de downloads semanais. Esta mudança não aconteceu por acaso. Todas as outras comparações na primeira página do Google são escritas por fornecedores de ferramentas de QA ou empresas de SaaS de teste. Esta é feita por uma equipa que constrói aplicações web em produção e escolhe um framework de automação de testes para projetos reais, não para promover um produto.
É aqui que o Selenium se encaixa: continua a ser o framework E2E mais implementado globalmente, especialmente em equipas de Java e Python. Não vai desaparecer. Mas para novos projetos JavaScript/TypeScript em 2026, a verdadeira questão é Playwright vs Cypress, com o Selenium como alternativa legada.
Resumo Rápido
Escolha o Playwright se quiser o melhor framework de teste geral em 2026: execução mais rápida, paralelização gratuita, suporte multilinguagem e excelente DX em TypeScript. Escolha o Cypress se a sua equipa valorizar a depuração interativa e os testes de componentes acima de tudo. Escolha o Selenium se estiver num ambiente empresarial Java/Python com infraestrutura Selenium existente.
| Funcionalidade | Playwright | Cypress | Selenium |
|---|---|---|---|
| Criado por | Microsoft | Cypress.io | Comunidade Selenium |
| Primeiro Lançamento | 2020 | 2014 | 2004 |
| Arquitetura | WebSocket (CDP) | No navegador | Protocolo WebDriver |
| Linguagens | JS/TS, Python, Java, C# | Apenas JS/TS | JS, Python, Java, C#, Ruby, PHP, Kotlin |
| Suporte de Navegador | Chromium, Firefox, WebKit | Chrome, Firefox, Edge, Electron, WebKit (experimental) | Chrome, Firefox, Safari, Edge, IE |
| Velocidade de Execução | Mais rápida (~4,5s) | Média (~9,4s) | Mais lenta (~14,5s) |
| Paralelização | Integrada, gratuita (sharding) | Paga (Cypress Cloud) ou ferramentas da comunidade | Selenium Grid (autoalojado) |
| Custo Cloud/Dashboard | 0€ | 67$-267$/mês (faturação anual) | 0€ (+ custo de infraestrutura) |
| DX TypeScript | Primeira classe | Bom (algumas peculiaridades) | Esforço da comunidade |
| Testes de Componentes | Experimental | Maduro (primeira classe) | Nenhum |
| Curva de Aprendizagem | Moderada | Baixa (para devs JS) | Acentuada |
| Ideal Para | Maioria dos novos projetos | Equipas frontend que querem DX interativo | Empresas Java/Python |
Este é o resumo. O restante artigo explica a evidência por trás de cada linha, com código, benchmarks e opiniões honestas.
Arquitetura: Como Cada Ferramenta Comunica com o Navegador
A arquitetura é a causa raiz de quase todas as diferenças que verá nesta comparação. Pense desta forma: o Playwright comunica com o navegador como um diretor de palco que sussurra instruções diretamente aos atores. O Cypress senta-se no palco com os atores, correndo na mesma sala. O Selenium envia instruções através de um intermediário parado no corredor.
<!-- IMAGE: Architecture comparison showing Playwright WebSocket connection, Cypress in-browser execution, and Selenium WebDriver intermediary layer -->Playwright: Controlo Direto do Navegador via WebSocket
O Playwright comunica com os navegadores através de ligações WebSocket utilizando o Chrome DevTools Protocol (CDP) para Chromium e protocolos equivalentes para Firefox e WebKit. Não há intermediário; o seu código de teste envia comandos diretamente para o motor do navegador. Isto significa menor latência, mais capacidades (múltiplas abas, múltiplas origens, interceção de rede) e menos peças móveis que possam falhar.
Cypress: Execução No Navegador
O Cypress adota uma abordagem fundamentalmente diferente. Injeta-se no navegador e executa o seu código de teste no mesmo ciclo de eventos JavaScript da sua aplicação. É por isso que o Cypress parece tão rápido para testes simples: não há sobrecarga de rede entre o seu teste e a aplicação. Mas esta arquitetura também explica as limitações do Cypress: sem suporte para múltiplas abas, testes cross-origin restritos e apenas JavaScript/TypeScript (já que os testes devem correr num contexto de navegador).
Selenium: O Intermediário WebDriver
O Selenium utiliza o protocolo WebDriver. O seu código de teste envia pedidos HTTP para um binário driver do navegador (chromedriver, geckodriver), que traduz esses pedidos em comandos do navegador. Cada comando é uma viagem de ida e volta: teste para driver para navegador e de volta. Esta indireção adiciona latência e cria mais pontos de falha. O Selenium está gradualmente a adotar o protocolo BiDi para reduzir esta sobrecarga, mas ainda não lá chegou totalmente.
Veredicto: O Playwright vence na arquitetura. A comunicação direta via WebSocket significa execução mais rápida, mais capacidades e menos falhas intermitentes. O modelo no navegador do Cypress é genuinamente inteligente para testes simples de origem única, mas cria tetos rígidos que o Playwright não tem. A arquitetura do Selenium mostra a sua idade.
Suporte de Linguagem e Navegador
Este é frequentemente o primeiro filtro. Se a sua equipa não escreve JavaScript, o Cypress está imediatamente fora de questão.
| Categoria | Playwright | Cypress | Selenium |
|---|---|---|---|
| JavaScript / TypeScript | Sim | Sim | Sim |
| Python | Sim (oficial) | Não | Sim (oficial) |
| Java | Sim (oficial) | Não | Sim (oficial) |
| C# / .NET | Sim (oficial) | Não | Sim (oficial) |
| Ruby | Não | Não | Sim (oficial) |
| PHP | Não | Não | Sim (comunidade) |
| Kotlin | Não | Não | Sim (comunidade) |
| Chromium / Chrome | Sim (incluído) | Sim | Sim (via chromedriver) |
| Firefox | Sim (incluído) | Sim | Sim (via geckodriver) |
| WebKit / Safari | Sim (incluído, multiplataforma) | Experimental | Sim (apenas macOS, via SafariDriver) |
| Edge | Sim (baseado em Chromium) | Sim | Sim |
| IE | Não | Não | Sim |
O que significa isto na prática? Se for uma empresa de Java com 20 engenheiros de QA, o Cypress não é uma opção, ponto final. Se os testes cross-browser incluindo Safari forem importantes (e deveriam ser, o Safari detém cerca de 18% da quota global de navegadores), o Playwright lida com isso nativamente em qualquer SO, enquanto o Cypress ainda classifica o suporte WebKit como "experimental".
O Selenium vence em amplitude bruta. Suporta mais linguagens e mais navegadores do que qualquer alternativa. Mas para as linguagens e navegadores que mais importam em 2026 — JavaScript/TypeScript, Python e a tríade Chromium/Firefox/WebKit —, o Playwright cobre tudo com zero configuração e binários de navegador incluídos.
Veredicto: O Selenium vence em amplitude (mais linguagens, mais navegadores, incluindo IE). O Playwright vence em cobertura prática, os navegadores e linguagens que importam em 2026, incluídos e com zero configuração. O Cypress é a opção mais restrita.
Escrita de Testes: Comparação de Código Lado a Lado
Chega de teoria. Eis o mesmo teste escrito nos três frameworks. É aqui que sente a diferença na DX (Experiência do Desenvolvedor).
Teste de Fluxo de Login
Um teste de login padrão: navegar para uma página, preencher credenciais, submeter e verificar o redirecionamento.
// Playwright
import { test, expect } from '@playwright/test';
test('user can log in', async ({ page }) => {
await page.goto('/login');
await page.locator('#email').fill('[email protected]');
await page.locator('#password').fill('s3cureP@ss');
await page.locator('button[type="submit"]').click();
await expect(page).toHaveURL('/dashboard');
await expect(page.locator('h1')).toContainText('Welcome');
});// Cypress
describe('Login', () => {
it('user can log in', () => {
cy.visit('/login');
cy.get('#email').type('[email protected]');
cy.get('#password').type('s3cureP@ss');
cy.get('button[type="submit"]').click();
cy.url().should('include', '/dashboard');
cy.get('h1').should('contain', 'Welcome');
});
});// Selenium (with WebDriver)
const { Builder, By, until } = require('selenium-webdriver');
describe('Login', function () {
let driver;
before(async () => {
driver = await new Builder().forBrowser('chrome').build();
});
after(async () => {
await driver.quit();
});
it('user can log in', async () => {
await driver.get('http://localhost:3000/login');
await driver.findElement(By.id('email')).sendKeys('[email protected]');
await driver.findElement(By.id('password')).sendKeys('s3cureP@ss');
await driver.findElement(By.css('button[type="submit"]')).click();
await driver.wait(until.urlContains('/dashboard'), 5000);
const heading = await driver.findElement(By.css('h1')).getText();
expect(heading).to.include('Welcome');
});
});Note as diferenças. O async/await do Playwright com page.locator() lê-se de forma limpa e aguarda automaticamente que os elementos estejam acionáveis antes de interagir. A API de encadeamento do Cypress (cy.get().type().click()) é concisa e genuinamente agradável para fluxos simples. O Selenium requer esperas explícitas (driver.wait(until.urlContains(...))), gestão manual do ciclo de vida do navegador e mais código boilerplate.
Mocking de API e Interceção de Rede
Este cenário revela uma diferença muito maior. Intercepte uma chamada de API, devolva dados mockados e verifique se a UI renderiza corretamente.
// Playwright -- native network interception
test('shows mocked user list', async ({ page }) => {
await page.route('**/api/users', (route) => {
route.fulfill({
status: 200,
contentType: 'application/json',
body: JSON.stringify([{ id: 1, name: 'Alice' }]),
});
});
await page.goto('/users');
await expect(page.locator('.user-card')).toHaveCount(1);
await expect(page.locator('.user-card')).toContainText('Alice');
});// Cypress -- native network interception
it('shows mocked user list', () => {
cy.intercept('GET', '/api/users', {
statusCode: 200,
body: [{ id: 1, name: 'Alice' }],
}).as('getUsers');
cy.visit('/users');
cy.wait('@getUsers');
cy.get('.user-card').should('have.length', 1);
cy.get('.user-card').should('contain', 'Alice');
});// Selenium -- no native network interception
// You need a separate proxy tool like BrowserMob Proxy
// or mock your API server directly. There is no built-in
// equivalent to page.route() or cy.intercept().
// Typical workaround: start a mock server before the test
const mockServer = require('./helpers/mock-server');
before(async () => {
await mockServer.start({ port: 4000 });
mockServer.stub('GET', '/api/users', [{ id: 1, name: 'Alice' }]);
});
it('shows mocked user list', async () => {
await driver.get('http://localhost:3000/users');
// ... assert using findElement
});Isto é importante. O mocking de API é essencial para testes E2E fiáveis, e tanto o Playwright como o Cypress lidam com isso nativamente. O Selenium requer um servidor mock separado ou ferramenta de proxy, mais infraestrutura, mais complexidade, mais coisas que podem falhar.
Veredicto: O Playwright vence em clareza de código e capacidade. A sua sintaxe async/await é mais limpa do que o encadeamento do Cypress para cenários complexos, e lida nativamente com mocking de API, múltiplas abas e múltiplas origens. O Cypress vence em simplicidade para fluxos diretos de página única; a API de encadeamento é genuinamente agradável. O Selenium é o mais verboso e requer mais boilerplate.
Playwright vs Cypress vs Selenium: Benchmarks de Velocidade
"Qual é mais rápido?" é uma das perguntas mais pesquisadas nesta comparação. Eis números reais do estudo de benchmark da Checkly e das medições da BetterStack, cruzados para consistência.
"Test Suite Execution Time (seconds)"
Tabela de dados
| "Framework" | "Execution Time" |
|---|---|
| "Playwright" | 4.5 |
| "Cypress" | 9.4 |
| "Selenium" | 14.5 |
O Playwright conclui suites de teste equivalentes em aproximadamente 4,5 segundos, comparado com 9,4 segundos para o Cypress e 14,5 segundos para o Selenium. Não é uma diferença marginal, é uma lacuna de 2x e 3x.
Porque é o Playwright mais rápido? Três razões: a comunicação WebSocket elimina a sobrecarga HTTP que o Selenium carrega. O modelo de contexto de navegador do Playwright cria ambientes de teste isolados sem iniciar processos completos de navegador. E a sua execução paralela acontece ao nível do framework, não precisando de ferramentas externas.
A diferença de velocidade alarga-se com suites maiores. Os contextos de navegador do Playwright escalam eficientemente porque partilham um único processo de navegador. O Selenium gera novas instâncias de navegador por worker paralelo. O Cypress executa testes em série na sua versão open-source, por isso uma suite em crescimento significa tempo de execução linearmente crescente, a menos que pague pelo Cypress Cloud.
Um estudo de caso de migração coloca números nisto: a BigBinary reportou uma redução de 89% no tempo de execução de testes após mudar do Cypress para o Playwright; a sua suite completa caiu de 2 horas e 27 minutos para 16 minutos usando o sharding do Playwright.
Veredicto: O Playwright vence decisivamente em velocidade. Executa suites de teste 2x mais rápido que o Cypress e 3x mais rápido que o Selenium. Esta lacuna alarga-se com suites maiores porque o modelo de contexto de navegador do Playwright escala melhor do que gerar novas instâncias de navegador.
Depuração e Experiência do Desenvolvedor
É aqui que as coisas ficam nuances. O Playwright é tecnicamente superior, mas o Cypress tem uma vantagem genuína de DX que mantém as equipas leais.
Depuração Interativa
O Test Runner do Cypress continua a ser o padrão ouro para depuração interativa. Vê o seu teste a executar em tempo real dentro de um navegador real, com depuração de viagem no tempo, clique em qualquer passo no registo de comandos para ver o estado exato do DOM naquele momento. Para desenvolvedores frontend a depurar regressões visuais ou problemas de layout, isto é difícil de superar. Honestamente, é a melhor funcionalidade individual em todo o toolkit do Cypress.
O Trace Viewer do Playwright adota uma abordagem diferente. Grava traços durante as execuções de teste, capturas de ecrã, snapshots do DOM, pedidos de rede e registos da consola em cada passo. Abre estes traços num visualizador baseado em navegador depois do facto. Para depuração em CI (descobrir porque um teste falhou numa pipeline headless), o Trace Viewer é na verdade mais útil do que o runner interativo do Cypress porque obtém o contexto completo sem precisar de reproduzir localmente.
O modo --ui do Playwright adicionou uma experiência interativa mais próxima do Test Runner do Cypress nas versões recentes, mas não é tão polida. É funcional, não deliciosa.
O Selenium IDE existe mas é limitado. A maioria da depuração do Selenium é console.log e capturas de ecrã. Funciona, mas parece 2012.
Desenvolvimento TypeScript-First
O Playwright é TypeScript-first. Vem com tipos gerados automaticamente, o seu ficheiro de configuração é playwright.config.ts por defeito, e o autocomplete do VS Code funciona perfeitamente. Quando escreve page. e aciona o autocomplete, obtém todos os métodos com assinaturas de tipo completas.
O Cypress suporta TypeScript, mas existem pontos de atrito. Comandos personalizados precisam de declarações de tipo manuais (a extensão da interface Cypress.Chainable), e a API de encadeamento às vezes confunde a inferência do TypeScript. O ficheiro cypress.config.ts funciona, mas a DX não é tão suave.
O suporte TypeScript do Selenium é um esforço da comunidade e parece acrescentado em comparação com a experiência nativa do Playwright.
Veredicto: O Cypress vence em DX interativa, o seu Test Runner é genuinamente delicioso para desenvolvedores frontend a depurar testes visuais. O Playwright vence em depuração CI e TypeScript, o Trace Viewer foi concebido especificamente para diagnosticar falhas em ambientes CI headless, e o seu suporte TypeScript é o melhor da classe. A história de depuração do Selenium é a mais fraca.
Integração CI/CD e Paralelização
É aqui que a borracha encontra a estrada. A sua suite de testes corre em CI centenas de vezes por dia, não no seu portátil. Eis uma configuração GitHub Actions copiar-colar para cada framework, algo que nenhum concorrente na primeira página do Google fornece.
Configuração GitHub Actions
# Playwright -- built-in parallelization, zero cost
name: Playwright Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
shard: [1/4, 2/4, 3/4, 4/4]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm ci
- run: npx playwright install --with-deps
- run: npx playwright test --shard=${{ matrix.shard }}
- uses: actions/upload-artifact@v4
if: failure()
with:
name: playwright-report-${{ matrix.shard }}
path: playwright-report/# Cypress -- parallel requires Cypress Cloud (paid)
name: Cypress Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
containers: [1, 2, 3, 4]
steps:
- uses: actions/checkout@v4
- uses: cypress-io/github-action@v6
with:
record: true
parallel: true
group: 'CI'
env:
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}# Selenium -- requires browser service container
name: Selenium Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
services:
selenium:
image: selenium/standalone-chrome:latest
ports:
- 4444:4444
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm ci
- run: npm test
env:
SELENIUM_REMOTE_URL: http://localhost:4444/wd/hubParalelização: Gratuita vs Paga
A configuração do Playwright acima divide a sua suite de testes em 4 shards paralelos com --shard=1/4. Uma suite de 10 minutos corre em 2,5 minutos. Custo zero. Nenhum serviço cloud necessário.
O plano Starter gratuito do Cypress agora inclui paralelização, mas com um limite de 500 resultados de teste/mês, que a maioria das equipas esgota num dia ou dois de desenvolvimento ativo. Para uso sério em CI, precisará do Cypress Cloud (a partir de $67/mês na faturação anual para o plano Team com 120K resultados/ano) ou alternativas da comunidade como sorry-cypress. As flags record: true e parallel: true no YAML acima requerem uma ligação ao Cypress Cloud.
A paralelização do Selenium requer Selenium Grid (autoalojado, sobrecarga de ops) ou um fornecedor cloud como BrowserStack. É a configuração mais complexa das três.
Veredicto: O Playwright vence em CI/CD. Paralelização gratuita e ilimitada com zero infraestrutura é difícil de superar. A camada gratuita do Cypress inclui paralelização mas limita a 500 resultados/mês; equipas reais precisam de um plano pago. O Selenium requer mais trabalho operacional.
Análise de Custos e Preços
Esta é a maior lacuna de conteúdo em toda a SERP para esta palavra-chave. Todos os concorrentes ignoram-na, mas o custo importa, especialmente à escala.
Licenciamento e Níveis de Preço
| Funcionalidade | Playwright | Cypress (Gratuito) | Cypress Cloud Team | Cypress Cloud Business | Selenium + Grid |
|---|---|---|---|---|---|
| Licença | MIT (gratuito) | MIT (gratuito) | $67/mês (anual) | $267/mês (anual) | Apache 2.0 (gratuito) |
| Execução Paralela | Integrada | Sim (limite de 500 resultados/mês) | Sim (120K resultados/ano) | Sim (ilimitado) | Grid Autoalojado |
| Dashboard de Resultados | HTML reporter (gratuito) | Não | Sim (120K resultados/ano) | Sim (ilimitado) | Ferramentas de terceiros |
| Deteção de Flake | Retries integrados | Retries básicos | Sim | Sim | Não |
| Análise de Testes | Relatórios integrados | Não | Limitado | Completo | Ferramentas de terceiros |
| Priorização de Specs | Não | Não | Não | Sim | Não |
Custo Real por Tamanho da Equipa
| Tamanho da Equipa | Playwright | Cypress (com Cloud Team) | Selenium (com BrowserStack) |
|---|---|---|---|
| Desenvolvedor solo | 0€ | 0€ (camada gratuita) | 0€ (local) |
| Equipa de 5 pessoas | 0€ | $67/mês ($804/ano) | ~$150/mês ($1.800/ano) |
| Equipa QA de 20 pessoas | 0€ | $267/mês ($3.204/ano) | ~$600/mês ($7.200/ano) |
| Empresa (50+) | 0€ | Personalizado (Enterprise) | Personalizado (BrowserStack/Sauce Labs) |
O Playwright é gratuito para tudo pelo qual o Cypress cobra. Paralelização, análises de teste via HTML reporter, trace viewer para depuração, codegen para scaffolding de testes, tudo incluído a custo zero. A única coisa que o Playwright não oferece é um dashboard cloud alojado com funcionalidades de colaboração em equipa, e para muitas equipas, o relatório HTML integrado e artefactos CI são suficientes.
O Selenium também é gratuito, mas o custo de infraestrutura de executar Selenium Grid à escala não é trivial. Alguém na sua equipa tem de manter esses nós Grid, lidar com atualizações de versão do navegador e depurar falhas de infraestrutura.
Veredicto: O Playwright vence em custo, nem sequer é perto. Cada funcionalidade que o Cypress bloqueia atrás de um paywall (paralelização, análises de teste, deteção de flake), o Playwright inclui gratuitamente. O Selenium é gratuito ao nível da ferramenta, mas a fatura de infraestrutura acumula-se.
Testes de Componentes
Os testes de componentes permitem montar um único componente React, Vue ou Angular em isolamento e testá-lo sem iniciar uma aplicação completa. O Cypress pioneirizou esta abordagem, e é uma das razões mais fortes para escolher o Cypress hoje.
O Cypress tem testes de componentes de primeira classe para React (18-19), Vue 3, Angular (18-21) e Svelte 5. Usa a mesma API cy.mount() e o mesmo Test Runner que já conhece dos testes E2E. A documentação é madura, o ecossistema é sólido e funciona de forma fiável. Para equipas que querem uma única ferramenta para testes de componentes e E2E, os testes de componentes do Cypress são um diferenciador genuíno.
O Playwright adicionou testes de componentes experimentais nas versões recentes, suportando React, Vue e Svelte. É funcional mas menos polido do que a implementação do Cypress. Se os testes de componentes forem uma prioridade desde o dia um, o Cypress tem vantagem. Mas o ritmo de lançamento rápido do Playwright (mensal) significa que esta lacuna está a fechar-se.
O Selenium não tem suporte para testes de componentes. Opera ao nível do navegador, não ao nível do componente. Se precisar de testes de componentes juntamente com testes E2E Selenium, usará uma ferramenta separada como React Testing Library ou Vitest.
Veredicto: O Cypress vence em testes de componentes, pioneirizou a abordagem, tem a implementação mais madura e cobre a gama mais ampla de frameworks. O Playwright é um forte segundo lugar. O Selenium não é um contendente aqui.
Comunidade, Ecossistema e Tendências de Adoção
Os números contam uma história aqui. O Playwright ultrapassou o Cypress em downloads npm em meados de 2024, e em fevereiro de 2026, a diferença é substancial: o Playwright regista cerca de 30 milhões de downloads semanais contra os 6,5 milhões do Cypress e os 1,8 milhões do Selenium WebDriver.
"Weekly npm Downloads (thousands)"
Tabela de dados
| "Quarter" | "Playwright" | "Cypress" | "Selenium WebDriver" |
|---|---|---|---|
| "Q1 2024" | 8000 | 6500 | 2200 |
| "Q3 2024" | 14000 | 6600 | 2100 |
| "Q1 2025" | 19000 | 6500 | 2000 |
| "Q3 2025" | 25000 | 6400 | 1900 |
| "Q1 2026" | 30000 | 6500 | 1800 |
As estrelas no GitHub seguem um padrão semelhante: o Playwright situa-se em cerca de 82.800, o Cypress em 49.461 e o Selenium em 33.769 em fevereiro de 2026. O inquérito State of JavaScript classifica consistentemente o Playwright mais alto em satisfação e interesse dos desenvolvedores.
Mas o npm conta apenas a história JavaScript. A base instalada real do Selenium abrange ecossistemas Java, Python, C# e Ruby onde os downloads npm não se aplicam. No mundo empresarial Java, o Selenium continua a ser o framework dominante por uma larga margem.
Porque está o Playwright a crescer tão rapidamente? O apoio da Microsoft dá-lhe lançamentos mensais consistentes e estabilidade a longo prazo. O design TypeScript-first alinha-se com a direção do desenvolvimento frontend. A paralelização gratuita remove o atrito que os preços do Cypress Cloud criam. E o suporte multilinguagem significa que equipas Python e Java podem migrar do Selenium sem mudar de linguagem.
O Cypress não está a declinar em termos absolutos, os downloads estabilizaram em torno de 6-7 milhões semanais. Mas a sua quota relativa está a diminuir à medida que o Playwright absorve tanto novos projetos como migrações de Cypress/Selenium.
Veredicto: O Playwright vence em impulso. Tem o crescimento mais rápido, maior satisfação dos desenvolvedores e trajetória mais forte. O Selenium vence em base instalada. O Cypress retém uma comunidade leal, mas o seu crescimento estabilizou.
Guia de Migração: Mudar de Framework
Se está a considerar uma mudança, eis o guia prático de tradução.
Cypress para Playwright: Tradução de API
// BEFORE: Cypress login test
describe('Login', () => {
it('logs in successfully', () => {
cy.visit('/login');
cy.get('#email').type('[email protected]');
cy.get('#password').type('password123');
cy.get('form').submit();
cy.url().should('include', '/dashboard');
});
});// AFTER: Same test in Playwright
import { test, expect } from '@playwright/test';
test('logs in successfully', async ({ page }) => {
await page.goto('/login');
await page.locator('#email').fill('[email protected]');
await page.locator('#password').fill('password123');
await page.locator('form').evaluate(form => form.submit());
await expect(page).toHaveURL(/dashboard/);
});Traduções chave: cy.visit() torna-se page.goto(). cy.get() torna-se page.locator(). cy.intercept() torna-se page.route(). cy.wait('@alias') torna-se page.waitForResponse(). O encadeamento implícito do Cypress torna-se async/await explícito.
Selenium para Playwright: Tradução de API
// BEFORE: Selenium login test
const { Builder, By, until } = require('selenium-webdriver');
async function loginTest() {
const driver = await new Builder().forBrowser('chrome').build();
try {
await driver.get('http://localhost:3000/login');
await driver.findElement(By.id('email')).sendKeys('[email protected]');
await driver.findElement(By.id('password')).sendKeys('password123');
await driver.findElement(By.css('form')).submit();
await driver.wait(until.urlContains('/dashboard'), 10000);
} finally {
await driver.quit();
}
}// AFTER: Same test in Playwright
import { test, expect } from '@playwright/test';
test('logs in successfully', async ({ page }) => {
await page.goto('/login');
await page.locator('#email').fill('[email protected]');
await page.locator('#password').fill('password123');
await page.locator('form').evaluate(form => form.submit());
await expect(page).toHaveURL(/dashboard/);
});A maior diferença? O Playwright lida com o ciclo de vida do navegador e a espera automática por si. Adeus driver.quit() em blocos finally. Adeus driver.wait(until.urlContains(...), 10000), o Playwright aguarda automaticamente a navegação. Remova todas as suas esperas implícitas e explícitas; a espera automática do Playwright substitui-as.
Checklist de Migração
- Audite a sua suite de testes existente, conte os testes, identifique comandos personalizados (Cypress) ou lógica de espera complexa (Selenium)
- Instale o Playwright juntamente com o seu framework atual, execute ambos em CI durante a transição
- Traduza os testes incrementalmente, comece pelos testes mais simples e de maior valor
- Substitua comandos personalizados por page objects ou fixtures, os comandos personalizados do Cypress não têm um equivalente 1:1 no Playwright
- Atualize a sua configuração CI, adicione a configuração de sharding do Playwright, remova chaves Cypress Cloud se aplicável
- Execute ambos os frameworks em paralelo durante 1-2 sprints para capturar regressões
- Descontinue o framework antigo quando todos os testes estiverem migrados e estáveis
Uma suite típica de 200 testes Cypress pode ser migrada em 1-2 sprints por um engenheiro. A migração Selenium-para-Playwright demora ligeiramente mais porque os testes Selenium tendem a ter lógica de espera mais complexa que precisa de repensar. Se está a migrar, o Playwright é o destino que 90% das equipas estão a escolher em 2026. A migração em si é direta, a parte mais difícil são geralmente os comandos personalizados do Cypress ou a lógica de espera complexa do Selenium.
Recomendações Específicas por Stack: React, Next.js e Além
Conselhos genéricos "depende" são inúteis. Eis o que escolheríamos para stacks tecnológicas específicas, com base na construção de apps de produção com estes frameworks.
| Stack | Melhor Escolha | Segundo Lugar | Porquê |
|---|---|---|---|
| React / Next.js | Playwright | Cypress | O Next.js tem integração oficial com Playwright. Testes de rotas API, testes de componentes server e paralelização gratuita tornam o Playwright a escolha clara. |
| Vue / Nuxt | Playwright ou Cypress | , | Empate genuíno. O Cypress tem testes de componentes Vue maduros. O Playwright destaca-se em E2E. Nenhuma escolha errada. |
| Angular | Playwright | Selenium | As recomendações oficiais do Angular agora incluem o Playwright entre as alternativas modernas após a descontinuação do Protractor. |
| Backend Java / Python | Playwright ou Selenium | , | Se a equipa tem experiência Selenium, mantenha-o. Caso contrário, os bindings multilinguagem do Playwright tornam-no uma alternativa natural. |
| Empresa legada (suporte IE) | Selenium | , | A única opção. O Playwright abandonou o IE. O Cypress nunca o teve. |
Se a sua equipa está a construir com Next.js e a avaliar frameworks, a nossa comparação Next.js vs Remix aborda como a arquitetura do framework afeta a sua estratégia de teste. A capacidade do Playwright de testar rotas API e componentes server nativamente torna-o especialmente poderoso no ecossistema Next.js.
Testes Assistidos por IA em 2026
Os testes assistidos por IA já não são hipotéticos; ferramentas como GitHub Copilot, Cursor e Claude Code geram código de teste diariamente para milhares de desenvolvedores. A escolha do framework afeta o quão bem estas ferramentas funcionam.
O Playwright tem a melhor compatibilidade com IA. A sua API TypeScript-first com definições de tipo fortes significa que assistentes de IA geram código de teste mais preciso. Os padrões estruturados async/await são mais fáceis para LLMs raciocinarem do que o encadeamento do Cypress. E a própria ferramenta npx playwright codegen do Playwright regista interações do navegador e gera ficheiros de teste completos com seleção inteligente de locators, sem necessidade de subscrição de IA.
O Cypress funciona razoavelmente bem com ferramentas de IA. A sua API de encadeamento declarativa é concisa e bem representada em dados de treino. Mas o namespace cy. e os padrões de comandos personalizados podem confundir a geração de código, produzindo testes que parecem corretos mas falham devido a peculiaridades específicas do Cypress.
O Selenium é a correspondência mais fraca para testes assistidos por IA. Boilerplate verboso, múltiplos bindings de linguagem com APIs diferentes e padrões inconsistentes através de Java/Python/JS significam que o código Selenium gerado por IA requer mais limpeza manual.
Não superestime o papel da IA aqui; é um multiplicador de produtividade, não um substituto para o design de teste. Mas se a sua equipa usa assistentes de codificação IA (e a maioria usa em 2026), o Playwright produz os testes gerados mais fiáveis.
Veredicto: O Playwright vence para geração de testes assistida por IA. A sua API tipada e padrões estruturados produzem os melhores resultados com assistentes modernos de codificação IA.
Framework de Decisão: Qual Ferramenta Deve Escolher?
Eis a secção pela qual veio. Cenários concretos, recomendações concretas.
| Se o Seu Projeto Precisa... | Escolha | Porquê | Alternativa |
|---|---|---|---|
| Melhor framework E2E geral | Playwright | Mais rápido, mais capaz, gratuito, comunidade forte | Cypress (se DX for crítico) |
| Depuração interativa para frontend | Cypress | A depuração time-travel do Test Runner é imparável | Playwright (modo UI está a melhorar) |
| Equipa multilinguagem (Java/Python/C#) | Playwright | Bindings oficiais para 4 linguagens | Selenium (suporte de linguagem mais amplo) |
| Equipa consciente do orçamento | Playwright | 0€ para tudo, incluindo paralelização | Selenium (gratuito mas custos de infraestrutura) |
| Prioridade em testes de componentes | Cypress | Implementação de testes de componentes mais madura | Playwright (experimental) |
| Empresa Java/Python | Selenium ou Playwright | Investimento existente importa; Playwright se migrar | , |
| Desenvolvedor frontend solo | Cypress ou Playwright | Cypress para onboarding mais rápido; Playwright para poder | , |
| Testes Safari/WebKit necessários | Playwright | Suporte WebKit de primeira classe, multiplataforma | Selenium (Safari apenas macOS) |
| Suporte IE legado necessário | Selenium | A única opção | , |
| Pipelines CI/CD mais rápidas | Playwright | Sharding gratuito, execução mais rápida | , |
| Equipa a migrar do Selenium | Playwright | Caminho de migração mais fácil, destino da maioria das equipas | , |
| Equipa QA de 20+ pessoas | Playwright | Escala sem serviços pagos | Selenium (se já investido) |
Quando NÃO Usar Cada Ferramenta
- Não escolha o Playwright se toda a sua equipa conhece profundamente o Cypress, tem extensos comandos personalizados e não tem pontos de dor. Custos de migração existem, e "mais novo" não significa "melhor para a sua situação".
- Não escolha o Cypress se precisar de suporte multilinguagem, testes multi-aba ou execução paralela gratuita à escala. Estas são limitações arquiteturais, não funcionalidades num roadmap.
- Não escolha o Selenium para novos projetos JavaScript/TypeScript. Tanto o Playwright como o Cypress oferecem DX, velocidade e fiabilidade dramaticamente melhores para equipas JS.
Como a Techsy Aborda a Automação de Testes
Na Techsy, implementámos testes E2E em dezenas de aplicações web de produção. Eis o nosso processo real:
-
Padronizar no Playwright para novos projetos. A sua velocidade, paralelização gratuita e DX TypeScript-first alinham-se com a nossa stack Next.js/React. Escrevemos testes E2E juntamente com funcionalidades, não depois do sprint, não "quando tivermos tempo", mas como parte da definição de feito.
-
Usar Cypress quando uma equipa cliente tem infraestrutura Cypress existente e a migração não se justifica. Não empurramos equipas para migrar por migrar. Se o Cypress estiver a funcionar e a equipa for produtiva, ajudamos a extrair mais dele.
-
Ajudar equipas a migrar do Selenium quando o custo de manutenção excede o custo de migração, o que acontece mais vezes do que pensaria. Suites Selenium tendem a acumular lógica de espera complexa e seletores frágeis ao longo dos anos.
A nossa stack de teste típica: Playwright para E2E, React Testing Library para testes ao nível de componentes e GitHub Actions para CI. Esta combinação cobre a pirâmide de testes completa com complexidade mínima de ferramentas.
Precisa de ajuda para configurar testes automatizados para a sua app web? A nossa equipa implementa testes Playwright e Cypress em projetos React, Next.js e Node.js. Obtenha uma consulta de teste gratuita.
Veredicto Final
| Categoria | Vencedor | Notas |
|---|---|---|
| Velocidade | Playwright | 2x mais rápido que Cypress, 3x mais rápido que Selenium |
| Suporte de Navegador | Playwright | Inclui Chromium, Firefox e WebKit multiplataforma |
| Suporte de Linguagem | Selenium | Mais linguagens (6+ bindings oficiais) |
| DX / Depuração | Cypress | Test Runner interativo continua a ser a melhor experiência de depuração |
| Integração CI/CD | Playwright | Paralelização gratuita via sharding, zero infraestrutura |
| Custo | Playwright | 0€ para tudo. Cypress Cloud começa em $67/mês |
| Testes de Componentes | Cypress | Suporte de primeira classe para React, Vue, Angular, Svelte |
| Crescimento da Comunidade | Playwright | ~30M downloads npm semanais, ~82,8K estrelas GitHub |
| DX TypeScript | Playwright | Design TypeScript-first, melhor autocomplete e segurança de tipos |
| Destino de Migração | Playwright | Onde 90% das equipas em migração aterram em 2026 |
| Compatibilidade IA | Playwright | API tipada produz os testes gerados por IA mais fiáveis |
| Global (2026) | Playwright | Melhor equilíbrio de velocidade, capacidade, custo e comunidade |
Para a maioria das equipas a iniciar um novo projeto em 2026, o Playwright é a escolha padrão. É o mais rápido, mais capaz e inteiramente gratuito. Vence 9 de 12 categorias na tabela acima.
Mas os padrões não são universais. O Cypress continua a ser a escolha certa para equipas frontend que priorizam depuração interativa e testes de componentes, e que podem viver dentro das suas restrições arquiteturais. O Selenium continua essencial para ambientes empresariais Java/Python com infraestrutura de teste existente e para os casos cada vez mais raros onde o suporte IE importa.
A pior decisão é a paralisia por análise. Avalie a linguagem da sua equipa, os seus requisitos de navegador, o seu orçamento CI e as suas preferências de depuração. Escolha um. Comece a escrever testes. Pode sempre migrar mais tarde, e como mostrámos acima, o caminho de migração está bem documentado.
Fontes
- Documentação Playwright
- Preços Cypress Cloud
- npm Trends, Playwright vs Cypress vs Selenium
- Checkly, Benchmark de Comparação de Velocidade
- Next.js, Testes com Playwright
- State of JavaScript 2024 -- Bibliotecas de Teste
- BigBinary, Porque Mudámos do Cypress para o Playwright
Playwright vs Cypress vs Selenium: FAQ
O Playwright é melhor que o Cypress?
Para a maioria das equipas em 2026, sim. O Playwright é mais rápido (2x em benchmarks), suporta mais navegadores e linguagens, tem paralelização gratuita e melhor suporte TypeScript. O Cypress vence em DX de depuração interativa e maturidade de testes de componentes. Se essas duas coisas são a sua prioridade máxima, o Cypress continua a ser uma escolha forte.
O Playwright está a substituir o Selenium?
No ecossistema JavaScript/TypeScript, largamente sim. Os downloads npm do Playwright são cerca de 4,5x os do Cypress e 17x os do Selenium WebDriver. Mas o Selenium permanece dominante em ambientes empresariais Java e Python onde o seu suporte multilinguagem e décadas de ferramentas de ecossistema são essenciais. O Selenium não está morto, está a restringir-se ao seu nicho.
Qual é mais rápido, Playwright ou Cypress?
O Playwright executa suites de teste aproximadamente 2x mais rápido, 4,5 segundos vs 9,4 segundos em benchmarks comparáveis. A lacuna alarga-se com suites maiores porque o modelo de contexto de navegador do Playwright é mais eficiente do que o modelo de processo do Cypress. Uma equipa reportou uma redução de 89% no tempo total de CI após migrar.
O Cypress suporta Safari?
O Cypress tem suporte experimental WebKit, mas não é considerado pronto para produção. O Playwright inclui WebKit (motor de renderização do Safari) como um navegador de primeira classe, totalmente suportado, que corre em qualquer SO. Se os testes Safari forem críticos para os seus utilizadores, o Playwright é a escolha mais segura.
O Selenium está morto em 2026?
Não. O Selenium continua a ser o framework E2E mais implementado globalmente, especialmente em ecossistemas Java e Python. É a única opção para testes IE/navegadores legados. Mas para novos projetos JavaScript/TypeScript, o Playwright e o Cypress são melhores escolhas por todas as métricas práticas.
O Playwright pode testar apps móveis?
O Playwright pode emular navegadores móveis (Chrome para Android, Safari para iOS via WebKit) com simulação precisa de viewport, toque e user agent. Não pode automatizar apps móveis nativas. Para testes de apps nativas, precisa do Appium (que usa o protocolo WebDriver do Selenium) ou de um framework de teste móvel dedicado como Detox.
Devo aprender Playwright ou Cypress primeiro?
Se é novo em testes E2E em 2026, comece com o Playwright. Tem a trajetória de crescimento mais forte, o conjunto de funcionalidades mais abrangente e as competências transferem-se para qualquer projeto JavaScript/TypeScript. O Cypress vale a pena aprender se a sua equipa já o usa ou se a depuração interativa é a sua preocupação principal.
Quais são as desvantagens do Playwright?
A experiência de depuração interativa do Playwright é menos polida do que o Test Runner do Cypress (embora o modo UI do Playwright esteja a fechar a lacuna). Os seus testes de componentes são menos maduros do que os do Cypress. E o seu ritmo de lançamento mensal rápido significa que a superfície da API muda frequentemente; terá de acompanhar as atualizações.
Quanto custa o Cypress Cloud?
O Cypress Cloud começa em $67/mês (faturado anualmente) para o plano Team com 120.000 resultados de teste por ano, e vai até $267/mês para Business com resultados ilimitados. Preços Enterprise são personalizados. O Playwright oferece funcionalidades equivalentes, paralelização, análises de teste via HTML reporter e deteção de flake via retries, gratuitamente.
Qual framework E2E funciona melhor com GitHub Actions?
Todos os três funcionam com GitHub Actions, mas o Playwright requer a menor configuração. As imagens Docker oficiais do Playwright e o sharding integrado (--shard=1/4) tornam a configuração CI num único ficheiro YAML. O Cypress precisa da sua GitHub Action oficial e de uma subscrição Cypress Cloud para paralelização. O Selenium precisa de um contentor de serviço para o driver do navegador.
O Playwright funciona com Java ou Python?
Sim. O Playwright tem bindings oficiais para Java, Python, C# e JavaScript/TypeScript mantidos pela Microsoft. O Cypress é apenas JavaScript/TypeScript. Isto torna o Playwright uma alternativa Selenium convincente para equipas não-JS que querem ferramentas modernas sem mudar de linguagem.
Como migrar do Selenium para o Playwright?
Comece por instalar o Playwright juntamente com o Selenium. Traduza os testes incrementalmente: page.locator() substitui driver.findElement(), page.goto() substitui driver.get(), e pode remover todas as esperas explícitas porque o Playwright aguarda automaticamente. Atualize a sua config CI, execute ambos os frameworks em paralelo durante a transição, depois descontinue o Selenium quando todos os testes estiverem verdes. Uma suite típica de 200 testes leva 1-2 sprints para um engenheiro.