test: page-level request/response events with SW fetch handlers and interception (#15544)

Relates #15474.
This commit is contained in:
Ross Wollman 2022-07-11 16:32:42 -07:00 committed by GitHub
parent d93abcbe42
commit 60b34e9091
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -358,6 +358,39 @@ test('setOffline', async ({ context, page, server }) => {
expect(error).toMatch(/REJECTED.*Failed to fetch/); 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 }) => { test('setExtraHTTPHeaders', async ({ context, page, server }) => {
const [worker] = await Promise.all([ const [worker] = await Promise.all([