Skip to content

Commit 50a71c3

Browse files
authored
test(query-devtools/Devtools): add tests for in-page panel visibility while a PiP window is open (#10762)
1 parent 217b67a commit 50a71c3

1 file changed

Lines changed: 45 additions & 3 deletions

File tree

packages/query-devtools/src/__tests__/Devtools.test.tsx

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)