56 lines · 1.6 KB · TypeScript
RawDownload
import { EnvironmentId, ThreadId } from "@t3tools/contracts";import { describe, expect, it, vi } from "vite-plus/test"; const mocks = vi.hoisted(() => ({  readThreadPreviewState: vi.fn(),})); vi.mock("~/previewStateStore", () => ({  applyPreviewServerSnapshot: vi.fn(),  readThreadPreviewState: mocks.readThreadPreviewState,  reconcilePreviewServerSessions: vi.fn(),  updatePreviewServerSnapshot: vi.fn(),})); vi.mock("./previewBridge", () => ({  previewBridge: {    automation: {      evaluate: vi.fn(),      status: vi.fn(),    },  },})); import { previewRuntimeTabId } from "~/browser/previewRuntimeTabId"; import { PreviewAutomationTargetUnavailableError } from "./previewAutomationErrors";import { waitForNavigationReadiness } from "./previewNavigationReadiness"; describe("waitForNavigationReadiness", () => {  it("rejects a replaced runtime target even when readiness polling is disabled", async () => {    const threadRef = {      environmentId: EnvironmentId.make("environment-2"),      threadId: ThreadId.make("thread-1"),    };    const tabId = "tab_1";    const staleRuntimeTabId = previewRuntimeTabId(threadRef, "epoch-1", tabId);    mocks.readThreadPreviewState.mockReturnValue({      serverEpoch: "epoch-2",      sessions: {        [tabId]: { tabId },      },    });     await expect(      waitForNavigationReadiness(        threadRef,        "request-1",        tabId,        staleRuntimeTabId,        "navigate",        "none",        100,      ),    ).rejects.toBeInstanceOf(PreviewAutomationTargetUnavailableError);  });});