Relatório de Migração de Testes — E2E → Vitest
Data: 2026-04-04
Escopo: Reclassificação de testes E2E skipados para a camada Vitest apropriada, conforme a árvore de decisão de camada definida em TESTING_MASTER.md.
1. Resumo Executivo
| Métrica | Quantidade |
|---|---|
| Testes migrados para Vitest | 85 |
| Testes removidos (duplicados) | 10 |
| E2E skip restantes (legitimamente E2E) | 89 |
| E2E ativos (inalterados) | 16 |
| Vitest tests passando (pós-migração) | 590 |
| Vitest test files (pós-migração) | 49 |
2. Testes Migrados por Fase
Fase 1 — Remoção definir-senha.spec.ts
| Ação | Quantidade | Justificativa |
|---|---|---|
| Removidos | 7 | 100% duplicados com modal-definir-senha.test.tsx (já existente) |
Infraestrutura criada: src/test/fixtures/portal-data.ts — fixture factory com builders reutilizáveis.
Fase 2 — Visibilidade Portal Aluno (FaseContent)
| Arquivo Vitest | Testes | Cobertura |
|---|---|---|
src/components/mural-olimpico/__tests__/fase-content.test.tsx | 25 | Visibilidade de campos (pontuação, classificação, medalha, situação, observações), cards de info (ranking, empate, Top X), acessibilidade de fases, seletor de ano, certificados |
E2E removidos adicionalmente: 3 testes visuais puros (ScoreRing, medal SVG, badge) — já cobertos por medal-svg.test.ts e visibility-logic.test.ts.
Fase 3 — Mural Coordenador (Liberações)
| Arquivo Vitest | Testes | Cobertura |
|---|---|---|
src/components/mural-olimpico/__tests__/mural-liberacoes.test.tsx | 21 | Publicação notas/resultados, exclusividade mútua, switches por campo, Top X, multi-nível |
Fase 4 — Olimpíada Detalhes (Validação e Fases)
| Arquivo Vitest | Testes | Cobertura |
|---|---|---|
src/components/olimpiada-detalhes/__tests__/olimpiada-form-validation.test.ts | 28 | Campos obrigatórios, ranges numéricos (tempo 1-600, questões 1-200), headers duplicados, valor fixo |
src/components/olimpiada-detalhes/__tests__/olimpiada-fases-niveis.test.ts | 27 | CRUD fases/atividades, imutabilidade de estado, detecção de mudanças não salvas |
Lógica extraída: src/components/olimpiada-detalhes/helpers.ts — funções puras de validação e manipulação de estado.
Fase 5 — Portal Responsável (UI)
| Arquivo Vitest | Testes | Cobertura |
|---|---|---|
src/components/mural-olimpico/__tests__/portal-responsavel-ui.test.tsx | 18 | Dashboard responsável (tabs, seletor de filho), labels adaptados (3ª pessoa), certificados, perfil |
3. Testes Removidos
| Origem | Quantidade | Justificativa |
|---|---|---|
e2e/definir-senha.spec.ts (arquivo inteiro) | 7 | Todos duplicados com modal-definir-senha.test.tsx |
e2e/portal-aluno-dashboard.spec.ts (visuais) | 3 | ScoreRing, medal SVG e badge já cobertos por testes unitários existentes |
| Total | 10 |
4. Testes Mantidos como E2E
4.1 E2E Ativos (16 testes)
| Spec | Testes | Justificativa |
|---|---|---|
login-senha.spec.ts | 6 | Cookie HttpOnly, OTP, JWT via Worker Gateway |
agenda-coordenador.spec.ts | 4 | Navegação SPA + interação real com calendário |
comunicacao-coordenador.spec.ts | 5 | Upload de arquivo + mutation real |
loading-gate.spec.ts | 1 | Rendering condicional com routing real |
4.2 E2E Skipados (89 testes — aguardando staging)
| Spec | Skip | Justificativas por grupo |
|---|---|---|
portal-aluno-dashboard.spec.ts | 28 | Cookie olp_mural HttpOnly, login matrícula+DN, navegação real, CSS layout mobile/desktop |
portal-responsavel.spec.ts | 24 | OTP WhatsApp, cookie olp_mural, lockout timing, CSS layout, routing |
mural-coordenador.spec.ts | 19 | Sidebar/routing real, CRUD com mutations + upload, window.open/clipboard |
olimpiada-detalhes.spec.ts | 15 | Skeleton/loading real, drag-and-drop, multi-tab com routing, form complexo com save real |
loading-gate.spec.ts | 2 | Rendering condicional com múltiplos papéis |
login-senha.spec.ts | 1 | Rate limit / lockout progressivo |
5. Estado Final do Pipeline
Vitest (local + CI)
text
Test Files 49 passed (49)
Tests 590 passed (590)
Duration ~8s- 0 regressões introduzidas durante a migração
- 18 testes pré-existentes com
skip(não relacionados à migração)
E2E (Playwright — CI contra staging)
text
Ativos: 16 testes (4 specs)
Skipados: 89 testes (6 specs) — aguardando infraestrutura stagingContratos (Deno/Vitest)
text
2 arquivos — falham sem staging configurado (esperado)6. Impacto da Migração
| Antes | Depois |
|---|---|
| 169 testes E2E skipados sem cobertura efetiva | 89 skip (legitimamente E2E) + 85 Vitest ativos |
| Lógica de negócio testada apenas com browser | Lógica extraída para helpers puros + testes de componente |
| Sem fixture factory | src/test/fixtures/portal-data.ts reutilizável |
| Sem árvore de decisão de camada | Documentada em TESTING_MASTER.md §3 |
Redução de skip: 169 → 89 (−47%) Cobertura efetiva adicionada: +85 testes executando em cada build