Barrierefreiheit
Barrierefreiheit
null-noise strebt WCAG 2.2 AA als technischen Zielstandard an. Die Standardoberfläche bleibt dabei der zugängliche Primärpfad.
Aktueller Status
null-noise ist eine private Referenz-App. Es gibt noch keine abgeschlossene formale Konformitätsprüfung und keine Behauptung vollständiger Konformität.
Prüfung und Umsetzung laufen iterativ. Gefundene Barrieren sollen in der normalen Oberfläche behoben werden, nicht in einem separaten Sondermodus.
Was bereits berücksichtigt wird
- HTML-first mit nativen Links, Buttons, Formularfeldern und Disclosure-Elementen.
- Tastaturbedienung und sichtbarer Fokus auf interaktiven Elementen.
- Textliche Einordnung statt rein farblicher Codierung.
- Reduzierte Bewegung über
prefers-reduced-motion. - Ruhige Offenlegung von Zusatzinformationen statt flüchtiger Tooltips.
- Reflow und mobile Nutzung als wiederkehrender Prüfpunkt.
- Reduzierte kognitive Last durch kurze Texte, klare Gruppen und vorsichtige Formulierungen.
Wie geprüft wird
Das Projekt nutzt automatisierte Tests, manuelle Smoke-Tests und mobile Sichtprüfungen. Automatisierte Tests ersetzen keine manuelle Prüfung.
Automatisierte Tests im Projekt
npm run lint: ESLint mit Next-Regeln prüft unter anderem HTML-nahe React-Struktur, Link-/Bildmuster und auffällige Codefehler.npm run build: Der Next.js-Produktionsbuild prüft Typen, Routing, Server-/Client-Grenzen, statische Seiten und die Manifest-/Offline-Routen.npm run test:unit: Vitest prüft Datenlogik, Suchlogik, Evidence-Modell, lokale Titel, Merken/Gesehen-Helfer, Laufzeitkonfiguration und sichere Formulierungen.npm run test:axe-core: Ein direkter axe-core-Lauf scannt Kernrouten wie Start, Suche, Suche mit Query, Detailseite, Offline-Seite sowie Info- und Rechtstexte.npm run test:a11y: Playwright öffnet die App im Browser und kombiniert axe-Scans mit Bedienprüfungen für Tastatur, Fokus, Skiplinks, native Disclosure, mobile Navigation, Manifest und Reflow.npx playwright test: Der vollständige Browserlauf umfasst die A11y-Checks plus weitere End-to-End-Prüfungen; externe TMDb-Live-Fallbacks laufen nur, wenn die nötige Umgebung verfügbar ist.
Technische WCAG-2.2-A/AA/AAA-Matrix
Der Gegencheck npm run test:wcag22-aaa erfasst alle 86 WCAG-2.2-A/AA/AAA-Erfolgskriterien in einer technischen Matrix. Im letzten lokalen Lauf waren 48 Kriterien automatisiert auf Pass geprüft; 0 Kriterien hatten einen automatischen Fail; 12 Kriterien bleiben manuell offen; 26 Kriterien waren im geprüften Feature-Scope nicht anwendbar. Das ist eine Regression-Absicherung, keine vollständige manuelle WCAG-Konformitätsbewertung und kein AAA-Konformitätsziel.
Technischer Stand nach Level
- ATechnisch erreichtA-Kriterien ohne automatischen Fail und ohne manuell offene Matrixpunkte.
- AATechnisch erreichtA- und AA-Kriterien ohne automatischen Fail und ohne manuell offene Matrixpunkte.
- AAAAuto-Scan ohne Fail, manuell offenAAA hat aktuell keinen automatischen Axe-Fail mehr; manuell offene Kriterien bleiben.
- ✅ Automatisch: Pass
- ❌ Automatisch: Fail
- ⚠️ Manuell offen
- ℹ️ Automatisch: nicht anwendbar
- 1.1.1 Non-text Content (A)
✅ Automatisch: Pass
Axe prüft Textalternativen; zusätzlich wird im DOM geprüft, ob sichtbare Bilder alt-Text, dekorativen Status oder einen versteckten Kontext haben. - 1.2.1 Audio-only and Video-only (A)
ℹ️ Automatisch: nicht anwendbar
Die geprüften Routen enthalten keine Audio-, Video- oder Track-Elemente; das Kriterium ist im aktuellen Feature-Scope nicht anwendbar. - 1.2.2 Captions (A)
ℹ️ Automatisch: nicht anwendbar
Die geprüften Routen enthalten keine aufgezeichneten Audio-/Video-Inhalte; Untertitel-Prüfung ist deshalb nicht anwendbar. - 1.2.3 Audio Description or Media Alternative (A)
ℹ️ Automatisch: nicht anwendbar
Die geprüften Routen enthalten kein aufgezeichnetes Video; Audiodeskription oder Medienalternative ist hier nicht anwendbar. - 1.2.4 Captions Live (AA)
ℹ️ Automatisch: nicht anwendbar
Es gibt keine Live-Audio- oder Live-Video-Inhalte auf den geprüften Routen. - 1.2.5 Audio Description (AA)
ℹ️ Automatisch: nicht anwendbar
Es gibt kein aufgezeichnetes Video auf den geprüften Routen; Audiodeskription ist deshalb nicht anwendbar. - 1.3.1 Info and Relationships (A)
✅ Automatisch: Pass
Axe prüft Strukturregeln; zusätzlich werden Landmarken, genau ein main, genau ein h1, Überschriften, Listen, Tabellenstrukturen sowie das Kontaktformular mit nativen Labels, Hilfetexten und Fehlermeldungen geprüft. - 1.3.2 Meaningful Sequence (A)
✅ Automatisch: Pass
Playwright prüft DOM-Reihenfolge, Landmarken und Überschriften-Sichtbarkeit auf den Kernrouten; die Kontaktseite wird von Einführung über Datensparsamkeit bis Formular in dieser Reihenfolge geprüft. - 1.3.3 Sensory Characteristics (A)
✅ Automatisch: Pass
Quelltext und DOM werden auf Hinweise geprüft, die ausschließlich über Form, Position, Größe oder Farbe funktionieren würden. - 1.3.4 Orientation (AA)
✅ Automatisch: Pass
Die Kernrouten werden in schmalen und breiten Viewports geprüft; die Oberfläche erzwingt keine feste Portrait- oder Landscape-Nutzung. - 1.3.5 Identify Input Purpose (AA)
✅ Automatisch: Pass
Formularfelder werden auf erkennbare Namen, Labels und sinnvolle Autocomplete-/Input-Kontexte geprüft; die optionale Kontakt-E-Mail nutzt `type=email` sowie `autocomplete=email`. - 1.4.1 Use of Color (A)
✅ Automatisch: Pass
Axe prüft erkennbare Farbprobleme; zusätzlich werden aktive Zustände, Fokuszustände und textliche Labels gegen rein farbliche Codierung abgesichert. - 1.4.2 Audio Control (A)
ℹ️ Automatisch: nicht anwendbar
Es gibt keine automatisch abspielenden Audio- oder Medieninhalte. - 1.4.3 Contrast Minimum (AA)
✅ Automatisch: Pass
Axe prüft Textkontrast auf den gerenderten Kernrouten inklusive Kontaktformular; Fehler-, Hilfe- und Statusmeldungen verlassen sich nicht auf Opacity-Fades. - 1.4.4 Resize Text (AA)
✅ Automatisch: Pass
Die Routen werden bei 320 CSS-Pixeln und großen Viewports geprüft; Inhalte dürfen nicht horizontal ausbrechen oder unbedienbar werden. - 1.4.5 Images of Text (AA)
✅ Automatisch: Pass
DOM-Smoke prüft Bildzwecke; die Brand-Grafik ist dekorativ innerhalb eines benannten Startseiten-Links, wesentliche Information bleibt Text. - 1.4.10 Reflow (AA)
✅ Automatisch: Pass
Kernrouten inklusive `/kontakt` werden bei 320, 390 und 430 CSS-Pixeln auf horizontalen Overflow und erreichbare Inhalte geprüft. - 1.4.11 Non-text Contrast (AA)
✅ Automatisch: Pass
Axe und Computed-Style-Smokes prüfen Fokus-, Control-, Button-, Navigation- und Statuszustände; Kontaktfehler und Erfolgsmeldung haben zusätzlich sichtbare Rahmen und Text. - 1.4.12 Text Spacing (AA)
✅ Automatisch: Pass
Der Test injiziert erhöhte Zeilenhöhe, Zeichenabstand, Wortabstand und Absatzabstände und prüft danach auf horizontalen Overflow, auch auf dem Kontaktformular. - 1.4.13 Content on Hover or Focus (AA)
✅ Automatisch: Pass
DOM-Smoke prüft, dass keine Tooltip-/Popover-Pflichtinhalte vorhanden sind; Zusatzinformationen bleiben über native Disclosure-Muster erreichbar. - 2.1.1 Keyboard (A)
✅ Automatisch: Pass
Playwright tabbt durch interaktive Elemente, fokussiert Controls und prüft, dass sichtbare Bedienelemente per Tastatur erreichbar bleiben; das Kontaktformular nutzt native Eingabefelder und einen echten Submit-Button. - 2.1.2 No Keyboard Trap (A)
✅ Automatisch: Pass
Tab-Reihenfolge und fokussierbare Bereiche werden begrenzt geprüft; Mobile-Menü, Disclosure und Kontaktformular dürfen den Fokus nicht einschließen. - 2.1.4 Character Key Shortcuts (A)
ℹ️ Automatisch: nicht anwendbar
Es wurden keine eigenen Einzelzeichen-Tastaturkürzel erkannt. - 2.2.1 Timing Adjustable (A)
ℹ️ Automatisch: nicht anwendbar
Es gibt keine Session-Timeouts, Meta-Refreshes oder zeitkritischen UI-Abläufe auf den geprüften Routen. - 2.2.2 Pause, Stop, Hide (A)
✅ Automatisch: Pass
Reduced-Motion wird emuliert; bewegte Zustände bleiben kurz, rein dekorativ und verdecken keine Information. - 2.3.1 Three Flashes (A)
ℹ️ Automatisch: nicht anwendbar
DOM-Smoke prüft, dass keine Video-, Canvas-, Blink- oder Marquee-Inhalte vorhanden sind, die Flackern auslösen könnten. - 2.4.1 Bypass Blocks (A)
✅ Automatisch: Pass
Der Skip-Link zu main-content wird per Tastatur fokussiert, sichtbar gemacht und als Bypass vor der Navigation geprüft, auch bevor die Kontaktformular-Felder erreicht werden. - 2.4.2 Page Titled (A)
✅ Automatisch: Pass
Jede geprüfte Route muss einen nicht-leeren Dokumenttitel und die erwartete sichtbare Hauptüberschrift haben. - 2.4.3 Focus Order (A)
✅ Automatisch: Pass
Tab-Reihenfolge, Fokuslandung und sichtbarer Fokus werden auf bis zu 80 fokussierbaren Elementen pro Route geprüft; Kontaktfehler- und Erfolgsmeldungen werden nach Submit programmatisch fokussiert. - 2.4.4 Link Purpose (A)
✅ Automatisch: Pass
Alle sichtbaren Links müssen einen zugänglichen Namen haben; wiederholte Links werden auf verständliche Bezeichnungen geprüft. - 2.4.5 Multiple Ways (AA)
✅ Automatisch: Pass
Header- und Footer-Navigation werden auf wiederkehrende Linkziele geprüft: Start, Suche und Erklärung/Hilfe sind im Header erreichbar; Barrierefreiheit, Kontakt, Datenschutz und Impressum bleiben im Footer erreichbar. - 2.4.6 Headings and Labels (AA)
✅ Automatisch: Pass
Sichtbare Überschriften dürfen nicht leer sein; Kontaktformular, Buttons und Controls müssen verständliche sichtbare Labels wie `E-Mail für Antwort (optional)`, `Nachricht (Pflichtfeld)` und `Nachricht senden` haben. - 2.4.7 Focus Visible (AA)
✅ Automatisch: Pass
Für fokussierte Elemente wird ein sichtbarer Computed-Style geprüft: Outline, Box-Shadow, Border-Kontrast oder gleichwertige Fokusmarkierung; das umfasst Textarea und Statuszusammenfassungen. - 2.4.11 Focus Not Obscured Minimum (AA)
✅ Automatisch: Pass
Fokussierte Elemente werden in den Viewport gebracht und auf sichtbare Schnittmenge mit dem Viewport geprüft; Kontaktfelder und Submit-Button müssen sichtbar erreichbar bleiben. - 2.5.1 Pointer Gestures (A)
ℹ️ Automatisch: nicht anwendbar
Es gibt keine Multipoint- oder Pfadgesten-UI auf den geprüften Routen. - 2.5.2 Pointer Cancellation (A)
✅ Automatisch: Pass
Interaktionen nutzen native Links, Buttons und Formularcontrols; es wurden keine pointerdown-only-Aktivierungen erkannt. - 2.5.3 Label in Name (A)
✅ Automatisch: Pass
Wenn sichtbarer Text und aria-label zusammen vorkommen, muss der sichtbare Text im zugänglichen Namen enthalten bleiben; das Kontaktformular nutzt sichtbare Labels ohne abweichende aria-labels. - 2.5.4 Motion Actuation (A)
ℹ️ Automatisch: nicht anwendbar
Es wurden keine Device-Motion-Handler oder bewegungsgesteuerten Aktionen erkannt. - 2.5.7 Dragging Movements (AA)
ℹ️ Automatisch: nicht anwendbar
Es gibt keine Drag-and-Drop- oder draggable-UI auf den geprüften Routen. - 2.5.8 Target Size Minimum (AA)
✅ Automatisch: Pass
Fokussierbare Ziele werden auf mindestens 24px Breite/Höhe geprüft; Kontaktformularfelder und Submit-Button werden zusätzlich als konkrete Targets geprüft. - 3.1.1 Language of Page (A)
✅ Automatisch: Pass
Das html-lang-Attribut muss auf den geprüften Routen `de` sein. - 3.1.2 Language of Parts (AA)
✅ Automatisch: Pass
Lang-Attribute werden auf plausible Werte geprüft; fremdsprachige Pflichtbereiche sind im aktuellen Scope nicht vorhanden. - 3.2.1 On Focus (A)
✅ Automatisch: Pass
Fokus darf keine automatische Navigation oder unerwartete Zustandsänderung auslösen; Fokus-Smokes prüfen stabile Route, sichtbare Markierung und ruhige Kontaktformular-Fokuswechsel. - 3.2.2 On Input (A)
✅ Automatisch: Pass
Formularänderungen laufen über native Controls und explizite Submit-/Change-Flows; die Kontaktseite zeigt Fehler oder Erfolg erst nach bewusstem Submit. - 3.2.3 Consistent Navigation (AA)
✅ Automatisch: Pass
Die Reihenfolge und Wiederkehr der Header-/Footer-Navigation wird über Kernrouten geprüft; der Kontakt-Link bleibt im Footer konsistent erreichbar. - 3.2.4 Consistent Identification (AA)
✅ Automatisch: Pass
Wiederkehrende Links, Buttons und Controls werden auf konsistente Namen und Rollen geprüft; Kontakt bleibt als Footer-Link und Formularziel gleich benannt. - 3.2.6 Consistent Help (A)
✅ Automatisch: Pass
Hilfe-/Erklärungslinks und Kontakt bleiben konsistent erreichbar; relevante Hilfe-, Kontakt- und Legal-Routen werden als Kernrouten geprüft. - 3.3.1 Error Identification (A)
✅ Automatisch: Pass
Axe, Formular- und Status-Smokes prüfen, dass Kontakt-Fehlerzusammenfassung und Feldfehler textlich benannt, fokussierbar und nicht nur farblich codiert sind. - 3.3.2 Labels or Instructions (A)
✅ Automatisch: Pass
Formularfelder und Controls müssen Labels, sichtbare Anweisungen oder zugängliche Namen haben; Kontakt-Hilfetexte sind über `aria-describedby` mit den Feldern verbunden. - 3.3.3 Error Suggestion (AA)
✅ Automatisch: Pass
Kontakt-Fehlermeldungen geben konkrete Korrekturhinweise für leere/zu kurze Nachricht und ungültige E-Mail; Statusbereiche bleiben ruhig sichtbar. - 3.3.4 Error Prevention Legal/Financial/Data (AA)
ℹ️ Automatisch: nicht anwendbar
Es gibt keine rechtlichen oder finanziellen Transaktionsformulare; das Kontaktformular speichert nicht dauerhaft, sendet erst nach explizitem Submit und verlangt nur die Nachricht als Pflichtfeld. - 3.3.7 Redundant Entry (A)
ℹ️ Automatisch: nicht anwendbar
Es gibt keinen mehrstufigen Re-Entry-Flow; das Kontaktformular verlangt die Nachricht nur einmal und fragt eine optionale Antwortadresse nur einmal ab. - 3.3.8 Accessible Authentication Minimum (AA)
ℹ️ Automatisch: nicht anwendbar
Es gibt keinen Login- oder Authentifizierungsflow; die Kontaktseite nutzt keine Captcha-, Profil- oder Account-Hürde. - 4.1.2 Name Role Value (A)
✅ Automatisch: Pass
Axe und DOM-Smokes prüfen interaktive Namen, Rollen, Zustände wie aria-expanded und native Button-/Link-/Formularsemantik; Kontaktfelder bleiben native input/textarea/button-Controls. - 4.1.3 Status Messages (AA)
✅ Automatisch: Pass
Statusmeldungen und Live-Regionen werden auf role=status bzw. verständliche Aktualisierungstexte geprüft; Kontakt-Erfolg und Fehlerzusammenfassung werden für Screenreader erfassbar fokussiert bzw. gemeldet. - 1.2.6 Sign Language (AAA)
ℹ️ Automatisch: nicht anwendbar
Es gibt keine aufgezeichneten Video-/Audioinhalte auf den geprüften Routen; Gebärdensprache ist im aktuellen Feature-Scope nicht anwendbar. - 1.2.7 Extended Audio Description (AAA)
ℹ️ Automatisch: nicht anwendbar
Es gibt kein aufgezeichnetes Video auf den geprüften Routen; erweiterte Audiodeskription ist nicht anwendbar. - 1.2.8 Media Alternative (AAA)
ℹ️ Automatisch: nicht anwendbar
Es gibt kein aufgezeichnetes Video auf den geprüften Routen; eine Medienalternative ist hier nicht anwendbar. - 1.2.9 Audio-only Live (AAA)
ℹ️ Automatisch: nicht anwendbar
Es gibt keine Live-Audio-Inhalte auf den geprüften Routen. - 1.3.6 Identify Purpose (AAA)
⚠️ Manuell offen
Native Controls und Labels werden automatisch geprüft; ob alle UI-Zwecke nach AAA ausreichend programmatisch bestimmbar sind, bleibt manuell offen. - 1.4.6 Contrast Enhanced (AAA)
✅ Automatisch: Pass
Axe `wcag2aaa` prüft Enhanced Contrast auf den Kernrouten; die aktuellen Kontrast-Fundstellen wurden über dunklere Text-, Button- und Badge-Farben geschlossen. - 1.4.7 Low or No Background Audio (AAA)
ℹ️ Automatisch: nicht anwendbar
Es gibt keine Hintergrund-Audioinhalte. - 1.4.8 Visual Presentation (AAA)
⚠️ Manuell offen
Reflow und Text-Spacing werden automatisch geprüft; vollständige AAA-Bewertung zu Spaltenbreite, Blocksatz, Zeilenabstand und Nutzeranpassung bleibt manuell offen. - 1.4.9 Images of Text No Exception (AAA)
✅ Automatisch: Pass
Automatischer Bild-Smoke findet keine informativen Bilder von Text; Brand-Grafik ist dekorativ innerhalb eines benannten Links. - 2.1.3 Keyboard No Exception (AAA)
✅ Automatisch: Pass
Die geprüften Interaktionen nutzen native Links, Buttons und Formularcontrols; der Tastatur-Smoke findet keinen nicht per Tastatur erreichbaren Kernpfad. - 2.2.3 No Timing (AAA)
ℹ️ Automatisch: nicht anwendbar
Es gibt keine zeitabhängigen Aufgaben oder Timeouts auf den geprüften Routen. - 2.2.4 Interruptions (AAA)
ℹ️ Automatisch: nicht anwendbar
Es gibt keine automatisch einblendenden Unterbrechungen im geprüften Flow. - 2.2.5 Re-authenticating (AAA)
ℹ️ Automatisch: nicht anwendbar
Es gibt keine Authentifizierung und damit keine Re-Authentifizierung. - 2.2.6 Timeouts (AAA)
ℹ️ Automatisch: nicht anwendbar
Es gibt keine Sitzungs-Timeouts im geprüften Scope. - 2.3.2 Three Flashes (AAA)
ℹ️ Automatisch: nicht anwendbar
DOM-Smoke findet keine Video-, Canvas-, Blink- oder Marquee-Inhalte, die Flashing auslösen könnten. - 2.3.3 Animation from Interactions (AAA)
✅ Automatisch: Pass
Reduced-Motion wird emuliert; Interaktionsanimationen sind dekorativ, kurz und werden bei reduzierter Bewegung zurückgenommen. - 2.4.8 Location (AAA)
⚠️ Manuell offen
Dokumenttitel, h1 und aktive Navigation geben Orientierung; eine vollständige AAA-Bewertung der Standortinformation bleibt manuell offen. - 2.4.9 Link Purpose Link Only (AAA)
✅ Automatisch: Pass
Automatische Linknamen-Smokes prüfen, dass Links aus ihrem Namen heraus verständlich bleiben; Screenreader-Kontext bleibt manuell zu prüfen. - 2.4.10 Section Headings (AAA)
✅ Automatisch: Pass
Die Kernrouten werden auf genau ein h1 und nicht-leere Abschnittsüberschriften geprüft. - 2.4.12 Focus Not Obscured Enhanced (AAA)
⚠️ Manuell offen
Der aktuelle Smoke prüft sichtbare Fokuslage im Viewport; ob kein Teil des Fokusindikators verdeckt ist, bleibt als AAA-Enhanced-Detail manuell offen. - 2.4.13 Focus Appearance (AAA)
⚠️ Manuell offen
Fokus-Sichtbarkeit wird automatisch geprüft; die exakte AAA-Flächen-/Kontrastanforderung für Fokusindikatoren bleibt manuell offen. - 2.5.5 Target Size Enhanced (AAA)
⚠️ Manuell offen
AA-Mindestgröße wird automatisch geprüft; die strengere 44px-AAA-Zielgröße ist noch nicht als harter automatischer Gate umgesetzt. - 2.5.6 Concurrent Input Mechanisms (AAA)
✅ Automatisch: Pass
Die App beschränkt Eingabemodalitäten nicht; native Controls bleiben für Touch, Tastatur und Pointer nutzbar. - 3.1.3 Unusual Words (AAA)
⚠️ Manuell offen
Ungewöhnliche Begriffe, Produktwörter und externe Abkürzungen können nicht zuverlässig automatisch bewertet werden; redaktionelle Prüfung bleibt offen. - 3.1.4 Abbreviations (AAA)
⚠️ Manuell offen
Abkürzungen wie WCAG, TMDb oder PWA brauchen redaktionelle Bewertung; die automatische Matrix markiert das als manuell offen. - 3.1.5 Reading Level (AAA)
⚠️ Manuell offen
Leseniveau und ergänzende Erklärungen können nicht belastbar per Browser-Smoke bewertet werden; manuelle Textprüfung bleibt offen. - 3.1.6 Pronunciation (AAA)
⚠️ Manuell offen
Aussprachehilfen sind nicht automatisch bestimmbar; aktuell manuell offen, falls mehrdeutige Wörter fachlich relevant werden. - 3.2.5 Change on Request (AAA)
✅ Automatisch: Pass
Navigation und Zustandswechsel laufen über explizite Links, Buttons, Submit oder bewusste Auswahländerungen. - 3.3.5 Help (AAA)
⚠️ Manuell offen
Erklärung, Barrierefreiheit, Datenschutz, Impressum und Kontakt sind erreichbar; ob jede Aufgabe genug kontextuelle Hilfe hat, bleibt manuell offen. - 3.3.6 Error Prevention All (AAA)
⚠️ Manuell offen
Such- und Feedback-Flows haben ruhige Statusmeldungen; vollständige AAA-Bewertung für alle Eingaben bleibt manuell offen. - 3.3.9 Accessible Authentication Enhanced (AAA)
ℹ️ Automatisch: nicht anwendbar
Es gibt keinen Authentifizierungsflow.
Was dabei im Hintergrund passiert
Playwright startet über die Projektkonfiguration lokal npm run dev auf 127.0.0.1:3000, sofern dort kein Server wiederverwendet wird. Danach steuert der Testbrowser echte Seiten an, wartet auf sichtbare Inhalte und führt Erwartungen gegen die gerenderte Oberfläche aus.
Die axe-Prüfungen laufen in zwei Varianten: einmal über @axe-core/playwright und zusätzlich als direkt in die Seite injiziertes axe-core. Die Ergebnisse werden im Testlauf als JSON-Anhang aufbereitet, damit Funde nicht nur als kurze Konsolenmeldung stehen bleiben.
Für Browserzustände werden echte Interaktionen genutzt: Eingaben in Suchfelder, Tastatur-Tab-Reihenfolge, Enter auf Skiplinks, Fokus nach Reload, Öffnen von summary-Elementen, mobile Menübedienung und kleine Viewports bis 320 CSS-Pixel.
Wie die Tests hergeleitet wurden
Die Tests sind aus den Produkt- und A11y-Leitplanken abgeleitet: HTML-first, Standardoberfläche als Primärpfad, keine rein farbliche Information, keine flüchtigen Tooltip-Pflichtwege, sichtbarer Fokus, Tastaturbedienung, kleine Viewports und verständliche Zustände.
Daraus wurden konkrete Prüfpfade gemacht: Startseite, Suche ohne Query, Suche mit Query, Detailseite, Offline-Seite, Erklärung, Barrierefreiheit, Kontakt, Datenschutz und Impressum. Jede Route prüft zuerst, ob die erwarteten Inhalte sichtbar sind; danach laufen Axe- oder Interaktionschecks auf der tatsächlich gerenderten Seite.
Zusätzlich prüfen Unit-Tests die fachliche Grundlage hinter der Oberfläche, damit sichtbare Texte nicht versehentlich zu Scores, Rankings, Scheinpräzision oder reduzierender Sprache kippen.
Bekannte Grenzen
- Datenbasis und erste Einschätzungen bleiben unsicher.
- Die manuelle Prüfung ist noch nicht vollständig abgeschlossen.
- Screenreader- und Mobile-Prüfung werden weiter geschärft.
- Externe Dienste und externe Websites sind nicht Teil dieser Seite.
Kontakt
Hinweise auf Barrieren oder unklare Bedienwege sind willkommen. Nutze dafür das Kontaktformular oder schreibe direkt an hallo@null-noise.de.