Spaces:
Configuration error
Configuration error
| import { describe, expect, it, vi, beforeEach } from "vitest"; | |
| vi.mock("node:child_process", () => ({ | |
| execFileSync: vi.fn(), | |
| })); | |
| vi.mock("node:fs", () => { | |
| const existsSync = vi.fn(); | |
| const readFileSync = vi.fn(); | |
| return { | |
| existsSync, | |
| readFileSync, | |
| default: { existsSync, readFileSync }, | |
| }; | |
| }); | |
| import { execFileSync } from "node:child_process"; | |
| import * as fs from "node:fs"; | |
| describe("browser default executable detection", () => { | |
| beforeEach(() => { | |
| vi.resetModules(); | |
| vi.clearAllMocks(); | |
| }); | |
| it("prefers default Chromium browser on macOS", async () => { | |
| vi.mocked(execFileSync).mockImplementation((cmd, args) => { | |
| const argsStr = Array.isArray(args) ? args.join(" ") : ""; | |
| if (cmd === "/usr/bin/plutil" && argsStr.includes("LSHandlers")) { | |
| return JSON.stringify([ | |
| { LSHandlerURLScheme: "http", LSHandlerRoleAll: "com.google.Chrome" }, | |
| ]); | |
| } | |
| if (cmd === "/usr/bin/osascript" && argsStr.includes("path to application id")) { | |
| return "/Applications/Google Chrome.app"; | |
| } | |
| if (cmd === "/usr/bin/defaults") { | |
| return "Google Chrome"; | |
| } | |
| return ""; | |
| }); | |
| vi.mocked(fs.existsSync).mockImplementation((p) => { | |
| const value = String(p); | |
| if (value.includes("com.apple.launchservices.secure.plist")) return true; | |
| return value.includes("/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"); | |
| }); | |
| const { resolveBrowserExecutableForPlatform } = await import("./chrome.executables.js"); | |
| const exe = resolveBrowserExecutableForPlatform( | |
| {} as Parameters<typeof resolveBrowserExecutableForPlatform>[0], | |
| "darwin", | |
| ); | |
| expect(exe?.path).toContain("Google Chrome.app/Contents/MacOS/Google Chrome"); | |
| expect(exe?.kind).toBe("chrome"); | |
| }); | |
| it("falls back when default browser is non-Chromium on macOS", async () => { | |
| vi.mocked(execFileSync).mockImplementation((cmd, args) => { | |
| const argsStr = Array.isArray(args) ? args.join(" ") : ""; | |
| if (cmd === "/usr/bin/plutil" && argsStr.includes("LSHandlers")) { | |
| return JSON.stringify([ | |
| { LSHandlerURLScheme: "http", LSHandlerRoleAll: "com.apple.Safari" }, | |
| ]); | |
| } | |
| return ""; | |
| }); | |
| vi.mocked(fs.existsSync).mockImplementation((p) => { | |
| const value = String(p); | |
| if (value.includes("com.apple.launchservices.secure.plist")) return true; | |
| return value.includes("Google Chrome.app/Contents/MacOS/Google Chrome"); | |
| }); | |
| const { resolveBrowserExecutableForPlatform } = await import("./chrome.executables.js"); | |
| const exe = resolveBrowserExecutableForPlatform( | |
| {} as Parameters<typeof resolveBrowserExecutableForPlatform>[0], | |
| "darwin", | |
| ); | |
| expect(exe?.path).toContain("Google Chrome.app/Contents/MacOS/Google Chrome"); | |
| }); | |
| }); | |