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.json e 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 com npm 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 cwd e mapeamento /api pú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.configurePdfRendering com 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.