Pular para o conteúdo

Testes

Testes não são opcionais nem posteriores. O desenvolvimento é guiado a testes (princípio 8): toda ADR aplica este padrão e detalha, no 005-relatorio-tecnico.md, o que criou.

  • Vitest é a ferramenta universal de testes.
  • Testes unitários (Vitest) cobrindo rotas e services. A rota é testada contra o contrato Zod/OpenAPI — o teste existe antes da implementação.
  • Smoke tests por domínio: verificações rápidas, prontas para rodar, que confirmam que os fluxos críticos do domínio respondem ponta a ponta. A unidade de smoke é o domínio, não a rota.
  • Testes por humano quando o julgamento visual/funcional exigir — descritos como checklist na ADR.

A rota nasce do contrato e o contrato nasce do Zod. A ordem é única:

  1. Definir os schemas Zod de request/response da rota — o trecho do OpenAPI sai daí. Schemas reutilizáveis ficam em um módulo compartilhado do domínio.
  2. Escrever o(s) teste(s) unitário(s) da rota contra esse contrato (estado vermelho). O teste exercita a rota como caixa-preta sobre o contrato Zod, não a implementação.
  3. Implementar a rota e o service até o teste passar (estado verde).
  4. Atualizar/garantir o smoke do domínio — se a rota é um fluxo crítico do domínio e ainda não está coberta, ela entra. Se já cai dentro de um fluxo crítico existente, nada a fazer.
  • Um arquivo de smoke por domínio, cobrindo os fluxos críticos dele ponta a ponta (ex.: em pedidos, criar + listar + cancelar).
  • A régua é “fluxos críticos cobertos”, não “uma chamada por domínio nem uma chamada por rota”: se uma rota crítica não cai naturalmente no fluxo principal, ela entra no smoke do domínio mesmo assim.
  • Smoke é rápido e roda contra a API real (local ou de um ambiente alvo). Não substitui o unitário; complementa.
  • Cada entrega deixa o smoke do(s) domínio(s) afetado(s) pronto para execução.
  • As validações pnpm lint, typecheck e build acompanham os testes como portão de entrega.
  • O relatório técnico lista os testes unitários e o smoke criados/atualizados.

O escopo de cobertura e os testes específicos são decididos por cada ADR — o padrão universal é que o contrato venha primeiro, o unitário antes da implementação e o smoke por domínio acompanhe a entrega.

Criado por Joseph Trupel