44 lines
1.5 KiB
TypeScript
44 lines
1.5 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import { browserContext } from "./cliBrowserContext.js";
|
|
import { CdpBrowserProvider } from "./browser/CdpBrowserProvider.js";
|
|
import { HopperProvider } from "./hopper/HopperProvider.js";
|
|
import { silentLogger } from "./logger.js";
|
|
import { parseConfig } from "./config.js";
|
|
|
|
const config = (env: Record<string, string | undefined> = {}) => {
|
|
const parsed = parseConfig(env);
|
|
if (!parsed.ok) throw new Error("expected valid configuration");
|
|
return parsed.value;
|
|
};
|
|
|
|
describe("host platform is injected, not read from the ambient process", () => {
|
|
it("reports Hopper as unsupported for a platform it cannot run on", () => {
|
|
const provider = new HopperProvider(config(), silentLogger, "win32");
|
|
const availability = provider.inspectAvailability();
|
|
expect(availability).toMatchObject({
|
|
status: "unavailable",
|
|
code: "unsupported_host",
|
|
});
|
|
expect(JSON.stringify(availability)).toContain("win32");
|
|
});
|
|
|
|
it.each(["darwin", "linux"] as const)(
|
|
"does not gate Hopper as unsupported on %s",
|
|
(platform) => {
|
|
const provider = new HopperProvider(
|
|
config({ hopper_launcher_path: "/nonexistent/hopper-launcher" }),
|
|
silentLogger,
|
|
platform,
|
|
);
|
|
expect(provider.inspectAvailability().code).not.toBe("unsupported_host");
|
|
},
|
|
);
|
|
});
|
|
|
|
describe("browser CLI provider setup", () => {
|
|
it("does not require permission policy configuration", () => {
|
|
expect(browserContext().provider).toBeInstanceOf(CdpBrowserProvider);
|
|
});
|
|
});
|