Hamcrest-testen Schrijven
Toegankelijkheidstesten schrijven met behulp van Hamcrest-matchers met Axe DevTools for Web voor Java
Hamcrest Matchers gebruiken met Axe DevTools
Vereisten
Om toegankelijkheidstesten te schrijven en resultaten te produceren, moet u al een testbestand hebben aangemaakt met Axe DevTools en uw keuze van Selenium WebDriver vooraf geïmporteerd en geïnitialiseerd. Als u dat nog niet heeft gedaan, lees deze gids over hoe u dit moet doen.
Er is een set matchers beschikbaar gesteld voor toegankelijkheidstesten via hamcrest met behulp van Selenium WebDriver. Deze matchers kunnen worden gebruikt in een unit testing framework of in aangepaste cucumber-stappen.
Een scanmethode kiezen
Zoals te zien in de importverklaringen zijn er twee toegankelijkheidsscanmethoden. De eerste, isAxeClean, zal een uitzondering opwerpen en de tests stoppen als er overtredingen worden gevonden. De tweede, isAuditedForAccessibility, zal de tests niet stoppen of een uitzondering opwerpen, ongeacht het toegankelijkheidsniveau van de gescande pagina.
Tests Schrijven
Voor de resterende voorbeelden wordt de isAxeClean-methode getoond ter beknoptheid, maar beide methoden werken uitwisselbaar. Met uw WebDriver- en AxeDriver-objecten geïnstantieerd en geïnitialiseerd, is het creëren van een scan net zo eenvoudig als het toevoegen van deze twee regels code aan een testmethode. Vervang $URL door de gewenste URL van de pagina die u wilt scannen.
webDriver.get("$URL");
assertThat(axedriver, isAxeClean());Bij het testen van meerdere pagina's kunt u het get, scan-proces herhalen zonder nieuwe instanties van de drivers te hoeven maken. Om verschillende toestanden van een pagina te scannen, kunt u de pagina manipuleren met behulp van de webdriver API en vervolgens een nieuwe scan uitvoeren.
Aanvullende Referentie
Er zijn verschillende chaining-methoden beschikbaar om de manier waarop de pagina wordt gescand te wijzigen. Deze methoden omvatten uitsluitings-/inclusieclausules of afbakening en wijzigingen van toegankelijkheidsnormen, toegankelijkheidsregels en toegankelijkheidsregelssets. Ter beknoptheid worden alle kettingmethoden gekoppeld met isAxeClean(), maar ze zijn uitwisselbaar met isAuditedForAccessibility().
Toegankelijkheidsnormen
Deque biedt een chaining-methode, according to, waarmee direct kan worden gespecificeerd welke toegankelijkheidstestnormen door een scan worden gebruikt.
| Tagnaam | Toegankelijkheidsnorm |
|---|---|
| wcag2a | WCAG 2.0 Niveau A |
| wcag2aa | WCAG 2.0 Niveau AA |
| wcag2aaa | WCAG 2.0 Niveau AAA |
| wcag21a | WCAG 2.1 Niveau A |
| wcag21aa | WCAG 2.1 Niveau AA |
| wcag21aaa | WCAG 2.0 Niveau AAA |
| wcag22a | WCAG 2.2 Niveau A |
| wcag22aa | WCAG 2.2 Niveau AA |
| wcag22aaa | WCAG 2.2 Niveau AAA |
| section508 | Sectie 508 |
| EN-301-549 | EN 301 549 |
| RGAAv4 | RGAA Versie 4 |
| TTv5 | Trusted Tester v5 |
| best-practice | Best practices aanbevolen door Deque |
Als u niet zeker weet welke standaard voor u geschikt is, lees dan de axe-core documentatie over welke regels bij welke standaard horen, of neem contact op met ons via uw Deque-vertegenwoordiger of onze helpdesk. Voor een volledige lijst van welke regels op elke standaard van toepassing zijn, bekijk deze pagina over Regelbeschrijvingen
Om één enkele standaard te gebruiken, voegt u eenvoudig de according to chain-methode toe en geeft u uw gewenste standaard door
assertThat(axedriver, isAxeClean().accordingTo("wcag2a"));Naast het gebruik van één teststandaard zijn er twee manieren om te scannen tegen twee of meer teststandaarden. Beide werken identiek.
assertThat(axedriver, isAxeClean().accordingTo("wcag2a", "section508"));
assertThat(axedriver, isAxeClean().accordingTo("wcag2a").accordingTo("section508"));Inperking
Deque biedt twee gekoppelde methoden om te helpen bij het afbakenen van scans. De within()-methode wijzigt de scan zodat deze alleen de pagina binnen de grenzen van de doorgegeven selector scant. De excluding()-methode werkt op de tegenovergestelde manier. Deze wijzigt de scan zodat inhoud binnen de doorgegeven selector wordt genegeerd. De onderstaande voorbeelden tonen allemaal de within()-methode, maar de excluding()-methode werkt identiek.
Het eenvoudigst wordt de bewering aangepast met één selector
assertThat(axedriver, isAxeClean().within("#selector1")); Samengestelde selectors zijn ook mogelijk. In het onderstaande voorbeeld worden alleen elementen met selector 2 binnen selector 1 gescand
assertThat(axedriver, isAxeClean().within("#selector1 .selector2"));Er zijn drie manieren om meerdere selecties uit te voeren, of om meerdere scopes te selecteren om binnen te testen. In al deze voorbeelden bevinden elementen zich binnen selector 1 en selector 2.
assertThat(axedriver, isAxeClean().within("#selector1, .selector2"));
assertThat(axedriver, isAxeClean().within("#selector1", ".selector2"));
assertThat(axedriver, isAxeClean().within("#selector1").within(".selector2"));Om binnen een IFrame in te perken, moet een IFrame-selector worden gedeclareerd. De scope die binnen het IFrame gescand moet worden, wordt als extra parameter doorgegeven.
assertThat(axedriver, isAxeClean().within(new IFrameSelector("#frame1", "#selector1")));Inperking binnen meerdere IFrames werkt op dezelfde manier als standaard meerdere selecties. Maak eenvoudigweg twee of meer IFrame-selectors die door komma's worden gescheiden.
assertThat(axedriver, isAxeClean().within(new IFrameSelector("#frame1", "selector1"),
new IFrameSelector("#frame2", "#selector2")));Het is ook mogelijk om binnen geneste IFrames in te perken. Dit voorbeeld toont de inperking van een scan binnen selector 1 van een IFrame dat zich binnen een tweede IFrame bevindt.
assertThat(axedriver, isAxeClean().within(
new IFrameSelector("#frame1",
new IFrameSelector("#frame2", "#selector1"))));Ten slotte is het mogelijk om meerdere scopes binnen een pagina en binnen een IFrame in te stellen. Hiervoor is een elementselector-object vereist.
assertThat(axedriver, isAxeClean().within(
new ElementSelector("#selector1"),
new ElementSelector("#selector2"),
new IFrameSelector("#frame", "selector3")));Regelselectie
De API biedt ook de mogelijkheid om aan te passen welke regels in een scan worden gebruikt. Er zijn drie manieren om aan te passen welke regels worden gebruikt. Deze zijn het controleren van extra regels buiten de standaardregels voor de scan, het niet controleren van regels binnen de standaardregels voor de scan, en het controleren van alleen die regels die expliciet zijn gespecificeerd.
Voor een volledige lijst van de geldige regellabels die je met deze methoden kunt gebruiken en waar ze op testen, lees de documentatie over regels
Om extra regels te controleren, gebruik de checking-methode. Om een enkele extra regel te testen, geef gewoon het regellabel door aan de checking-methode
assertThat(axedriver, isAxeClean().checking("label"));Net als bij de andere kettingmethoden kunnen meerdere extra regels op twee manieren worden gecontroleerd met de checking-methode:
assertThat(axedriver, isAxeClean().checking("label", "tabindex"));
assertThat(axedriver, isAxeClean().checking("label").checking("tabindex"));De checking-methode kan ook gekoppeld worden aan een regelselectiemethode.
assertThat(axedriver, isAxeClean().accordingTo("wcag2a").checking("tabindex"));De optie bestaat ook om regels uit een scan te weglaten. Dit is mogelijk via de skipping-methode. Deze werkt identiek aan de checking-methode, behalve dat het regels weglaat in plaats van ze toe te voegen.
assertThat(axedriver, isAxeClean().skipping("label"));Het kan ook worden gebruikt om meerdere regels weg te laten.
assertThat(axedriver, isAxeClean().skipping("label", "tabindex"));
assertThat(axedriver, isAxeClean().skipping("label").skipping("tabindex));Ten slotte kan het ook worden gebruikt met een regelselectiemethode.
assertThat(axedriver, isAxeClean().accordingTo("wcag2a").skipping("#label"));De laatste methode wordt gebruikt wanneer alleen specifieke regels gewenst zijn. De checking only-methode wijzigt de scan om alleen die regels te controleren die expliciet zijn doorgegeven. Daarnaast zal deze methode niet worden gekoppeld aan de toegankelijkheidsstandaarden selectiemethode. Om alleen een enkele regel te controleren:
assertThat(axedriver, isAxeClean().checkingOnly("label"));Deze methode kan ook worden gebruikt om meerdere regels op twee manieren te controleren.
assertThat(axedriver, isAxeClean().checkingOnly("label", "tabindex"));
assertThat(axedriver, isAxeClean().checkingOnly("label").checkingOnly("tabindex"));Voor een volledige lijst van de geldige regellabels die je met deze methoden kunt gebruiken en waar ze op testen, lees de documentatie over regels.
Overtredingen negeren
Het is mogelijk om de scan zo te configureren dat specifieke gevallen van overtredingen worden genegeerd. Om dit te doen, wordt de ignoring-methode gebruikt. Deze werkt door de selector(en) van de element(en) die je wilt negeren, door te geven als een array, samen met de regel die ze overtreden.
assertThat(axedriver, isAxeClean().ignoring("[\".sidebar\", \"#branded-content\"]", "color-contrast"));Gebruiksservice
Krijg inzicht in het gebruik van Axe DevTools trends binnen je organisatie
Standaard is de gebruiksservice uitgeschakeld en is de standaard-URL https://usage.deque.com.
Omgevingsvariabelen
Deze omgevingsvariabelen stellen je in staat om de gebruiksservice te configureren en de eigenschappen van gerapporteerde gebeurtenissen te wijzigen.
| Naam | Type | Kan Override | Beschrijving |
|---|---|---|---|
AXE_DISTINCT_ID |
String | — | Een UUID-identificator die hetzelfde blijft voor de ingelogde gebruiker (tenzij deze wordt opnieuw gegenereerd) |
AXE_METRICS_URL |
String | — | De URL van het REST-gebruikseindpunt |
AXE_TRACK_USAGE |
Boolean | — | Schakelt het rapporteren van gebruiksservices in (standaard is false) |
AXE_APPLICATION |
String | false | De applicatie die werd gebruikt om toegankelijkheidsfouten te controleren |
AXE_DEV_INSTANCE |
Boolean | true | Geeft aan of dit evenement afkomstig is van acties van een softwareontwikkelaar. Nuttig voor het markeren en later verwijderen van evenementen die tijdens ontwikkeling of testen zijn geregistreerd. |
AXE_DEPARTMENT |
String | true | De afdeling van de gebruiker binnen de organisatie |
AXE_KEYCLOAK_ID |
String | false | De Keycloak-ID van de gebruiker |
AXE_LOGGED_IN |
Boolean | false | Registreert of de gebruiker is ingelogd op de toepassing onder test |
AXE_ORGANIZATION |
String | true | De organisatie van de gebruiker |
AXE_SESSION_ID |
String | false | Een UUID die de sessie van de gebruiker identificeert |
AXE_USER_ID |
String | false | De identiteit van een specifieke gebruiker, zoals naam of inlog-ID |
AXE_USER_JOB_ROLE |
String | false | De functie van de gebruiker |
AXE_USER_STATUS |
String | false | Statusinformatie die u aan de gebruiker wilt koppelen |
Volgende stappen
Voor verder gebruik van je Axe DevTools scanresultaten, zoals rapportage, zie de Axe DevTools Java Selenium pakketdocumentatie
Probleemoplossing
Als je problemen ondervindt bij het instellen van je toegankelijkheidstests, neem dan direct contact op met je Deque-vertegenwoordiger, bereik ons via onze supportdesk, of stuur ons een e-mail. We helpen je graag om je toegankelijkheidstesten van de grond te krijgen.
