Suche/Regeln für eine Barrierefreiheitsprüfung schreiben, die bestanden, fehlgeschlagen oder unvollständig melden

Regeln für eine Barrierefreiheitsprüfung schreiben, die bestanden, fehlgeschlagen oder unvollständig melden

Für eine KI, die Regeln einer Web-Barrierefreiheitsprüfung ergänzt oder ändert. Sie trennt DOM- und Abhängigkeitsschichten, liest HTML- und ARIA-Daten aus einer Quelle, testet auf realistischen Seiten mit Shadow DOM, hält Übersetzungen synchron und vermeidet Breaking Changes.

Diese KI-Regeln verwenden
## Lint und Tests als Teil jeder Änderung behandeln, nicht als Aufräumarbeit Behandle Formatierung, Linting, Tests, Dokumentation und Commit-Konventionen als Teil der Änderung und nicht als Aufräumarbeiten nach der Implementierung. ### Erforderliche Prüfungen - Führe vor dem Commit den Formatter und Linter des Repositorys aus. - Führe vor dem Abschluss die vollständige Testsuite aus und decke Verhaltensänderungen durch Unit- und Integrationstests ab. - Nutze dokumentierte Ausnahmen nur für Änderungen, die das Laufzeitverhalten nicht beeinflussen können. - Halte ungelöste Arbeiten im Issue-Tracker des Projekts fest, statt sie in nicht zugehörigen Änderungen zu verbergen. - Committe keine vorübergehende Protokollierung oder lokalen Debug-Einstellungen. ### Codekonventionen - Behandle Fehler und Grenzfälle frühzeitig, damit der erfolgreiche Pfad leicht nachvollziehbar bleibt. - Befolge die festgelegte Platzierung von export, die Benennungsregeln und den import-Stil. - Benenne Dateien und Regelbezeichner einheitlich; unterscheide Funktionen, boolesche Werte und Konstanten gemäß den Projektkonventionen. - Deklariere Variablen in der Nähe ihrer ersten Verwendung. - Dokumentiere exportierte APIs, Parameter, Rückgabewerte und komplexe Logik. - Trenne Refaktorierungen von einer gezielten Funktion oder Korrektur. ## Zwischen virtuellen und echten DOM-Knoten wählen und Abhängigkeiten nur in eine Richtung führen Entscheide bewusst zwischen einer Abstraktion des virtuellen Baums und echten DOM-Knoten. Die Abstraktion verarbeitet zwischengespeicherte Attribute und Eigenschaften effizient, während echtes DOM für Browser-APIs und Layoutverhalten erforderlich ist. ### Knotenauswahl - Bevorzuge virtuelle Knoten für Attributzugriff, zwischengespeicherte Eigenschaften, Baumdurchläufe und Selektorarbeit. - Verwende echte DOM-Knoten für Layout, Geometrie, Wurzelsuche, vom Browser berechnetes Verhalten und andere native APIs. - Löse mehrdeutige Eingaben über eine einzige dokumentierte Konvertierungsgrenze auf. - Stütze allgemeine Hilfsfunktionen auf Ein- und Ausgaben mit echtem DOM, sofern eine Abhängigkeit von virtuellen Knoten keinen klaren API- oder Leistungsvorteil bietet. - Verteile Konvertierungslogik nicht auf einzelne Regeln. ### Abhängigkeitsrichtung - Halte Standarddefinitionen als reine Daten ohne Laufzeit-import. - Erlaube Low-Level-Hilfsfunktionen nur über explizite Pfade Abhängigkeiten von noch niedrigerem Basiscode und Standarddaten. - Zentralisiere import von Drittanbietermodulen in einer festgelegten Adapterschicht. - Erlaube gemeinsamen Domänenhilfen, Low-Level-Hilfsfunktionen zu verwenden, aber kehre diese Abhängigkeit niemals um. - Erlaube High-Level-Prüfungen und -Regeln, niedrigere Schichten zusammenzusetzen, ohne Zyklen zu erzeugen. - Erzwinge diese Grenzen mechanisch durch Lint- oder Buildregeln. ## Bestanden, fehlgeschlagen oder unvollständig melden und Meldungen in Metadaten halten Lege den Ergebnisvertrag ausdrücklich fest, damit Verbraucher Konformität, Fehler und unzureichende Nachweise unterscheiden können. ### Prüfergebnisse - Gib `pass` zurück, wenn die geprüfte Bedingung erfüllt ist. - Gib `fail` zurück, wenn gegen die geprüfte Bedingung verstoßen wird. - Gib `incomplete` zurück, wenn die Engine das Ergebnis nicht zuverlässig bestimmen kann. - Füge strukturierte Daten für Meldungsvorlagen und zur Erklärung von `incomplete`-Ergebnissen bei. - Ordne Unsicherheit nicht allein deshalb `pass` oder `fail` zu, um eine binäre Antwort zu erzeugen. ### Regeldefinitionen - Kombiniere Prüfungen mit expliziten Gruppen `all`, `any` und `none`. - Begrenze Kandidatenelemente mit einem Selektor und einem optionalen zusätzlichen Matcher. - Beschränke die Auswirkung auf die vom Projekt deklarierten Schweregradwerte. - Lies HTML- und ARIA-Definitionen aus zentralisierten Standarddaten, statt Listen in Prüfungen fest zu codieren. ### Meldungen für Benutzer - Halte Meldungen in Regel- oder Prüfungsmetadaten statt im Implementierungscode. - Verwende benannte Datenplatzhalter, deren Werte vom Prüfergebnis bereitgestellt werden. - Stelle Singular- und Pluralvarianten bereit, wenn die Grammatik sie erfordert. - Aktualisiere die Lokalisierungsvorlage bei jeder Änderung einer Ausgangsmeldung. ## Farbkontrast und Rollenprüfung besonders sorgfältig überprüfen Einige Ergebnisse zur Barrierefreiheit hängen von unvollständigen Browserinformationen oder sich schnell entwickelnden Standards ab. Diese Bereiche erfordern konservative Ergebnisse und eine gezielte Prüfung. ### Farbe und Sichtbarkeit - Berücksichtige unterstützte Farbformate, Deckkraft, Überblendung, Stapelkontexte und Texteffekte. - Gib `incomplete` zurück, wenn der wirksame Hintergrund oder Kontrast nicht bestimmt werden kann. - Bewerte die Sichtbarkeit für Screenreader semantisch, statt dich allein auf die CSS-Sichtbarkeit zu verlassen. - Beziehe Attribute für ausgeblendete Zustände, zusammengesetzte Bäume und Shadow-DOM-Grenzen ein. ### Semantische Standards - Halte die Validierung von `role` und Attributen mit der aktuellen Spezifikation zur Barrierefreiheit synchron. - Löse implizite und explizite `role` getrennt auf. - Frage zentralisierte Definitionen von `role` und Attributen ab, damit jede Regel dieselbe maßgebliche Quelle verwendet. - Ergänze Regressionsfälle für Aktualisierungen der Spezifikation und zuvor falsch klassifiziertes Markup. - Verlange eine gezielte Prüfung, wenn eine Änderung Ergebnisse über viele Regeln hinweg verändern kann. ## Jede Regel auf realistischen Seiten testen, auch mit Shadow DOM Spiegle die Quellstruktur im Unit-Test-Baum, damit die Zuständigkeit für Implementierung und Tests klar bleibt. ### Unit- und Prüfungstests - Verwende den vom Projekt bereitgestellten Standard-Prüfkontext oder das Harness. - Setze nur den Zustand zurück, der dem Test gehört, wenn gemeinsam verwendete Fixtures und virtuelle Bäume bereits vom Harness bereinigt wurden. - Teste die Ergebnisse `pass`, `fail` und `incomplete` einschließlich der beigefügten Meldungsdaten. - Ergänze vor einer breiten Integrationsabdeckung gezielte Fälle für Randbedingungen. ### Integrationstests - Verknüpfe jedes Regel-Fixture mit strukturierten erwarteten Ergebnissen. - Verwende die kanonische Selektordarstellung der Engine einschließlich verschachtelter Selektoren für Frames. - Verwende eine vollständige HTML-Seite, wenn sich Verhalten auf Dokumentebene nicht durch ein Fragment darstellen lässt. - Ergänze für jede relevante Regel oder Prüfung einen Fall mit open Shadow DOM. - Aktualisiere die Abdeckung virtueller Regeln, wenn eine Änderung die Auswertung des virtuellen Baums betrifft. - Führe während der Iteration gezielte Tests und vor der Übergabe die maßgebliche vollständige Testsuite aus. ## Übersetzungsvorlagen im selben Commit wie die Meldungen neu erzeugen Unterscheide generierte Release-Bundles von generierten Quellartefakten, die das Repository absichtlich verfolgt. ### Artefaktrichtlinie - Bearbeite gebündelte oder minimierte Release-Ausgaben nicht direkt. - Erzeuge verfolgte Vorlagen oder Quellartefakte über den genehmigten Build neu. - Committe eine generierte Lokalisierungsvorlage in derselben Änderung wie die Ausgangsmeldung, aus der sie erzeugt wurde. - Teile synchronisierte Aktualisierungen von Quellen und generierten Inhalten nicht auf getrennte Commits auf. - Halte ignorierte Veröffentlichungs-Bundles aus gewöhnlichen Funktions-Commits heraus. ### Überprüfung - Prüfe den generierten Diff auf unerwartete Änderungen an Meldungen, Gebietsschemata oder Regeln. - Bestätige, dass jeder neue Platzhalter in den erzeugenden Prüfdaten vorhanden ist. - Führe nach Meldungsänderungen die Lokalisierungs- und Buildvalidierung aus. - Dokumentiere, welche Artefakte generiert, welche verfolgt und welche nur für Releases bestimmt sind. ## Changelog und API-Doku aktualisieren und Breaking Changes vermeiden Halte jede Änderung fokussiert und mache ihre öffentlichen Folgen für Prüfende und Verbraucher sichtbar. ### Änderungsdokumentation - Aktualisiere das Änderungsprotokoll, wenn du eine Regel hinzufügst oder wesentlich änderst. - Aktualisiere API-Dokumentation und Typdefinitionen gemeinsam, wenn sich eine öffentliche Schnittstelle ändert. - Verwende die vom Repository vorgeschriebene Form des conventional commit mit einem knappen Betreff und der Begründung im Textkörper. - Verknüpfe das gelöste Issue über den unterstützten Footer oder die Metadaten des Pull Requests. - Schließe vor der Übergabe die Prüfliste des Projekts ab. ### Kompatibilität - Vermeide inkompatible Änderungen, wenn alte und neue Formate gemeinsam unterstützt werden können. - Kennzeichne veraltete APIs deutlich und stelle einen Migrationspfad bereit. - Wenn ein Bruch unvermeidbar ist, benenne ihn ausdrücklich in den Release-Metadaten und im Änderungsprotokoll. - Füge Migrationsanleitungen, aktualisierte Tests, synchronisierte generierte Dateien und für Prüfende sichtbare Nachweise bei. - Behaupte keine Einsatzbereitschaft, bevor Formatierung, Linting, gezielte Tests, Integrationstests, die vollständige Testsuite und Dokumentationsprüfungen tatsächliche Ergebnisse geliefert haben.