Estoy tratando de escribir un código que le permita al usuario especificar la cantidad de elementos para crear a través de Cypress (esta flexibilidad es necesaria para algunas de nuestras pruebas).
function createSomeItems(itemCount, headers) { item: { id: 0, field1: 123, field2: "test text!"}; let chain; for (let i = 0; i < itemCount; i++) { chain = cy.request({method: 'POST', url: '/create-item', body: item, headers: headers}); item.id += 1; } return chain; } El problema es que la aplicación da un error debido a la identificación duplicada de los artículos. Por lo que puedo ver, la llamada a cy.request en realidad no se ejecuta cuando creo que lo hace.
Todavía soy muy nuevo en Cypress (y esta es la primera vez que uso JavaScript en aproximadamente 15 años), por lo que no estoy seguro de cómo resolver esto.
Sé que podría tener n llamadas a cy.request().then()... encadenadas explícitamente, aunque esto hará que las pruebas sean grandes y difíciles de leer (especialmente para casos de prueba que requieren valores más grandes de n ) y yo Estoy tratando de mantener el código ordenado y compacto.
Para cualquiera que tenga curiosidad, se me ocurrió una solución que devuelve la cadena de comandos (a diferencia del ejemplo de Cypress ):
function createSomeItems(itemCount, headers) { let item = { id: 0, field1: 123, field2: "test text!"}; function recursiveRequester(itemNumber, chain) { item.my_id = itemNumber; return chain.then(() => { return cy.request({method: 'POST', url: '/create-item', body: item, headers: headers}); .then(() => { if (itemNumber === itemCount) { return chain; } else { return recursiveRequester(itemNumber + 1, chain); } }) }) } return recursiveRequester(1, functionThatDoesOtherSetupwork()); }