import { render, waitFor } from "@testing-library/react"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import ScreencastTile from "../screencast/ScreencastTile"; const webSocketMock = vi.fn(function MockWebSocket( this: Record, ) { this.close = vi.fn(); }); describe("ScreencastTile", () => { beforeEach(() => { vi.clearAllMocks(); vi.stubGlobal( "location", new URL("https://pinchtab.com/dashboard/profiles"), ); window.localStorage.setItem("pinchtab.auth.token", "secret-token"); vi.spyOn(HTMLCanvasElement.prototype, "getContext").mockReturnValue({ drawImage: vi.fn(), } as unknown as CanvasRenderingContext2D); vi.stubGlobal("WebSocket", webSocketMock); }); afterEach(() => { window.localStorage.clear(); vi.unstubAllGlobals(); vi.restoreAllMocks(); }); it("connects through the same-origin screencast proxy on secure deployments", async () => { render( , ); await waitFor(() => expect(webSocketMock).toHaveBeenCalledTimes(1)); expect(webSocketMock).toHaveBeenCalledWith( "wss://pinchtab.com/instances/inst_123/proxy/screencast?tabId=tab_456&quality=30&maxWidth=800&fps=1&token=secret-token", ); }); });