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.
Quer aprender automação de testes com Cypress na prática? Conheça meus cursos na Escola Talking About Testing, ou no Udemy.
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))