Communitygithub.com

Niltra/web-qa-visual

Überprüfe Webseiten mit Playwright CLI, bevor du sie als fertig erklärst: Konsolenfehler, fehlgeschlagene Requests, responsives Overflow bei 375/414/768/1280/1440, axe-Accessibility, Tastatur und Fokus, Reduced-Motion, Links, SEO/Meta und Lade-Metriken. Nutze sie beim Testen einer Webseite, nach jeder großen Änderung oder zur Validierung eines Deployments.

Was ist web-qa-visual?

Diese Skill-Agenten-Funktion ermöglicht eine umfassende, automatisierte visuelle und funktionale Qualitätssicherung für Webprojekte mittels Playwright CLI. Sie führt eine Reihe von Prüfungen durch, darunter Konsolenfehler, fehlgeschlagene Netzwerkanfragen, responsives Overflow bei fünf Viewport-Breiten (375, 414, 768, 1280, 1440 Pixel), Accessibility-Tests mit axe (keine kritischen/schwerwiegenden Verstöße), Tastatur- und Fokus-Reihenfolge, Reduced-Motion-Erkennung, Link-Validierung, SEO/Meta-Tags sowie Performance-Metriken (LCP, CLS, Jank). Die Skill ist als `cli skill` für die Codex CLI-Plattform konzipiert und erfordert Playwright, `@axe-core/playwright` und ein Produktions-Build-Setup. Sie arbeitet mit einem strukturierten Prüfungsablauf (Gates) und erstellt für jede Ausführung einen detaillierten Bericht mit Evidence, einschließlich fehlerhafter Selektoren, Logs oder Screenshots. Der Entwickler wird angewiesen, keine Freigabe zu erklären, solange ein Gate rot ist oder nicht ausgeführt wurde, und erhält konkrete Fix-Vorschläge basierend auf den Ergebnissen.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Niltra/agent-skills-web/tree/HEAD/skills/web-qa-visual

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

QA-visuell mit Playwright CLI

Goldene Regel: Ohne frische Kommandoausgabe gibt es kein Urteil. Kein "sollte gut aussehen".

Minimales Setup

  • Playwright als devDependency des Projekts; playwright.config.ts mit explizitem Viewport von 375px (nicht devices['Pixel 7'], die 412px sind) und Projekten desktop-chrome und mobile-chrome.
  • Capture-Skripte in scripts/shot.mjs (MCP nicht dafür verwenden: CLI ist schneller und reproduzierbarer).
  • Für axe: @axe-core/playwright.
  • Produktions-Build ausliefern (npm run build && npm run start), um echte Leistung zu messen; Dev nur zum Debuggen verwenden.

Checks pro Seite und pro Locale

  1. Konsole und Netzwerk: page.on('console'), page.on('pageerror'), page.on('requestfailed') und Antworten ≥400. Fehler = rot.
  2. Overflow: In jedem Viewport prüfen, ob document.documentElement.scrollWidth <= clientWidth + 1; bei Überlauf die verantwortlichen Elemente auflisten (getBoundingClientRect().right > innerWidth).
  3. Accessibility: Keine critical/serious-Violations von axe; nur ein h1; vollständige img[alt]; sichtbarer Fokus bei allen interaktiven Elementen (mit echtem Tastatur-:focus-visible prüfen, nicht nur CSS); logische Tab-Reihenfolge.
  4. Reduced Motion: page.emulateMedia({ reducedMotion: 'reduce' }); keine Pins, kein Autoplay, keine Animation länger als 200ms.
  5. Links: Alle href extrahieren, interne (200) validieren, externe als informativ markieren; 0 href="#" ohne Event-Handler.
  6. SEO: title, meta description, canonical, OG, hreflang pro Locale, parsebares JSON-LD, sitemap.xml und robots.txt mit Status 200.
  7. Leistung: LCP/CLS mit PerformanceObserver nach dem Laden messen; Ziel LCP < 2.5s und CLS < 0.1 auf Desktop; Scroll-Jank durch Zählen langer Frames (>50ms) mit rAF während 5s automatisiertem Scrollen messen.
  8. Canvas/Scroll: Da das Canvas im Headless-Modus schwarz erscheinen kann, über DOM prüfen: Elemente mit erwarteter Opazität/Transformation, Texte der Beats vorhanden und sichtbar in den richtigen Bereichen, und Status in window exponiert, falls vorhanden.

Loop

  • Nach jeder Ausführung: Bericht mit Tabelle Gate/Befehl/Ergebnis/Status und Liste der Blocker mit Beweis (Selector, Log oder Capture).
  • Wenn ein Gate fehlschlägt: Korrigieren (eigene Tests/Skripte) oder konkreten Fix in src/ mit Beweisen vorschlagen; gesamten Zyklus wiederholen.
  • Datierte Captures in docs/qa/ speichern (Desktop + Mobile pro Haupt-Locale) und Baseline für Regressionsvergleiche.
  • Nicht FERTIG erklären, wenn ein Gate rot ist oder nicht ausgeführt wurde.

Ehrliche Grenzen

  • Eine Sequenz von Frames auf echtem iOS kann von Headless aus nicht validiert werden: Im Bericht vermerken.
  • Lighthouse via npx lighthouse ist optional, aber für den Produktions-Build empfehlenswert; wenn es nicht ausgeführt werden kann, dies angeben statt zu schätzen.

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

Verwandte Skills