Skip to content
CAKeysama edited this page Sep 30, 2026 · 1 revision

Testes

Há três suítes, todas com Jest + ts-jest. Os comandos rodam dentro de retool/.

Comando O que testa Precisa de
npm test Domínio, casos de uso e repositórios, com um Firestore em memória Só Node.js
npm run test:coverage O mesmo, com relatório de cobertura em coverage/ Só Node.js
npm run test:rules firestore.rules e as consultas do Histórico de Ações no emulador do Firestore Java 11+
npm run test:funcoes A Cloud Function redefinirSenhaTemporaria nos emuladores de Auth, Firestore e Functions Java 11+

Números em setembro de 2026:

  • npm test: 21 suítes e 185 testes;
  • npm run test:rules: 176 testes;
  • npm run test:funcoes: 7 testes;
  • cobertura, medida sobre src/domain, src/application e src/data: cerca de 85% das instruções e 87% das linhas.

npm test — testes unitários e de integração

Configuração: jest.config.cjs. Ignora src/tests/rules/, src/tests/funcoes/ e functions/.

Pasta Conteúdo
src/tests/domain/ Matriz de permissões, situação da conta e Convidado, sanitização e categorias da auditoria, solicitações de cargo, senha temporária, propagação de imagens, máquina de estados de reutilização
src/tests/application/ Fluxos de acesso completos (cadastro, aprovação, cargo, criação com senha temporária, troca de senha) e importação em lote
src/tests/data/ Repositórios, paginação e filtros do histórico, cobertura dos índices do Firestore, Storage e tradução de erros das funções
src/tests/utils/ Validação de arquivos
src/tests/mocks/firebaseMock.ts Firestore em memória: where, orderBy, limit, startAfter, contagem e lotes atômicos

Para usar o mock, importe ../../mocks/firebaseMock (caminho relativo) antes do código testado e chame resetMockDb() no beforeEach.

npm run test:rules e npm run test:funcoes — emuladores

Os dois comandos usam scripts/emuladores.mjs, que:

  • compila as Cloud Functions, quando necessário;
  • sobe os emuladores com firebase emulators:exec no projeto demo-retool;
  • roda o Jest com jest.rules.config.cjs, em série;
  • no Windows, encerra o processo Java do emulador que sobrar.
Arquivo O que cobre
src/tests/rules/firestore.rules.test.ts Autocadastro, aprovação, alteração de cargo, senha temporária, auditoria e operações administrativas, inclusive tentativas diretas pela API
src/tests/rules/historicoAuditoria.consultas.test.ts As 112 combinações de filtros do Histórico de Ações: resultado, ordem, paginação e total, registros legados e bloqueio para não-administradores
src/tests/funcoes/redefinirSenhaTemporaria.test.ts Senha antiga invalidada, troca obrigatória, auditoria sem a senha e recusas (sem sessão, não-admin, própria conta, pendente, inexistente)

O emulador não exige índices compostos, só a nuvem exige. Por isso a cobertura dos índices é verificada por src/tests/data/repositories/FirestoreAuditLogRepository.indices.test.ts, dentro do npm test.

Outras verificações

npx tsc --noEmit -p .              # checagem de tipos do app
npm --prefix functions run build   # checagem e compilação das funções
npm run build                      # build de produção
npm run lint                       # ESLint (ver limitação abaixo)

Limitações

  • Não há testes de componentes React (não há biblioteca de testes de interface instalada). As telas são validadas manualmente, de preferência contra os emuladores.
  • O npm run lint cobre apenas arquivos .js/.jsx e hoje termina com erros antigos em scripts/ e coverage/. Ver Solução de Problemas.

Problemas comuns ao rodar os testes nos emuladores estão em Solução de Problemas.

Clone this wiki locally