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

140
Vistas
Sigue desplazándote hacia abajo mientras cargas en Cypress

Tengo una página que tiene un elemento donde, si te desplazas hacia abajo, carga nuevos datos.

Esto toma alrededor de 10 segundos.

He escrito la siguiente prueba:

 it('Should display at least one facility in booking panel', (done) => { function recursivelyScroll() { cy.get(element) .scrollTo('bottom'); cy.get(element) .then($el => { // If the element contains a loading class, we wait one second and scroll down again if ($el.find(Loading).length > 0) { setTimeout(recursivelyScroll, 1000); } else { // We are done waiting, no more loading is needed // write test here done(); } }); } recursivelyScroll(); });

CypressError

Se agotó el tiempo después de 4000ms . ¡La devolución de llamada done() nunca se invocó!

El método done() no se llama lo suficientemente rápido según Cypress, pero no tienen documentación sobre cómo extender el done de tiempo. Además, podría haber una mejor manera que desconozco para crear este comportamiento de desplazamiento en Cypress. ¿Hay una solución fácil?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

¿Has intentado usar el complemento de recursividad en Cypress?

Se vería algo como esto:

 cy.get(element).scrollTo('bottom'); recurse( () => cy.contains('element', 'Loading').should(() => {}), ($quote) => $quote.length > 0 , { limit: 300, log: false, post(){ setTimeout(recursivelyScroll, 1000); } }, )

La idea fue tomada aquí: https://www.youtube.com/watch?v=KHn7647xOz8 Aquí ejemplo de cómo usar e instalar https://github.com/bahmutov/cypress-recurse

about 4 years ago · Juan Pablo Isaza Denunciar

0

Intente cambiar a la afirmación When y declarar esa función fuera de la ejecución:

 When('Should display at least one facility in booking panel', (done) => { recursivelyScroll(done) } function recursivelyScroll(done){ //see implementation below }

No estoy seguro de qué es "Cargando", ¿tal vez tenga que poner comillas dobles?

Además, tenga en cuenta que cypress es asíncrono, luego las secciones scrollTo y luego del código se ejecutan al mismo tiempo en su código, solo use luego después del desplazamiento.

Y cambiaré setTimeout a la función cy wait antes de ejecutar la recursividad, intente con el siguiente código:

 function recursivelyScroll(done) { cy.get(element) .scrollTo('bottom') .then($el => { // If the element contains a loading class, we wait one second and scroll down again if ($el.find(".Loading").length > 0) { cy.wait(1000).then(()=>{ recursivelyScroll(done); }) } else { // We are done waiting, no more loading is needed // write test here done(); } }); }
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