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

191
Vistas
La biblioteca 'cypress-promise' no funciona como se esperaba

Tengo pruebas en las que utilicé la biblioteca cypress-promise . He incluido prometer en eso esperar hasta que se ejecuten mis comandos y dar respuesta. en mi archivo, tengo 3 bloques cuando ejecuto individualmente, se ejecuta correctamente, pero cuando ejecuto todo a la vez, primero y segundo, se cancela la API cuando la URL cambia o la URL se actualiza y la última prueba se ejecuta correctamente.

 it("visit particular employee", async ()=>{ cy.visit("/") const id = 12 const updatedEmployeeData = await cy.uploadEmployeeData().promisify(); cy.visit(`/all-employess/${updatedEmployeeData[id].employeeCode}`); cy.get('.input').type(updatedEmployeeData[id].name); }) it("visit particular employee 2", async ()=>{ cy.visit("/") const id = 13 const updatedEmployeeData = await cy.uploadEmployeeData().promisify(); cy.visit(`/all-employess/${updatedEmployeeData[id].employeeCode}`); cy.get('.input').type(updatedEmployeeData[id].name) }) it("visit particular employee", async ()=>{ cy.visit("/") const id = 14 const updatedEmployeeData = await cy.uploadEmployeeData().promisify(); cy.visit(`/all-employess/${updatedEmployeeData[id].employeeCode}`); cy.get('.input').type(updatedEmployeeData[id].name) }) in first it and second it after cy.visit(`/all-employess/${updatedEmployeeData[id].employeeCode}`); it stops executing and in third it properly executes.

No entiendo con este enfoque;

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

0

Como documentó la biblioteca en su página ( https://www.npmjs.com/package/cypress-promise ): ¿importó y polillenó los comandos cy?

Una alternativa es usar el polyfill de 'registro' para agregar el método promisify a todas las cadenas de Cypress. Esto requiere importar 'cypress-promise/register' en su archivo cypress/support/index

Si no, intente usar la biblioteca de la forma en que está documentada allí: await promisify(<your cypress cmd>) :

 import promisify from 'cypress-promise' it('should run tests with async/await', async () => { const foo = await promisify(cy.wrap('foo')) expect(foo).to.equal('foo') })

Si lo hizo, no puedo ayudarlo más, pero actualmente no es realmente posible leer ese hecho fuera de su pregunta.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Parece que podría adoptar un enfoque alternativo sin cypress-promisify

 beforeEach(() => { cy.visit("/") cy.uploadEmployeeData().as('updatedEmployeeData') }) it("visit particular employee", () => { cy.get('@updatedEmployeeData').then(updatedEmployeeData => { const id = 12 cy.visit(`/all-employess/${updatedEmployeeData[id].employeeCode}`); cy.get('.input').type(updatedEmployeeData[id].name); }) }) it("visit particular employee 2", () => { cy.get('@updatedEmployeeData').then(updatedEmployeeData => { const id = 13 cy.visit(`/all-employess/${updatedEmployeeData[id].employeeCode}`); cy.get('.input').type(updatedEmployeeData[id].name) }) }) it("visit particular employee", () => { cy.get('@updatedEmployeeData').then(updatedEmployeeData => { const id = 14 cy.visit(`/all-employess/${updatedEmployeeData[id].employeeCode}`); cy.get('.input').type(updatedEmployeeData[id].name) }) })

Alternativa para evitar anidados entonces.
La compensación es que debe usar la sintaxis de function() para cada it()

 beforeEach(() => { // can be before() instead of beforeEach() if data does not change cy.visit("/") cy.uploadEmployeeData().as('updatedEmployeeData') cy.uploadManagerData().as('updatedManagerData') }) it("visit particular employee", function() { // use function() form // so that "this" is defined correctly const id = 12 cy.visit(`/all-employess/${this.updatedEmployeeData[id].employeeCode}`); cy.get('.input').type(this.updatedEmployeeData[id].name); // also use this.updatedManagerData })
about 4 years ago · Juan Pablo Isaza Denunciar

0

Descubrí que esto aún no funciona en las acciones de Github, pero funciona localmente.

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