Pular para o conteúdo

Compartilhados

Utilitários de teste compartilhados e independentes de framework, que podem ser usados tanto nos testes do Vitest quanto do Playwright.

Documentação completa: Arquitetura de Testes

Evitar conflitos entre frameworks de teste mantendo fixtures e factories sem dependências externas de teste (Vitest, Playwright, MSW, etc).

test-shared/
├── fixtures/ # Dados fixos para testes
│ ├── ids.ts # IDs de teste consistentes
│ ├── tokens.ts # Geração de tokens mock
│ └── users.ts # Usuários pré-configurados
├── factories/ # Criadores de objetos de teste
│ └── user.ts # Factory de usuários
└── index.ts # Exportações centralizadas
import { TOKENS, createUser, TEST_IDS } from "../../test-shared";
test("should authenticate", async ({ page }) => {
await page.route("**/api/login", async (route) => {
await route.fulfill({
body: JSON.stringify({
access_token: TOKENS.valid(),
refresh_token: TOKENS.refresh(),
}),
});
});
});
import { TOKENS, createUser } from "../../test-shared";
describe("Auth Service", () => {
it("should parse token", () => {
const token = TOKENS.valid();
expect(parseToken(token)).toBeDefined();
});
});
  • TOKENS: Gerador de tokens JWT mock

    • TOKENS.valid() - Token válido por 1h
    • TOKENS.expired() - Token expirado
    • TOKENS.refresh() - Refresh token
    • TOKENS.impersonate.valid() - Token de impersonação
  • TEST_IDS: IDs consistentes para testes

    • TEST_IDS.users.default - ID do usuário padrão
    • TEST_IDS.accounts.default - ID da conta padrão
  • TEST_USERS: Usuários pré-configurados

    • TEST_USERS.default - Usuário padrão
    • TEST_USERS.admin - Usuário admin
  • createUser(overrides?): Cria usuário com valores padrão
    const user = createUser({ name: "Custom Name" });
  • ❌ Setups do MSW (vai em test-utils/)
  • ❌ Configurações do Vitest (vai em vitest.config.ts)
  • ❌ Page Objects do Playwright (vai em e2e/pages/)
  • ❌ Dependências externas pesadas (faker, etc)
  • ✅ Fixtures simples e estáticas
  • ✅ Factories sem dependências externas
  • ✅ Constantes de teste
  • ✅ Geradores de dados mock simples
  • ✅ Tipos compartilhados para testes
Aspectotest-shared/test-utils/
FrameworkAgnósticoEspecífico Vitest
DependênciasNenhumaMSW, Vitest, etc
UsoVitest + PlaywrightApenas Vitest
ConteúdoFixtures, FactoriesHandlers MSW, Setup
Importável porQualquer testeSó testes Vitest
  1. Mantenha simples: Sem lógica complexa ou dependências externas
  2. Seja consistente: Use sempre os mesmos IDs/valores nos testes
  3. Documente: Adicione JSDoc explicando o propósito de cada fixture
  4. Exporte tudo: Use index.ts para exportações centralizadas
  5. Evite estado: Factories devem ser funções puras quando possível