import { expect, test } from "@playwright/test"; import { anmelden, E2E_PRAEFIX, keinQuerscrollen } from "./helfer"; test("Profil-Editor: Kopie eines Katalogprofils, Live-Prüfung, speichern, löschen", async ({ page }) => { const id = `${E2E_PRAEFIX}-${test.info().project.name}`; await anmelden(page, "/katalog/profile/docker"); await expect(page.getByText("Katalog (schreibgeschützt)")).toBeVisible(); await expect(page.getByLabel("Profil als YAML")).not.toBeEditable(); await page.getByRole("link", { name: "Als Kopie bearbeiten" }).click(); await expect(page).toHaveURL(/\/katalog\/profile\/neu\?von=docker/); const editor = page.getByLabel("Profil als YAML"); await editor.fill( (await editor.inputValue()) .replace("id: docker-eigen", `id: ${id}`) .replace("- packages: [", "- pakete: ["), ); await expect(page.getByText(/families\.debian\.1/)).toBeVisible(); await expect(page.getByRole("button", { name: "Speichern" })).toBeDisabled(); await editor.fill((await editor.inputValue()).replace("- pakete: [", "- packages: [")); await expect(page.getByText("Gültig", { exact: true })).toBeVisible(); await page.getByText("Vorschau: erzeugtes Skript").click(); await expect(page.getByText(/docker-compose-plugin/).first()).toBeVisible(); await keinQuerscrollen(page); await page.screenshot({ path: `test-results/profil-editor-${test.info().project.name}.png`, fullPage: true, }); await page.getByRole("button", { name: "Speichern" }).click(); await expect(page).toHaveURL(new RegExp(`/katalog/profile/${id}$`)); await expect(page.getByText("eigenes Profil")).toBeVisible(); page.once("dialog", (d) => void d.accept()); await page.getByRole("button", { name: "Löschen" }).click(); await expect(page).toHaveURL(/\/katalog$/); });