Aquí está mi código para realizar el inicio de sesión y luego visitar a los usuarios.
cy.visit('http://localhost:3000/') cy.get("#username").clear().invoke('val', "admin") cy.get("#password").clear().invoke('val',"password") cy.get("button[type='submit']").click() //cy.wait(500)-> If I un-comment this line, it works fine cy.visit('/users/new')Ahora pasa tan rápido que si no pongo una espera de 500ms de por medio, me da error de "solicitud xhr fallida". Vea la captura de pantalla a continuación.
¿Alguien puede sugerirme cómo esperar dinámicamente hasta que se resuelva la solicitud?
La respuesta de Alapan funcionará, pero si sabe cómo se ve la solicitud de inicio de sesión, siempre puede interceptar eso y luego encadenar su visita fuera de la intercepción.
cy.intercept('your/login/request/url').as('login'); // modify intercept matcher to match your actual login request cy.visit('http://localhost:3000/') cy.get("#username").clear().invoke('val', "admin") cy.get("#password").clear().invoke('val',"password") cy.get("button[type='submit']").click().wait('@login').visit('/users/new')Cuando haya iniciado sesión en su página web, identifique un elemento y agregue una afirmación de que el elemento es visible después de hacer clic en el botón Enviar.
cy.visit('http://localhost:3000/') cy.get('#username').clear().invoke('val', 'admin') cy.get('#password').clear().invoke('val', 'password') cy.get("button[type='submit']").click() cy.get('element after login').should('be.visible')En caso de que la pantalla posterior al inicio de sesión tarde más de 4 segundos en aparecer, también puede agregar tiempos de espera personalizados.
cy.get('element after login', {timeout: 5000}).should('be.visible') Además, evite usar cy.wait(500) ya que introducirá descamación en la prueba.
Según su código, no hay afirmaciones sobre el inicio de sesión. Debe evitar iniciar sesión a través de la interfaz de usuario si no planea probar esa área y, en su lugar, iniciar sesión con cy.request() , que dependerá de cómo se diseñó el inicio de sesión de su aplicación. . Luego podrá iniciar sesión a través de una solicitud y cy.visit() cualquier página como usuario registrado.