Estoy manteniendo un proyecto de reacción que usa Cypress. Cypress por defecto es asíncrono. ¿Cómo realizar los siguientes comandos cy mientras el comando cy anterior aún se está procesando?
Ejemplo:
cy.get('showDialog').click() // Instantly closes due to some react states cy.get('showDialogCloseButton').click() // still loading looking for showDialogCloseButton which eventually fails // need to execute this again to show dialog and complete above cy command: cy.get('showDialog').click()Sin embargo, el último comando no se puede ejecutar ya que necesita que el comando anterior finalice (lo que resultó en un error)
Usando cy.wait() después de cy.get('showDialogCloseButton').click()
ex:
cy.get('showDialogCloseButton').click(); cy.wait(1000);Con este tercer comando se ejecutará después de 1 s, siempre, pero hará que su conjunto de pruebas sea innecesariamente lento.
Entonces puede intentar aumentar el tiempo de espera (s)
cy.get('showDialog',{timeout: 30000}).click({timeout: 30000});Este comando solo fallará después de 30 segundos de no poder encontrar el objeto o, cuando lo encuentre, 30 segundos de no poder hacer clic en él.
Puede probar su propio tiempo de espera. Así que también puede hacerlo fácilmente con la validación.
cy.get('showDialog', { timeout: 30000 }).should('be.visible').then(() => { cy.get('showDialog').click(); })