Recientemente comencé una nueva misión para escribir pruebas e2e usando cypress pero... la aplicación está basada en iframe (que puedo manejar) pero mi problema es que también usa una tonelada (y quiero decir UNA TONELADA) de top.someFunction ().
Esos top.someFunction() están interfiriendo con cypress desde top. se considera como la ventana de ciprés y termino con errores como top.someFunction() is not a function .
Una gran refactorización no parece una opción desde la perspectiva de los desarrolladores... Ya he pasado mucho tiempo tratando de encontrar una manera de hacer que funcione, pero estoy empezando a preguntarme si no deberíamos usar otra herramienta de automatización, pero realmente quiero usar ciprés...
Estoy perdido.
¿Tienes alguna sugerencia?
Es posible que solo necesite envolver sus llamadas en un .then() para que se ejecuten en la cadena de comandos.
En una prueba simple usando este HTML, puedo llamar a top.someFunction dentro de un encadenador
<script> top.someFunction = () => 'someFunction called' </script> it('calls top.someFunction', () => { cy.visit('html/top.html'); const result = top.someFunction() // fails with "top.someFunction is not a function" // runs too soon - visit not yet executed cy.then(() => { // put the call on the Cypress queue // to get the timing right const result = top.someFunction() expect(result).to.eq('someFunction called') // passes }) })