¿Cómo repetir una prueba en Cypress varias veces?
Tengo la siguiente sección de código en una de mis pruebas de Cypress:
cy.window()
.its('store')
.invoke('getState')
.then((state) => {
expect(state.app.gameStarted).to.equal(true)
expect(state.app.noteButtonValues).to.have.lengthOf(4);
expect(state.app.noteButtonValues).to.include(state.app.correctAnswer)
cy.get("button").contains(state.app.correctAnswer).click()
cy.window()
.its('store')
.invoke('getState')
.then((state) => {
expect(state.app.correctAnswered).to.equal(1)
expect(state.app.totalAnswered).to.equal(1)
})
})
})
Estoy probando que cuando un usuario hace clic en un botón, el estado de Redux también se actualiza. Ahora supongamos que quiero repetir esta sección unas 100 veces. ¿Cómo sería eso posible?
No funciona envolverlo en un bucle for así:
for (let i = 0; i < 100; i = i++) {
cy.window()
.its("store")
.invoke("getState")
.then((state) => {
expect(state.app.gameStarted).to.equal(true);
expect(state.app.noteButtonValues).to.have.lengthOf(4);
expect(state.app.noteButtonValues).to.include(state.app.correctAnswer);
cy.get("button").contains(state.app.correctAnswer).click();
cy.window()
.its("store")
.invoke("getState")
.then((state) => {
expect(state.app.correctAnswered).to.equal(1);
expect(state.app.totalAnswered).to.equal(1);
});
});
}
davy.ai
Para repetir esta sección durante 100 clics, podemos usar el comando
cy.wrap()
de Cypress para crear un arreglo de 100 elementos y luego encadenar el comandoeach()
para iterar sobre cada elemento y ejecutar el código de prueba en él, de esta manera:Esto ejecutará el código de prueba en el comando
each()
100 veces, y Cypress esperará automáticamente a que cada iteración se complete antes de comenzar la siguiente.