diff --git a/apps/desktop/test/desktop-browser-view-manager.test.ts b/apps/desktop/test/desktop-browser-view-manager.test.ts index 30880b2..03c8c80 100644 --- a/apps/desktop/test/desktop-browser-view-manager.test.ts +++ b/apps/desktop/test/desktop-browser-view-manager.test.ts @@ -173,11 +173,13 @@ type FakePermissionCheckHandler = ( ) => boolean; interface FakeWindowOpenDetails { + features: string; + frameName: string; url: string; } interface FakeWindowOpenDecision { - action: "deny"; + action: "allow" | "deny"; } type FakeWindowOpenHandler = ( @@ -471,11 +473,19 @@ const electronMock = vi.hoisted(() => { return event.defaultPrevented; } - emitWindowOpen(url: string): FakeWindowOpenDecision { + emitWindowOpen( + url: string, + details: Partial> = {}, + ): FakeWindowOpenDecision { if (this.windowOpenHandler === null) { throw new Error("Expected a window open handler to be registered."); } - return this.windowOpenHandler({ url }); + return this.windowOpenHandler({ + features: "", + frameName: "", + ...details, + url, + }); } } @@ -974,6 +984,33 @@ describe("DesktopBrowserViewManager", () => { ]); }); + it("keeps a named and sized popup connected to its opener", () => { + const manager = createDesktopBrowserViewManager({ + partition: "persist:test", + }); + const hostWindow = new FakeHostWindow({ + contentBounds: { width: 700, height: 450 }, + webContentsId: 62, + }); + + attachBrowserTab({ + manager, + hostWindow, + tabId: "browser:a", + url: "https://example.com/", + }); + const view = requireFakeView(0); + + expect( + view.webContents.emitWindowOpen("https://example.net/authorize", { + features: "width=480,height=640", + frameName: "login-dialog", + }), + ).toEqual({ action: "allow" }); + expect(openTabPushesOf(hostWindow)).toEqual([]); + expect(scopedOpenTabPushesOf(hostWindow)).toEqual([]); + }); + it("snapshots then hides visible views on resize, revealing them clamped to the shrunken window", async () => { const manager = createDesktopBrowserViewManager({ partition: "persist:test",