Testes, doctor e conformance
Uma entrada de checks para o App — doctor reúne versões, lockfiles, manifestos, cache de docs e conformance — e o que cada prova cobre (e não cobre).
Uma entrada de checks
npm run check
npm run build --prefix frontend
No scaffold, check executa create-central-oon doctor, que inclui:
- mesma versão instalada de backend, frontend e gerador, e correspondência entre
package.jsone lockfile; - lockfiles npm v2/v3 separados, ou lock único de workspace com backend/frontend declarados;
- App manifest, manifestos opcionais de domínio/processo e conformidade;
- cache oficial
.ooncore/e hashes (corrija comnpm run ooncore:docs); - módulos TS/ESM não autocarregáveis, sintaxe CommonJS e imports relativos de diretórios de autoload que escapam de
backend/; - indicação de
cwde mapeamento/apipúblico para a rota interna.
A saída JSON contém códigos e caminhos e retorna exit code 1 quando há pendências.
Em Apps anteriores, troque o script check por create-central-oon doctor — ele já inclui docs check e conformance; não duplique no CI.
Conformance
npm run ooncore:conformance
npx create-central-oon conformance --json
Verifica: central.app.json válido, main.tsx com startOonApp, fronteira de central.config.js, ausência de patch de Mongoose, de código remoto/eval e de segredos no bundle, guards ligados, imports só de subpaths públicos, dependências file: dentro de frontend/, extensões de arquivo permitidas e segurança do runtime local. A lista de códigos está em Fronteira de segurança local.
Testes do App
O scaffold neutro não cria npm test na raiz. Quando existir, scripts.test na raiz é o ponto de entrada da suíte e orquestra os componentes; sem ele, o executor de publicação roda os testes declarados em backend e frontend.
Os testes na publicação usam dependências instaladas sem lifecycle scripts, em contêiner sem credenciais e sem rede. Testes que exigem serviços externos precisam ser compatibilizados.
Prove a jornada:
- acesso permitido e recusado (admin × viewer);
- validação de entrada (422);
- resultado e persistência (recarregar);
- erros com
code.
Dublês de capabilities
- PDF:
capabilities.configurePdfRenderingcom transport fake que devolve bytes%PDF-. - E-mail: substitua a fronteira externa; nunca envie e-mail real.
- Processo:
drainProcessJobs()para recálculos determinísticos. - Front:
createOonTestConfig()de@oondemand/oon-core-front/testing.
import { createOonTestConfig } from "@oondemand/oon-core-front/testing";
const config = createOonTestConfig({ routes: [{ path: "/", element: <HomePage /> }] });
Estados distintos
| Estado | Prova |
|---|---|
| Implementado | Código e testes locais |
| Build aprovado | npm run check + build |
| Publicado | Release aceita e imagem validada em Dev |
| Homologado | Jornada provada no endereço autenticado de Dev/HML |
Relate cada um separadamente.