@@ -395,6 +395,42 @@ describe("FrameContextManager listener bookkeeping", () => {
395395 }
396396 } ) ;
397397
398+ it ( "captureOOPIFs uses the browser-context receiver for session creation" , async ( ) => {
399+ const session = new FakeSession ( ) ;
400+ const mainFrame = {
401+ url : ( ) => "https://example.com" ,
402+ parentFrame : ( ) => null ,
403+ name : ( ) => "main" ,
404+ isDetached : ( ) => false ,
405+ } ;
406+ const sameOriginFrame = {
407+ url : ( ) => "https://example.com/child" ,
408+ parentFrame : ( ) => mainFrame ,
409+ name : ( ) => "child" ,
410+ isDetached : ( ) => false ,
411+ } ;
412+ const context = {
413+ newCDPSession : jest . fn ( function ( this : unknown , frame : unknown ) {
414+ if ( this !== context ) {
415+ throw new Error ( "invalid context receiver" ) ;
416+ }
417+ void frame ;
418+ return Promise . reject ( new Error ( "same origin frame" ) ) ;
419+ } ) ,
420+ } ;
421+ const page = {
422+ context : ( ) => context ,
423+ frames : ( ) => [ mainFrame , sameOriginFrame ] ,
424+ mainFrame : ( ) => mainFrame ,
425+ } ;
426+ const manager = new FrameContextManager (
427+ createFakeClientWithPage ( session , page )
428+ ) ;
429+
430+ await expect ( manager . captureOOPIFs ( 1 ) ) . resolves . toBeUndefined ( ) ;
431+ expect ( context . newCDPSession ) . toHaveBeenCalledWith ( sameOriginFrame ) ;
432+ } ) ;
433+
398434 it ( "captureOOPIFs skips ad/tracking frame session creation by default" , async ( ) => {
399435 const session = new FakeSession ( ) ;
400436 const mainFrame = {
0 commit comments