tests/e2e/control-entrypoints.spec.ts
Rama main · réplica de lectura del repositorio original.
import { expect, test } from "@playwright/test";
import { mockControlWorkspace } from "./helpers/control-workspace-fixture";
import { scopedPath } from "./helpers/auth";
test("opening a repository selects its most recent task without starting work", async ({
page,
}) => {
const { sessions, mutations } = await mockControlWorkspace(page);
sessions[0].updated_at = "2026-10-10T12:00:00Z";
sessions[1].updated_at = "2026-10-10T13:00:00Z";
const chats: string[] = [];
page.on("request", (request) => {
if (
request.method() === "POST" &&
request.url().includes("/api/control/chat")
)
chats.push(request.url());
});
await page.goto(scopedPath("control?repo=repo-widgets"));
await expect(page).toHaveURL(/mission=task-two/);
await expect(
page.getByRole("banner").getByText("Review billing flow", { exact: true })
).toBeVisible();
await expect(
page.getByRole("button", { name: "Open preview", exact: true })
).toBeVisible();
expect(mutations).toEqual([]);
expect(chats).toEqual([]);
});
test("a repository with no task opens a composer for that repository", async ({
page,
}) => {
const { sessions, mutations } = await mockControlWorkspace(page);
sessions.splice(0);
await page.goto(scopedPath("control?repo=repo-widgets"));
await expect(
page.getByRole("combobox", { name: "Project", exact: true })
).toHaveText("acme/widgets");
await expect(page.getByRole("textbox").last()).toBeVisible();
await expect(page).toHaveURL(/repo=repo-widgets/);
expect(mutations).toEqual([]);
});
test("an unavailable repository entry shows a recoverable error", async ({
page,
}) => {
await mockControlWorkspace(page);
await page.goto(scopedPath("control?repo=missing"));
await expect(
page.getByRole("alert").filter({ hasText: "Repository is not available" })
).toContainText("Repository is not available");
await expect(page.getByRole("button", { name: "Try again" })).toBeVisible();
await page.route("**/api/repos**", (route) =>
route.fulfill({
json: [
{
id: "missing",
full_name: "acme/restored",
name: "restored",
owner: "acme",
},
],
})
);
await page.getByRole("button", { name: "Try again" }).click();
await expect(
page.getByRole("combobox", { name: "Project", exact: true })
).toHaveText("acme/restored");
});