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 |
Testes unitários
Seção intitulada “Testes unitários”pnpm test # todos os workspaces (turbo)pnpm --filter web test # só o webpnpm --filter web test:watchpnpm coverage # com cobertura// vitest.config.mtsimport { defineReactConfig } from '@moldape/vitest-config/react'
export default defineReactConfig()// vitest.config.mtsimport { defineNodeConfig } from '@moldape/vitest-config/node'
export default defineNodeConfig({ test: { setupFiles: ['./tests/setup.ts'] },})- Arquivos
*.test.ts(x)ao lado do código ou em__tests__/. describe,it,expectevisão globais; o jest-dom já vem registrado.- No web,
server-onlyé trocado por um módulo vazio nos testes.
Testes de ponta a ponta (Playwright)
Seção intitulada “Testes de ponta a ponta (Playwright)”pnpm --filter web e2e:install # uma vez: baixa o Chromiumpnpm --filter web test:e2e # sobe o app em :3000 e roda as specspnpm --filter web test:e2e:ui # modo interativoE2E_BASE_URL=https://homologacao.moldape.com pnpm --filter web test:e2eEstrutura 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.
No editor 3D
Seção intitulada “No editor 3D”// playwright.config.ts do novo appimport { 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 porNós Tecnologia · Desenvolvimento Criativo

