E2E tests simulam usuário real: browser, clicks, forms. Mais caros mas essenciais para fluxos críticos.
Conceitos Principais
User Flows
Simula jornada completa. Login → browse → add to cart → checkout. Frontend + backend + DB.
Test Environment
Staging environment. Dados reais ou seed. Isolado de produção. Reset entre testes.
Flakiness
Testes instáveis. Network delays, animations, race conditions. Auto-retry, explicit waits.
Selective Testing
Não teste tudo E2E. Apenas fluxos críticos. Unit tests para detalhes.
Passo a Passo
- Identifique Fluxos Críticos: Login, checkout, signup, pagamento. Fluxos que geram receita. Max 10-20 cenários E2E.
- Escolha Tool: Playwright: multi-browser, rápido. Cypress: DX melhor, Chrome only. Selenium: legacy.
- Escreva Tests: Page Object Model. test("user can checkout", async () => { await loginPage.login(); await productsPage.addToCart(); await checkoutPage.pay(); });
- Mock External APIs: Payment gateways, emails. Use test mode (Stripe test keys). Ou mock com server stubs.
- CI/CD Pipeline: Docker container. Headless browser. Parallel execution. Videos em falha. Retry 2x antes de fail.
Boas Praticas
Recomendacoes
• E2E apenas fluxos críticos (10% dos testes)
• Page Object Model para reuso
• Mock external services
• Run em staging, não prod
• Retry logic para flakiness
• Paralelize para velocidade
Erros Comuns
Evite estes erros
• E2E para tudo (piramide invertida)
• Não tratar flakiness
• Hard-coded waits (sleep)
• Testar detalhes (use unit)
• Não rodar E2E no CI
Checklist
- Fluxos críticos identificados
- Tool escolhido e configurado
- Page Objects implementados
- External services mockados
- CI rodando E2E
- Videos/screenshots em falha