O problema

Testes de API frequentemente precisam de usuários autenticados, tokens e dados preparados antes da execução. Repetir esse processo em cada cenário gera duplicação.

Preparação manual

const user = createUser();

await usersService.register(user);

const login = await authService.login(
  user.email,
  user.password
);

A lógica funciona, mas espalha responsabilidade de preparação.

Criando uma fixture reutilizável

apiUser: async ({ request }, use) => {
  const user = createUser();

  await usersService.register(user);

  const login = await authService.login(
    user.email,
    user.password
  );

  await use({
    email: user.email,
    token: login.access_token
  });
}

O teste passa a receber apenas os dados necessários.

Benefícios

  • Menos código duplicado.
  • Usuários isolados por teste.
  • Autenticação centralizada.
  • Maior legibilidade.

Boas práticas

  • Evitar fixtures com muitas responsabilidades.
  • Criar nomes claros.
  • Preparar somente dados necessários.

Conclusão

Fixtures tornam a preparação dos testes uma camada reutilizável e permitem que os cenários foquem no comportamento validado.