Pular para o conteúdo principal

Paleta de Comandos

Pesquisar um comando para executar...

Testes E2E com Better Auth

Escrito por
Avatar de Nelson Lai
Nelson Lai
Publicado em
--
Visualizações
--
Comentários
--
Testes E2E com Better Auth

TL;DR

Você precisará gerar um token de sessão válido e armazená-lo como cookies. Isso permite que seus testes E2E acessem rotas autenticadas sem login manual. Esse método funciona tanto para autenticação baseada em credenciais quanto para OAuth.

Repositório do GitHub: nelsonlaidev/e2e-testing-with-better-auth

Prefácio

Neste guia, usaremos Playwright como nossa estrutura de teste E2E, mas os conceitos podem ser aplicados a outras estruturas, como o Cypress.

Para simplificar, usaremos um exemplo de autenticação baseada em credenciais. No entanto, os mesmos princípios se aplicam aos provedores OAuth.

Além disso, usamos um banco de dados SQLite para fins de demonstração. Ajuste as interações do banco de dados (por exemplo, nomes de tabelas, tipos de colunas) de acordo com sua configuração.

Gerando um Token de Sessão

Para simular uma sessão autenticada, precisaremos gerar um token de sessão assinado usando BETTER_AUTH_SECRET. Esse token será usado nos cookies da sessão.

Inserindo Dados de Teste

Queremos manter nosso usuário de teste estático para evitar a criação de vários usuários durante os testes. Insira um usuário de teste, conta e sessão no banco de dados se eles ainda não existirem. Usamos 0 como o ID exclusivo para todas as chaves primárias por simplicidade.

Armazenando a Sessão

Salve o token assinado como um cookie em um arquivo JSON para uso em frameworks de teste. Não se esqueça de usar encodeURIComponent no valor do cookie.

Usando a Sessão nos Testes

Carregue a sessão armazenada em seus testes E2E para acessar rotas protegidas sem fazer login. O exemplo abaixo usa o Playwright, mas pode ser adaptado para qualquer biblioteca de teste (por exemplo, Cypress) que seja compatível com a injeção de cookies.

TypeScript
playwright.config.ts
Editar no GitHub
Última atualização: --