Scrivi i test Hamcrest

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

Uso di Hamcrest Matchers con axe DevTools

Prerequisiti

Per scrivere test di accessibilità e produrre risultati, è necessario aver già creato un file di test con axe DevTools e il Selenium WebDriver preimportato e preinizializzato. Se non lo hai ancora fatto, leggi questa guida per sapere come farlo.

È stato fornito un set di corrispondenze per i test di accessibilità tramite hamcrest utilizzando Selenium WebDriver. Queste corrispondenze possono essere utilizzate in un framework di test unitari o in passaggi Cucumber personalizzati.

Scelta di un metodo di scansione

Come si vede dalle istruzioni di importazione, sono disponibili due metodi di scansione dell'accessibilità. Il primo, isAxeClean, genererà un'eccezione e interromperà i test se vengono rilevate delle violazioni. Il secondo, isAuditedForAccessibility, non interromperà i test né genererà un'eccezione, indipendentemente dal livello di accessibilità della pagina scansionata.

Scrittura di test

Negli esempi rimanenti, per brevità viene mostrato il metodo isAxeClean, ma entrambi i metodi funzionano in modo intercambiabile. Una volta istanziati e inizializzati gli oggetti WebDriver e AxeDriver, creare una scansione è semplice quanto aggiungere queste due righe di codice a un metodo di test. Sostituisci $URL con l'URL desiderato della pagina che vuoi scansionare.

webDriver.get("$URL");
assertThat(axedriver, isAxeClean());

Quando si testano più pagine, è possibile ripetere il processo di acquisizione e scansione senza dover creare nuove istanze dei driver. Per analizzare diversi stati di una pagina, è possibile manipolare la pagina utilizzando l'API Webdriver e quindi eseguire una nuova scansione.

Riferimento aggiuntivo

Sono disponibili diversi metodi di concatenamento per modificare il modo in cui la pagina viene scansionata. Questi metodi includono clausole di esclusione/inclusione o definizione dell'ambito e modifiche degli standard di accessibilità, delle regole di accessibilità e dei set di regole di accessibilità. Per brevità, tutti i metodi a catena sono associati a isAxeClean(), ma sono intercambiabili con isAuditedForAccessibility().

Standard di accessibilità

Deque offre un metodo a catena, secondo il quale può specificare direttamente quali standard di test di accessibilità vengono utilizzati da una scansione.

Nome del tag Standard di accessibilità
wcag2a WCAG 2.0 Livello A
wcag2aa WCAG 2.0 Livello AA
wcag2aaa WCAG 2.0 Livello AAA
wcag21a WCAG 2.1 Livello A
wcag21aa WCAG 2.1 Livello AA
wcag21aaa WCAG 2.0 Livello AAA
wcag22a WCAG 2.2 Livello A
wcag22aa WCAG 2.2 Livello AA
wcag22aaa WCAG 2.2 Livello AAA
section508 Sezione 508
EN-301-549 EN 301 549
TTv5 Trusted Tester v5
best-practice Le migliori pratiche approvate da Deque

Se non sei sicuro di quale standard sia adatto a te, leggi la documentazione di axe-core per sapere quali regole sono associate a quale standard, oppure contattaci tramite il tuo rappresentante Deque o il nostro help desk. Per un elenco completo delle regole applicabili a ciascun standard, consultare questa pagina su Descrizioni delle regole

Per utilizzare un singolo standard, basta aggiungere il metodo della catena corrispondente e passare lo standard desiderato

assertThat(axedriver, isAxeClean().accordingTo("wcag2a"));

Oltre all'utilizzo di uno standard di test, esistono due modi per effettuare la scansione rispetto a due o più standard di test. Entrambi funzionano in modo identico.

assertThat(axedriver, isAxeClean().accordingTo("wcag2a", "section508"));
assertThat(axedriver, isAxeClean().accordingTo("wcag2a").accordingTo("section508"));

Ambito di applicazione

Deque offre due metodi incatenati per facilitare la definizione dell'ambito delle scansioni. Il metodo within() modifica la scansione in modo che analizzi solo la pagina compresa nei limiti del selettore passato. Il metodo escludendo() funziona al contrario. Modifica la scansione per ignorare il contenuto all'interno del selettore che gli è stato passato. Gli esempi seguenti mostrano tutti il metodo within(), ma il metodo escludendo() funziona in modo identico.

Più semplicemente, l'asserzione viene modificata con un selettore

assertThat(axedriver, isAxeClean().within("#selector1")); 

Sono possibili anche selettori composti. Nell'esempio seguente, vengono scansionati solo gli elementi con selettore 2 all'interno del selettore 1

assertThat(axedriver, isAxeClean().within("#selector1 .selector2"));

Esistono tre modi per effettuare una selezione multipla, ovvero selezionare più ambiti in cui effettuare il test. In tutti questi esempi, gli elementi all'interno del selettore 1 ** e selettore 2** .

assertThat(axedriver, isAxeClean().within("#selector1, .selector2"));
assertThat(axedriver, isAxeClean().within("#selector1", ".selector2"));
assertThat(axedriver, isAxeClean().within("#selector1").within(".selector2"));

Per definire l'ambito all'interno di un IFrame, è necessario dichiarare un selettore IFrame. L'ambito da scansionare all'interno dell'IFrame viene passato come parametro aggiuntivo.

assertThat(axedriver, isAxeClean().within(new IFrameSelector("#frame1", "#selector1")));

L'ambito all'interno di più IFrame funziona allo stesso modo della selezione multipla standard. Basta creare due o più selettori IFrame separati da virgole.

assertThat(axedriver, isAxeClean().within(new IFrameSelector("#frame1", "selector1"), 
        new IFrameSelector("#frame2", "#selector2")));

È anche possibile definire l'ambito all'interno di IFrame nidificati. Questo esempio mostra come definire l'ambito di una scansione all'interno del selettore 1 di un IFrame che si trova all'interno di un secondo IFrame.

assertThat(axedriver, isAxeClean().within(
    new IFrameSelector("#frame1",
    new IFrameSelector("#frame2", "#selector1"))));

Infine, è possibile impostare più ambiti sia all'interno di una pagina che all'interno di un IFrame. Affinché ciò funzioni, è necessario un oggetto selettore di elementi.

assertThat(axedriver, isAxeClean().within(
    new ElementSelector("#selector1"),
    new ElementSelector("#selector2"),
    new IFrameSelector("#frame", "selector3")));

Selezione delle regole

L'API offre anche la possibilità di modificare le regole utilizzate in una scansione. Esistono tre modi per modificare le regole utilizzate. Questi includono il controllo di regole aggiuntive al di fuori del set di regole standard, l'omissione del controllo delle regole all'interno del set standard e il controllo solo delle regole specificate esplicitamente.

Per un elenco completo dei tag di regole validi che puoi utilizzare con questi metodi e per cosa testano, leggi la documentazione sulle regole

Per verificare ulteriori regole, usa il metodo di controllo. Per testare una singola regola aggiuntiva, basta passare l'etichetta della regola al metodo di controllo

assertThat(axedriver, isAxeClean().checking("label"));

Similmente agli altri metodi a catena, puoi verificare più regole aggiuntive con il metodo di controllo in due modi:

assertThat(axedriver, isAxeClean().checking("label", "tabindex"));
assertThat(axedriver, isAxeClean().checking("label").checking("tabindex"));

Il metodo di controllo può essere concatenato anche con un metodo di selezione delle regole.

assertThat(axedriver, isAxeClean().accordingTo("wcag2a").checking("tabindex"));

Anche esiste l'opzione di omettere regole da una scansione. Ciò è possibile tramite il metodo di salto. Funziona in modo identico al metodo di controllo, con la differenza che esclude le regole anziché aggiungerle.

assertThat(axedriver, isAxeClean().skipping("label"));

Può essere utilizzato anche per omettere più regole.

assertThat(axedriver, isAxeClean().skipping("label", "tabindex"));
assertThat(axedriver, isAxeClean().skipping("label").skipping("tabindex));

Infine, può essere utilizzato anche con un metodo per la selezione delle regole.

assertThat(axedriver, isAxeClean().accordingTo("wcag2a").skipping("#label"));

L'ultimo metodo viene utilizzato quando si desiderano solo regole specifiche. Il metodo di verifica solo modifica la scansione per controllare solo le regole esplicitamente passate. Inoltre, questo metodo non può concatenare con il metodo di selezione degli standard di accessibilità. Per controllare solo una regola:

assertThat(axedriver, isAxeClean().checkingOnly("label"));

Questo metodo può essere utilizzato anche per controllare più regole in due modi.

assertThat(axedriver, isAxeClean().checkingOnly("label", "tabindex"));
assertThat(axedriver, isAxeClean().checkingOnly("label").checkingOnly("tabindex"));

Per un elenco completo dei tag di regole validi che puoi utilizzare con questi metodi e per i test che eseguono, leggi la documentazione sulle regole.

Ignorare le violazioni

È possibile configurare la scansione in modo da ignorare specifici casi di violazione. Per fare ciò si utilizza il metodo per ignorare. Funziona passando i selettori degli elementi che si desidera ignorare come un array, insieme alla regola che violano.

assertThat(axedriver, isAxeClean().ignoring("[\".sidebar\", \"#branded-content\"]", "color-contrast"));

Servizio di utilizzo

Ottieni informazioni sulle tendenze di utilizzo di axe DevTools all'interno della tua organizzazione

Per impostazione predefinita, il servizio di utilizzo è disabilitato e l'URL predefinito è https://usage.deque.com.

Variabili ambientali

Questo metodo consente agli utenti di modificare valori specifici del servizio di utilizzo tramite variabili di ambiente

Variabile d'ambiente Tipo Descrizione
AXE_IS_LOGGED_IN Booleano Se l'utente ha effettuato l'accesso all'app in fase di test
AXE_KEYCLOAK_ID String L'ID keycloak dell'utente loggato
AXE_USER_ID String Il nome dell'utente che esegue il test
AXE_SESSIONE_ID String Descrizione della sessione di test
AXE_STATO_UTENTE String Lo stato dell'utente
AXE_RUOLO_LAVORO_UTENTE String Il titolo/ruolo dell'individuo che esegue il test
AXE_DISTINTO_ID String ID univoco di un singolo utente
AXE_ISTANZA_IS_DEV Booleano Se l'app in fase di test si trova in un'istanza di sviluppo
AXE_ORGANIZATION String L'organizzazione dell'utente - gestione dei dati su scala aziendale
AXE_APPLICATION String Il nome dell'applicazione in fase di test
AXE_METRICS_URL String L'URL a cui vengono inviati i dati di utilizzo
AXE_TRACCIA_USO Booleano Se i dati di utilizzo vengono acquisiti o meno

Prossimi passi

Per un ulteriore utilizzo dei risultati della scansione di axe DevTools, come la creazione di report, consultare la documentazione del pacchetto Java Selenium di axe DevTools

Risoluzione dei problemi

Se riscontri problemi durante la configurazione dei test di accessibilità, contatta direttamente il tuo rappresentante Deque, contattaci tramite il nostro support desk oppure inviaci un'e-mail. Saremo lieti di aiutarti a far partire i tuoi sforzi di test di accessibilità.