Pular para o conteúdo

Testes

O monorepo usa um único runner de testes unitários, o Vitest, e o Playwright para testes de ponta a ponta. As configurações ficam em pacotes de config/ para que o futuro editor 3D (app separado) use exatamente a mesma base.

Pacote Para quê
@moldape/vitest-config defineNodeConfig() e defineReactConfig() (jsdom, jest-dom, aliases do tsconfig, cobertura v8)
@moldape/playwright-config definePlaywrightConfig() (projetos desktop e mobile, relatórios, webServer) e authenticate() (login pela API do Better Auth)
@moldape/api-client Cliente HTTP e createQueryClient() — o que os testes de hooks precisam para montar um QueryClientProvider igual ao do app
@moldape/auth Config do Better Auth, papéis e nomes de cookie
Janela do terminal
pnpm test # todos os workspaces (turbo)
pnpm --filter web test # só o web
pnpm --filter web test:watch
pnpm coverage # com cobertura
// vitest.config.mts
import { defineReactConfig } from '@moldape/vitest-config/react'
export default defineReactConfig()
  • Arquivos *.test.ts(x) ao lado do código ou em __tests__/.
  • describe, it, expect e vi são globais; o jest-dom já vem registrado.
  • No web, server-only é trocado por um módulo vazio nos testes.
Janela do terminal
pnpm --filter web e2e:install # uma vez: baixa o Chromium
pnpm --filter web test:e2e # sobe o app em :3000 e roda as specs
pnpm --filter web test:e2e:ui # modo interativo
E2E_BASE_URL=https://homologacao.moldape.com pnpm --filter web test:e2e

Estrutura em apps/web/e2e:

Arquivo Papel
auth.setup.ts Faz login de cada perfil pela API (/api/auth/sign-in/email) e salva e2e/.auth/<perfil>.json
fixtures.ts asRole('customer' | 'admin') aplica a sessão salva; requireRole() pula a spec se o perfil não tiver credenciais
specs/public.spec.ts Login, cadastro, redefinição e redirecionamentos sem sessão
specs/customer.spec.ts Rascunhos, sacola e pedidos renderizados pelo servidor
specs/admin.spec.ts As sete telas do painel abrem com a tabela

Credenciais vêm de E2E_CUSTOMER_EMAIL/PASSWORD e E2E_ADMIN_EMAIL/PASSWORD (contas de teste, nunca de clientes reais). Sem elas, só as specs públicas rodam.

// playwright.config.ts do novo app
import { definePlaywrightConfig } from '@moldape/playwright-config'
export default definePlaywrightConfig({
webServer: { command: 'pnpm dev --port 3100', port: 3100 },
})

O auth.setup.ts e o fixtures.ts do web podem ser copiados como estão: o login usa a mesma API do Better Auth e os mesmos cookies (@moldape/auth).

Desenvolvido e documentado por
Nós Tecnologia · Desenvolvimento Criativo