Cypress offers a simple way to test for server-side redirects using [request](https://docs.cypress.io/api/commands/request.html#Syntax):

```
cy.request({
  url: `/dashboard/`,
  followRedirect: false, // turn off following redirects
}).then((resp) => {
  expect(resp.redirectedToUrl).to.eq('http://example.com/session/new')
})

```

However this doesn't work for client-side redirects because the page is loaded successfully before the redirect happens, meaning the response is for the page, not for the redirect.

**How can I test a client-side redirect?**

I need a way of catching the redirect and verifying that:

* it occurred
* was to the correct URL.

Note:

* I don't want to follow the redirect away from the app that is being tested. I'm not testing the whole auth flow. I just need to know there was a redirect.
* I can't change this auth flow. The redirect is unavoidable.
* The redirect happens during initialisation, not as a result of any user interaction.
* The redirect uses: `window.location.href = url`
* See my answer below for an attempt at resolving this.