In cypress, how do I wait for a page to load?

bbsimonbb picture bbsimonbb · Mar 29, 2018 · Viewed 21.2k times · Source

Don't tell anyone, but our app is not yet single-page. I can wait on a given XHR request by giving the route an alias, but how do I wait until some navigation completes and the browser is safely on a new page?

Answer

Igor Shubovych picture Igor Shubovych · Apr 2, 2018

You can add some assert inside:

cy.click('#someButtonToNavigateOnNewPage');

cy.location('pathname', {timeout: 60000})
  .should('include', '/newPage');

cy.click('#YouAreOnNewPage');

You can change default timeout - by default it's 4000 ms (4 secs) - to ensure that user navigated the page. I've put a big number here - 60,000 ms - because I'm sure that 99% of users will leave if they do not have page loaded after 1 min.