import { expect } from "e2e";
import { test, WEB } from "./t3.ts";

test("Explicit repository-name rename survives reload and leaves the control unchanged", WEB, async ({ t3, app, screen, browser }) => {
  const repository = (name: string) => ({ ".git/config": `[core]\nrepositoryformatversion = 0\nbare = false\n[remote "origin"]\nurl = https://github.com/scenario-owner/${name}.git\nfetch = +refs/heads/*:refs/remotes/origin/*\n` });
  await t3.project("repo", repository("repo"));
  await t3.project("repo", repository("repo"));
  await t3.project("control", repository("control"));
  await t3.project("control", repository("control"));
  await t3.open();
  await screen.getByRole("button", "Add project", { exact: true }).waitFor();
  await app.open("/settings/general");
  const grouping = screen.getByRole("switch", "Project grouping", { exact: true });
  // The default is repository grouping; explicitly select it if disabled.
  const enabled = await grouping.getAttribute("aria-checked");
  if (enabled === "false") await grouping.tap();
  await app.open("/settings/projects");
  await screen.getByRole("button", "Project scope: All projects", { exact: true }).tap();
  await screen.getByRole("menuitemradio", "scenario-owner/repo", { exact: true }).tap();
  await app.screenshot("initial-repository-label");
  await screen.getByRole("textbox", "Project name", { exact: true }).fill("repo");
  await browser.keyboard.press("Tab");
  // The next UI interaction and navigation occur after the blur save has settled.
  await screen.getByRole("button", /^Project scope:/).tap();
  await screen.getByRole("menuitemradio", "scenario-owner/control", { exact: true }).tap();
  await browser.reload();
  await screen.getByRole("textbox", "Project name", { exact: true }).tap();
  await app.screenshot("untouched-control-after-reload");
  await screen.getByRole("button", /^Project scope:/).tap();
  await app.screenshot("grouped-labels-after-reload");
  await screen.getByRole("menuitemradio", /^(repo|scenario-owner\/repo)$/).tap();
  await screen.getByRole("textbox", "Project name", { exact: true }).tap();
  await app.screenshot("renamed-settings-after-reload");
  await expect(screen.getByRole("textbox", "Project name", { exact: true })).toHaveValue("repo");
});
