Pular para o conteúdo principal

Estratégia de testes

Ferramentas

  • Vitest (npm run test / test:watch / test:coverage)
  • Testing Library + jsdom
  • Helpers em src/test/ e testes colocalizados *.test.ts

CI corre npm run test:coverage e envia coverage/lcov.info ao Sonar (sonar-project.properties). Exclusões Sonar: **/*.test.*, src/test/**.

Pirâmide neste repo

TipoO que cobrimosO que não é este repo
Unitário / mapperdomain/, parsers de services, types (User.test.ts, Company.test.ts)
Service HTTPfetch mockado (Auth, Roles, CompanySlug, Tenant*, Governance*, IntegrationCatalog)contrato real da API
Componentepontual (quando o risco é UI de form)E2E Playwright (não configurado)
E2E / contratobackends Central/Default

Não há suíte de integração contra API real no CI do front.

Como rodar

npm run test
npm run test:watch
npm run test:coverage

O que é obrigatório num PR

  • Novo mapper/normalizer → teste de casos felizes + payload incompleto
  • Novo service → pelo menos URL/método e tratamento !res.ok
  • Regra de role/admin (domain/roles) → testes de equivalência A1/A2/A3/N0
  • Não mockar o mundo inteiro para mudar uma className

Cobertura esperada

Não há gate numérico no package.json. Diretriz prática:

  • Não baixar cobertura das pastas domain/ e models/types sem motivo
  • Preferir testes no código que transforma JSON da API (é onde os bugs de tenant aparecem)
  • Views grandes de governança: teste o helper/service, não o JSX de 2k linhas

Sonar é continue-on-error no CI: quality gate vermelho não bloqueia merge hoje — ainda assim trate findings novos.

Convenções

  • Nome: Foo.test.ts ao lado de Foo.ts
  • Não bater em rede: mock global.fetch
  • Não gravar JWT real em fixtures
  • i18n: prefira errorKey a snapshot de texto traduzido

Browser

Mudança de UI: validar no Vite (npm run dev) o fluxo do usuário (login se possível, rota, empty/error). Screenshot único não substitui o clique.