// @ts-check const { test, expect } = require('@playwright/test'); const slugs = require('../../fixtures/known-glossar-slugs.json'); /** * Stufe 1 · Glossar-Slugs * * Prüft, dass jeder bekannte Slug * 1) eine 200-Antwort liefert (kein 404) * 2) das Glossar-DOM (Begriffs-Titel) tatsächlich rendert * * Das ist der Regressionstest gegen den Bug vom 2026-06-10 * (Tooltip-Lib + Klima-2D/3D basePath-Truthy). */ // Quote-Optimierung: 266 Slugs sind viel — wir laufen sie parallel. test.describe.configure({ mode: 'parallel' }); for (const slug of slugs.slugs) { test(`/${slug}`, async ({ page }) => { const res = await page.goto(`/glossar?term=${encodeURIComponent(slug)}`); expect(res.status(), `slug ${slug} antwortet nicht 200`).toBeLessThan(400); // Glossar-Page rendert eine Tabelle oder eine Detail-Karte mit dem Begriff const html = await page.content(); // Heuristik: der Slug sollte irgendwo im DOM auftauchen (key_slug oder Titel) // Wir akzeptieren auch wenn der Begriff selbst (slug→Title-Heuristik) im // Body-Text vorkommt. Echte Page-Crash würde 5xx liefern. const bodyText = await page.locator('body').textContent({ timeout: 3000 }); expect(bodyText && bodyText.length, `leerer Body für ${slug}`).toBeGreaterThan(50); }); }