Login.spec.js
it.only('TC02 - Login with valid data as reseller ', () => { const id = ut.record(testdata, 2); cy.login(id.username, id.password); cy.title().should('equal', 'Compass - Home'); cy.visit('/users'); cy.logout(); });LoginPage.js -> desde la carpeta POM
checkHome() { const path = '/license-agreement'; cy.url().then(($url) => { if($url.includes(path)) { cy.log("Yes") } else { cy.log("No") } }) }Después, inicie sesión. Estoy llamando al método checkHome para ver si la página se redirige a casa o acuerdo. Si está en la página de acuerdo, aparece el botón Aceptar y hago clic en él.
Pero cuando registro la URL, genera la URL de la página anterior.
Además, esto se soluciona si pongo esperar en el medio. Pero no quiero usar la espera y una solución dinámica para esto.
Para fines de prueba, debe encontrar una manera de evitar este tipo de prueba condicional.
Si no puede, puede incluir el código que llama al método checkHome() . Sin embargo, para evitar el uso de cy.wait() , puede agregar cy.location('pathname').should('include', '/commmon-path/') si sus URL son comunes para la página de inicio o el acuerdo o consulta un elemento común en ambas páginas y agrega un debería (es decir cy.get('.common-element-in-home-and-agreement').should('be.visible') ).
Para esperar en la url, en lugar de .then() intente usar should() con una función para manejar uno u otro, porque debería volver a intentarlo hasta que se cumpla la condición
cy.url().should( url => { // Assert the url is one of the two expected, retry until passes expect(url).to.satisfy(function(url) { return url.includes('/license-agreement') || url.includes('/home') }) if (url.includes(path)) { cy.log("Yes") } else { cy.log("No") } })