import { describe, expect, it } from "vitest"; import { BrowserProfileUnavailableError } from "../errors.js"; import { registerBrowserBasicRoutes } from "./basic.js"; import { createBrowserRouteApp, createBrowserRouteResponse } from "./test-helpers.js"; describe("basic browser routes", () => { it("maps existing-session status failures to JSON browser errors", async () => { const { app, getHandlers } = createBrowserRouteApp(); registerBrowserBasicRoutes(app, { state: () => ({ resolved: { enabled: true, headless: false, noSandbox: false, executablePath: undefined, }, profiles: new Map(), }), forProfile: () => ({ profile: { name: "chrome-live", driver: "existing-session", cdpPort: 18802, cdpUrl: "http://127.0.0.1:18802", color: "#00AA00", attachOnly: true, }, isHttpReachable: async () => { throw new BrowserProfileUnavailableError("attach failed"); }, isReachable: async () => true, }) as never, } as never); const handler = getHandlers.get("/"); expect(handler).toBeTypeOf("function"); const response = createBrowserRouteResponse(); await handler?.({ params: {}, query: { profile: "chrome-live" } }, response.res); expect(response.statusCode).toBe(409); expect(response.body).toMatchObject({ error: "attach failed" }); }); });