diff --git a/tests/library/chromium/chromium.spec.ts b/tests/library/chromium/chromium.spec.ts index 61e006ef3b..8d105f2b5f 100644 --- a/tests/library/chromium/chromium.spec.ts +++ b/tests/library/chromium/chromium.spec.ts @@ -358,6 +358,39 @@ test('setOffline', async ({ context, page, server }) => { expect(error).toMatch(/REJECTED.*Failed to fetch/); }); +test('should emit page-level request event for respondWith', async ({ page, server }) => { + await page.goto(server.PREFIX + '/serviceworkers/fetchdummy/sw.html'); + await page.evaluate(() => window['activationPromise']); + + // Sanity check. + const [pageReq, swResponse] = await Promise.all([ + page.waitForEvent('request'), + page.evaluate(() => window['fetchDummy']('foo')), + ]); + expect(swResponse).toBe('responseFromServiceWorker:foo'); + expect(pageReq.url()).toMatch(/fetchdummy\/foo$/); + expect(pageReq.serviceWorker()).toBe(null); + expect((await pageReq.response()).fromServiceWorker()).toBe(true); +}); + +test('should emit page-level request event for respondWith when interception enabled', async ({ page, server, context }) => { + test.fixme(); + test.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/15474' }); + + await context.route('**', route => route.continue()); + await page.goto(server.PREFIX + '/serviceworkers/fetchdummy/sw.html'); + await page.evaluate(() => window['activationPromise']); + + // Sanity check. + const [pageReq, swResponse] = await Promise.all([ + page.waitForEvent('request'), + page.evaluate(() => window['fetchDummy']('foo')), + ]); + expect(swResponse).toBe('responseFromServiceWorker:foo'); + expect(pageReq.url()).toMatch(/fetchdummy\/foo$/); + expect(pageReq.serviceWorker()).toBe(null); + expect((await pageReq.response()).fromServiceWorker()).toBe(true); +}); test('setExtraHTTPHeaders', async ({ context, page, server }) => { const [worker] = await Promise.all([