Ao automatizar testes de integração, pode ser necessário autenticar um usuário diretamente via API para evitar passar pela interface de login em cada teste. Isso economiza tempo e evita flakiness em testes que envolvem a interface de login.
Neste post, vou mostrar como realizar a autenticação via API utilizando Cypress. O código a seguir usa uma requisição HTTP POST
para autenticar o usuário e, em seguida, salva o token de acesso nos cookies da sessão, permitindo que os testes subsequentes usem esse token sem precisar passar pela tela de login novamente.
Exemplo de código:
export function signIn() {
// Altere a url e o body conforme necessário'usuario@teste.com'
cy.request({
method: 'POST',
url: `https://meuSistema.com/auth/login,
body: { email:, password:'123Teste' }
}).then(response => {
// Verifica se a resposta foi bem-sucedida
expect(response.status).to.eq(200)
const responseJson = response.body
// Salva o token na variável de ambiente do Cypress
Cypress.env('accessToken', `${responseJson.accessToken}`)
// Configura os cookies necessários para manter a sessão
// Verifique o nome dos cookies utilizados pelo seu sistema
cy.setCookie('access_token', `${responseJson.accessToken}`)
cy.setCookie('refresh_token', `${responseJson.refreshToken}`)
})
}
Explicação:
- cy.request(): Aqui estamos enviando uma requisição HTTP do tipo
POST
para a rota de login da API. Os dados de login, como E-mail e senha, são enviados no corpo da requisição. - expect(response.status).to.eq(200): Depois que a API responde, verificamos se o status HTTP é
200
, o que significa que o login foi bem-sucedido. - Cypress.env(‘accessToken’): Salvamos o token de acesso retornado pela API no ambiente do Cypress, o que nos permite utilizá-lo em outros testes, se necessário.
- cy.setCookie(): Armazenamos os tokens de acesso e refresh, além do tipo de instituição, como cookies para manter a sessão do usuário durante os testes. Isso é útil quando as próximas requisições ou interações da aplicação dependem desses cookies.
Por que usar autenticação via API?
Autenticar-se diretamente pela API é útil porque você pode:
- Evitar interações repetitivas com a interface de login durante os testes, tornando-os mais rápidos.
- Bypassar possíveis problemas com a UI, focando em testes de funcionalidades específicas.
- Gerenciar tokens e sessão manualmente, o que permite mais controle durante os testes.
Seja o primeiro a comentar