From b86395a54a8d8788772999c60c42a5266a9e8d17 Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Thu, 16 Mar 2023 19:24:13 +0100 Subject: [PATCH] test: unflake 'serviceWorker should intercept document request' (#21722) fixes https://github.com/microsoft/playwright/issues/21691 --- tests/library/capabilities.spec.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/library/capabilities.spec.ts b/tests/library/capabilities.spec.ts index c91324851a..ccdbb9b37f 100644 --- a/tests/library/capabilities.spec.ts +++ b/tests/library/capabilities.spec.ts @@ -188,17 +188,23 @@ it('should set CloseEvent.wasClean to false when the server terminates a WebSock expect(wasClean).toBe(false); }); -it('serviceWorker should intercept document request', async ({ page, server, browserName }) => { +it('serviceWorker should intercept document request', async ({ page, server }) => { server.setRoute('/sw.js', (req, res) => { res.setHeader('Content-Type', 'application/javascript'); res.end(` self.addEventListener('fetch', event => { event.respondWith(new Response('intercepted')); }); + self.addEventListener('activate', event => { + event.waitUntil(clients.claim()); + }); `); }); await page.goto(server.EMPTY_PAGE); - await page.evaluate(() => navigator.serviceWorker.register('/sw.js')); + await page.evaluate(async () => { + await navigator.serviceWorker.register('/sw.js'); + await new Promise(resolve => navigator.serviceWorker.oncontrollerchange = resolve); + }); await page.reload(); expect(await page.textContent('body')).toBe('intercepted'); });