Skip to content

Commit

Permalink
test: fix service worker test (#988)
Browse files Browse the repository at this point in the history
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
  • Loading branch information
aslushnikov authored Feb 13, 2020
1 parent 2e0d89e commit 05f8d00
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 2 deletions.
1 change: 1 addition & 0 deletions test/assets/serviceworkers/fetchdummy/sw.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<script>
window.registrationPromise = navigator.serviceWorker.register('sw.js');
window.activationPromise = new Promise(resolve => navigator.serviceWorker.oncontrollerchange = resolve);

async function fetchDummy(name) {
const response = await fetch(name);
Expand Down
4 changes: 4 additions & 0 deletions test/assets/serviceworkers/fetchdummy/sw.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,7 @@ self.addEventListener('fetch', event => {
const response = new Response(blob, { "status" : 200 , "statusText" : "OK" });
event.respondWith(response);
});

self.addEventListener('activate', event => {
event.waitUntil(clients.claim());
});
3 changes: 1 addition & 2 deletions test/interception.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -570,8 +570,7 @@ module.exports.describe = function({testRunner, expect, defaultBrowserOptions, p
describe('service worker', function() {
it('should intercept after a service worker', async({browser, page, server, context}) => {
await page.goto(server.PREFIX + '/serviceworkers/fetchdummy/sw.html');
await page.evaluate(() => window.registrationPromise);
await page.reload();
await page.evaluate(() => window.activationPromise);

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

0 comments on commit 05f8d00

Please sign in to comment.