Testes - CAKeysama/ReTool GitHub Wiki
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/applicationesrc/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:execno projetodemo-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 donpm 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 lintcobre apenas arquivos.js/.jsxe hoje termina com erros antigos emscripts/ecoverage/. Ver Solução de Problemas.
Problemas comuns ao rodar os testes nos emuladores estão em Solução de Problemas.