Skip to content

Testing Backlog — SSOT

SSOT do que falta cobrir em testes na plataforma OLP. Atualizado em cada sprint. Toda nova lacuna deve ser registrada aqui antes de virar card.

Status atual da pirâmide de testes (após Sprint P0 — CI Fix):

CamadaArquivosTestsEm CI?
Unit + Integration (Vitest src/**)76794
Deno (supabase/functions/**)85~600
Contract (tests/contracts/)1✅ (após deploy-staging)
Security/IDOR (tests/security/)poucos
E2E (Playwright)poucos

Sprint corrente — Webhooks (P0+1)

ItemTipoStatus
resend-webhook — HMAC + tolerance window + idempotência + bounce/complained → unsubscribeDeno black-box contra staging🔄 em andamento
wasender-webhook — HMAC + idempotência + status mapping + rate limitDeno black-box⬜ todo
mercadopago-webhook — adicionar contract test de assinatura ts/v1 + tipos payment.* e subscription_preapprovalDeno (existe base)⬜ todo
WEBHOOK_TESTING_STANDARD.md — padrão SSOT de teste de webhookDoc🔄
Memória mem://testing/webhook-contract-standardMemory

Definição de pronto da sprint: 3 webhooks com suite Deno completa, CI verde, doc + memória publicadas.


P1 — Anti-regressão crítica (próximas 2–3 sprints)

Hooks useAdmin* (8 hooks sem teste)

HookCobertura mínima
useAdminDashboardrender + queryKey contém escola_id + onError sanitiza
useAdminLogsfiltros (acao, periodo) + paginação
useAdminFinanceiromutations + optimistic rollback
useAdminFaturaslistagem + ações de cobrança
useAdminComunicacaoenvio + audiência
useAdminEscolasCRUD escola
useAdminUsuariosCRUD usuário + escopo de papel
useAdminRelatoriosfiltros e export

Edge Functions sem teste (P1)

FunctionRiscoTests obrigatórios
admin-dashboardleitura ampla — IDORauth, IDOR cross-escola, shape do payload
admin-logsPIImasking, filtros, IDOR
admin-financeirodinheiroIDOR, mutações com 403 em zero rows
admin-comunicacaoenvio de massarate limit, audiência, IDOR
admin-faturasdinheiroIDOR, idempotência de cobrança

IDOR coverage tests/security/

Para cada função admin-* acima: teste cross-escola provando 403 quando JWT de escola A tenta acessar recurso de escola B.

Sanitização de erros

Adicionar fixtures de erros Postgres reais (23505, 23503, 42501, PGRST*) ao suite unit de error-helpers.ts garantindo que nenhuma jargão técnica vaza pra UI.

Smoke RTL das páginas admin (10 páginas)

Render sem crash + presença do título + ausência de erros no console.


P2 — Cobertura de feature

Hooks restantes (46 sem teste — 57% do total)

Priorizar por:

  1. Hooks que fazem mutação (rollback, toast, queryKey invalidation)
  2. Hooks com derived data complexa (memo + filter)
  3. Hooks de Mural Olímpico (alto risco LGPD)

Edge Functions sem teste (~15)

  • mural-* (6 funções): OTP, login, snapshot, releases
  • portal-*: gateway, redirect
  • import-*: validação Excel + processamento background

Contratos externos (Contract suite)

ProviderCenário
Twilio (SMS)retry, falha 4xx, custo > 0
Cloudflare Worker (gateway)redirect whitelisted, anti-loop
Resend (transactional)já coberto via webhook — falta envio

E2E flows críticos (Playwright)

  • Login (CPF/INEP/CNPJ) + OTP + role switch
  • Criação de aplicação pelo coordenador
  • Aprovação de inscrição pelo especialista
  • Ciclo trial → pagamento MP → fatura paga

P3 — Qualidade transversal

ItemFerramentaGate
Performance budgets (LCP/TBT)Lighthouse CILCP < 2.5s nas rotas top-5
Acessibilidade A11yaxe-core + PlaywrightZero violações serious/critical
Visual regressionPlaywright snapshotsTelas admin + portal
Cobertura mínimaVitest coverage≥ 60% global, ≥ 80% em lib/ e _shared/

P4 — Observabilidade do CI

  • Upload de coverage (Codecov ou artifact persistente)
  • Badge no README
  • Tempo por job + alerta >10min
  • Mutation testing (Stryker) em _shared/ e src/lib/

Métricas de saída (definição de pronto do backlog)

MétricaHojeMeta
Edge Functions com teste74%100%
Hooks com teste43%≥ 80%
Páginas com smoke test0%100%
Contratos externos com suite1/55/5
Cobertura IDOR admin-*parcial100%
Cobertura global (Vitest + Deno)desconhecida≥ 60%

Como contribuir com este backlog

  1. Encontrou superfície sem teste? Adicione linha à tabela P1/P2/P3 conforme criticidade.
  2. Concluiu item? Mover para ## Histórico no final + atualizar Métricas.
  3. Mudou prioridade? Atualizar com nota decisão YYYY-MM-DD: motivo.

Este arquivo é referenciado em:

  • docs/development/TESTING_MASTER.md (seção "Backlog")
  • docs/development/AUDIT.md (@audit testes)
  • Sidebar: Testes > Backlog

Histórico

  • 2026-05-09 — Incidente CI (deno-tests + security-tests): 477 falhas Deno + 1 falha security tests classificadas em AUDIT_TEST_BREAKAGE_2026-05-09. Corrigidos: env do step deno-tests (passada via secrets STAGING_*), pdf-helpers-xss.test.ts movido para suite jsdom. Em aberto: D1 (fallback hardcoded em e2e-login.contract.test.ts), D2 (reavaliar 401 antes de Zod após CI verde), D3 (helper requireEnv). Confirmado: OLP não depende de Node 20 (CI em Node 22).
  • 2026-05-09 — Sprint P0 (CI Fix) concluída: 794 Vitest tests + 600 Deno tests agora rodam em CI (antes só 4 sentinelas). getUserFriendlyError ganhou padrões para Postgres/PGRST/connection. Modais de senha alinhados ao SSOT "Sua segurança importa".