Aangepaste Regels

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard
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

  1. 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
) {
    
}
  1. 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)
}
  1. Ten slotte specificeren we in de runRule functie waartegen we testen om te bepalen of de regel is geslaagd of gefaald. Om eigenschappen voor de geanalyseerde waarden te verzamelen, gebruik de hulpmethode: propCollector in 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")
    }
}