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

174
Vistas
Cypress no toma valores actualizados en la repetición, solo toma números codificados

¿Por qué parece que Cypress quiere saber cuántas veces se repetirán los casos de prueba antes de ejecutar todos los casos de prueba? En mi caso tengo dos archivos de prueba algo.js y cualquier cosa.js y también un cypress.env.json.

Algo.js se verá así

 describe('Run tests',()=>{ let i=0 Cypress.env('text',[]) it('running',()=>{ cy.get('some element').then($ele()=>{ Cypress.env('text').push($ele.text()) }) i++ }) it('running',()=>{ cy.get('some other element').then($ele()=>{ Cypress.env('text').push($ele.text()) }) i++ }) })

Ahora, cualquier cosa.js dependerá de los elementos enviados a la matriz Cypress.env('texto') en algo.js

cualquier cosa.js será así

 Cypress._.times(Cypress.env('text').length,()=>{ describe('Run tests',()=>{ it('run 1',()=>{ cy.get('someting').should('exists') //some tests }) it('run 2',()=>{ cy.get('some other element') //some tests }) }) })

cuál es el problema aquí en la línea Cypress._.times(Cypress.env('text').length,()=>{} Cypress.env('text').length solo se actualizará después de que se ejecute something.js . Pero Cypress no mostrará las pruebas escritas en any.js cuando las ejecuto juntas. Simplemente se detendrá después de something.js. Si doy un número como 3 o 5 o algo codificado dentro de Cypress._.times como este Cypress._.times(3,()=>{} y luego ejecutar, cypress ejecutará any.js después de something.js

¿Alguien puede decirme de qué se trata esto por favor y sugerirme alguna solución?

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

0

El problema es que las variables de entorno de Cypress se borran entre los archivos de especificaciones. Entonces, cuando intenta hacer lo anterior, su segundo archivo de especificaciones no se ejecuta porque Cypress.env('text') tiene una longitud de 0 (la variable no está definida).

Este ejemplo debería arrojar luz sobre el comportamiento:

 // foo.spec.js describe('test', () => { it('sets the variable', () => { Cypress.env('foo', 'bar'); }); }); // bar.spec.js describe('test', () => { it('prints the variable', () => { cy.log(Cypress.env('foo')); // will print `undefined`, not `"bar"`. }); });

La solución más clara y obvia sería combinar sus dos archivos de especificaciones en uno, para que las variables de entorno no se borren. Sin embargo, no se recomienda ejecutar pruebas que dependan en gran medida de los datos de otra prueba. En cambio, lo alentaría a encontrar una forma diferente de obtener los datos necesarios para ejecutar el segundo conjunto de pruebas: ¿puede manipular el DOM para que se comporte de cierta manera, puede establecer una cookie o un valor de almacenamiento local para cambiar el DOM, etc.? .

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