Ross Wollman 8858162692
fix: Service Workers+Interception: missing page-level Network events (#15549)
Fixes #15474.

Notes:

* page-level requests that are also handled by a SW's fetch handler, should not be interceptable at the page-level
* `Network.requestWillBeSent` does not provide enough metadata for Playwright to fire the `request` event at that time, so it does it as soon as it gets to the end of the request lifecycle
2022-07-12 13:23:35 -07:00

20 lines
707 B
JavaScript

self.addEventListener('fetch', event => {
if (event.request.url.endsWith('.html') || event.request.url.includes('passthrough')) {
event.respondWith(fetch(event.request));
return;
}
if (event.request.url.includes('error')) {
event.respondWith(Promise.reject(new Error('uh oh')));
return;
}
const slash = event.request.url.lastIndexOf('/');
const name = event.request.url.substring(slash + 1);
const blob = new Blob(["responseFromServiceWorker:" + name], {type : 'text/css'});
const response = new Response(blob, { "status" : 200 , "statusText" : "OK" });
event.respondWith(response);
});
self.addEventListener('activate', event => {
event.waitUntil(clients.claim());
});