Tengo una agrupación de pruebas de Cypress que están fallando, solo en mi entorno de Jenkins . Un bloque de describe completo no puede encontrar un elemento. Cada prueba en el bloque comienza con los mismos comandos:
describe("This section of tests", () => { it("Test for something in this section", () => { cy.login(); // custom login command, works in all other test blocks setupPage(); // page setup function, no problems in all other test blocks cy.wait(10000); // desperation wait cy.get("#toggle-detail-pane-button").click(); // issue here! // all tests in block run more assertions and commands after this }); // more similar tests in block }); // more describe blocks that also use cy.login and setupPage, with no issue Cuando ejecuto estas pruebas en la interfaz de usuario de prueba de Cypress, todas pasan. Cuando los ejecuto en la terminal de mi máquina con npx cypress run , pasan. Cuando entro en un terminal OpenStack remoto que está configurado para ejecutar mi proyecto y ejecutar cypress, y ejecutar npx cypress run , pasan.
Cuando ejecuto las pruebas en Jenkins, que usa un puñado de instancias idénticas de OpenStack para ejecutar cypress en paralelo, las pruebas fallan, consistentemente, con el siguiente mensaje:
AssertionError: Timed out retrying after 4000ms: Expected to find element: `#toggle-detail-pane-button`, but never found it. at Context.eval (http://localhost:3000/__cypress/tests?p=cypress/integration/stuff/mytests.spec.js:519:8)He intentado reorganizar mis pruebas, reescribirlas, etc., pero no tuve suerte. No puedo entender lo que está yendo mal aquí. Mi entorno de Jenkins usa una configuración personalizada de ciprés y, por alguna razón, el tablero no registra las pruebas, por lo que no puedo ir y ver capturas de pantalla o videos (eso es un problema completamente separado).
¿Por qué solo fallarían estas pruebas solo en mi entorno CI/CD? ¿Cómo puedo siquiera comenzar a depurar esto?
Pude volver a ejecutar el CI/CD con capturas de pantalla y videos, y luego pude scp los archivos de la instancia con las pruebas fallidas. Cuando se ejecuta en mi máquina, Cypress no tiene problemas para encontrar el elemento:
Cuando uso el patio de recreo del selector de ciprés en mi máquina, también lo encuentra:
Pero en la captura de pantalla que saqué de la instancia openstack ejecutando exactamente la misma prueba, no puede encontrarla:
(Perdón por todo el verde, esta es una aplicación propietaria)
¿Lo que da?
Eso significa que hay un problema con su comando cy.visit(). La página no se está cargando antes de la prueba por eso
Tuve un problema similar. Lo resolví obteniendo el elemento por un selector o clase en lugar de su id.
fui de:
cy.get('#mat-options-text').click()a
cy.get('mat-options').click()