en el archivo adjunto pongo capturas de pantalla del mismo caso de prueba con unos segundos de diferencia entre uno y otro.
Me gustaría saber por qué el mismo resultado del caso de prueba es 4xx, 5xx, 2xx en cada intento. ¿Cómo puedo evitarlo? ¿Podría estar relacionado con la espera?
PD: hablé con el equipo de DevOps y dijeron que el entorno es estable.
Especificaciones.js
it.only("buy a fix priced vehicle", () => { const minPrice = 26350; //const maxPrice = 1000000; //const offerAmount = Math.floor(Math.random() * maxval) + minval; const vehicleIdBuyNow = "30f269ac675813a68885ce336971d897"; const platformIdBuyNow = "yyyy"; const platformUserIdBuyNow = 0; [![enter image description here][1]][1] cy.request({ method: "POST", url: "xxxxxx", headers: { Authorization: "tttttt", "content-type": "application/json", }, body: { id: vehicleIdBuyNow, bid: minPrice, auctionPlatformId: platformIdBuyNow, auctionPlatformUserId: platformUserIdBuyNow, }, failOnStatusCode: false, }).then((res) => { cy.wait(2000) // Assertion for one by one //cy.log(res) //if ( res.status==404 || res.status==400 || res.status==500 || res.status==503) { if ( res.status!=200) { cy.log(JSON.stringify(res)) } else { expect(res.body.id).to.eq( vehicleIdBuyNow ); expect(res.body.auctionStatus).contains("finished"); expect(res.body.price).to.be.equal(minPrice); expect(res.body.winningBidPlatformId).contains(platformIdBuyNow); expect(true).to.be.true; expect(false).to.be.false; //Assertion in one time // for (const index of res.body.suggestedPrices) { // expect(res.body.suggestedPrices[index].amount).to.be.within( // minPrice, // maxPrice // ); // } assert.isNotNull(res.amount, "is not null"); assert.isNotNull(res.body.id, "is not null"); assert.isNotNull(res.body.createdAt, "is not null"); } })No estoy seguro de que los problemas de tiempo asíncrono con Cypress den como resultado la misma solicitud con esas respuestas diferentes.
Sugeriría mirar de cerca lo que se envía en cy.request y comparar los escenarios de aprobación y falla. Si hace clic en la solicitud en cy gui, la consola tendrá la solicitud y la respuesta.
A veces, hacer muchas solicitudes en su prueba puede abrumar a su servidor y generar respuestas diferentes. Sin embargo, si ve este problema al ejecutar la prueba única de forma aislada, es probable que eso lo descarte.
500 tiende a ser un error del servidor no controlado al intentar procesar la solicitud. Tal vez podría agregar una identificación única al encabezado y rastrearlo con desarrolladores para ver más detalles.
¿Sus solicitudes pueden dejar elementos en un estado determinado en el que falla la repetición de una prueba?
Si todavía está atascado, vea si ve un comportamiento similar con un curl/cartero
Nota: El cy.wait(2000) en su prueba no tendrá ningún impacto ya que la respuesta ya se habrá pasado a la función en esa etapa. Solo está retrasando la validación.