# E2E Testing — Pirâmide e Padrões > Extraído de `e2e-testing-patterns` v1.0.0 ## 🏔️ Test Pyramid ``` /\ ← POUCOS: Critical paths (E2E) /E2E\ ← MAIS: Component/API integration /─────\ /Integr\ ← MUITOS: Unit tests (rápidos, isolados) /────────\ /Unit Tests\ /────────────\ ``` ## O que E2E Tests DEVEM cobrir | ✅ E2E | ❌ Não E2E | |--------|-----------| | Critical journeys (auth → dashboard → logout) | Lógica unitária → use unit tests | | Multi-step flows (checkout, onboarding) | API contracts → use integration | | Cross-browser | Edge cases (muito lento) | | Real API integration | Internal implementation | | Auth flows | Visual states → use Storybook | ## Core Principles | Princípio | Como | |-----------|------| | **Test behavior, not implementation** | Assert em outcomes visíveis, não estrutura DOM | | **Independent tests** | Cada teste cria próprios dados e limpa | | **Deterministic waits** | Esperar por condição, não timeout fixo | | **Stable selectors** | Usar `data-testid`, roles, labels — nunca CSS classes | | **Fast feedback** | Mockar serviços externos, paralelizar, shard | ## Selector Priority ``` data-testid → data-cy → role → text → id → class (último recurso) ```