SeanPlusPlus
SeanPlusPlus

Reputation: 9033

Testing a redirect to a new route with Cypress

I am using Cypress for testing my web application.

This snippet currently works and will submit a new thing:

describe('The Create Page', () => {
  it('successfully creates a thing', () => {
    cy.visit('/create')
    cy.get('input[name=description]').type('Hello World')
    cy.get('button#submit')
      .click()

    // After POST'ing this data via AJAX, the web app then
    // receives the id of the new thing that was just created
    // and redirects the user to /newthing/:id
    // How do I test that this redirection worked?
  })
})

As the comment illustrates, I am not sure how to test whether or not the redirection to the new route works. I can see it in the browser simulation that the redirect works, I just want to add a test for it.

Thanks!!!

Upvotes: 73

Views: 69849

Answers (2)

Gaurav Mogha
Gaurav Mogha

Reputation: 400

Use below code to find out the url irrespective of other parameters

cy.location().should((loc) => {
   expect(loc.pathname.toString()).to.contain('/home');
 });

Upvotes: -1

Jennifer Shehane
Jennifer Shehane

Reputation: 6905

What you need to do is assert that the url is in the expected state.

There are many commands in Cypress that can be used to make assertions about the url. Specifically, cy.url(), cy.location() or cy.hash() may meet your requirements. Probably the best example for your use case would be this:

cy.location('pathname').should('eq', '/newthing/:id')

Upvotes: 98

Related Questions