File size: 1,857 Bytes
fc93158 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | import { Command } from "commander";
import { describe, expect, it } from "vitest";
function runBrowserStatus(argv: string[]) {
const program = new Command();
program.name("test");
program.option("--profile <name>", "Global config profile");
const browser = program
.command("browser")
.option("--browser-profile <name>", "Browser profile name");
let globalProfile: string | undefined;
let browserProfile: string | undefined = "should-be-undefined";
browser.command("status").action((_opts, cmd) => {
const parent = cmd.parent?.opts?.() as { browserProfile?: string };
browserProfile = parent?.browserProfile;
globalProfile = program.opts().profile;
});
program.parse(["node", "test", ...argv]);
return { globalProfile, browserProfile };
}
describe("browser CLI --browser-profile flag", () => {
it.each([
{
label: "parses --browser-profile from parent command options",
argv: ["browser", "--browser-profile", "onasset", "status"],
expectedBrowserProfile: "onasset",
},
{
label: "defaults to undefined when --browser-profile not provided",
argv: ["browser", "status"],
expectedBrowserProfile: undefined,
},
])("$label", ({ argv, expectedBrowserProfile }) => {
const { browserProfile } = runBrowserStatus(argv);
expect(browserProfile).toBe(expectedBrowserProfile);
});
it("does not conflict with global --profile flag", () => {
// The global --profile flag is handled by /entry.js before Commander
// This test verifies --browser-profile is a separate option
const { globalProfile, browserProfile } = runBrowserStatus([
"--profile",
"dev",
"browser",
"--browser-profile",
"onasset",
"status",
]);
expect(globalProfile).toBe("dev");
expect(browserProfile).toBe("onasset");
});
});
|