@@ -389,17 +389,29 @@ describe('Devtools', () => {
389389
390390 function stubPipWindow ( ) {
391391 const pipDocument = document . implementation . createHTMLDocument ( 'PiP' )
392+ const listeners = new Map < string , EventListener > ( )
392393 const fakeWindow : FakePipWindow = {
393394 document : pipDocument ,
394395 innerWidth : 800 ,
395396 innerHeight : 600 ,
396- addEventListener : vi . fn ( ) ,
397- removeEventListener : vi . fn ( ) ,
397+ addEventListener : vi . fn ( ( event : string , handler : EventListener ) => {
398+ listeners . set ( event , handler )
399+ } ) ,
400+ removeEventListener : vi . fn ( ( event : string ) => {
401+ listeners . delete ( event )
402+ } ) ,
398403 close : vi . fn ( ) ,
399404 }
400405 const open = vi . fn ( ( ) => fakeWindow )
401406 vi . stubGlobal ( 'open' , open )
402- return { pipDocument, fakeWindow, open }
407+ return {
408+ pipDocument,
409+ fakeWindow,
410+ open,
411+ fire : ( event : string ) => {
412+ listeners . get ( event ) ?.( new Event ( event ) )
413+ } ,
414+ }
403415 }
404416
405417 it ( 'should open a PiP window when the picture-in-picture button is clicked' , ( ) => {
@@ -456,6 +468,36 @@ describe('Devtools', () => {
456468 consoleError . mockRestore ( )
457469 }
458470 } )
471+
472+ it ( 'should hide the in-page panel while a PiP window is open' , ( ) => {
473+ stubPipWindow ( )
474+ const rendered = renderDevtools ( { initialIsOpen : true } )
475+
476+ fireEvent . click (
477+ rendered . getByLabelText ( 'Open in picture-in-picture mode' ) ,
478+ )
479+
480+ expect (
481+ rendered . container . querySelector ( '.tsqd-main-panel-container' ) ,
482+ ) . toBeNull ( )
483+ } )
484+
485+ it ( 'should restore the in-page panel and reset "pip_open" when the PiP window is closed' , ( ) => {
486+ const { fire } = stubPipWindow ( )
487+ const rendered = renderDevtools ( { initialIsOpen : true } )
488+
489+ fireEvent . click (
490+ rendered . getByLabelText ( 'Open in picture-in-picture mode' ) ,
491+ )
492+ fire ( 'pagehide' )
493+
494+ expect ( localStorage . getItem ( 'TanstackQueryDevtools.pip_open' ) ) . toBe (
495+ 'false' ,
496+ )
497+ expect (
498+ rendered . getByLabelText ( 'Open in picture-in-picture mode' ) ,
499+ ) . toBeInTheDocument ( )
500+ } )
459501 } )
460502
461503 describe ( 'status counts' , ( ) => {
0 commit comments