import { expect, test } from "@playwright/test"; import { resetData, writeSite, readJson } from "./helpers"; // Search-aliases authoring on the site's Search aliases tab: the global // dictionary and the site's overrides, both. Global aliases seed with defaults; // per-site overrides round-trip to sites//search-aliases.json via a server // action. type AliasFile = { aliases: { id: string; triggers: string[] }[] }; test.describe("search aliases authoring", () => { test.beforeEach(async () => { await resetData(); await writeSite("testsite", { siteTitle: "Test Site" }); }); test("Global section pre-fills the seeded defaults", async ({ page }) => { await page.goto("/sites/testsite/aliases"); await expect(page.getByTestId("alias-section-global")).toBeVisible(); // The canonical seeded default is the first global row. await expect( page.locator('[data-testid="alias-label-global"]').first(), ).toHaveValue("loli"); }); test("adding a per-site alias round-trips to disk", async ({ page }) => { await page.goto("/sites/testsite/aliases"); await expect(page.getByTestId("alias-section-site")).toBeVisible(); await page.getByTestId("alias-add-site").click(); await page.locator('[data-testid="alias-label-site"]').last().fill("testconcept"); await page .locator('[data-testid="alias-triggers-site"]') .last() .fill("foo, bar"); await page .locator('[data-testid="alias-suggestion-site"]') .last() .fill("\\bfoo\\b"); await page.getByTestId("alias-save-site").click(); await expect(page.getByTestId("alias-saved-site")).toBeVisible(); await expect(async () => { const cfg = await readJson( "test-transcripts/sites/testsite/search-aliases.json", ); const entry = cfg.aliases.find((a) => a.id === "testconcept"); expect(entry).toBeTruthy(); expect(entry?.triggers).toEqual(["foo", "bar"]); }).toPass({ timeout: 5000 }); }); test("editing then saving the Global list persists it", async ({ page }) => { await page.goto("/sites/testsite/aliases"); // Change the first default's suggestion, then save. const firstSuggestion = page .locator('[data-testid="alias-suggestion-global"]') .first(); await firstSuggestion.fill("\\bCHANGED\\b"); await page.getByTestId("alias-save-global").click(); await expect(page.getByTestId("alias-saved-global")).toBeVisible(); await expect(async () => { const cfg = await readJson( "test-transcripts/search-aliases.json", ); expect(cfg.aliases[0].suggestion).toBe("\\bCHANGED\\b"); }).toPass({ timeout: 5000 }); }); });