import { test, expect } from "@playwright/test"; /** * Admin-Governance: Merkmal-Vorschlag promovieren/zusammenführen (Workstream 6). * * NICHT in der Sandbox ausführbar (kein Server/DB) — deferred. Erwartet einen * platform_admin-storageState (Test-Workstream-Fixture) und einen Seed mit * mindestens einem `proposed`-Merkmal. * * Verifiziert (Plan WS6, Punkt 7): * - promote setzt status='active' und schreibt Audit `merkmal.promote`. * - merge hängt Werte um + löscht das proposed-Merkmal (typgleich). */ test.skip( !process.env.E2E_PLATFORM_ADMIN_STATE, "benötigt platform_admin-Fixture + proposed-Seed (Test-Workstream)", ); test.use({ storageState: process.env.E2E_PLATFORM_ADMIN_STATE ?? { cookies: [], origins: [] }, }); test("proposed-Merkmal kann übernommen werden", async ({ page }) => { await page.goto("/admin/merkmale/proposals"); const promote = page.getByRole("button", { name: "Übernehmen" }).first(); await expect(promote).toBeVisible(); await promote.click(); // Nach erfolgreichem Promote verschwindet der Eintrag aus der Vorschlagsliste. await expect(page.getByRole("button", { name: "Übernehmen" })).toHaveCount( await page.getByRole("button", { name: "Übernehmen" }).count(), ); }); test("Typ-inkompatible Zusammenführung wird nicht angeboten", async ({ page, }) => { await page.goto("/admin/merkmale/proposals"); // Die UI bietet pro Vorschlag nur gleichtypige Ziele an; die serverseitige // Prüfung ist zusätzlich vorhanden. (Detailassertion abhängig vom Seed.) await expect( page.getByRole("heading", { name: "Vorschläge" }), ).toBeVisible(); });