Pular para conteúdo

ADR-0012: Estratégia de Testes — Vitest + Playwright

Status

Accepted

Context and Problem Statement

Os projetos precisam de cobertura de testes em múltiplos níveis: unitários, integração e e2e, com execução rápida no CI.

Decision Drivers

  • Velocidade de execução no CI
  • Suporte a TypeScript nativo
  • Compatibilidade com Next.js e NestJS
  • Testes e2e confiáveis para fluxos críticos

Considered Options

  • Vitest + Playwright
  • Jest + Cypress
  • Jest + Playwright

Decision Outcome

Chosen option: Vitest (unit/integration) + Playwright (e2e), porque Vitest é significativamente mais rápido que Jest com suporte nativo a ESM/TypeScript, e Playwright é mais confiável que Cypress para testes cross-browser.

Positive Consequences

  • Vitest: watch mode rápido, compatível com Jest API (migração fácil)
  • Playwright: testes e2e paralelos, multi-browser, trace viewer para debug
  • Storybook interaction tests via @storybook/test (baseado em Vitest)
  • NestJS: Vitest substitui Jest sem mudança de API

Negative Consequences

  • Playwright requer browsers instalados no CI (GitHub Actions tem action oficial)
  • Configuração inicial do Playwright mais verbosa que Cypress

More Information

  • Unit/Integration: Vitest — todos os projetos
  • E2E: Playwright — atenvi-admin, atenvi-web
  • Storybook: @storybook/test para interaction tests em atenvi-ui
  • CI: testes unitários em PR, e2e em merge para main