Luigit
repositories / pi-ext

pi-ext

bugabingas pi extensions

owned by admin

scripts/e2e.test.ts

Raw
import { 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);
});