141 lines · 4.7 KB · TypeScript
RawDownload
import type { PreviewAutomationOpenInput, PreviewSessionSnapshot } from "@t3tools/contracts";import { describe, expect, it } from "vite-plus/test"; import {  DEFAULT_PREVIEW_AUTOMATION_VIEWPORT,  explicitlySuppressesPreviewMiniPlayer,  previewAutomationDefaultViewport,  previewAutomationOpenNeedsOverlay,  shouldAutoShowPreviewForAutomationUse,  shouldOpenPreviewMiniPlayer,} from "./previewAutomationOpenReadiness"; const snapshot = (navStatus: PreviewSessionSnapshot["navStatus"]): PreviewSessionSnapshot => ({  threadId: "thread-1",  tabId: "tab-1",  navStatus,  canGoBack: false,  canGoForward: false,  updatedAt: "2026-06-26T00:00:00.000Z",}); describe("preview automation open readiness", () => {  it("opens the inline preview by default", () => {    expect(shouldOpenPreviewMiniPlayer({} as PreviewAutomationOpenInput)).toBe(true);  });   it("supports explicit opt-out and the legacy show alias", () => {    expect(shouldOpenPreviewMiniPlayer({ open: false } as PreviewAutomationOpenInput)).toBe(false);    expect(shouldOpenPreviewMiniPlayer({ show: false } as PreviewAutomationOpenInput)).toBe(false);    expect(      shouldOpenPreviewMiniPlayer({ open: true, show: false } as PreviewAutomationOpenInput),    ).toBe(true);  });   it("does not wait for a desktop overlay when opening an empty tab", () => {    expect(      previewAutomationOpenNeedsOverlay(        {} as PreviewAutomationOpenInput,        snapshot({ _tag: "Idle" }),      ),    ).toBe(false);  });   it("waits when an empty tab is immediately given a URL", () => {    expect(      previewAutomationOpenNeedsOverlay(        { url: "https://example.com" } as PreviewAutomationOpenInput,        snapshot({ _tag: "Idle" }),      ),    ).toBe(true);  });   it("waits for existing tabs that already have rendered content", () => {    expect(      previewAutomationOpenNeedsOverlay(        {} as PreviewAutomationOpenInput,        snapshot({          _tag: "Success",          url: "https://example.com/",          title: "Example",        }),      ),    ).toBe(true);  });   it("gives newly-created automation tabs a stable desktop viewport", () => {    expect(previewAutomationDefaultViewport(false, snapshot({ _tag: "Idle" }))).toEqual(      DEFAULT_PREVIEW_AUTOMATION_VIEWPORT,    );  });   it("preserves reused and already-fixed browser viewports", () => {    expect(previewAutomationDefaultViewport(true, snapshot({ _tag: "Idle" }))).toBeNull();    expect(      previewAutomationDefaultViewport(false, {        ...snapshot({ _tag: "Idle" }),        viewport: { _tag: "freeform", width: 900, height: 600 },      }),    ).toBeNull();  });}); describe("shouldOpenPreviewMiniPlayer with the floating-preview preference", () => {  it("honours the preference when the agent said nothing either way", () => {    // `preview_open` no longer arrives with `open` pre-filled, so an agent    // that omitted it leaves the decision to the user's setting.    expect(shouldOpenPreviewMiniPlayer({}, false)).toBe(false);    expect(shouldOpenPreviewMiniPlayer({}, true)).toBe(true);  });   it("lets an explicit request outrank the preference in both directions", () => {    expect(shouldOpenPreviewMiniPlayer({ open: true }, false)).toBe(true);    expect(shouldOpenPreviewMiniPlayer({ open: false }, true)).toBe(false);    expect(shouldOpenPreviewMiniPlayer({ show: true }, false)).toBe(true);  });   it("distinguishes an explicit background request from a disabled preference", () => {    expect(explicitlySuppressesPreviewMiniPlayer({ open: false })).toBe(true);    expect(explicitlySuppressesPreviewMiniPlayer({ show: false })).toBe(true);    expect(explicitlySuppressesPreviewMiniPlayer({})).toBe(false);  });}); describe("auto-show for existing automation tabs", () => {  it("records floating-preview intent whenever an agent uses the tab", () => {    expect(      shouldAutoShowPreviewForAutomationUse({        operation: "navigate",        autoShowFloatingPreview: true,        presentationSuppressed: false,      }),    ).toBe(true);  });   it("leaves explicit opens and background-only tabs alone", () => {    expect(      shouldAutoShowPreviewForAutomationUse({        operation: "open",        autoShowFloatingPreview: true,        presentationSuppressed: false,      }),    ).toBe(false);    expect(      shouldAutoShowPreviewForAutomationUse({        operation: "click",        autoShowFloatingPreview: true,        presentationSuppressed: true,      }),    ).toBe(false);  });   it("honours the auto-show preference for reused tabs", () => {    expect(      shouldAutoShowPreviewForAutomationUse({        operation: "snapshot",        autoShowFloatingPreview: false,        presentationSuppressed: false,      }),    ).toBe(false);  });});