Radu Chiriac
Radu Chiriac

Reputation: 1424

Catch URL after click with Cypress (window.location changes)

I would like to know how to capture and read the URL after a click event on an <a> link.

On the onClick event our javascript does some string manipulation of the actual href of the clicked link and then a window.location.href = myNewReplacebleURL is done on the fly. The original href is not necessarily the location you get to after the onClick.

Here is how I started:

describe("Twitter", function() {

  it("Should assert that via value is set correctly in JS", function() {

    cy.server();
    cy.visit(Cypress.config("appUrl") + "/probes/sha/sha-via.html");
    cy.get("#v_test ul.share li a")
      .click();

  });

});

EDIT: What I would like is to catch the URL located at the "Page Load" step.

enter image description here

Upvotes: 16

Views: 24451

Answers (2)

Guillaume Robbe
Guillaume Robbe

Reputation: 666

You should be able to use cy.on to perform your assertions inside the url:changed event callback:

cy.on("url:changed", (newUrl) => {
  expect(newUrl).to.contain("?magic=true")
})

Upvotes: 12

Diogo Rocha
Diogo Rocha

Reputation: 10575

You can use thecy.location() command, example:

cy.get("#v_test ul.share li a")
      .click();
cy.location('href').should('eq', 'newUrl');

Also, as an alias to the cy.location('href') command you could use cy.url().

Upvotes: 5

Related Questions