Obligatoriskt ARIA-attribut saknas
Silktide kontrollerar element som deklarerar en ARIA-roll och verifierar att de också har de attribut som rollen kräver. Vissa roller kan inte användas utan sina attribut, till exempel ett skjutreglage som aldrig anger vilket värde det är inställt på.
<!-- Problem: ett skjutreglage måste exponera sitt aktuella värde -->
<div role="slider" tabindex="0"></div>
<!-- Lösning: ange det obligatoriska tillståndet -->
<div role="slider" tabindex="0"
aria-valuemin="0" aria-valuemax="100" aria-valuenow="50"></div>
Varför detta är viktigt
Att ge ett element en -roll är ett löfte: "det här är ett skjutreglage", "det här är en kryssruta". Roller som dessa kräver tillståndsattribut, eftersom löftet är tomt utan dem – en användare av en hamnar på en kryssruta och kan inte avgöra om den är markerad, eller på ett skjutreglage och kan inte avgöra dess värde eller intervall. Kontrollen meddelas, kan få fokus men går inte att använda.
Så här åtgärdar du det
- Lägg till de attribut som rollen kräver och håll dem uppdaterade med skript när
kontrollens tillstånd ändras – ett statiskt
aria-checked="false"på en fungerande kryssruta är lika missvisande som att inte ha något attribut alls. - Föredra inbyggda -element där sådana finns:
<input type="checkbox">och<input type="range">exponerar sitt tillstånd automatiskt, utan ARIA som måste underhållas.
Så testar Silktide detta
- Hitta alla element på sidan som deklarerar ett
role-attribut. - Slå upp de attribut som ARIA 1.2 kräver för den rollen – till exempel
kräver
role="checkbox"aria-checked, ochrole="slider"kräveraria-valuenow. - Hoppa över fall där elementet exponerar tillståndet inbyggt: en riktig kryssruta
eller alternativknapp har redan sitt markerade tillstånd, ett inbyggt
<option>har sitt valda tillstånd, och ett skjutreglage medaria-valuetextkan utelämnaaria-valuenow. - Rapportera varje element som saknar ett obligatoriskt attribut.
Felsökning
Ett skript anger attributet efter att sidan har lästs in
Silktide testar sidan medan den läses in. Om din widget bara lägger till sina tillståndsattribut vid den första interaktionen hör användarna en kontroll utan tillstånd fram till dess – återge i stället det ursprungliga tillståndet på sidan.
Den här kontrollen rapporterar inget trots att jag förväntar mig resultat
ARIA-tester kan stängas av per webbplats. Kontrollera webbplatsens avancerade inställningar.