Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

83
Vistas
Cómo repetir una solicitud hasta obtener una respuesta diferente en Cypress

Estoy trabajando con solicitudes encadenadas y necesito esperar hasta que se cumpla una condición para poder probar la respuesta. La solicitud anterior siempre devolverá una respuesta, pero necesito que su estado sea "terminado" y, a veces, está "en progreso". No quiero usar una espera estática para este cy.wait() porque eso hace que las pruebas sean inestables o duren para siempre. ¿Como lo puedo hacer? Este es mi código hasta ahora, pero se atasca y nunca termina. Con espera estática (sin bucle) funciona bastante bien.

¿Algunas ideas?

 it('name of the test', function() { cy.processFile().then((response) => { let i=0; while (i<5){ cy.wait(1000); cy.getInfo().then((resp) => { if(resp.body.status !== 'finished'){ i++; } else { i = 5; expect(.....); } }) } }) })
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La declaración while (i<5) { es síncrona y se ejecuta a través de las cinco iteraciones antes de que comience la prueba.

En cambio, esto debería funcionar

 function waitForStatus (status, count = 0) { if (count === 5) { throw 'Never finished' } return cy.getInfo().then(resp => { if (resp.body.status !== status) { cy.wait(1000) // may not need to wait waitForStatus(status, ++count) // run again, up to 5 times } else { return resp // in case you want to expect(resp)... } }) } cy.processFile().then((response) => { waitForStatus('finished').then(resp => { expect(resp)... }) })

Hay una información más detallada aquí Escribir una función recursiva de Cypress

tu escenario

 npm i -D cypress-recurse # or use Yarn yarn add -D cypress-recurse
 import { recurse } from 'cypress-recurse' it('waits for status', () => { cy.processFile().then((response) => { recurse( () => cy.getInfo(), (resp) => resp.body.status === 'finished', { log: true, limit: 5, // max number of iterations timeout: 30000, // time limit in ms delay: 1000 // delay before next iteration, ms }, ) .then(resp => { expect(resp)... }) })
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda