Benutzerdefinierte Regelsätze
Ein benutzerdefinierter Regelsatz ist eine generierte JSON-Datei, die an [axe.configure] übergeben wird(https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#api-name-axeconfigure) um zu steuern, wie axe Ihre Seite testet. Damit können Sie die Ausführung vorhandener Regeln ändern, z. B. indem Sie diese deaktivieren oder ihre Auswirkung ändern. Darüber hinaus können damit auch völlig neue Regeln erstellt werden.
Mit benutzerdefinierten Regelsätzen haben Sie unter anderem folgende Möglichkeiten:
- Regel oder Prüfungsauswirkung ändern.
- Regeln deaktivieren.
- Erstellen Sie neue Regeln, um die Zugänglichkeitsrichtlinien Ihrer Organisation zu testen.
- Beschränken Sie, welche Lösungen für Elemente zulässig sind. Zum Beispiel das
title
-Attribut nicht zu erlauben, einem<img>
Element einen zugänglichen Namen zu geben. - Ändern Sie den Mindestkontrast in der Farbkontrastregel.
- Aktualisieren Sie, welche ARIA-Rollen und -Eigenschaften unterstützt werden.
Der Befehl „ruleset“ hat das folgende Format:
axe ruleset [options]
Optionen
-c, --custom <path>
Generieren Sie einen benutzerdefinierten Regelsatz aus einer changes.json
Datei im aktuellen Verzeichnis oder aus dem angegebenen Pfad.
-d, --destination <path>
Ausgabeverzeichnis für die JSON-Regelsatzdatei
-t, --tags <list>
Liste der durch Kommas getrennten Tags , die zum Filtern des Standardregelsatzes verwendet werden
-f, --format [Format]
Ausgabeformat („js“ oder „json“) für die JSON-Datei des Regelsatzes
-l, --log
Erstelle eine Liste aller Regeln, die in den generierten Regelsätzen enthalten sind.
-x, --disable-other-rules
Deaktiviert alle Regeln, die nicht in der Eigenschaft „rules“ der Datei „changes.json“ oder im Verzeichnis „rules“ enthalten sind.
-a, --axe-source <path>
Pfad zu einer benutzerdefinierten axe-Quelldatei
--508 [Dateiname]
Standardkonfiguration für [Abschnitt 508-Regeln] generieren(https://www.deque.com/section-508/compliance/).
--en301549 [Dateiname]
Standardkonfiguration für [EN 301 549-Regeln] generieren(https://www.deque.com/en-301-549-compliance/).
--ttv5 [Dateiname]
Standardkonfiguration für [Trusted Tester v5-Regeln] generieren(https://www.deque.com/section-508/testing/#:~:text=Section%20508%20Trusted%20Tester%20Version%205).
--wcag2 [Dateiname]
Erstellen Sie eine Standardkonfiguration für die WCAG 2.0-Richtlinien.
--wcag21 [Dateiname]
Standardkonfiguration für die WCAG 2.1-Richtlinien generieren.
--wcag22 [Dateiname]
Erstellen Sie eine Standardkonfiguration für die WCAG 2.2-Richtlinien.
--wcag2aaa [Dateiname]
Generieren Sie eine Standardkonfiguration für die WCAG 2.0 Level AAA-Richtlinien.
--wcag21aaa [Dateiname]
Generieren Sie eine Standardkonfiguration für die WCAG 2.1 Level AAA-Richtlinien.
--wcag22aaa [Dateiname]
Erstellen Sie eine Standardkonfiguration für die Richtlinien WCAG 2.2 Level AAA.
--all [Dateiname]
Generieren Sie eine Standardkonfiguration für alle Richtlinien (508, WCAG 2, und WCAG 2.1).
--only-changes
Generiert nur die Änderungen und Ergänzungen am Regelsatz und nicht die komplette Konfiguration.
Generieren eines benutzerdefinierten Regelsatzes
Um einen benutzerdefinierten Regelsatz zu generieren, benötigen Sie eine Datei „changes.json“, entweder im aktuellen Verzeichnis oder im durch die Option „--custom“ angegebenen Pfad.
Die Datei „changes.json“ hat dasselbe Format wie das an [axe.configure] übergebene Objekt(https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#api-name-axeconfigure). In der Datei können Sie die Änderungen an den aktuellen Axe-Regeln und Prüfungen sowie alle neuen Regeln oder Prüfungen angeben.
Wenn Sie beispielsweise die Auswirkung der valid-lang
Regel anstatt von minor
auf serious
ändern möchten, sähe die changes.json
Datei etwa wie folgt aus:
{
"rules": [{
"id": "valid-lang",
"impact": "minor"
}]
}
Verwenden von Regel- und Prüfungsverzeichnisse
Wenn Sie möchten, können Sie neue Regeln und Checks auch in eigene Verzeichnisse (mit den Namen rules
bzw. checks
) ausgliedern. Jede Regel oder Prüfung sollte eine eigene JSON-Datei im jeweiligen Verzeichnis sein. Dadurch wird die Ausgabe der generierten JSON-Datei nicht geändert, sondern es handelt sich lediglich um eine praktische Möglichkeit, mehrere benutzerdefinierte Regeln und Checks zu organisieren, anstatt sie alle in der changes.json
Datei aufzulisten.
Um beispielsweise eine neue benutzerdefinierte Regel namens h1-no-duplicate
zu erstellen, die überprüft, ob mehr als ein <h1>
Element auf der Seite vorhanden ist, könnten Sie über die folgende Verzeichnisstruktur verfügen:
directory
├ changes.json
├ rules
│ └ h1-no-duplicate.json
└ checks
└ page-no-duplicate-h1.json
Die h1-no-duplicate.json
Metadatendatei der Regel definiert die benutzerdefinierte Regel und welche Prüfungen verwendet werden sollen:
{
"id": "h1-no-duplicate",
"selector": "h1:not([role]), [role=heading][aria-level=1]",
"tags": ["cat.semantics", "best-practice"],
"metadata": {
"description": "Ensures the document has at most one h1 element",
"help": "Document must not have more than one h1 element"
},
"all": [],
"any": ["page-no-duplicate-h1"],
"none": []
}
Die page-no-duplicate-h1.json
Prüfmetadatendatei definiert die benutzerdefinierte Prüfung und welche Axe evaluate
Methode zu verwenden ist:
{
"id": "page-no-duplicate-h1",
"evaluate": "page-no-duplicate-evaluate",
"after": "page-no-duplicate-after",
"options": {
"selector": "h1:not([role]), [role=heading][aria-level=1]"
},
"metadata": {
"impact": "moderate",
"messages": {
"pass": "Document does not have more than one h1 element",
"fail": "Document has more than one h1 element"
}
}
}
Eine Liste aller verwendbaren evaluate
und after
Methoden finden Sie in der metadata-function-map-Datei von axe-core.
Da es keine Änderungen an den aktuellen Regeln oder Prüfungen gibt, wäre die changes.json
Datei ein leeres Objekt:
{}
Nach dem Ausführen des Befehls axe ruleset --custom
würde die generierte JSON-Datei wie folgt aussehen:
{
"rules": [{
"id": "h1-no-duplicate",
"selector": "h1:not([role]), [role=heading][aria-level=1]",
"tags": ["cat.semantics", "best-practice"],
"metadata": {
"description": "Ensures the document has at most one h1 element",
"help": "Document must not have more than one h1 element"
},
"all": [],
"any": ["page-no-duplicate-h1"],
"none": []
}],
"checks": [{
"id": "page-no-duplicate-h1",
"evaluate": "page-no-duplicate-evaluate",
"after": "page-no-duplicate-after",
"options": {
"selector": "h1:not([role]), [role=heading][aria-level=1]"
},
"metadata": {
"impact": "moderate",
"messages": {
"pass": "Document does not have more than one h1 element",
"fail": "Document has more than one h1 element"
}
}
}]
}
Verwenden eines benutzerdefinierten Regelsatzes
Es gibt drei Möglichkeiten, benutzerdefinierte Regeln in axe DevTools zu konfigurieren.
-
explizit: Dies ist zwischen den Paketen unterschiedlich, verwenden Sie für die CLI die Flagge
--custom
. -
Umgebungsvariable: Wenn eine
AXE_RULESET_PATH
Umgebungsvariable festgelegt ist, lädt axe DevTools sie als Standardregelsatz. -
lokale Datei: Wenn sich im Verzeichnis, in dem Axe ausgeführt wird, eine
axe-ruleset.json
Datei befindet, wird diese als Standardregelsatz verwendet.
Wenn keines davon angegeben ist oder wenn axe DevTools die festgelegte Datei nicht laden kann, wird stattdessen der wcag2
Standardregelsatz verwendet.
Unterstützung
Das Erstellen benutzerdefinierter Regelsätze erfordert umfassende Kenntnisse von axe-core. Weitere Einzelheiten finden Sie in der axe-core API-Dokumentation. Wenn Sie Unterstützung beim Erstellen und Verwalten Ihres benutzerdefinierten Regelsatzes wünschen, wenden Sie sich an Ihren Deque-Vertreter.