Docs

06 — Testes e Qualidade

Pirâmide de testes

        ┌─────────────┐
        │  E2E (P1)   │  Playwright — fluxos de usuário (app, website, backoffice)
        ├─────────────┤
        │ Integration │  (spec futura) — API REST sem browser
        ├─────────────┤
        │    Unit     │  (spec futura) — service NestJS, helpers
        └─────────────┘
CamadaFerramentaEscopo atualSpec
E2EPlaywright (@playwright/test)Auth, onboarding, settings, pricing (app); admin CRUD (backoffice); smoke + conteúdo (website)specs/009-functional-testing
Integration—Deferidospec futura
Unit—Deferido (@framework/service sem runner)spec futura

Aceite manual em browser continua válido para cenários fora da suite (OAuth Google, convites com email, etc.).

Gates de qualidade

GateComandoOnde roda
Formatação (pre-commit)Husky + lint-staged + Prettiergit commit
Lintpnpm lintmanual / revisão / CI
Buildpnpm buildmanual / revisão / CI
E2E (Playwright)pnpm test:e2emanual / CI (quando configurado)
Aceite manualbrowser local / prodPLAYBOOK, specs

Recomendação para CI (sem acoplamento a plataforma):

  1. Antes de merge em main: pnpm lint + pnpm build nos apps afetados
  2. Opcional / nightly: pnpm cloud:up (Postgres, Hasura, Redis) + pnpm test:e2e — Playwright pode subir os frontends via webServer em e2e/playwright.config.ts
  3. Artefatos em falha: e2e/playwright-report/ e e2e/test-results/ (screenshots, traces)

pnpm lint na raiz executa pnpm -r --if-present lint — análise estática, não substitui E2E.

E2E — Playwright

Infra em e2e/ (raiz do monorepo). Detalhes operacionais: e2e/README.md.

Setup (one-time)

pnpm install
pnpm exec playwright install   # browsers Chromium (+ Firefox para website)
pnpm cloud:up                  # Postgres, PgBouncer, Hasura, Redis
pnpm db:seed:local             # fixture dev@forestbit.co (opcional)

Comandos

ComandoDescrição
pnpm test:e2eSuite completa (projetos app, website, backoffice)
pnpm test:e2e:appApenas apps/app (:3001)
pnpm test:e2e:websiteApenas apps/website (:3000)
pnpm test:e2e:backofficeApenas apps/backoffice (:3003)
pnpm test:e2e:reportAbre relatório HTML (e2e/playwright-report/)

Listar testes sem executar: pnpm test:e2e -- --list

Fixtures de seed usam apps/service (:3002) via REST. Usuário padrão local: dev@forestbit.co / password123_.

Projetos e browsers

Projeto PlaywrightAppBase URLBrowsers
app@framework/apphttp://localhost:3001Chromium
backoffice@framework/backofficehttp://localhost:3003Chromium
website@framework/websitehttp://localhost:3000Chromium, Firefox

App e backoffice usam só Chromium (foco em fluxo funcional). Website inclui Firefox por impacto de conteúdo estático/SEO.

Debug

PWDEBUG=1 pnpm test:e2e:app -- e2e/app/auth/sign-in.spec.ts

Ver também e2e/README.md.

Por app (lint + build)

AppLintBuild
servicepnpm --filter @framework/service lintpnpm --filter @framework/service build
apppnpm --filter @framework/app lintpnpm --filter @framework/app build
backofficepnpm --filter @framework/backoffice lintpnpm --filter @framework/backoffice build
websitepnpm --filter @framework/website lintpnpm --filter @framework/website build

Definition of Done (engenharia)

  • FR-xxx da spec cobertos
  • Lint + build passam nos apps afetados
  • E2E relevantes passam (pnpm test:e2e ou projeto isolado), quando a spec incluir cobertura Playwright
  • Sem secrets no diff
  • Changelog se release user-facing
  • Help docs se feature visível ao cliente
  • Aceite manual dos cenários da spec (browser) — obrigatório para fluxos fora da suite (OAuth, email, etc.)

No fork — estender testes

Documente aqui se adicionar unit/integration ou ampliar E2E. Mantenha a pirâmide: preferir unit para lógica pura, integration para contratos API, E2E para jornadas críticas de usuário.

Links relacionados