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;
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.
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 })Descubrí que esto aún no funciona en las acciones de Github, pero funciona localmente.