Aangepaste Regels
Not for use with personal data
Met de functie voor aangepaste regels kun je nieuwe regels maken om te testen en sleutelgedragingen binnen bestaande regels wijzigen.
Laten we een aangepaste regel maken die de naamseigenschap van een weergave controleert. De resultaatcriteria zijn als volgt:
- Fout: de naam is leeg.
- Succes: de naam heeft enige lengte.
De Regel Maken
- Stel een nieuw klasseobject in dat overerft van
AxeRule. Je kunt de regelconfiguratie binnen de initializer opzetten om het volgende te specificeren:
- Waartegen je test
- De categorie van de regel
- De succescriteria
- De impact
- Een samenvatting van de regel
class CustomVisibleTextRule : AxeRule(
AxeWcagStandard.WCAG_2A.text,
AxeCategory.STRUCTURE.text,
AxeSuccessCriteria.WCAG_132.text,
AxeImpact.MINOR.value,
"Ensure AT and non-AT users have the same experience of understanding labels",
false
) {
}- Bepaal of de regel van toepassing is op de weergave door ervoor te zorgen dat de zichtbare tekst niet null is.
override fun isApplicable(axeView: AxeView): Boolean {
val visibleText = axeView.text
return visibleText != null && super.isApplicable(axeView)
}- Ten slotte specificeren we in de
runRulefunctie waartegen we testen om te bepalen of de regel is geslaagd of gefaald. Om eigenschappen voor de geanalyseerde waarden te verzamelen, gebruik de hulpmethode:propCollectorin het onderstaande voorbeeld.
override fun runRule(axeView: AxeView): RunRuleResult {
val runRuleResult = super.runRule(axeView)
if (runRuleResult.status.isNotEmpty()) {
return runRuleResult
}
val visibleText = propCollector(Visible Text, axeView.test)
visibleText?.let {
return when (it.isNotEmpty()) {
true -> RunRuleResult(AxeStatus.PASS, "All visible texts are present")
false -> RunRuleResult(AxeStatus.FAIL, "All visible texts are not present")
}
}
return RunRuleResult(AxeStatus.INCOMPLETE, "Need review")
}Toevoegen aan axe DevTools
Zodra de aangepaste regel klaar is, voeg je deze toe aan de regellijst van het geïnitialiseerde axe DevTools-object en stel je de configuraties in voordat er tests worden uitgevoerd.
val axe = AxeDevTools()
init {
axe.addCustomRule(CustomVisibleTextRule::class.java)
} Volledig Voorbeeld van Aangepaste Regel
class CustomVisibleTextRule: AxeRule(
AxeWcagStandard.WCAG_2A.text,
AxeCategory.STRUCTURE.text,
AxeSuccessCriteria.WCAG_132.text,
AxeImpact.MINOR.value,
"Ensure AT and non-AT users have the same experience of understanding labels",
false
) {
override fun isApplicable(axeView: AxeView): Boolean {
val visibleText = axeView.text
return visibleText != null && super.isApplicable(axeView)
}
override fun runRule(axeView: AxeView): RunRuleResult {
val runRuleResult = super.runRule(axeView)
if (runRuleResult.status.isNotEmpty()) {
return runRuleResult
}
val visibleText = propCollector(Visible Text, axeView.text)
visibleText?.let {
return when (it.isNotEmpty()) {
true -> RunRuleResult(AxeStatus.PASS, "All visible texts are present")
false -> RunRuleResult(AxeStatus.FAIL, "All visible texts are not present")
}
}
return RunRuleResult(AxeStatus.INCOMPLETE, "Need review")
}
}