import type { DesktopPreviewFavicon, PreviewSessionSnapshot } from "@t3tools/contracts"; import { renderToStaticMarkup } from "react-dom/server"; import { describe, expect, it } from "vite-plus/test"; import { RightPanelTabs } from "./RightPanelTabs"; const previewSurface = { id: "browser:tab-1" as const, kind: "preview" as const, resourceId: "tab-1", }; const secondSurface = { id: "browser:tab-2" as const, kind: "preview" as const, resourceId: "tab-2", }; const sessions: Readonly> = { "tab-1": { threadId: "thread-1", tabId: "tab-1", navStatus: { _tag: "Success", url: "http://24x.xf.local/", title: "Local site" }, canGoBack: false, canGoForward: false, updatedAt: "2026-08-09T00:00:00.000Z", }, "tab-2": { threadId: "thread-1", tabId: "tab-2", navStatus: { _tag: "Success", url: "http://24x.xf.local/admin", title: "Admin" }, canGoBack: false, canGoForward: false, updatedAt: "2026-08-09T00:00:00.000Z", }, }; const favicon = (dataUrl: string, pageUrl: string): DesktopPreviewFavicon => ({ dataUrl, pageUrl, capturedAt: 1, }); function overlay(icon: DesktopPreviewFavicon | null) { return { hasWebContents: true, canGoBack: false, canGoForward: false, loading: false, zoomFactor: 1, pictureInPicture: false, colorScheme: "system" as const, controller: "none" as const, favicon: icon, }; } function renderTabs(first: DesktopPreviewFavicon | null, second?: DesktopPreviewFavicon) { return renderToStaticMarkup( undefined} onCloseSurface={() => undefined} onCloseOtherSurfaces={() => undefined} onCloseSurfacesToRight={() => undefined} onCloseAllSurfaces={() => undefined} onCopyFilePath={() => undefined} onAddBrowser={() => undefined} onAddTerminal={() => undefined} onAddPullRequest={() => undefined} onAddDiff={() => undefined} onAddFiles={() => undefined} onAddAgents={() => undefined} liveAgentCount={0} browserAvailable terminalAvailable={false} diffAvailable={false} filesAvailable={false} pullRequestAvailable={false} agentsAvailable={false} >
content
, ); } describe("RightPanelTabs preview favicon", () => { it("prefers a live capture and never asks Google about a private hostname", () => { const captured = renderTabs(favicon("data:image/png;base64,AAAA", "http://24x.xf.local/")); expect(captured).toContain("data:image/png;base64,AAAA"); expect(captured).not.toContain("s2/favicons"); expect(renderTabs(null)).not.toContain("s2/favicons"); }); it("keeps route-specific captures isolated between live tabs on one origin", () => { const html = renderTabs( favicon("data:image/png;base64,AAAA", "http://24x.xf.local/"), favicon("data:image/png;base64,BBBB", "http://24x.xf.local/admin"), ); expect(html).toContain("data:image/png;base64,AAAA"); expect(html).toContain("data:image/png;base64,BBBB"); }); it("hides a capture while the server session still describes another origin", () => { const html = renderTabs(favicon("data:image/png;base64,AAAA", "https://example.com/")); expect(html).not.toContain("data:image/png;base64,AAAA"); }); });