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
└─────────────┘
| Camada | Ferramenta | Escopo atual | Spec |
|---|---|---|---|
| E2E | Playwright (@playwright/test) | Auth, onboarding, settings, pricing (app); admin CRUD (backoffice); smoke + conteúdo (website) | specs/009-functional-testing |
| Integration | — | Deferido | spec 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
| Gate | Comando | Onde roda |
|---|---|---|
| Formatação (pre-commit) | Husky + lint-staged + Prettier | git commit |
| Lint | pnpm lint | manual / revisão / CI |
| Build | pnpm build | manual / revisão / CI |
| E2E (Playwright) | pnpm test:e2e | manual / CI (quando configurado) |
| Aceite manual | browser local / prod | PLAYBOOK, specs |
Recomendação para CI (sem acoplamento a plataforma):
- Antes de merge em
main:pnpm lint+pnpm buildnos apps afetados - Opcional / nightly:
pnpm cloud:up(Postgres, Hasura, Redis) +pnpm test:e2e— Playwright pode subir os frontends viawebServereme2e/playwright.config.ts - Artefatos em falha:
e2e/playwright-report/ee2e/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
| Comando | Descrição |
|---|---|
pnpm test:e2e | Suite completa (projetos app, website, backoffice) |
pnpm test:e2e:app | Apenas apps/app (:3001) |
pnpm test:e2e:website | Apenas apps/website (:3000) |
pnpm test:e2e:backoffice | Apenas apps/backoffice (:3003) |
pnpm test:e2e:report | Abre 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 Playwright | App | Base URL | Browsers |
|---|---|---|---|
app | @framework/app | http://localhost:3001 | Chromium |
backoffice | @framework/backoffice | http://localhost:3003 | Chromium |
website | @framework/website | http://localhost:3000 | Chromium, 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)
| App | Lint | Build |
|---|---|---|
| service | pnpm --filter @framework/service lint | pnpm --filter @framework/service build |
| app | pnpm --filter @framework/app lint | pnpm --filter @framework/app build |
| backoffice | pnpm --filter @framework/backoffice lint | pnpm --filter @framework/backoffice build |
| website | pnpm --filter @framework/website lint | pnpm --filter @framework/website build |
Definition of Done (engenharia)
- FR-xxx da spec cobertos
- Lint + build passam nos apps afetados
- E2E relevantes passam (
pnpm test:e2eou 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
e2e/README.md— guia operacional Playwrightspecs/009-functional-testing— spec E2E- 03-spec-implementation-flow
- product/03-pillars-criteria.md
- 02-code-conventions