Skip to content

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étricaQuantidade
Testes migrados para Vitest85
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çãoQuantidadeJustificativa
Removidos7100% 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 VitestTestesCobertura
src/components/mural-olimpico/__tests__/fase-content.test.tsx25Visibilidade 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 VitestTestesCobertura
src/components/mural-olimpico/__tests__/mural-liberacoes.test.tsx21Publicação notas/resultados, exclusividade mútua, switches por campo, Top X, multi-nível

Fase 4 — Olimpíada Detalhes (Validação e Fases)

Arquivo VitestTestesCobertura
src/components/olimpiada-detalhes/__tests__/olimpiada-form-validation.test.ts28Campos 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.ts27CRUD 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 VitestTestesCobertura
src/components/mural-olimpico/__tests__/portal-responsavel-ui.test.tsx18Dashboard responsável (tabs, seletor de filho), labels adaptados (3ª pessoa), certificados, perfil

3. Testes Removidos

OrigemQuantidadeJustificativa
e2e/definir-senha.spec.ts (arquivo inteiro)7Todos duplicados com modal-definir-senha.test.tsx
e2e/portal-aluno-dashboard.spec.ts (visuais)3ScoreRing, medal SVG e badge já cobertos por testes unitários existentes
Total10

4. Testes Mantidos como E2E

4.1 E2E Ativos (16 testes)

SpecTestesJustificativa
login-senha.spec.ts6Cookie HttpOnly, OTP, JWT via Worker Gateway
agenda-coordenador.spec.ts4Navegação SPA + interação real com calendário
comunicacao-coordenador.spec.ts5Upload de arquivo + mutation real
loading-gate.spec.ts1Rendering condicional com routing real

4.2 E2E Skipados (89 testes — aguardando staging)

SpecSkipJustificativas por grupo
portal-aluno-dashboard.spec.ts28Cookie olp_mural HttpOnly, login matrícula+DN, navegação real, CSS layout mobile/desktop
portal-responsavel.spec.ts24OTP WhatsApp, cookie olp_mural, lockout timing, CSS layout, routing
mural-coordenador.spec.ts19Sidebar/routing real, CRUD com mutations + upload, window.open/clipboard
olimpiada-detalhes.spec.ts15Skeleton/loading real, drag-and-drop, multi-tab com routing, form complexo com save real
loading-gate.spec.ts2Rendering condicional com múltiplos papéis
login-senha.spec.ts1Rate 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 staging

Contratos (Deno/Vitest)

text
2 arquivos — falham sem staging configurado (esperado)

6. Impacto da Migração

AntesDepois
169 testes E2E skipados sem cobertura efetiva89 skip (legitimamente E2E) + 85 Vitest ativos
Lógica de negócio testada apenas com browserLógica extraída para helpers puros + testes de componente
Sem fixture factorysrc/test/fixtures/portal-data.ts reutilizável
Sem árvore de decisão de camadaDocumentada em TESTING_MASTER.md §3

Redução de skip: 169 → 89 (−47%) Cobertura efetiva adicionada: +85 testes executando em cada build