en mis pruebas de ciprés, busco configurar el reloj a una hora específica para tener un marco de tiempo constante para cada prueba.
Cuando llamo:
cy.visit('/path/to/page'); cy.get('#elementId').click();Todo está bien.
Sin embargo, cuando hago:
cy.clock(Date.now()); cy.visit('/path/to/page'); cy.get('#elementId').click();Obtuve el siguiente error:
This element `<button with Id i want to click>` is not visible because its parent `<body>` has CSS property: `display: none`
Esto también sucede cuando no paso argumentos a cy.clock() . ¿Por qué cy.clock() configura el cuerpo de esta página como invisible? ¿Y cómo evito esto?
El cy.clock() sobrescribe y congela las funciones de JavaScript relacionadas con los temporizadores: setTimeout, setInterval y los objetos Date.
Parece que su aplicación utiliza setTimeout durante la carga y algunos javascript iniciales no se completan.
Intente agregar un cy.tick() a la secuencia de comandos
cy.clock(Date.now()); cy.visit('/path/to/page'); cy.tick(1000); // try longer and shorter timings cy.get('#elementId').click()¿Qué tal si proporciona una salida personalizada para que el elemento sea visible primero y luego click() ?
cy.get('#elementId', {timeout: 6000}).should('be.visible').click() O también puede usar {force: true} en caso de que quiera hacer clic en un elemento oculto.
cy.get('#elementId', {timeout: 6000}).should('be.visible').click({force: true})