test(cli): assert build-script docs and CLI-first default build

Adds guards so README and CONTRIBUTING stay in sync with the actual
default `pnpm build` (excluding desktop/mobile) and the explicit
opt-in scripts for full / desktop / mobile builds.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsxdsm
2026-05-03 02:02:31 -07:00
parent 43a9cad3b9
commit 63e16143c4
2 changed files with 26 additions and 0 deletions

View File

@@ -24,6 +24,7 @@ describe("CI workflow (.github/workflows/ci.yml)", () => {
let content: string;
let ciSteps: any[];
let contributingContent: string;
let readmeContent: string;
let cliPackageJsonContent: string;
let extensionSuiteContent: string;
let agentExportSuiteContent: string;
@@ -35,6 +36,7 @@ describe("CI workflow (.github/workflows/ci.yml)", () => {
content = result.content;
ciSteps = workflow.jobs?.ci?.steps ?? [];
contributingContent = readFileSync(join(workspaceRoot, "docs", "contributing.md"), "utf-8");
readmeContent = readFileSync(join(workspaceRoot, "README.md"), "utf-8");
cliPackageJsonContent = readFileSync(join(workspaceRoot, "packages", "cli", "package.json"), "utf-8");
extensionSuiteContent = readFileSync(
join(workspaceRoot, "packages", "cli", "src", "__tests__", "extension.test.ts"),
@@ -112,6 +114,14 @@ describe("CI workflow (.github/workflows/ci.yml)", () => {
expect(contributingContent).toContain("test:extension-integration");
});
it("keeps docs aligned with default and explicit build commands", () => {
expect(readmeContent).toContain("pnpm build # Build default workspace packages (excludes desktop/mobile)");
expect(readmeContent).toContain("pnpm build:all # Build all packages (including desktop/mobile)");
expect(contributingContent).toContain("pnpm build # default build (excludes desktop/mobile)");
expect(contributingContent).toContain("pnpm build:all # full recursive build including desktop/mobile");
});
it("includes binary build step", () => {
expect(content).toContain("build:exe");
});

View File

@@ -133,6 +133,22 @@ describe("Workspace bootstrap script contract", () => {
expect(testIdx).toBeGreaterThan(lintIdx);
expect(buildIdx).toBeGreaterThan(testIdx);
});
it("keeps default build CLI-first by excluding desktop/mobile", () => {
expect(rootPkg.scripts?.build).toBe(
"pnpm -r --filter=!@fusion/desktop --filter=!@fusion/mobile build",
);
});
it("keeps explicit opt-in scripts for full, desktop, and mobile builds", () => {
expect(rootPkg.scripts?.["build:all"]).toBe("pnpm -r build");
expect(rootPkg.scripts?.["build:desktop"]).toBe(
"pnpm --filter @fusion/desktop build",
);
expect(rootPkg.scripts?.["mobile:build"]).toBe(
"pnpm --filter @fusion/dashboard build && pnpm --filter @fusion/mobile cap sync",
);
});
});
describe("Workflow YAML validity", () => {