## Ergebnis - **Read-only geprüft:** Ausgangsstand `ddce13a` wurde in einem temporären Checkout gebaut und getestet. - `npm run check`: **0 Fehler**, 37 Deprecation-Hinweise aus `src/content.config.ts`. - `npm run build`: **erfolgreich**, 20 statische Seiten. - Es existieren aktuell **keine Playwright-/Lighthouse-Konfigurationen oder Test-Skripte**. - Temporäre Audit-Dateien wurden entfernt; **keine Repository-Datei wurde von mir geändert**. ## Playwright-Baseline Ein temporärer Chromium-Smoke ergab: - Alle Zielbreiten `360, 375, 390, 430, 768, 820, 1024, 1366, 1440, 1920`: Homepage sichtbar, **kein horizontaler Dokument-Overflow**. - Desktop-Navigation: funktioniert. - Mobile Menü und Untermenü bei 390 px: funktioniert. - Wizard: Schrittwechsel und Live-Zusammenfassung funktionieren. - Zwei konkrete Lücken: - **Filter fehlt:** Links wie `/referenzen/?kategorie=neubauten` existieren in `Header.astro`, aber `src/pages/referenzen/index.astro` wertet den Parameter nicht aus; alle sechs Karten bleiben sichtbar. - **Sticky-Link-Bar fehlt im geprüften Ausgangsstand.** Es gibt nur den sticky Header und die sticky Wizard-Zusammenfassung. Der Header fährt beim Herunterscrollen absichtlich komplett aus dem Viewport (`data-hidden`, gemessen `top: -71px`). ### Kleinste robuste Playwright-Suite Eine Chromium-Konfiguration, ein Smoke-Spec, keine zehn Browser-Projekte: 1. Eine Schleife über alle zehn Zielbreiten: - zentrale Seiten laden, - `pageerror` und unerwartete Console-Errors verbieten, - `scrollWidth <= clientWidth + 1`, - H1 und Navigation sichtbar. 2. Navigation bei 1366 px. 3. Mobile Menü inklusive Untermenü bei 390 und 820 px. 4. Referenzfilter über echte URL-Parameter und Kartenkategorien. 5. Wizard vor/zurück, Eingabe und Zusammenfassung bei 390 px. 6. Sticky Contact Links bei 360/430 px: - sichtbar, - `tel:`/WhatsApp-Ziele korrekt, - keine Überdeckung wichtiger Buttons oder des Footers. 7. Optional je ein Screenshot nur bei Fehlern; keine vollständige visuelle Snapshot-Matrix. Empfohlene Dev-Dependencies: `@playwright/test` plus Verwendung von System-Chromium in CI oder fest installierter Playwright-Browser-Version. ## Lighthouse Temporärer Mobile-Lauf auf dem gebauten Ausgangsstand: - Performance: **72** - Accessibility: **95** - Best Practices: **96** - SEO: **100** - FCP: **2,1 s** - LCP: **35,0 s** - TBT: **0 ms** - CLS: **0,001** Hauptursachen: - Zwei eager geladene Hero-PNGs mit zusammen rund **5,84 MB**. - Lighthouse schätzt rund **5,62 MiB** Bildersparnis. - LCP-Hintergrundbild wird nicht direkt im HTML entdeckt und hat kein `fetchpriority`. - Google Fonts und beide großen CSS-Dateien blockieren Rendering. - Fehlendes `favicon.ico` erzeugt einen 404-Console-Fehler. - Kontrastfehler bei den grauen Service-Kartennummern. Kleinste robuste Performance-Gate: **LHCI nur für `/`**, drei Läufe/Median, nach Bildoptimierung mit Budgets etwa Performance ≥ 80, Accessibility/Best Practices/SEO ≥ 95, LCP ≤ 2,5 s, CLS ≤ 0,1 und TBT ≤ 200 ms. Functional Coverage bleibt bei Playwright. ## GSAP und Three.js ### GSAP – aktiv und ausgeliefert Konkrete Nutzung ausschließlich in `src/scripts/page-transition.ts`: - Homepage-Intro - Route-Overlay - `gsap.set()` und mehrere Timelines - Import über `BaseLayout.astro` Das gemeinsame JS-Bundle ist **81.519 Byte raw / 30.506 Byte gzip** und enthält GSAP. **Sichere Entfernung:** Nicht nur die Dependency löschen. `BaseLayout.astro` setzt `has-gasser-js-intro`, wodurch die CSS-Fallback-Animation deaktiviert wird; isoliertes Entfernen des Imports könnte Intro und Hero verstecken. Kleinster sicherer Weg: 1. Homepage- und Route-Overlay vollständig entfernen. 2. Intro-Markup, Intro-Klassen und zugehörigen CSS-Block in `BaseLayout.astro` entfernen. 3. `page-transition.ts` auf Link-Hit/Page-Enter ohne GSAP reduzieren. 4. Danach `gsap` aus `package.json`/Lockfile entfernen. 5. Navigation, Direktaufruf `/`, Astro-ClientRouter und Reduced Motion per Playwright prüfen. ### Three.js – Quellcode vorhanden, aber verwaist Three wird nur in folgenden, nirgendwo importierten Komponenten/Skripten verwendet: - `src/components/AnimatedLogo.astro` - `src/scripts/animated-logo.ts` - `src/components/ConstructionScene.astro` - `src/scripts/construction-scene.ts` Im Produktionsbundle wurde **kein `WebGLRenderer`/Three-Code** gefunden. Sichere Entfernung: 1. Die vier verwaisten Dateien löschen. 2. `three` und `@types/three` entfernen. 3. Build und Source-Suche erneut ausführen. Das reduziert vor allem Installation/Repository-Last: ungefähr **39 MB `three` + 5 MB Typen**; die aktuelle Browser-Bundlegröße ändert sich dadurch nicht. ## Weitere Hinweise - `npm audit`: 8 Meldungen, darunter zwei hohe über die direkte Astro-Abhängigkeit. - `package.json` verwendet mehrfach `latest`; der Lockfile macht `npm ci` aktuell reproduzierbar, direkte feste Versionen wären langfristig robuster. - Während des Audits wurde der Arbeitsbaum parallel von einem anderen Prozess/Agenten geändert. Diese Änderungen stammen **nicht von mir**; Build-, Playwright- und Lighthouse-Ergebnisse beziehen sich deshalb bewusst auf den temporären Checkout von `ddce13a`.