test(docs-infra): correctly test URL redirects when the destination URL is also redirected (#42018)
Since #41625, `/guide/updating-to-version-10` is being redirected to `https://v11.angular.io/guide/updating-to-version-11`. However, `v11.angular.io` itself is being redirected to `angular.io`, while v11 is the latest stable version. As a result, `/guide/updating-to-version-10` ends up being redirected to `https://angular.io/guide/updating-to-version-11`. Currently, this causes a CI failure in the `aio_monidoting` job ([example failure][1]). This will change once v12 is released as the new stable version. Alternatively, we could update the config and tests to expected `/guide/updating-to-version-10` to be redirected to `https://angular.io/guide/updating-to-version-11`, but that would end up being redirected to `https://angular.io/guide/updating-to-version-12` once v12 would be released, which is different behavior. This commit provides a way to test for redirects when the destination URL is itself redirected to a different URL. This allows us to use the intended URL (for example, `https://v11.angular.io/...`), which will continue to work as expected regardless of what is the latest stable version without causing CI failures. [1]: https://circleci.com/gh/angular/angular/983738 PR Close #42018
This commit is contained in:
parent
ef676bf946
commit
04ab5edf65
|
@ -34,9 +34,20 @@ describe(browser.baseUrl, () => {
|
||||||
it(`should redirect '${fromUrl}' to '${toUrl}' (${i + 1}/${page.legacyUrls.length})`, async () => {
|
it(`should redirect '${fromUrl}' to '${toUrl}' (${i + 1}/${page.legacyUrls.length})`, async () => {
|
||||||
await page.goTo(fromUrl);
|
await page.goTo(fromUrl);
|
||||||
|
|
||||||
const expectedUrl = stripTrailingSlash(/^https?:/.test(toUrl) ? toUrl : page.baseUrl + toUrl);
|
let expectedUrl = stripTrailingSlash(/^https?:/.test(toUrl) ? toUrl : page.baseUrl + toUrl);
|
||||||
const actualUrl = await getCurrentUrl();
|
const actualUrl = await getCurrentUrl();
|
||||||
|
|
||||||
|
if (actualUrl !== expectedUrl) {
|
||||||
|
// If the actual URL does not match the expected URL, check whether the expected URL
|
||||||
|
// itself is also redirected to the actual URL.
|
||||||
|
await page.goTo(expectedUrl);
|
||||||
|
const redirectedExpectedUrl = await getCurrentUrl();
|
||||||
|
|
||||||
|
if (actualUrl === redirectedExpectedUrl) {
|
||||||
|
expectedUrl = redirectedExpectedUrl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
expect(actualUrl).toBe(expectedUrl);
|
expect(actualUrl).toBe(expectedUrl);
|
||||||
}, 120000);
|
}, 120000);
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue