Browser-DevTools für Barrierefreiheit nutzen
A11Y
WCAG
Barrierefreiheit · DevTools · Accessibility Tree · Testing
Browser-DevTools für Barrierefreiheit nutzen
Accessibility-Panel, Computed Name und Kontrast-Simulation direkt im Browser

Wer barrierefreie Interfaces bauen will, braucht keine teure Zusatzsoftware. Chrome und Firefox liefern mit dem Accessibility-Panel, der Computed-Name-Anzeige und der Simulation von Farbfehlsichtigkeiten bereits alle Werkzeuge, um Rollen, Namen und Kontraste direkt im Browser zu prüfen. Dieser Artikel zeigt, wie diese Bordmittel gezielt eingesetzt werden und wo der Lighthouse Accessibility Audit an seine Grenzen stößt.

14 Min. Lesezeit Accessibility Tree · ARIA · Kontrast Chrome DevTools · Firefox · Lighthouse

1. Warum Browser-DevTools der schnellste Weg zu barrierefreien Interfaces sind

Browser-DevTools werden meist für Layout-Debugging und Netzwerk-Analyse verwendet, aber Chrome und Firefox liefern seit Jahren ein vollwertiges Accessibility-Panel mit, das genau den Accessibility Tree offenlegt, den auch Screenreader wie NVDA, JAWS oder VoiceOver zur Ansage nutzen. Wer barrierefreie Interfaces entwickelt, braucht damit keine zusätzliche Software: Rolle, Name und Zustand jedes Elements lassen sich direkt im selben Werkzeug prüfen, in dem ohnehin schon Markup und Styles debuggt werden. Das senkt die Einstiegshürde erheblich, weil kein Kontextwechsel zu einer externen Testumgebung nötig ist.

Der eigentliche Wert liegt im kurzen Feedback-Zyklus: Eine Änderung am Markup lässt sich sofort im Accessibility-Panel gegenprüfen, ohne Deployment oder Screenreader-Setup. Gerade in Hyvä-Themes, wo viele Zustände über Alpine.js gesteuert werden, zeigt das Panel live, wie sich aria-expanded, aria-hidden oder role beim Öffnen eines Dropdowns tatsächlich verändern. Dieser Artikel zeigt, wie das Accessibility-Panel in Chrome und der Accessibility Inspector in Firefox genutzt werden, wie Computed Name und Role zuverlässig geprüft werden, wie Farbfehlsichtigkeiten direkt im Browser simuliert werden und wo der Lighthouse Accessibility Audit an seine Grenzen stößt.

2. Das Accessibility-Panel in Chrome DevTools im Überblick

Das Accessibility-Panel öffnet sich in Chrome über die DevTools unter „Elements" im rechten Tab „Accessibility" oder als eigenständiges Panel über die Drei-Punkte-Ansicht. Für jedes im Elements-Panel ausgewählte DOM-Element zeigt es drei zentrale Informationen: die berechnete Rolle (Computed Role), den berechneten Namen (Computed Name) und die Position im Accessibility Tree relativ zu Eltern- und Geschwisterknoten. Zusätzlich listet der Bereich „ARIA Attributes" alle gesetzten ARIA-Attribute mit ihren aktuellen Werten auf, was besonders bei dynamisch von Alpine.js gesetzten Attributen wie aria-expanded hilfreich ist.

Der eigenständige „Full-page accessibility tree" (über das Overflow-Menü der DevTools aktivierbar) rendert den kompletten Baum einer Seite als navigierbare Struktur, unabhängig vom aktuell im Elements-Panel selektierten Knoten. Das ist besonders wertvoll, um zu prüfen, ob dekorative Elemente korrekt mit aria-hidden="true" aus dem Baum entfernt wurden oder ob ein ganzer Navigationsbereich versehentlich fehlt, weil ein umschließendes Element display: none oder visibility: hidden gesetzt hat.

3. Computed Name und Role inspizieren: den Accessibility Tree verstehen

Der Computed Name ist der Text, den ein Screenreader für ein Element tatsächlich vorliest, und er wird nach einem festen Algorithmus, der Accessible Name and Description Computation, ermittelt: aria-labelledby hat Vorrang vor aria-label, das wiederum Vorrang vor sichtbarem Textinhalt hat, und erst danach greifen Fallbacks wie das title-Attribut. Entwickler verlassen sich häufig darauf, dass ein Icon mit einem sprechenden CSS-Klassennamen wie icon-trash automatisch verständlich ist, aber für den Accessibility Tree zählt ausschließlich, was der Algorithmus tatsächlich berechnet, nicht die Absicht im Code.

Die Computed Role bestimmt, welches Interaktionsmodell ein Screenreader anbietet: Ein <div> mit onclick-Handler, aber ohne role="button", hat die Rolle generic und wird nicht als interaktiv angekündigt, selbst wenn es optisch wie ein Button aussieht. Das Accessibility-Panel zeigt sofort, wenn Rolle und tatsächliches Verhalten auseinanderfallen. Das folgende Beispiel zeigt, wie sich der Computed Name je nach verwendetem ARIA-Muster verändert und wie sich das Ergebnis im Panel nachvollziehen lässt.


<!-- Bad: icon button with no accessible name at all -->
<button class="icon-btn">
  <svg aria-hidden="true" focusable="false"><use href="#icon-trash"></use></svg>
</button>
<!-- DevTools Accessibility panel shows: Name "" (empty), Role: button -->

<!-- Good: explicit aria-label sets the computed accessible name -->
<button class="icon-btn" aria-label="Produkt löschen">
  <svg aria-hidden="true" focusable="false"><use href="#icon-trash"></use></svg>
</button>
<!-- DevTools Accessibility panel shows: Name: "Produkt löschen", Role: button -->

<!-- Alternative: aria-labelledby references visible text nodes -->
<p id="cart-heading" class="cart-heading">Warenkorb</p>
<button aria-labelledby="cart-heading cart-count" class="cart-btn">
  <span id="cart-count">3 Artikel</span>
</button>
<!-- Computed Name concatenates the referenced nodes: "Warenkorb 3 Artikel" -->

4. Firefox Accessibility Inspector: Unterschiede und Stärken

Firefox bietet mit dem Accessibility Inspector (aktivierbar in den DevTools-Einstellungen unter „Standardwerkzeuge aktivieren") eine funktional ähnliche, aber eigenständig implementierte Ansicht des Accessibility Tree. Ein Vorteil gegenüber Chrome ist der eingebaute „Check for issues"-Filter, der automatisch nach Kontrastproblemen, fehlenden Textalternativen, Tastaturproblemen und ARIA-Fehlern filtert und die betroffenen Knoten direkt im Baum markiert, ohne dass ein separater Lighthouse-Lauf nötig ist.

Ein weiterer Unterschied liegt im „Simulate"-Menü, das neben Farbfehlsichtigkeiten auch eine Vorschau liefert, wie eine Seite mit deaktiviertem Kontrast, mit reduzierter Transparenz oder mit deaktivierten Animationen aussieht, was direkt auf die prefers-reduced-motion- und prefers-contrast-Media-Queries einzahlt. Da Chrome und Firefox den Accessibility Tree mit leicht unterschiedlichen internen Regeln berechnen, basierend auf unterschiedlichen Implementierungen der Accessibility API des jeweiligen Betriebssystems, ist es sinnvoll, kritische Komponenten in beiden Browsern zu prüfen, statt sich auf ein einzelnes Werkzeug zu verlassen.

5. Kontrast prüfen und Farbfehlsichtigkeiten direkt in DevTools simulieren

Im Chrome-Elements-Panel öffnet ein Klick auf den Farbwert einer CSS-Eigenschaft den Color Picker, der unterhalb der Farbauswahl direkt das Kontrastverhältnis zum Hintergrund anzeigt, inklusive eines visuellen Reglers, der den nächstgelegenen WCAG-konformen Farbton für AA (4.5:1) und AAA (7:1) vorschlägt. Das erspart das manuelle Nachschlagen in externen Kontrastrechnern und funktioniert direkt am tatsächlich gerenderten Element, inklusive aller ererbten Hintergrundfarben und Transparenzen.

Über das Rendering-Panel (Drei-Punkte-Menü → „More tools" → „Rendering") lässt sich zusätzlich „Emulate vision deficiencies" aktivieren, mit Simulationen für Protanopie, Deuteranopie, Tritanopie sowie eingeschränktem Kontrast und Unschärfe. Das zeigt sofort, ob eine Statusfarbe wie Rot für Fehler und Grün für Erfolg ohne begleitendes Icon oder Text unterscheidbar bleibt. Firefox bietet dieselbe Funktion im Accessibility Inspector unter „Simulate". Wichtig: Diese Simulationen sind Annäherungen und ersetzen keinen Test mit echten Nutzerinnen und Nutzern mit Sehbeeinträchtigung, sind aber ein schneller erster Filter direkt im Entwicklungsworkflow.


/* Ensure the focus indicator survives forced-colors and contrast simulation */
.btn-primary:focus-visible {
  outline: 3px solid Highlight;
  outline-offset: 2px;
}

/* Never rely on color alone to convey a state */
.form-field.is-invalid {
  border: 2px solid #b91c1c;
}
.form-field.is-invalid::after {
  content: "Fehler: Pflichtfeld";
  display: block;
  font-size: 0.75rem;
  color: #b91c1c;
}

/* Respect prefers-contrast for users who opt into higher contrast */
@media (prefers-contrast: more) {
  body {
    --text-color: #000000;
    --bg-color: #ffffff;
  }
}

6. Fokus-Reihenfolge und Tastaturnavigation im DevTools debuggen

Eine korrekte visuelle Fokus-Reihenfolge, die der DOM-Reihenfolge entspricht, ist Voraussetzung dafür, dass Tastaturnutzer eine Seite in nachvollziehbarer Richtung durchqueren können. In Chrome zeigt die Einstellung „Show tab order" im Rendering-Panel farbige Nummern über jedem fokussierbaren Element in der Reihenfolge, in der die Tab-Taste sie erreicht, direkt auf der gerenderten Seite. Weicht diese Reihenfolge von der visuellen Anordnung ab, etwa weil CSS Grid oder Flexbox Elemente per order umsortiert hat, ist das sofort erkennbar, ohne die Tab-Taste manuell dutzende Male zu drücken.

Für komplexere Prüfungen lässt sich die Reihenfolge zusätzlich über die JavaScript-Konsole der DevTools auslesen. Ein kurzes Skript listet alle fokussierbaren Elemente in ihrer tatsächlichen Tab-Reihenfolge auf und protokolliert bei jedem Fokuswechsel das aktive Element, was besonders bei Alpine.js-Komponenten mit dynamisch ein- und ausgeblendeten Bereichen hilft, verwaiste Fokusziele zu finden, die zwar im DOM stehen, aber nicht mehr sichtbar sind.


// Paste into the DevTools console to log the actual tab order of a page
const focusable = document.querySelectorAll(
  'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])'
);

[...focusable]
  .sort((a, b) => (a.tabIndex || 0) - (b.tabIndex || 0))
  .forEach((el, i) => {
    console.log(i, el.tagName, el.getAttribute('aria-label') || el.textContent.trim().slice(0, 40));
  });

// Log every focus change to spot orphaned or hidden focus targets
document.addEventListener('focusin', (e) => {
  console.log('Focused:', e.target, 'visible:', e.target.offsetParent !== null);
});

7. Der Lighthouse Accessibility Audit: Was er prüft und was nicht

Der in Chrome DevTools integrierte Lighthouse Accessibility Audit basiert auf axe-core und prüft rein automatisierbare Kriterien: fehlende alt-Attribute, unzureichenden Farbkontrast bei statischem Text, doppelte IDs, fehlende Formular-Labels und strukturelle ARIA-Fehler wie ungültige Rollen-Attribut-Kombinationen. Der resultierende Score zwischen 0 und 100 verleitet dazu, ihn als vollständiges Barrierefreiheits-Zeugnis misszuverstehen, dabei deckt er nach Angaben der axe-core-Maintainer nur etwa 30 bis 40 Prozent der WCAG-Erfolgskriterien ab, weil viele Kriterien menschliches Urteilsvermögen erfordern.

Was Lighthouse strukturell nicht prüfen kann: ob ein Alt-Text inhaltlich sinnvoll ist statt nur vorhanden, ob die logische Lesereihenfolge für Screenreader-Nutzer nachvollziehbar ist, ob Fokusfallen bei modalen Dialogen tatsächlich funktionieren, oder ob eine Statusänderung per aria-live tatsächlich verständlich angekündigt wird. Diese Kriterien erfordern manuelle Prüfung mit Tastatur und Screenreader. Der folgende Ausschnitt eines Lighthouse-JSON-Reports zeigt, wie ein bestandener Audit trotzdem ein kritisches Kontrastproblem übersehen kann, wenn die Farbe erst durch eine spätere JavaScript-Interaktion gesetzt wird.


{
  "categories": {
    "accessibility": {
      "score": 0.86,
      "auditRefs": [
        { "id": "color-contrast", "weight": 7 },
        { "id": "image-alt", "weight": 10 },
        { "id": "aria-allowed-attr", "weight": 10 },
        { "id": "focus-traps", "weight": 0 }
      ]
    }
  },
  "audits": {
    "color-contrast": {
      "score": 0,
      "title": "Background and foreground colors do not have a sufficient contrast ratio",
      "details": {
        "items": [
          { "node": { "snippet": "<span class=\"badge-sale\">Sale</span>" } }
        ]
      }
    },
    "focus-traps": {
      "score": null,
      "scoreDisplayMode": "manual",
      "title": "Requires manual review: focus traps and keyboard-only interaction"
    }
  }
}

8. DevTools-Befunde in den Entwicklungsworkflow integrieren

Manuelle Prüfung im Accessibility-Panel ist unverzichtbar für Detailarbeit, skaliert aber nicht über hunderte Produktseiten eines Magento-Shops. Die axe-core-Engine, die auch dem Lighthouse-Audit zugrunde liegt, lässt sich als eigenständiges CLI-Tool oder als Puppeteer-Skript in die CI-Pipeline einbinden und prüft dieselben Kriterien automatisiert bei jedem Pull Request, bevor eine Regression überhaupt in den manuellen DevTools-Check gelangt.

Sinnvoll ist eine zweistufige Strategie: automatisierte axe-core- und Lighthouse-Checks in der CI-Pipeline als Sicherheitsnetz gegen Regressionen, ergänzt durch punktuelle manuelle Prüfung im Accessibility-Panel bei jeder neuen Komponente, insbesondere bei interaktiven Alpine.js-Widgets wie Akkordeons, Tabs oder modalen Dialogen, deren Zustände sich automatisiert nur eingeschränkt bewerten lassen. Ein Score-Schwellenwert in der CI verhindert, dass offensichtliche Regressionen unbemerkt in die Produktion gelangen.


# Run an automated accessibility scan against a local Hyva build
npx @axe-core/cli http://localhost:8080/produkt-beispiel.html \
  --exit \
  --tags wcag2a,wcag2aa

# Run Lighthouse in CI, accessibility category only
npx lighthouse http://localhost:8080/produkt-beispiel.html \
  --only-categories=accessibility \
  --output=json \
  --output-path=./lighthouse-a11y.json \
  --chrome-flags="--headless"

# Extract the numeric accessibility score and fail the CI job below a threshold
node -e "const r = require('./lighthouse-a11y.json'); \
  const score = r.categories.accessibility.score * 100; \
  console.log(score); \
  process.exit(score >= 90 ? 0 : 1);"

9. DevTools-Prüfungen im direkten Vergleich

Nicht jede Prüfmethode deckt dieselben Fehlerarten ab. Die folgende Übersicht zeigt, wo eine rein automatisierte Lighthouse-Prüfung an ihre Grenzen stößt und welches DevTools-Pattern die Lücke zuverlässig schließt.

Prüfung Nur mit Lighthouse-Score Empfohlenes DevTools-Pattern Vorteil
Alt-Text prüfen Prüft nur, ob alt vorhanden ist Computed Name pro Bild im Accessibility-Panel lesen Erkennt auch leere oder sinnlose Alt-Texte
Fokus-Reihenfolge Wird praktisch nicht geprüft „Show tab order"-Overlay + manuelles Tabben Deckt DOM- vs. visuelle Reihenfolge auf
Kontrast Nur statischer Text zum Ladezeitpunkt Color-Picker-Kontrastanzeige + Vision-Emulation Erfasst auch zustandsabhängige Farben
ARIA-Rollen Nur Syntax- und Attributfehler Computed Role im Accessibility Tree live prüfen Zeigt die tatsächlich berechnete Rolle
Screenreader-Ankündigung Kann nicht automatisiert geprüft werden Accessibility Tree + echter Screenreader-Test Einzige Methode mit realer Ausgabe

In der Praxis ergänzen sich beide Ebenen: Lighthouse liefert eine schnelle, reproduzierbare Basisbewertung für die CI-Pipeline, während das Accessibility-Panel im Browser die Fälle abdeckt, die nur im tatsächlich gerenderten, interaktiven Zustand einer Seite sichtbar werden. Wer beide Ebenen kombiniert, statt sich nur auf den Lighthouse-Score zu verlassen, erkennt deutlich mehr reale Barrieren, bevor Nutzerinnen und Nutzer mit assistiven Technologien darauf stoßen.

Mironsoft

Barrierefreiheit, Accessibility-Testing und DevTools-Audits für Magento- und Hyvä-Shops

Barrierefreiheit systematisch mit DevTools prüfen lassen?

Wir prüfen Rollen, Namen, Kontraste und Tastaturbedienbarkeit eures Magento- oder Hyvä-Shops mit Chrome- und Firefox-DevTools, ergänzen automatisierte axe-core- und Lighthouse-Checks in der CI-Pipeline und decken damit deutlich mehr reale Barrieren auf als ein Score allein.

DevTools-Audit

Manuelle Prüfung von Computed Name, Role und Kontrast in Chrome und Firefox

Kontrast & Farbfehlsichtigkeit

Simulation von Sehbeeinträchtigungen und Kontrastkorrekturen im Hyvä-Theme

CI-Integration

axe-core und Lighthouse als automatisierte Gates in der Deployment-Pipeline

10. Zusammenfassung

Browser-DevTools sind der schnellste Einstieg in barrierefreies Entwickeln, weil sie den Accessibility Tree direkt im Werkzeug offenlegen, das ohnehin für jedes Frontend-Debugging genutzt wird. Das Accessibility-Panel in Chrome und der Accessibility Inspector in Firefox zeigen Computed Name und Computed Role in Echtzeit, decken Diskrepanzen zwischen sichtbarem Text und tatsächlich angesagtem Namen sofort auf und liefern mit der Emulation von Farbfehlsichtigkeiten und der Kontrastanzeige im Color Picker zwei Werkzeuge, die externe Zusatzsoftware überflüssig machen. Die Fokus-Reihenfolge lässt sich mit „Show tab order" visuell nachvollziehen, statt die Tastatur manuell dutzende Male zu prüfen.

Der Lighthouse Accessibility Audit ist ein guter erster Filter für automatisierbare Kriterien, deckt nach eigenen Angaben der axe-core-Maintainer aber nur einen Teil der WCAG-Erfolgskriterien ab und kann Fokusfallen, sinnvolle Alt-Texte oder korrekte Live-Region-Ankündigungen strukturell nicht bewerten. Wer manuelle DevTools-Prüfung, automatisierte axe-core-Checks in der CI-Pipeline und punktuelle Screenreader-Tests kombiniert, statt sich auf einen einzelnen Score zu verlassen, erreicht eine deutlich zuverlässigere Abdeckung realer Barrieren.

Browser-DevTools für Barrierefreiheit, das Wichtigste auf einen Blick

Accessibility-Panel

Chrome und Firefox zeigen Computed Name, Computed Role und den vollständigen Accessibility Tree direkt im Browser, ohne Zusatzsoftware.

Kontrast & Farbfehlsichtigkeit

Color-Picker-Kontrastanzeige und „Emulate vision deficiencies" simulieren Sehbeeinträchtigungen direkt am gerenderten Element.

Lighthouse-Grenzen

Deckt nur automatisierbare Kriterien ab, etwa 30 bis 40 % der WCAG-Erfolgskriterien. Fokusfallen und Alt-Text-Qualität bleiben unbewertet.

Workflow-Integration

axe-core und Lighthouse als CI-Gate, ergänzt durch manuelle DevTools-Prüfung bei jeder neuen interaktiven Komponente.

11. FAQ: Browser-DevTools für Barrierefreiheit

1Was zeigt das Accessibility-Panel in Chrome DevTools genau an?
Computed Role, Computed Name, Position im Accessibility Tree sowie alle gesetzten ARIA-Attribute mit ihren aktuellen Werten für das ausgewählte Element.
2Wie unterscheidet sich Computed Name von einem sichtbaren Element-Text?
aria-labelledby hat Vorrang vor aria-label, danach folgt sichtbarer Text, zuletzt Fallbacks wie title. Der Computed Name kann deshalb vom sichtbaren Text abweichen.
3Wie aktiviere ich den Accessibility Inspector in Firefox?
In den DevTools-Einstellungen unter „Standardwerkzeuge aktivieren" einschalten. Danach erscheint ein eigener Tab mit Accessibility Tree, Check-for-issues-Filter und Simulate-Menü.
4Kann ich Farbfehlsichtigkeiten direkt im Browser simulieren?
Ja, über „Emulate vision deficiencies" im Chrome-Rendering-Panel oder „Simulate" im Firefox Accessibility Inspector, mit Protanopie, Deuteranopie, Tritanopie und Kontrast-Optionen.
5Wie prüfe ich das Kontrastverhältnis eines Textelements in DevTools?
Farbwert im Elements-Panel anklicken. Der Color Picker zeigt das Kontrastverhältnis zum Hintergrund direkt an und schlägt AA- oder AAA-konforme Alternativen vor.
6Was zeigt „Show tab order" in Chrome an?
Farbige Nummern über jedem fokussierbaren Element in der tatsächlichen Tab-Reihenfolge, direkt auf der gerenderten Seite, sofort sichtbar bei Abweichungen von der DOM-Reihenfolge.
7Wie viele WCAG-Kriterien deckt der Lighthouse Accessibility Audit ab?
Nach Angaben der axe-core-Maintainer nur etwa 30 bis 40 Prozent der WCAG-Erfolgskriterien. Der Rest erfordert manuelle Prüfung mit Urteilsvermögen.
8Kann Lighthouse Fokusfallen in modalen Dialogen erkennen?
Nein, solche dynamischen Interaktionsfehler sind mit statischer DOM-Analyse nicht erkennbar. Lighthouse markiert diese Prüfpunkte als „Requires manual review".
9Wie integriere ich axe-core in eine CI-Pipeline?
Über @axe-core/cli oder als Puppeteer- beziehungsweise Playwright-Skript, das bei Regelverstößen einen Nicht-Null-Exit-Code zurückgibt und als Quality Gate im Pull Request greift.
10Ersetzen DevTools-Simulationen einen echten Screenreader-Test?
Nein. Sie sind ein schneller erster Filter im Entwicklungsworkflow, ersetzen aber keinen Test mit echten Screenreadern wie NVDA, JAWS oder VoiceOver.