@@ -179,10 +179,14 @@ export class PlaywrightBrowserProvider implements BrowserProvider {
179
179
const ids = sessionIds . get ( sessionId ) || [ ]
180
180
ids . push ( moduleUrl . href )
181
181
sessionIds . set ( sessionId , ids )
182
- idPreficates . set ( moduleUrl . href , predicate )
182
+ idPreficates . set ( predicateKey ( sessionId , moduleUrl . href ) , predicate )
183
183
return predicate
184
184
}
185
185
186
+ function predicateKey ( sessionId : string , url : string ) {
187
+ return `${ sessionId } :${ url } `
188
+ }
189
+
186
190
return {
187
191
register : async ( sessionId : string , module : MockedModule ) : Promise < void > => {
188
192
const page = this . getPage ( sessionId )
@@ -200,17 +204,17 @@ export class PlaywrightBrowserProvider implements BrowserProvider {
200
204
// https://github.com/microsoft/playwright/issues/18318
201
205
const isWebkit = this . browserName === 'webkit'
202
206
if ( isWebkit ) {
203
- const url = module . type === 'redirect'
204
- ? ( ( ) => {
205
- // url has http:// which vite.trasnformRequest doesn't understand
206
- const url = new URL ( module . redirect )
207
- return url . href . slice ( url . origin . length )
208
- } ) ( )
209
- : ( ( ) => {
210
- const url = new URL ( route . request ( ) . url ( ) )
211
- url . searchParams . set ( 'mock' , module . type )
212
- return url . href . slice ( url . origin . length )
213
- } ) ( )
207
+ let url : string
208
+ if ( module . type === 'redirect' ) {
209
+ const redirect = new URL ( module . redirect )
210
+ url = redirect . href . slice ( redirect . origin . length )
211
+ }
212
+ else {
213
+ const request = new URL ( route . request ( ) . url ( ) )
214
+ request . searchParams . set ( 'mock' , module . type )
215
+ url = request . href . slice ( request . origin . length )
216
+ }
217
+
214
218
const result = await this . project . browser ! . vite . transformRequest ( url ) . catch ( ( ) => null )
215
219
if ( ! result ) {
216
220
return route . continue ( )
@@ -252,18 +256,20 @@ export class PlaywrightBrowserProvider implements BrowserProvider {
252
256
} ,
253
257
delete : async ( sessionId : string , id : string ) : Promise < void > => {
254
258
const page = this . getPage ( sessionId )
255
- const predicate = idPreficates . get ( id )
259
+ const key = predicateKey ( sessionId , id )
260
+ const predicate = idPreficates . get ( key )
256
261
if ( predicate ) {
257
- await page . unroute ( predicate ) . finally ( ( ) => idPreficates . delete ( id ) )
262
+ await page . unroute ( predicate ) . finally ( ( ) => idPreficates . delete ( key ) )
258
263
}
259
264
} ,
260
265
clear : async ( sessionId : string ) : Promise < void > => {
261
266
const page = this . getPage ( sessionId )
262
267
const ids = sessionIds . get ( sessionId ) || [ ]
263
268
const promises = ids . map ( ( id ) => {
264
- const predicate = idPreficates . get ( id )
269
+ const key = predicateKey ( sessionId , id )
270
+ const predicate = idPreficates . get ( key )
265
271
if ( predicate ) {
266
- return page . unroute ( predicate ) . finally ( ( ) => idPreficates . delete ( id ) )
272
+ return page . unroute ( predicate ) . finally ( ( ) => idPreficates . delete ( key ) )
267
273
}
268
274
return null
269
275
} )
0 commit comments