Benutzerdefinierte Regeln
Not for use with personal data
Mit der Funktion „Benutzerdefinierte Regeln“ können Sie neue Regeln zum Testen erstellen und wichtige Verhaltensweisen innerhalb vorhandener Regeln ändern.
Erstellen wir eine benutzerdefinierte Regel, die das Name-Attribut einer Ansicht überprüft. Die Ergebniskriterien lauten wie folgt:
- Fehler: Der Name ist leer.
- Erfolg: Der Name ist nicht leer.
Erstellen der Regel
- Richten Sie ein neues Klassenobjekt ein, das von
AxeRule
erbt.
Sie können die Regelkonfiguration innerhalb des Initialisierers einrichten, um Folgendes anzugeben:
- Nach welchem Standard testen Sie
- Die Kategorie der Regel
- Die Erfolgskriterien
- Die Auswirkungen
- Eine Zusammenfassung der 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
) {
}
- Bestimmen Sie, ob die Regel auf die Ansicht zutrifft, indem Sie sicherstellen, dass der sichtbare Text nicht null ist.
override fun isApplicable(axeView: AxeView): Boolean {
val visibleText = axeView.text
return visibleText != null && super.isApplicable(axeView)
}
- Zuletzt geben wir in der
runRule
Funktion an, was wir testen, um zu bestimmen, ob die Regel erfolgreich war oder fehlgeschlagen ist. Um Eigenschaften für die analysierten Werte zu sammeln, verwenden Sie die Hilfsmethode:propCollector
im folgenden Beispiel.
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")
}
Zu axe DevTools hinzufügen
Sobald die benutzerdefinierte Regel fertig ist, fügen Sie sie der Regelliste des initialisierten axe DevTools-Objekts hinzu und legen Sie Konfigurationen fest, bevor Tests ausgeführt werden.
val axe = AxeDevTools()
init {
axe.addCustomRule(CustomVisibleTextRule::class.java)
}
Vollständiges Beispiel für eine benutzerdefinierte 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")
}
}