Hamcrest-testen Schrijven

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

Toegankelijkheidstesten schrijven met behulp van Hamcrest-matchers met Axe DevTools for Web voor Java

Not for use with personal data

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.