O Cypress não tem suporte a Safari e cobra pela paralelização no CI acima do tier gratuito. Dois limites arquiteturais que empurram times para o Playwright quando cobertura cross-browser importa ou a suite cresce além de uma máquina. Para times que não batem nesses limites, migrar de uma suite Cypress funcionando custa mais do que entrega.

A versão curta

Se você está começando um projeto novo em 2026: Playwright. Se você já está no Cypress com uma suite funcionando: fique, a menos que tenha um motivo específico para migrar. Se você está no Selenium: avalie se o custo de manutenção justifica continuar.

O resto deste artigo explica o porquê.

Selenium: o veterano

O Selenium é o mais antigo dos três e, por base instalada, ainda é o mais amplamente usado. Milhões de linhas de testes Selenium rodam em pipelines de CI hoje, e isso não vai mudar rapidamente.

O que o Selenium faz bem:

A escolha de linguagem é genuína. Java, Python, C#, Ruby, JavaScript: o Selenium suporta todos com bindings maduros. Se o seu time escreve Java, Selenium com TestNG ou JUnit é uma escolha legítima e bem documentada.

A cobertura cross-browser é completa. O Selenium suporta qualquer browser com uma implementação WebDriver, incluindo Internet Explorer e Edge Legacy. Se você testa em browsers que o Playwright não suporta, o Selenium pode ser sua única opção.

O ecossistema é enorme. Stack Overflow, tutoriais, bibliotecas, integrações: o Selenium tem mais de 15 anos de investimento da comunidade.

O que o Selenium faz mal:

Gerenciamento de driver é um fardo de manutenção constante. O ChromeDriver precisa corresponder à versão do Chrome. Quando o Chrome atualiza automaticamente, os testes quebram até você atualizar o driver. O Selenium Manager (introduzido no Selenium 4) melhora isso, mas não elimina o problema completamente.

Sem espera integrada. Você escreve código de espera manualmente: WebDriverWait, ExpectedConditions, utilitários de polling customizados. Cada time reinventa essa roda.

Overhead de setup. O Selenium é uma biblioteca, não um framework. Você monta um framework de teste com Selenium + test runner (JUnit, pytest, Jest) + biblioteca de asserção + reporter. O Playwright vem como um pacote completo.

Velocidade. Os testes Selenium são geralmente mais lentos do que os testes Playwright em cenários equivalentes.

// Selenium (Java) — aguardando um botão
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
WebElement btn = wait.until(ExpectedConditions.elementToBeClickable(
    By.cssSelector("button[data-testid='submit']")
));
btn.click();

// Playwright (TypeScript) — mesma operação
await page.getByRole('button', { name: 'Submit' }).click();

Quem deve usar Selenium: times com suites Selenium existentes, times escrevendo em Java/Python/C# onde o ecossistema importa, times testando em browsers que o Playwright não suporta.

Cypress: o meio-termo amigável ao desenvolvedor

O Cypress foi lançado por volta de 2017 e preencheu uma lacuna real: um framework de teste fácil de configurar e com ótima experiência para o desenvolvedor. Era a alternativa moderna ao Selenium antes do Playwright aparecer.

O que o Cypress faz bem:

Experiência do desenvolvedor. A UI do Cypress é excelente: execução de testes em tempo real, debug com time-travel com snapshots do DOM, replay integrado. Para desenvolvedores que não vivem em frameworks de teste, o Cypress é fácil de adotar.

Testes de componente. O Cypress tem suporte de primeira classe para testar componentes React, Vue, Angular e Svelte em isolamento. Se o seu time escreve muitos testes de componente, o Cypress é competitivo.

Mensagens de erro. Os erros do Cypress são claros e detalhados. Dizem exatamente qual elemento foi encontrado, qual era o timeout e como está o DOM atual.

O que o Cypress faz mal:

Suporte a browsers. Chromium tem suporte completo. Firefox tem suporte limitado. WebKit (Safari) não tem suporte. Se cobertura cross-browser importa, o Cypress não consegue fornecê-la.

Paralelização requer pagamento. Rodar testes em múltiplas máquinas no CI requer o Cypress Cloud. O tier gratuito tem limites. O sharding do Playwright é gratuito e integrado.

Cenários multi-domain e multi-tab. O Cypress foi projetado arquiteturalmente para testes same-origin. Redirecionamentos cross-domain (fluxos OAuth, pagamentos de terceiros) exigem workarounds. O Playwright trata isso nativamente.

Sem emulação mobile. O Playwright consegue emular dispositivos, viewports, user agents, geolocalização e eventos de toque. O Cypress não consegue.

O tratamento de iframes é limitado. O Playwright trata iframes como contextos de browser de primeira classe. O Cypress tem workarounds que nem sempre cobrem todos os casos.

// Cypress — sem await, fila de comandos
cy.visit('https://lab.becomeqa.com')
cy.get('[data-cy="login-btn"]').click()
cy.get('input[name="username"]').type('admin@becomeqa.com')

// Playwright — async/await explícito
await page.goto('https://lab.becomeqa.com')
await page.getByRole('button', { name: 'Login' }).click()
await page.getByLabel('Username').fill('admin@becomeqa.com')

Observe a diferença arquitetural: o Cypress usa uma fila de comandos (os comandos são enfileirados e rodam depois, sem await). O Playwright usa async/await padrão do JavaScript. Se você conhece JavaScript moderno, o modelo do Playwright é mais intuitivo. Se você é novo em programação assíncrona, a abordagem do Cypress remove essa complexidade.

Quem deve usar Cypress: times com suites Cypress existentes, times com muitos testes de componente, times onde a adoção pelos desenvolvedores é prioridade e cobertura cross-browser não é.

Playwright: o padrão atual

O Playwright é construído e mantido pela Microsoft, lançado em 2020, e cresceu rapidamente desde então.

O que o Playwright faz bem:

Auto-waiting em todo lugar. Cada interação com locator automaticamente aguarda o elemento estar acionável. Sem esperas explícitas para cenários padrão.

Cross-browser genuíno. Chromium, Firefox e WebKit rodam o mesmo código de teste sem configuração específica por browser. Isso é cobertura real de Safari no Windows, que nenhuma outra ferramenta oferece.

Suporte TypeScript completo. Os tipos são de primeira classe, não um adendo.

Interceptação de rede. page.route() intercepta, modifica ou mocka qualquer requisição de rede. Útil para testar estados de erro sem alterar o backend.

// Mocka uma resposta de API com falha
await page.route('**/api/items', route => {
  route.fulfill({ status: 500, body: '{"error": "Internal server error"}' });
});

Multi-tab e multi-context. Criar um novo contexto de browser ou uma nova aba é trivial:

const newPage = await context.newPage();
await newPage.goto('https://lab.becomeqa.com/other-page');

Sharding gratuito. Divida sua suite entre N máquinas sem nenhum serviço externo:

npx playwright test --shard=1/4  # roda 25% dos testes nesta máquina

Testes de API integrados. A fixture request fornece um cliente HTTP completo que compartilha o contexto do browser:

test('api + ui combinados', async ({ page, request }) => {
  const resp = await request.get('/api/items');
  expect(resp.status()).toBe(200);
});

O que o Playwright faz menos bem:

Testes de componente são experimentais. O Playwright tem suporte a testes de componente, mas é menos maduro do que o do Cypress.

A UI do Cypress é melhor para debug interativo. O modo UI do Playwright é bom, mas o preview ao vivo e o replay de snapshots do DOM do Cypress é uma experiência melhor. Especialmente para desenvolvedores que não são principalmente testers.

A comunidade é mais jovem. Menos histórico no Stack Overflow, menos tutoriais para casos de borda.

Quem deve usar Playwright: projetos novos, times que precisam de cobertura cross-browser, times que precisam de testes de API + UI em um só framework, times que querem paralelização gratuita.

Comparação lado a lado

| Feature | Selenium | Cypress | Playwright |

|---------|----------|---------|------------|

| Linguagens | Java, Python, C#, JS, Ruby | JavaScript/TypeScript | JS/TS, Python, Java, .NET |

| Auto-waiting | Manual | Integrado | Integrado |

| Browsers | Todos + IE | Chromium, Firefox parcial | Chromium, Firefox, WebKit |

| Emulação mobile | Não | Não | Sim |

| Multi-tab | Trabalhoso | Workarounds | Nativo |

| Mock de rede | Parcial | Integrado | Integrado |

| Paralelização | Gratuita | Paga (Cloud) | Gratuita |

| Complexidade de setup | Alta | Baixa | Baixa |

| Testes de componente | Não | Excelente | Experimental |

| Testes de API | Não | Não | Integrado |

| Tempo de setup | 30–60 min | 10 min | 10 min |

Migração: quando e se vale

Selenium para Playwright: vale avaliar se sua suite Selenium tem alto custo de manutenção por gerenciamento de driver e utilitários de espera. A migração não é trivial. Page objects e lógica de teste podem ser portados, mas locators precisam de reescrita. Faça por feature, não tudo de uma vez. Cypress para Playwright: considere se você bater no teto de suporte a browsers, precisar de paralelização gratuita, ou precisar de cenários multi-tab/multi-domain regularmente. Se sua suite Cypress está funcionando bem e você não bate nesses limites, o custo de migração supera o benefício. Playwright para qualquer coisa: difícil de justificar em 2026. O Playwright está em desenvolvimento ativo, bem suportado, e não tem limites arquiteturais que forçariam uma migração.
Migrações de framework têm um custo oculto: retreinamento do time, reescrita de tooling, mudanças no pipeline de CI e semanas de "por que isso falha no novo framework". A comparação técnica é só parte do cálculo.

FAQ

O Selenium vai desaparecer?

Não tão cedo. Suites de teste demais e times demais investiram em tooling Selenium. Mas para projetos novos, não é a primeira escolha.

Posso usar Playwright e Cypress no mesmo projeto?

Você pode, mas não deveria. Dobra a superfície de dependências e divide o conhecimento do time. Escolha um.

Qual é mais rápido?

O Playwright é geralmente o mais rápido, especialmente com sharding paralelo entre máquinas. O Cypress é comparável dentro de uma única máquina. O Selenium é o mais lento por causa do overhead do protocolo WebDriver.

Qual tem mais vagas de emprego?

O Selenium ainda domina em quantidade bruta, puxado por bases de código enterprise legadas. As vagas de Playwright estão crescendo rapidamente e se concentram em empresas construindo projetos greenfield. Se você está mirando empresas de tecnologia modernas, o Playwright é cada vez mais a skill esperada.

→ Veja também: Começando com Playwright: Seus Primeiros Testes em 30 Minutos | Locators do Playwright: getByRole, getByLabel, getByText, getByTestId Comparados | Playwright em 2026: Por Que Se Tornou o Framework de Testes #1 | Migrando do Selenium (ou Cypress) para o Playwright: Um Guia Prático