URLS Redirects with Cypress automation

489 Views Asked by At

I passed 100+ URLs path(legacy) in the scenario outlines and i want to hit each one of them and to redirect to a new path(new). I passed a code like below;

function createNewUrlFromLegacy(legacyPageUrl) {
  const urlPath = legacyPageUrl.split('/');
let newUrl;

if (urlPath.length == 7) {
    newUrl = 'new-homes/' + urlPath[5];
 } else {
    newUrl = 'new-homes/' + urlPath[0];
} 
    return newUrl        
}

I passed this following in my stepDef file

const expectedUrl = createNewUrlFromLegacy(legacyUrl);
 cy.url().should('include', expectedUrl);

And it run successfully.

But i want to use response code 301 as an assertion instead relying on expectedUrl only.

How can i do this pls?.

1

There are 1 best solutions below

0
On BEST ANSWER

I have managed to get it working using the following steps; First visit the legacy url and then set followRedirects: false using alias.

cy.visit(legacyUrl);

cy.request({url: legacyUrl, followRedirect: false}).as('response');` cy.get('@response').its('status').should('eq', 301); --> Assert Response code is 301 cy.get('@response').its('redirectedToUrl').should('contain', expectedUrl); -->Assert expected URL is displayed.