Set di regole personalizzati
Un set di regole personalizzato è un file JSON generato che viene passato a axe.configure per controllare il modo in cui axe testa la tua pagina. Può modificare il modo in cui vengono eseguite le regole esistenti, ad esempio disattivandole o modificandone l'impatto, oppure può essere utilizzato per creare regole completamente nuove.
Ecco alcune delle cose che puoi fare con i set di regole personalizzati:
- Modifica l'impatto di una regola o di un controllo.
- Disattiva le regole.
- Crea nuove regole per testare la politica di accessibilità della tua organizzazione.
- Limitare le soluzioni consentite per gli elementi. Ad esempio, non consentire all'attributo
title
di assegnare un nome accessibile a un elemento<img>
. - Modificare il contrasto minimo nella regola del contrasto colore.
- Aggiornare i ruoli e le proprietà ARIA che sono supportati.
Il comando "ruleset" ha il seguente formato:
axe ruleset [options]
Opzioni
-c, --custom <path>
Genera un set di regole personalizzato da un changes.json
file nella directory corrente o dal percorso specificato.
-d, --destinazione <path>
Directory di output per il file JSON del set di regole
-t, --tag <list>
Elenco di [tag] separati da virgole(https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#axe-core-tags) che verranno utilizzati per filtrare il set di regole standard
-f, --format [formato]
Formato di output (js
o json
) per il file JSON del set di regole
-l, --log
Genera un elenco di tutte le regole incluse nei set di regole generati.
-x, --disabilita-altre-regole
Disabilita tutte le regole non incluse nella proprietà rules
del file changes.json
o nella directory rules
.
-a, --axe-source <path>
Percorso verso un file sorgente di axe personalizzato
--508 [nome file]
Genera una configurazione standard per regole della Sezione 508.
--en301549 [nome file]
Genera una configurazione standard per regole EN 301 549.
--ttv5 [nome file]
Genera una configurazione standard per regole Trusted Tester v5.
--wcag2 [nome file]
Genera una configurazione standard per le linee guida WCAG 2.0.
--wcag21 [nome file]
Genera una configurazione standard per le linee guida WCAG 2.1.
--wcag22 [nome file]
Genera una configurazione standard per le linee guida WCAG 2.2.
--wcag2aaa [nome file]
Genera una configurazione standard per le linee guida WCAG 2.0 Livello AAA.
--wcag21aaa [nome file]
Genera una configurazione standard per le linee guida WCAG 2.1 Livello AAA.
--wcag22aaa [nome file]
Genera una configurazione standard per le linee guida di livello AAA WCAG(https://www.deque.com/wcag/) 2.2.
--all [nome file]
Genera una config standard per tutte le linee guida (508, WCAG 2 e WCAG 2.1).
--solo-modifiche
Genera solo le modifiche e le aggiunte al set di regole e non la config completa.
Generazione di un set di regole personalizzato
Per generare un set di regole personalizzato è necessario disporre di un file changes.json
, nella directory corrente o nel percorso specificato dall'opzione --custom
.
Il file changes.json
ha lo stesso formato dell'oggetto passato a axe.configure. Nel file è possibile specificare le modifiche alle regole e ai controlli di axe corrente, nonché eventuali nuove regole o controlli.
Ad esempio, se si desidera modificare l'impatto della valid-lang
regola in modo che sia minor
invece di serious
, il file changes.json
avrebbe un aspetto simile al seguente:
{
"rules": [{
"id": "valid-lang",
"impact": "minor"
}]
}
Utilizzo delle directory Regole e Controlli
Se lo desideri, puoi anche separare le nuove regole e i nuovi controlli nelle rispettive directory (denominate rules
e checks
rispettivamente). Ogni regola o controllo dovrebbe essere un file JSON a sé stante nella rispettiva directory. Questa operazione non modifica l'output del file JSON generato, ma è semplicemente un modo comodo per organizzare più regole e controlli personalizzati anziché elencarli tutti nel changes.json
file.
Ad esempio, per creare una nuova regola personalizzata denominata h1-no-duplicate
che verifica se nella pagina è presente più di un <h1>
elemento, è possibile avere la seguente struttura di directory:
directory
├ changes.json
├ rules
│ └ h1-no-duplicate.json
└ checks
└ page-no-duplicate-h1.json
Il h1-no-duplicate.json
file di metadati della regola definirà la regola personalizzata e quali controlli utilizzare:
{
"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": []
}
Il file di metadati di controllo page-no-duplicate-h1.json
definisce il controllo personalizzato e quale metodo axe evaluate
utilizzare:
{
"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"
}
}
}
Un elenco di tutti evaluate
i metodi che possono essere utilizzati può essere trovato nel file metadata-function-map di axe-core. after
Infine, poiché non ci sono modifiche alle regole o ai controlli correnti, il file sarebbe un oggetto vuoto: changes.json
{}
Dopo aver eseguito il comando axe ruleset --custom
, il file JSON generato apparirà come segue:
{
"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"
}
}
}]
}
Utilizzo di un set di regole personalizzato
Esistono tre modi per configurare regole personalizzate in axe DevTools.
-
esplicitamente: questo varia a seconda dei pacchetti, per la CLI, utilizzare l'opzione
--custom
. -
variabile d'ambiente: se è presente una
AXE_RULESET_PATH
variabile d'ambiente impostata, axe DevTools la caricherà come set di regole predefinito. -
file locale: se nella directory in cui viene eseguito axe è presente un
axe-ruleset.json
file, verrà utilizzato come set di regole predefinito.
Se non viene specificato nessuno di questi parametri o se axe DevTools non riesce a caricare il file impostato, verrà utilizzato il wcag2
set di regole predefinito.
Supporto
Per creare set di regole personalizzati è necessaria una conoscenza approfondita di axe-core. Per maggiori dettagli, consultare la documentazione API axe-core. Se desiderate supporto nella creazione e nella gestione del vostro set di regole personalizzato, contattate il vostro rappresentante Deque.