Skip to content

Commit 05f8d00

Browse files
authored
test: fix service worker test (#988)
Do the following to ensure SW is active and serves requests: - in ServiceWorker, claim all clients once activated - in page, await activation promise instead of a registration
1 parent 2e0d89e commit 05f8d00

File tree

3 files changed

+6
-2
lines changed

3 files changed

+6
-2
lines changed

test/assets/serviceworkers/fetchdummy/sw.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<script>
22
window.registrationPromise = navigator.serviceWorker.register('sw.js');
3+
window.activationPromise = new Promise(resolve => navigator.serviceWorker.oncontrollerchange = resolve);
34

45
async function fetchDummy(name) {
56
const response = await fetch(name);

test/assets/serviceworkers/fetchdummy/sw.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,7 @@ self.addEventListener('fetch', event => {
99
const response = new Response(blob, { "status" : 200 , "statusText" : "OK" });
1010
event.respondWith(response);
1111
});
12+
13+
self.addEventListener('activate', event => {
14+
event.waitUntil(clients.claim());
15+
});

test/interception.spec.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -570,8 +570,7 @@ module.exports.describe = function({testRunner, expect, defaultBrowserOptions, p
570570
describe('service worker', function() {
571571
it('should intercept after a service worker', async({browser, page, server, context}) => {
572572
await page.goto(server.PREFIX + '/serviceworkers/fetchdummy/sw.html');
573-
await page.evaluate(() => window.registrationPromise);
574-
await page.reload();
573+
await page.evaluate(() => window.activationPromise);
575574

576575
// Sanity check.
577576
const swResponse = await page.evaluate(() => fetchDummy('foo'));

0 commit comments

Comments
 (0)