@@ -41,6 +41,10 @@ const debug = createDebugger('vitest:browser:playwright')
4141const playwrightBrowsers = [ 'firefox' , 'webkit' , 'chromium' ] as const
4242type PlaywrightBrowser = ( typeof playwrightBrowsers ) [ number ]
4343
44+ // Enable intercepting of requests made by service workers - experimental API is only available in Chromium based browsers
45+ // Requests from service workers are only available on context.route() https://playwright.dev/docs/service-workers-experimental
46+ process . env . PW_EXPERIMENTAL_SERVICE_WORKER_NETWORK_EVENTS ??= '1'
47+
4448export interface PlaywrightProviderOptions {
4549 /**
4650 * The options passed down to [`playwright.connect`](https://playwright.dev/docs/api/class-browsertype#browser-type-launch) method.
@@ -254,7 +258,7 @@ export class PlaywrightBrowserProvider implements BrowserProvider {
254258 return {
255259 register : async ( sessionId : string , module : MockedModule ) : Promise < void > => {
256260 const page = this . getPage ( sessionId )
257- await page . route ( createPredicate ( sessionId , module . url ) , async ( route ) => {
261+ await page . context ( ) . route ( createPredicate ( sessionId , module . url ) , async ( route ) => {
258262 if ( module . type === 'manual' ) {
259263 const exports = Object . keys ( await module . resolve ( ) )
260264 const body = createManualModuleSource ( module . url , exports )
@@ -323,7 +327,7 @@ export class PlaywrightBrowserProvider implements BrowserProvider {
323327 const key = predicateKey ( sessionId , id )
324328 const predicate = idPreficates . get ( key )
325329 if ( predicate ) {
326- await page . unroute ( predicate ) . finally ( ( ) => idPreficates . delete ( key ) )
330+ await page . context ( ) . unroute ( predicate ) . finally ( ( ) => idPreficates . delete ( key ) )
327331 }
328332 } ,
329333 clear : async ( sessionId : string ) : Promise < void > => {
@@ -333,7 +337,7 @@ export class PlaywrightBrowserProvider implements BrowserProvider {
333337 const key = predicateKey ( sessionId , id )
334338 const predicate = idPreficates . get ( key )
335339 if ( predicate ) {
336- return page . unroute ( predicate ) . finally ( ( ) => idPreficates . delete ( key ) )
340+ return page . context ( ) . unroute ( predicate ) . finally ( ( ) => idPreficates . delete ( key ) )
337341 }
338342 return null
339343 } )
0 commit comments