test(docs-infra): unregister the SW after each test (#28290)
This ensures that the SW is cleaned up, even in cases where synchronization is disabled (and thus the clean-up inside `goTo()` happens without waiting for Angular). PR Close #28290
This commit is contained in:
parent
6ad1c47df8
commit
6e949f9e98
@ -10,7 +10,11 @@ describe(browser.baseUrl, () => {
|
|||||||
beforeAll(() => page.init());
|
beforeAll(() => page.init());
|
||||||
|
|
||||||
beforeEach(() => browser.waitForAngularEnabled(false));
|
beforeEach(() => browser.waitForAngularEnabled(false));
|
||||||
afterEach(() => browser.waitForAngularEnabled(true));
|
|
||||||
|
afterEach(async () => {
|
||||||
|
await page.unregisterSw();
|
||||||
|
await browser.waitForAngularEnabled(true);
|
||||||
|
});
|
||||||
|
|
||||||
describe('(with sitemap URLs)', () => {
|
describe('(with sitemap URLs)', () => {
|
||||||
page.sitemapUrls.forEach((path, i) => {
|
page.sitemapUrls.forEach((path, i) => {
|
||||||
|
@ -42,15 +42,10 @@ export class SitePage {
|
|||||||
* (The SW is unregistered to ensure that subsequent requests are passed through to the server.)
|
* (The SW is unregistered to ensure that subsequent requests are passed through to the server.)
|
||||||
*/
|
*/
|
||||||
async goTo(url: string) {
|
async goTo(url: string) {
|
||||||
const unregisterServiceWorker = (cb: () => void) => navigator.serviceWorker
|
|
||||||
.getRegistrations()
|
|
||||||
.then(regs => Promise.all(regs.map(reg => reg.unregister())))
|
|
||||||
.then(cb);
|
|
||||||
|
|
||||||
await browser.get(url || this.baseUrl);
|
await browser.get(url || this.baseUrl);
|
||||||
await browser.executeScript('document.body.classList.add(\'no-animations\')');
|
await browser.executeScript('document.body.classList.add(\'no-animations\')');
|
||||||
await browser.waitForAngular();
|
await browser.waitForAngular();
|
||||||
await browser.executeAsyncScript(unregisterServiceWorker);
|
await this.unregisterSw();
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -60,4 +55,16 @@ export class SitePage {
|
|||||||
// Make an initial request to unregister the ServiceWorker.
|
// Make an initial request to unregister the ServiceWorker.
|
||||||
await this.goTo('');
|
await this.goTo('');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unregister the ServiceWorker (if registered).
|
||||||
|
*/
|
||||||
|
async unregisterSw() {
|
||||||
|
const unregisterSwFn = (cb: () => void) => navigator.serviceWorker
|
||||||
|
.getRegistrations()
|
||||||
|
.then(regs => Promise.all(regs.map(reg => reg.unregister())))
|
||||||
|
.then(cb);
|
||||||
|
|
||||||
|
await browser.executeAsyncScript(unregisterSwFn);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,11 @@ describe(browser.baseUrl, () => {
|
|||||||
beforeAll(() => page.init());
|
beforeAll(() => page.init());
|
||||||
|
|
||||||
beforeEach(() => browser.waitForAngularEnabled(false));
|
beforeEach(() => browser.waitForAngularEnabled(false));
|
||||||
afterEach(() => browser.waitForAngularEnabled(true));
|
|
||||||
|
afterEach(async () => {
|
||||||
|
await page.unregisterSw();
|
||||||
|
await browser.waitForAngularEnabled(true);
|
||||||
|
});
|
||||||
|
|
||||||
describe('(smoke tests)', () => {
|
describe('(smoke tests)', () => {
|
||||||
it('should show the home page', () => {
|
it('should show the home page', () => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user