A série “pitadas de Cypress” está com tudo!
Hoje você vai aprender como garantir que seus testes se comportam da mesma forma quando executados diversas vezes.
O Cypress é um framework de testes fantástico!
Ele empacota junto com ele várias outras bibliotecas famosas para faciliar a vida de seus usuários, ou seja, a sua vida!
Uma dessas bibliotecas é o lodash.
Basta usar
Cypress._
E você poderá invocar qualquer funcionalidade do lodash. 🤩
Dentre as diversas funcionalidades do lodash, uma que se “encaixa como uma luva” para o problema que queremos resolver é o .times.
Um exemplo facilitaria o endendimento, não?
Então vamos lá!
Cypress._.times(5, () => {
it.only("submete o formulário com sucesso", () => {
const customer = {
firstName: "João",
lastName: "Silva",
email: "joaosilva@example.com"
};
cy.fillMandatoryFields(customer);
cy.contains("Enviar").click();
cy.get(".success p").should("contain", "Formulário submetido com sucesso.");
});
});
Após executar o teste acima, tenho o seguinte resultado
Aplicação exemplo ✓ submete o formulário com sucesso (1725ms) ✓ submete o formulário com sucesso (1212ms) ✓ submete o formulário com sucesso (1200ms) ✓ submete o formulário com sucesso (1195ms) ✓ submete o formulário com sucesso (1256ms) 5 passing (8s)
Como pode-se perceber, meu teste parece estável e passou 5 vezes seguidas. Yay! 🎉
Problema resolvido!
E aí? O que está achando da série?
Estou coletando feedback e criando um backlog para os próximos posts. Deixa um comentário com o que gostaria que eu abordasse em um conteúdo futuro.
Este conteúdo foi traduzido para inglês e pode ser encontrado no DEV Community.
Ficou curioso(a) e quer aprender mais sobre automação de testes com Cypress? Conheça os cursos da Escola TAT
- Cypress, do Zero à Nuvem
- Cypress intermediário
- Cypress avançado
- Boas práticas em automação de testes com Cypress
- Testes end-to-end com Cypress
Bons testes! 🎉
Obrigado pela explicação!
Sabe dizer se existe alguma forma quando o Cypress estiver executando vários testes, e se caso algum der erro faça com que o cypress rode o teste que deu erro novamente?
Tem sim, recomendo ler sobre Test Retries, direto da documentação oficial do Cypress.
Segue o link https://docs.cypress.io/guides/guides/test-retries.
Muito bom Walmyr!
Walmyr,
Como faço para pegar o indice da quantidade de execuções?
Seria algo como:
Cypress._.times(10, () => {
it(`interação ${x}`, () => {
// codigo….
} )
}
Basta passar o índice como argumento da função de callback do _.times.
Algo assim Cypress._.times(3, n => console.log(n))
Poderia abordar mais sobre pipeline de testes automatizados com o cypress, cypress cloud e o github actions.
Recomendo dar uma olhada nas playlists Cypress Cloud e Integração Contínua no Canal Talking About Testing no YouTube.
Seguem os links:
– https://youtube.com/playlist?list=PL-eblSNRj0QF7Ytcl1zVfD08cTyQjI3ik&si=6e6V991bYtkKnY8X (Cypress Cloud)
– https://youtube.com/playlist?list=PL-eblSNRj0QHgzdWNkGks9_JdhV9iAwFr&si=5xBfmxxhWYTFeOEK (Integração Contínua)