import { describe, expect, it } from "vitest"; import { PROFILE_HTTP_REACHABILITY_TIMEOUT_MS, PROFILE_WS_REACHABILITY_MAX_TIMEOUT_MS, PROFILE_WS_REACHABILITY_MIN_TIMEOUT_MS, resolveCdpReachabilityTimeouts, } from "./cdp-timeouts.js"; describe("resolveCdpReachabilityTimeouts", () => { it("uses loopback defaults when timeout is omitted", () => { expect( resolveCdpReachabilityTimeouts({ profileIsLoopback: true, timeoutMs: undefined, remoteHttpTimeoutMs: 1500, remoteHandshakeTimeoutMs: 3000, }), ).toEqual({ httpTimeoutMs: PROFILE_HTTP_REACHABILITY_TIMEOUT_MS, wsTimeoutMs: PROFILE_HTTP_REACHABILITY_TIMEOUT_MS * 2, }); }); it("clamps loopback websocket timeout range", () => { const low = resolveCdpReachabilityTimeouts({ profileIsLoopback: true, timeoutMs: 1, remoteHttpTimeoutMs: 1500, remoteHandshakeTimeoutMs: 3000, }); const high = resolveCdpReachabilityTimeouts({ profileIsLoopback: true, timeoutMs: 5000, remoteHttpTimeoutMs: 1500, remoteHandshakeTimeoutMs: 3000, }); expect(low.wsTimeoutMs).toBe(PROFILE_WS_REACHABILITY_MIN_TIMEOUT_MS); expect(high.wsTimeoutMs).toBe(PROFILE_WS_REACHABILITY_MAX_TIMEOUT_MS); }); it("enforces remote minimums even when caller passes lower timeout", () => { expect( resolveCdpReachabilityTimeouts({ profileIsLoopback: false, timeoutMs: 200, remoteHttpTimeoutMs: 1500, remoteHandshakeTimeoutMs: 3000, }), ).toEqual({ httpTimeoutMs: 1500, wsTimeoutMs: 3000, }); }); it("uses remote defaults when timeout is omitted", () => { expect( resolveCdpReachabilityTimeouts({ profileIsLoopback: false, timeoutMs: undefined, remoteHttpTimeoutMs: 1750, remoteHandshakeTimeoutMs: 3250, }), ).toEqual({ httpTimeoutMs: 1750, wsTimeoutMs: 3250, }); }); });