repositories / pi-ext
pi-ext
bugabingas pi extensions
owned by admin
scripts/e2e.test.ts
Rawimport { join } from "node:path";
import { expect, it } from "vitest";
import { isolatedEnvironment, selectedTasks, within } from "./e2e.mjs";
it("keeps E2E browser, agent, cache, and temporary state inside one run root", () => {
const root = "/tmp/pi-ext-e2e-example";
const env = isolatedEnvironment(root, {
HOME: "/home/owner",
XDG_DATA_HOME: "/home/owner/.local/share",
XDG_CONFIG_HOME: "/home/owner/.config",
PLAYWRIGHT_BROWSERS_PATH: "/home/owner/.cache/ms-playwright",
PI_CODING_AGENT_DIR: "/home/owner/.pi/agent",
TMPDIR: "/home/owner/project/.pi/tmp",
PI_BAK_S3_ENDPOINT: "https://example.invalid",
});
for (const key of [
"HOME",
"USERPROFILE",
"XDG_CONFIG_HOME",
"XDG_CACHE_HOME",
"XDG_DATA_HOME",
"XDG_STATE_HOME",
"TMPDIR",
"TMP",
"TEMP",
"PLAYWRIGHT_BROWSERS_PATH",
"PI_CODING_AGENT_DIR",
"npm_config_cache",
"MISE_CACHE_DIR",
"MISE_STATE_DIR",
])
expect(within(root, env[key] ?? "/missing")).toBe(true);
expect(env.MISE_DATA_DIR).toBe("/home/owner/.local/share/mise");
expect(env.MISE_CONFIG_DIR).toBe("/home/owner/.config/mise");
expect(env.PI_BAK_S3_ENDPOINT).toBeUndefined();
expect(env.PI_BAK_E2E_S3).toBe("0");
expect(env.PI_EXT_E2E_ROOT).toBe(root);
expect(env.MISE_AUTO_INSTALL).toBe("0");
});
it("filters only listed local E2E suites", () => {
const tasks = ["//extensions/strata:e2e", "//extensions/chrome-cdp:e2e"];
expect(selectedTasks(tasks, "strata")).toEqual([tasks[0]]);
expect(() => selectedTasks(tasks, "bak")).toThrow(/No local E2E task/);
expect(() => selectedTasks(tasks, "../bak")).toThrow(/extension slug/);
});
it("rejects a temporary root inside the repository", () => {
const repo = "/home/owner/project";
expect(within(repo, join(repo, ".pi/tmp"))).toBe(true);
expect(within(repo, "/tmp/pi-ext-e2e-example")).toBe(false);
});