WCAG-Erfolgskriterien · Level A

WCAG 4.1.1: Parsing (Veraltet in WCAG 2.2)

WCAG 4.1.1 Parsing verlangt, dass Webinhalte frei von schwerwiegenden HTML/XML-Fehlern sind – wie etwa doppelten IDs –, die dazu führen könnten, dass unterstützende Technologien die Seite falsch interpretieren oder nicht verarbeiten können. Obwohl dieses Kriterium in WCAG 2.2 als veraltet gilt, bleiben die zugrunde liegenden axe-core-Regeln aktiv, und Verstöße weisen weiterhin auf ein reales Barrierefreiheitsrisiko hin.

Was diese Richtlinie bedeutet

WCAG 4.1.1 Parsing wurde ursprünglich entwickelt, um sicherzustellen, dass User Agents, einschließlich Browsern und unterstützenden Technologien, Webinhalte korrekt parsen und interpretieren können. Das Kriterium verlangte, dass Seiten, die in Markup-Sprachen wie HTML oder XML erstellt wurden, vier strukturelle Bedingungen erfüllen: Elemente müssen vollständige Start- und End-Tags haben; Elemente müssen entsprechend ihren Spezifikationen verschachtelt sein; Elemente dürfen keine doppelten Attribute enthalten; und alle im Inhalt verwendeten IDs müssen eindeutig sein.

In WCAG 2.2 hat das W3C dieses Kriterium offiziell als veraltet erklärt. Die Begründung war, dass moderne Browser sehr widerstandsfähig gegenüber fehlerhaftem HTML geworden sind und die meisten Strukturfehler automatisch korrigieren, bevor sie überhaupt den Accessibility Tree erreichen. Infolgedessen verursachen viele der ursprünglichen Bedenken – wie nicht geschlossene Tags oder falsch verschachtelte Elemente – in heutigen Umgebungen keine praktischen Probleme mehr für unterstützende Technologien.

Die Außerkraftsetzung bedeutet jedoch nicht, dass die zugrunde liegenden Anliegen des Kriteriums vollständig verschwunden sind. Das W3C weist ausdrücklich darauf hin, dass duplizierte ID-Attribute weiterhin ein relevantes Barrierefreiheitsproblem darstellen. Wenn zwei oder mehr Elemente denselben id-Wert teilen, muss der Browser eine willkürliche Entscheidung treffen, welches Element mit ARIA-Referenzen, Beschriftungszuordnungen oder Fragment-Links verknüpft wird. Diese Mehrdeutigkeit kann dazu führen, dass Screenreader falsche Inhalte ansagen, interaktive Steuerelemente überspringen oder Formularbeschriftungen überhaupt nicht verfügbar machen. Die Bestehensbedingung des Kriteriums lässt sich daher heute am besten so verstehen: Im DOM dürfen keine doppelten ID-Werte vorkommen. Eine Seite fällt bei diesem Kriterium durch, wenn IDs in einer Weise dupliziert werden, die programmatische Zuordnungen zerstört, auf die unterstützende Technologien angewiesen sind.

Offizielle Ausnahmen in der WCAG-Spezifikation sind minimal. Das Kriterium gilt für Inhalte, die in Markup-Sprachen erstellt wurden; es gilt nicht für Inhalte, die von Skriptumgebungen generiert werden, in denen die Autorin oder der Autor keine direkte Kontrolle über das Ausgabeformat hat. In der Praxis sind Entwicklerinnen und Entwickler jedoch unabhängig vom verwendeten Technologiestack für das endgültig gerenderte DOM verantwortlich.

Warum das wichtig ist

Doppelte IDs mögen wie ein kleines Aufräumproblem erscheinen, aber ihre Folgen für Nutzerinnen und Nutzer unterstützender Technologien können gravierend sein. Screenreader wie JAWS, NVDA und VoiceOver verlassen sich auf den Accessibility Tree des Browsers, der wiederum auf korrekt aufgelöste ID-Referenzen angewiesen ist, um die Beziehungen zwischen Interface-Elementen aufzubauen. Wenn eine ID dupliziert ist, löst der Browser Referenzen typischerweise nur auf das erste passende Element in Dokumentreihenfolge auf und ignoriert stillschweigend nachfolgende Elemente mit derselben ID.

Für blinde und sehbehinderte Nutzerinnen und Nutzer kann dies bedeuten, dass ein Formularfeld ohne seine Beschriftung angesagt wird oder dass eine über aria-describedby mit einem Eingabefeld verknüpfte Fehlermeldung nie vorgelesen wird. Stellen Sie sich ein Checkout-Formular auf einer E-Commerce-Website vor, bei dem die Felder für Lieferadresse und Rechnungsadresse IDs wie city, zip und state gemeinsam nutzen. Eine Screenreader-Nutzerin, die den Rechnungsabschnitt ausfüllt, hört möglicherweise die Beschriftung aus dem Lieferabschnitt, was zu Verwirrung, Fehlern und möglichem Abbruch des Vorgangs führt.

Für Nutzerinnen und Nutzer mit kognitiven Beeinträchtigungen bedeuten fehlerhafte Beschriftungszuordnungen, dass der sichtbare Text, den sie auf dem Bildschirm lesen, nicht mit dem übereinstimmt, was ihr Screenreader oder ihre Sprachsteuerungssoftware ansagt. Dies erzeugt eine desorientierende Diskrepanz, die die kognitive Belastung erhöht.

Für motorisch beeinträchtigte Nutzerinnen und Nutzer, die auf Sprachsteuerungssoftware wie Dragon NaturallySpeaking angewiesen sind, können doppelte IDs dazu führen, dass Sprachbefehle, die auf ein bestimmtes Steuerelement abzielen, das falsche Element aktivieren, weil die Software intern möglicherweise auf ID-basiertes Targeting setzt.

Über die Auswirkungen auf Menschen mit Behinderungen hinaus betreffen doppelte IDs auch SEO: Suchmaschinen-Crawler, die sich auf Fragment-Identifikatoren zur Indexierung bestimmter Seitenabschnitte stützen, können bei nicht eindeutigen IDs falsche Inhalte indexieren. Die Nutzbarkeit wird für alle Nutzerinnen und Nutzer beeinträchtigt, wenn Ankerlinks innerhalb der Seite an die falsche Stelle navigieren.

Schätzungsweise 2,2 Milliarden Menschen weltweit haben laut Weltgesundheitsorganisation irgendeine Form von Sehbeeinträchtigung. Ein erheblicher Teil dieser Menschen ist auf Screenreader angewiesen, die direkt von fehlerhaften ID-Zuordnungen betroffen sind. Die Sicherstellung eindeutiger IDs gehört zu den Maßnahmen mit dem geringsten Aufwand und der größten Wirkung, die ein Entwicklungsteam umsetzen kann.

Verwandte Axe-core-Regeln

Drei axe-core-Regeln beziehen sich direkt auf die in WCAG 4.1.1 angesprochenen Probleme. Jede zielt auf eine spezifische Ausprägung des Problems doppelter IDs ab:

  • duplicate-id: Diese Regel überprüft das gesamte DOM auf jeden id-Attributwert, der in mehr als einem Element vorkommt. Sie markiert alle Elemente außer dem ersten, die sich eine ID teilen, unabhängig davon, ob diese Elemente interaktiv sind oder von ARIA referenziert werden. Dies ist die umfassendste der drei Regeln und erfasst strukturelle Verstöße, selbst wenn keine explizite ARIA-Beziehung beteiligt ist. Ein häufiger Auslöser sind komponentenbasierte Frameworks, die dieselbe wiederverwendbare Komponente mehrfach auf einer Seite rendern, ohne für jede Instanz eindeutige IDs zu erzeugen.
  • duplicate-id-active: Diese Regel konzentriert sich enger auf doppelte IDs bei interaktiven oder fokussierbaren Elementen – Buttons, Links, Eingabefelder und jedes Element mit einem nicht-negativen tabindex. Die Barrierefreiheitsauswirkungen sind hier erhöht, weil unterstützende Technologien und Tastaturnavigation gleichermaßen darauf angewiesen sind, ein aktives Steuerelement eindeutig identifizieren zu können. Wenn ein Submit-Button und ein nicht verwandtes Icon dieselbe ID teilen, können sowohl die Ansagen der Tab-Reihenfolge als auch das programmatische Fokus-Management fehlschlagen.
  • duplicate-id-aria: Dies ist die kritischste der drei Regeln. Sie markiert doppelte IDs speziell dann, wenn diese IDs von ARIA-Attributen referenziert werden – aria-labelledby, aria-describedby, aria-controls, aria-owns und ähnliche Beziehungsattribute. Da diese Attribute der primäre Mechanismus sind, über den unterstützende Technologien die Beziehungen zwischen Elementen verstehen, führen Duplikate hier direkt zu fehlerhafter Berechnung des Accessible Name und der Rollenbeziehungen. Ein fehlerhaftes Beispiel wären zwei <div>-Elemente mit id='dialog-title', wenn ein Modal aria-labelledby='dialog-title' verwendet – der Screenreader wird das Element ansagen, das zuerst im DOM erscheint, was möglicherweise nicht die beabsichtigte Dialogüberschrift ist.

Automatisierte Tools eignen sich sehr gut zum Erkennen doppelter IDs, da die Prüfung rein syntaktisch ist: Das Tool liest das DOM und vergleicht ID-Werte. Für dieses Kriterium ist keine manuelle Prüfung zwingend erforderlich. Wenn IDs jedoch dynamisch nach Benutzerinteraktionen generiert werden – zum Beispiel bei einem Infinite Scroll, der neue Inhalte mit wiederholten IDs einfügt – können automatisierte Scans, die beim Laden der Seite ausgeführt werden, Verstöße übersehen, die erst später auftreten. In solchen Fällen sollten Testerinnen und Tester das dynamische Verhalten auslösen, bevor sie Scans ausführen, oder das DOM nach Interaktionen mit den Entwicklerwerkzeugen des Browsers überwachen.

Wie man testet

  1. Automatischer Scan mit axe DevTools: Öffnen Sie die Seite in Chrome oder Firefox. Öffnen Sie die DevTools (F12), navigieren Sie zum axe-DevTools-Panel (oder installieren Sie die Browser-Erweiterung) und führen Sie einen Scan der gesamten Seite aus. Filtern Sie die Ergebnisse nach den Regeln duplicate-id, duplicate-id-active und duplicate-id-aria. Jeder Verstoß listet die betroffenen Elemente und ihre doppelten ID-Werte auf. Exportieren Sie den Bericht bei Bedarf für Audit-Dokumentation. Für Lighthouse führen Sie im Lighthouse-Tab der DevTools ein Lighthouse-Accessibility-Audit aus und achten Sie auf den Audit „Document has multiple elements with the same id“.
  2. Prüfung über die Browser-DevTools-Konsole: Öffnen Sie die Browser-Konsole und führen Sie das folgende JavaScript-Snippet aus, um alle doppelten IDs auf der aktuellen Seite zu finden: const ids = [...document.querySelectorAll('[id]')].map(el => el.id); const dupes = ids.filter((id, i) => ids.indexOf(id) !== i); console.log([...new Set(dupes)]); Dies gibt ein Array aller ID-Werte aus, die mehr als einmal vorkommen. Ein leeres Array bedeutet, dass keine Duplikate vorhanden sind.
  3. Screenreader-Tests mit NVDA und Firefox: Laden Sie die Seite mit laufendem NVDA. Navigieren Sie zu einem Formular, das Felder mit über for/id oder aria-labelledby verknüpften Beschriftungen enthält. Tabben Sie durch jedes Feld und achten Sie genau darauf, ob NVDA die richtige Beschriftung ansagt. Wenn ein Feld ohne Beschriftung oder mit der falschen Beschriftung aus einem anderen Abschnitt angesagt wird, kann eine doppelte ID die Ursache sein. Wiederholen Sie diesen Vorgang für ARIA-Landmark-Regionen, Modaldialoge oder Widgets, die aria-controls oder aria-describedby verwenden.
  4. VoiceOver und Safari auf macOS: Aktivieren Sie VoiceOver (Command+F5). Verwenden Sie den VoiceOver-Rotor (Control+Option+U), um die Liste der Formularsteuerelemente oder Links zu öffnen, und prüfen Sie, ob jedes Steuerelement eine eindeutige, korrekt angesagte Beschriftung hat. Navigieren Sie in Modaldialoge hinein und bestätigen Sie, dass der Dialogtitel korrekt angesagt wird, wenn der Dialog geöffnet wird.
  5. JAWS und Chrome: Öffnen Sie mit laufendem JAWS die Seite und verwenden Sie die JAWS-Liste der Formularfelder (Insert+F5), um alle Formularelemente und ihre zugehörigen Beschriftungen zu überprüfen. Vergewissern Sie sich, dass nicht zwei Felder denselben Beschriftungstext teilen, wenn sie unterschiedlich sein sollten.
  6. Testen dynamischer Inhalte: Wenn die Seite Infinite Scroll, Single-Page-Navigation oder per JavaScript eingefügte Modaldialoge verwendet, interagieren Sie mit diesen Funktionen, um neue Inhalte in das DOM zu laden, und führen Sie dann den automatischen Scan oder das Konsolen-Snippet erneut aus, um nach Duplikaten zu suchen, die durch die dynamischen Inhalte eingeführt wurden.

Wie man es behebt

Doppelte Formularfeld-IDs in wiederholten Abschnitten — Falsch

<!-- Shipping Address -->
<label for='city'>City</label>
<input type='text' id='city' name='shipping-city'>

<!-- Billing Address -->
<label for='city'>City</label>
<input type='text' id='city' name='billing-city'>
<!-- FAIL: Both inputs share id='city'. The second label's 'for' attribute
     resolves to the first input, so screen readers announce the wrong field. -->

Doppelte Formularfeld-IDs in wiederholten Abschnitten — Richtig

<!-- Shipping Address -->
<label for='shipping-city'>City</label>
<input type='text' id='shipping-city' name='shipping-city'>

<!-- Billing Address -->
<label for='billing-city'>City</label>
<input type='text' id='billing-city' name='billing-city'>
<!-- PASS: Each input has a unique ID scoped to its section.
     Screen readers correctly announce each field's label. -->

Wiederverwendbare Komponente mehrfach gerendert — Falsch

<!-- Product Card 1 -->
<div class='product-card'>
  <img id='product-img' src='shoe.jpg' alt='Running Shoe'>
  <button id='add-to-cart' aria-describedby='product-desc'>Add to Cart</button>
  <p id='product-desc'>Free shipping on orders over 500 TL.</p>
</div>

<!-- Product Card 2 (same template, duplicate IDs) -->
<div class='product-card'>
  <img id='product-img' src='boot.jpg' alt='Hiking Boot'>
  <button id='add-to-cart' aria-describedby='product-desc'>Add to Cart</button>
  <p id='product-desc'>Free shipping on orders over 500 TL.</p>
</div>
<!-- FAIL: IDs duplicated across cards. aria-describedby on the second button
     resolves to the <p> in the first card, not the second. -->

Wiederverwendbare Komponente mehrfach gerendert — Richtig

<!-- Product Card 1 -->
<div class='product-card'>
  <img id='product-img-1' src='shoe.jpg' alt='Running Shoe'>
  <button id='add-to-cart-1' aria-describedby='product-desc-1'>Add to Cart</button>
  <p id='product-desc-1'>Free shipping on orders over 500 TL.</p>
</div>

<!-- Product Card 2 -->
<div class='product-card'>
  <img id='product-img-2' src='boot.jpg' alt='Hiking Boot'>
  <button id='add-to-cart-2' aria-describedby='product-desc-2'>Add to Cart</button>
  <p id='product-desc-2'>Free shipping on orders over 500 TL.</p>
</div>
<!-- PASS: Each card's IDs are unique. ARIA references resolve correctly
     within their own card. Use a counter, UUID, or slug-based strategy
     to generate IDs in your component framework. -->

Modaldialog mit doppelter ARIA-Beschriftungsreferenz — Falsch

<!-- A generic heading used as a reusable ID -->
<h1 id='dialog-title'>Welcome</h1>

<div role='dialog' aria-modal='true' aria-labelledby='dialog-title'>
  <h2 id='dialog-title'>Confirm Your Order</h2>
  <p>Are you sure you want to place this order?</p>
  <button>Confirm</button>
  <button>Cancel</button>
</div>
<!-- FAIL: Two elements share id='dialog-title'. The dialog's
     aria-labelledby resolves to the page <h1>, not the dialog heading.
     Screen readers will announce 'Welcome' as the dialog name. -->

Modaldialog mit doppelter ARIA-Beschriftungsreferenz — Richtig

<h1>Welcome</h1>

<div role='dialog' aria-modal='true' aria-labelledby='confirm-dialog-title'>
  <h2 id='confirm-dialog-title'>Confirm Your Order</h2>
  <p>Are you sure you want to place this order?</p>
  <button>Confirm</button>
  <button>Cancel</button>
</div>
<!-- PASS: The dialog heading has a unique, descriptive ID.
     aria-labelledby correctly identifies the dialog to screen readers
     as 'Confirm Your Order'. -->

Häufige Fehler

  • Komponenten-Markup kopieren und einfügen, ohne IDs zu aktualisieren: Entwicklerinnen und Entwickler duplizieren häufig einen funktionierenden HTML-Abschnitt für eine zweite Instanz (einen zweiten Adressblock, ein zweites Tab-Panel, ein zweites Akkordeon-Element) und vergessen, alle ID-Werte eindeutig zu machen. Etablieren Sie eine Namenskonvention wie component-name-index (z. B. accordion-panel-1, accordion-panel-2) und setzen Sie diese im Code-Review durch.
  • Verwendung statischer IDs in Framework-Komponenten ohne Strategie für eindeutige Schlüssel: React, Vue, Angular und ähnliche Frameworks können dieselbe Komponente dutzendfach auf einer Seite rendern. Die Verwendung einer hart codierten id='search-input' innerhalb einer wiederverwendbaren Komponente erzeugt so viele Duplikate, wie es Instanzen gibt. Leiten Sie IDs immer aus Props, einem Zähler oder einem Hilfsmittel wie useId() in React 18+ ab.
  • Verlassen auf CSS-Klassenselektoren statt Korrektur des HTML: Manche Entwicklerinnen und Entwickler umgehen Probleme mit doppelten IDs, indem sie JavaScript-Selektoren von getElementById auf querySelector mit einer Klasse umstellen, während sie die doppelten IDs bestehen lassen. Dies kann das visuelle Verhalten korrigieren, behebt aber die fehlerhaften Zuordnungen im Accessibility Tree nicht.
  • Serverseitige Template-Schleifen, die in jeder Iteration dieselbe ID erzeugen: Ein Jinja2-, Blade- oder Twig-Template, das id='item-title' innerhalb einer {% for item in items %}-Schleife rendert, erzeugt ein Duplikat für jedes Element in der Liste. Hängen Sie immer den Schleifenindex oder die Objekt-ID an die ID an: id='item-title-{{ loop.index }}'.
  • Ignorieren doppelter IDs in versteckten oder außerhalb des Bildschirms liegenden Elementen: Elemente mit display: none oder visibility: hidden sind weiterhin im DOM vorhanden und ihre IDs sind weiterhin registriert. Ein verstecktes Modal-Template, das sich eine ID mit einem sichtbaren Element teilt, verursacht dieselben Parsing-Probleme. Verwenden Sie das Attribut hidden oder stellen Sie sicher, dass versteckte Templates eindeutige IDs verwenden.
  • Die Annahme, dass Scoping auf ein Shadow DOM das Problem löst: IDs innerhalb eines nativen Shadow DOM sind gescoped und stehen nicht in Konflikt mit IDs im Light DOM oder in anderen Shadow Roots. Viele Komponentenbibliotheken verwenden jedoch ein Polyfill oder einen nicht standardisierten Ansatz, der kein echtes Scoping bietet. Überprüfen Sie die tatsächliche DOM-Ausgabe, statt sich auf das Verhalten des Frameworks zu verlassen.
  • Generieren von IDs auf Basis benutzerbereitgestellter Inhalte ohne Bereinigung oder Deduplizierung: Das Erzeugen von IDs aus Produktnamen, Artikeltiteln oder anderen dynamischen Texten kann zu Kollisionen führen, wenn zwei Einträge denselben Namen haben (z. B. zwei Produkte mit der Bezeichnung „Classic“, die beide id='classic' erzeugen). Hängen Sie immer einen eindeutigen Datenbankschlüssel oder Index an inhaltsbasierte IDs an.
  • Kein Testen nach clientseitiger Navigation in Single-Page-Applications: SPAs, die neue Routeninhalte ohne vollständiges Neuladen der Seite in das DOM einfügen, können IDs aus zuvor besuchten Routen ansammeln, wenn alte Inhalte nicht korrekt entfernt werden. Führen Sie axe-Scans nach der Navigation zwischen Routen aus, nicht nur beim ersten Laden.
  • Übersehen von IDs, die in SVG-<defs>- und <use>-Elementen generiert werden: SVG-Sprite-Muster, die Symbole mit IDs innerhalb von <defs> definieren und sie dann mit <use href='#icon-arrow'> referenzieren, können doppelte IDs erzeugen, wenn dieselbe Symboldefinition mehrfach auf einer Seite enthalten ist. Zentralisieren Sie SVG-Sprite-Definitionen und binden Sie sie nur einmal ein.
  • Übersehen von IDs, die von Widgets Dritter, Chat-Plugins oder Analytics-Skripten generiert werden: Skripte Dritter fügen manchmal Elemente mit hart codierten IDs ein. Wenn Ihr eigener Code dieselbe ID verwendet, entsteht ein Konflikt, der Ihnen während der Entwicklung möglicherweise nicht auffällt. Prüfen Sie das vollständig gerenderte DOM einschließlich Inhalte Dritter und melden Sie Konflikte an die Anbieter oder versehen Sie Ihre eigenen IDs mit einem Namensraum, um Kollisionen zu vermeiden.

Bezug zu den Barrierefreiheitsvorschriften der Türkei

Die türkische Präsidialverfügung 2025/10, veröffentlicht im Amtsblatt mit der Nummer 32933 am 21. Juni 2025, legt verbindliche Anforderungen an die Web-Barrierefreiheit für eine breite Gruppe öffentlicher und privater Einrichtungen fest, die in der Türkei tätig sind. Die Verfügung übernimmt WCAG 2.2 als technischen Referenzstandard und macht die Konformität mit Level A zum gesetzlichen Mindeststandard für alle erfassten Einrichtungen.

WCAG 4.1.1 Parsing ist ein Kriterium auf Level A. Obwohl es vom W3C in WCAG 2.2 als veraltet erklärt wurde, bleiben die axe-core-Regeln, die sein Hauptanliegen – eindeutige IDs – durchsetzen, aktiv und werden weiterhin in Barrierefreiheitsaudits markiert, die auf WCAG 2.2 basieren. Türkische behördliche Audits und Konformitätsprüfungen, die automatisierte Scantools verwenden, werden daher duplicate-id-Verstöße als potenzielle Level-A-Fehler kennzeichnen, unabhängig vom veralteten Status des Kriteriums in der Spezifikation. Organisationen, die Konformität nachweisen wollen, sollten Verstöße durch doppelte IDs als blockierende Probleme behandeln.

Die von der Präsidialverfügung 2025/10 erfassten Einrichtungen umfassen ein breites Spektrum öffentlicher Institutionen und privater Organisationen: alle zentralen und lokalen Regierungsstellen und ihre angeschlossenen Behörden; Banken und Finanzinstitute, die dem türkischen Bankrecht unterliegen; Krankenhäuser und private Gesundheitsdienstleister; Telekommunikationsanbieter mit 200.000 oder mehr Kundinnen und Kunden; E-Commerce-Plattformen und Online-Marktplätze; Reisebüros und Reiseveranstalter; private Transportunternehmen, die unter öffentlichen Konzessionen tätig sind; sowie Privatschulen und Bildungseinrichtungen, die vom Ministerium für Nationale Bildung (MoNE) zugelassen sind.

Die Verfügung sieht einen gestaffelten Zeitplan für die Einhaltung vor. Öffentliche Institutionen müssen innerhalb von einem Jahr nach dem Veröffentlichungsdatum der Verfügung vollständige Konformität mit Level A erreichen. Private Unternehmen in den erfassten Kategorien haben zwei Jahre Zeit, denselben Standard zu erreichen. Die Nichteinhaltung setzt erfasste Einrichtungen einer behördlichen Überprüfung, potenziellen Verwaltungssanktionen und Reputationsrisiken in einem zunehmend barrierefreiheitsbewussten Markt aus.

Für türkische Organisationen ist die Behebung von Verstößen durch doppelte IDs insbesondere in Kontexten relevant, in denen digitale Formulare, Online-Zahlungsabläufe, Portale für staatliche Dienstleistungen und Systeme zur Buchung von Gesundheitsleistungen eingesetzt werden. Genau diese Arten von Interfaces verwenden am ehesten wiederholte Formularabschnitte, wiederverwendbare Komponenten und Integrationen von Drittanbieter-Widgets, die doppelte IDs einführen. Die Einrichtung automatisierter Barrierefreiheitstests – etwa durch Integration von axe-core in CI/CD-Pipelines – ist sowohl eine technische Best Practice als auch eine pragmatische Strategie zur Aufrechterhaltung der laufenden regulatorischen Konformität im Rahmen der Anforderungen der Verfügung.