Files
clawhub/scripts/vercel-build-frontend.test.ts
Patrick Erichsen fe8eff20ee feat: keep external skill rollouts production-dark (#3236)
* feat: add fail-closed skill rollout gates

* fix: preserve scan queue pagination semantics
2026-07-23 08:36:41 -07:00

64 lines
2.3 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { resolveFrontendBuildEnv } from "./vercel-build-frontend";
describe("Vercel frontend build environment", () => {
it("derives the preview site URL from the Convex CLI injected cloud URL", () => {
const env = resolveFrontendBuildEnv({
VERCEL_ENV: "preview",
VITE_CONVEX_URL: "https://paired-preview-123.convex.cloud",
VITE_CONVEX_SITE_URL: "https://wry-manatee-359.convex.site",
});
expect(env.VITE_CONVEX_SITE_URL).toBe("https://paired-preview-123.convex.site");
expect(env.VITE_CLAWHUB_DEPLOY_ENV).toBe("preview");
});
it("preserves an explicit production site URL", () => {
const env = resolveFrontendBuildEnv({
VERCEL_ENV: "production",
VITE_CONVEX_URL: "https://wry-manatee-359.convex.cloud",
VITE_CONVEX_SITE_URL: "https://api.clawhub.example",
});
expect(env.VITE_CONVEX_SITE_URL).toBe("https://api.clawhub.example");
expect(env.VITE_CLAWHUB_DEPLOY_ENV).toBe("production");
});
it.each(["test", "production"])(
"rejects %s rollout modes in an ordinary production build",
(mode) => {
expect(() =>
resolveFrontendBuildEnv({
VERCEL_ENV: "production",
VITE_CONVEX_URL: "https://wry-manatee-359.convex.cloud",
CLAWHUB_SKILLS_SH_ROLLOUT_MODE: mode,
}),
).toThrow(/explicit rollout activation/i);
},
);
it("treats malformed production rollout modes as off", () => {
expect(
resolveFrontendBuildEnv({
VERCEL_ENV: "production",
VITE_CONVEX_URL: "https://wry-manatee-359.convex.cloud",
CLAWHUB_SKILLS_SH_ROLLOUT_MODE: "enabled",
}).VITE_CLAWHUB_DEPLOY_ENV,
).toBe("production");
});
it("preserves the permanent backend URLs for the custom test environment", () => {
const env = resolveFrontendBuildEnv({
VERCEL_ENV: "preview",
VERCEL_TARGET_ENV: "test",
CLAWHUB_GITHUB_SKILL_SYNC_ROLLOUT_MODE: "test",
CLAWHUB_SKILLS_SH_ROLLOUT_MODE: "test",
VITE_CONVEX_URL: "https://academic-chihuahua-392.convex.cloud",
VITE_CONVEX_SITE_URL: "https://academic-chihuahua-392.convex.site",
});
expect(env.VITE_CONVEX_SITE_URL).toBe("https://academic-chihuahua-392.convex.site");
expect(env.VITE_CLAWHUB_DEPLOY_ENV).toBe("test");
});
});