Ctrl K
ComunidadGuías…

tests/e2e/control-entrypoints.spec.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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");
});