Testes e validação
Os testes do COBRES cobrem comportamentos em camadas. Escolha os checks conforme a mudança e mantenha separados os testes sem dependências externas, os testes SQL e os testes HTTP.
API sem banco ativo
Execute em application/api/, com o ambiente Python preparado:
.venv/bin/python -m pytest -q
Use python -m pytest, não o executável isolado pytest. A coleta depende do pacote tests importável a partir dessa pasta. Testes que exigem SQL ou stack ativa se desabilitam quando suas flags não estão presentes.
Stack e SQL
A partir de application/:
make up
make migrate
make test
make test prepara o harness, ativa RUN_SQL_TESTS=1 e RUN_LIVE_TESTS=1 e inicia um mock OIDC quando necessário. O target test-sql é um alias desse fluxo, portanto também executa testes live.
O harness limpa limites de frequência de login para manter os testes repetíveis. Use uma stack local dedicada: não aponte esse fluxo para Redis ou banco compartilhados. O mock de identidade roda em desenvolvimento pela porta 9876 e pode ser iniciado com make mock-oidc.
Fronteiras que merecem atenção
test_session_scope.py garante commit antes da resposta. Os testes de fronteira SQL verificam DML proibido, grants e exposição de funções. Testes de manifesto e snapshots detectam alterações no contrato da camada de plataforma. O produto registra suas entradas em tests/product_boundary.py e seus pontos permitidos de contexto em tests/product_context_hygiene.py.
Mudanças em autenticação e Audience também precisam dos testes de concorrência, revogação, MFA, vínculo e exclusão de conta. Um teste simples de caminho feliz não demonstra isolamento.
Interfaces
Console e backoffice oferecem (em application/console e application/backoffice):
pnpm typecheck
pnpm lint
pnpm test:unit
pnpm build
No app, use pnpm test (node:test) no lugar de pnpm test:unit. Console e backoffice também têm pnpm test:e2e (Playwright), que sobe a própria SPA com pnpm dev e exige a API e os serviços de apoio em execução.
Antes de concluir
Verifique o contrato alterado, as mensagens visíveis e a ausência de dados pessoais em logs. Para documentação, execute o build Docusaurus e corrija links, âncoras e MDX inválido. Uma página de documentação não exige a execução da stack financeira ou disparos reais de comunicação.