Riferimento API Puppeteer per Axe DevTools per il Web

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

Riferimento per le API nel pacchetto @axe-devtools/puppeteer

Not for use with personal data

Costruttori

Ci sono due costruttori per Axe DevTools Puppeteer. Questo è il costruttore standard:

AxeDevToolsPuppeteer(page: Frame | Page, options?: IOptions)

Per il primo argomento, devi passare un'istanza di un Puppeteer Frame o Page. Questo è il target della scansione. Il secondo argomento è un oggetto opzionale che può contenere una delle seguenti due proprietà:

  1. axeSource (opzionale): una stringa di codice sorgente axe-core
  2. rulesetID (opzionale): un ID di set di regole predefinite

Per utilizzare una versione specifica di axe-core (diversa da quella inclusa come standard con la tua versione di Axe DevTools per il Web), puoi passare un file sorgente axe-core come argomento. Innanzitutto, crea un oggetto sorgente axe leggendo il file axe-core dal filesystem. Quindi, passa la tua istanza di Axe DevTools all'oggetto sorgente axe:

const axeSource = fs.readFileSync('./axe-3.0.js', 'utf8');
const builder = new AxeDevToolsPuppeteer(page, { axeSource });

Se desideri utilizzare un set di regole predefinito diverso da quello standard, puoi passare il rulesetID alla tua istanza di Axe DevTools:

const builder = new AxeDevToolsPuppeteer(page, { rulesetID: 'wcag2' });

Un costruttore alternativo può aprire una pagina ed eseguire il bypass CSP per te. Invece di passargli una pagina pre-caricata, passi un oggetto Browser e un URL. Chiude automaticamente la pagina dopo che analyze è stato chiamato. Inoltre, esegue automaticamente il bypass CSP. Questo è il suo costruttore:

loadPage(browser: Browser, url: string, options?: IOptions)

Questo costruttore include le stesse opzioni per fonti alternative axe-core o set di regole, e questi argomenti vengono passati nello stesso modo descritto sopra. Ecco un file di esempio che utilizza il costruttore alternativo, che registra i risultati della scansione nella console:

const puppeteer = require('puppeteer');
const { AxeDevToolsPuppeteer } = require('@axe-devtools/puppeteer');

(async () => {
    //launch puppeteer web driver
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    //launch page for testing
    await page.goto('https://broken-workshop.dequelabs.com');

    //analyze page
    const results = await new AxeDevToolsPuppeteer(page).analyze();
    //log results to console
    console.log(results);

    //close browser
    browser.close();
})();

analizzare

.analyze([callback: (Error | null[, Object]) => void])

Questo metodo esegue un'analisi e passa eventuali errori riscontrati e/o l'oggetto dei risultati alla funzione di callback o di promessa fornita. Tieni presente che non si concatena perché la sua operazione è asincrona.

Il seguente esempio utilizza la promessa restituita e registra l'oggetto dei risultati nella console:

new AxeDevToolsPuppeteer(page)
  .analyze()
  .then(function(results) {
    console.log(results);
  })
  .catch(err => {
    // Handle error somehow
  });

Questo esempio mostra il metodo analyse() con una funzione di callback:

new AxeDevToolsPuppeteer(page).analyze(function(err, results) {
  if (err) {
    // Handle error somehow
  }
  console.log(results);
});

analizzareUniversale

.analyzeUniversal(): Promise<UniversalExport>

Esegue un'analisi e restituisce i risultati nel Formato Universale Axe. Il metodo analyze() esistente rimane invariato.

new AxeDevToolsPuppeteer(page)
  .analyzeUniversal()
  .then(function(results) {
    console.log(results);
  })
  .catch(err => {
    // Handle error somehow
  });

Scoping

Esistono due opzioni per delimitare le tue scansioni Axe DevTools: include e exclude. Delimitano le scansioni ai selettori CSS specificati e possono essere concatenati. Usano entrambi selettori CSS singoli o array di selettori CSS, quindi puoi personalizzare completamente la tua scansione.

includere

.include(selector: string | string[])

Con il metodo a catena include, verranno scansionati solo gli elementi selezionati dal selettore CSS o dall'array di selettori CSS. Questo è utile per verificare singole istanze di pagine componentizzate o limitare i risultati allo sviluppo attuale.

L'esempio seguente mostra che l'ambito è limitato agli elementi all'interno della classe results-panel:

new AxeDevToolsPuppeteer(page).include('.results-panel');

escludere

.exclude(selector: string | string[])

Il metodo a catena exclude rimuove gli elementi selezionati da un selettore CSS o da un array di selettori CSS dalla pagina da scansionare. Come il metodo include, possono essere passati selettori singoli o un array di selettori. Questo metodo può anche essere concatenato con il metodo include.

L'esempio seguente mostra l'ambito escludendo gli elementi h2 con la classe results-panel:

new AxeDevToolsPuppeteer(page).include('.results-panel h2');

Configurazione delle Regole

conRegole

.withRules(rules: string | string[])

Questo metodo limita l'analisi all'ID di regola specificato o agli ID di regole specificati. Per un elenco completo delle regole e delle loro descrizioni, visita il documentazione delle regole di axe-core.

Nel seguente esempio, verranno testate solo le regole html-lang e image-alt:

new AxeDevToolsPuppeteer(page).withRules(['html-lang', 'image-alt']);

conTags

.withTags(tags: string | string[])

Il metodo withTags limita la scansione alle regole associate al tag o ai tag specificati. Un elenco completo dei tag del set di regole può essere trovato nel documentazione di axe-core.

Il seguente esempio testa solo le regole WCAG 2.0 Livello A:

new AxeDevToolsPuppeteer(page).withTags('wcag2a');

disabilitaRegole

.disableRules(rules: string | string[])

Questo metodo rimuove una regola specifica o un array di regole dall'elenco corrente delle regole da usare. Le regole sono specificate dal loro ID di regola. Le chiamate successive a questo metodo sovrascriveranno le chiamate precedenti. Un elenco completo degli ID di regola e delle loro descrizioni può essere trovato nel documentazione delle regole di axe-core.

Il seguente esempio disabilita la verifica del contrasto dei colori.

new AxeDevToolsPuppeteer(page).disableRules('color-contrast');

Inoltre, disableRules può essere concatenato con altri metodi di configurazione delle regole per modificare i set di regole configurati dall'utente.

Nel seguente esempio, il set di regole è modificato per utilizzare solo le regole WCAG 2.0 A e AA, quindi rimuove la regola di verifica del contrasto dei colori:

new AxeDevToolsPuppeteer(page)
  .withTags(['wcag2a', 'wcag2aa'])
  .disableRules('color-contrast');

opzioni axe-core

opzioni

.options(options: Axe.RunOptions)

Il metodo options specifica le opzioni da utilizzare da axe.run. Sovrascriverà qualsiasi altra opzione configurata, incluse le chiamate a withRules e withTags. Vedi il documentazione API di axe-core per informazioni.

new AxeDevToolsPuppeteer(page).options({
  checks: { 'valid-lang': ['orcish'] }
});

configura

.configure(config: Axe.Spec)

Il metodo configure inietta un oggetto di configurazione di axe per modificare il set di regole prima di un'analisi. Le chiamate successive a questo metodo invalideranno quelle precedenti chiamando axe.configure() e sostituendo l'oggetto di configurazione. Vedi documentazione API di axe-core per la struttura dell'oggetto.

Il seguente esempio crea una nuova configurazione di axe-core e la passa a Axe DevTools per essere utilizzata nella scansione:

const config = {
  checks: [Object],
  rules: [Object]
};
const results = await new AxeDevToolsPuppeteer(page).configure(config).analyze();

Servizio di utilizzo

Per impostazione predefinita, il servizio di utilizzo è abilitato e l'URL predefinito è https://usage.deque.com. Imposta la variabile d'ambiente AXE_TRACK_USAGE su false per disabilitarlo.

Variabili d'ambiente

Queste variabili d'ambiente consentono di configurare il servizio di utilizzo e modificare le proprietà degli eventi segnalati.

Nome Tipo Può Sovrascrivere Descrizione
AXE_DISTINCT_ID Stringa Un identificatore UUID che rimane lo stesso per l'utente connesso (a meno che non venga rigenerato). In Ruby, questa variabile è denominata DEQUE_DISTINCT_ID.
AXE_INCLUDE_TEST_RESULTS Booleano Imposta su true per includere i risultati completi di axe-core nell'oggetto testResults di ogni evento (predefinito è false). Supportato solo dalla CLI e dalle API di Node.js.
AXE_METRICS_URL Stringa L'URL dell'endpoint di utilizzo REST (predefinito è https://usage.deque.com)
AXE_TRACK_USAGE Booleano Imposta su false per disabilitare il servizio di reporting sull'utilizzo. Il reporting è abilitato per impostazione predefinita.
AXE_APPLICATION Stringa falso L'applicazione utilizzata per controllare gli errori di accessibilità
AXE_DEV_INSTANCE Booleano vero Indica se questo evento è dovuto ad azioni di uno sviluppatore software. Utile per marcare e successivamente rimuovere eventi registrati durante lo sviluppo o i test.
AXE_DEPARTMENT Stringa vero Il dipartimento utente all'interno dell'organizzazione
AXE_KEYCLOAK_ID Stringa falso L'ID Keycloak dell'utente
AXE_LOGGED_IN Booleano falso Registra se l'utente è connesso all'applicazione in test
AXE_ORGANIZATION Stringa vero L'organizzazione dell'utente. Per fare sì che il tuo utilizzo appaia nei Rapporti Axe, imposta questo valore sull'ID della tua organizzazione (contatta Deque per ottenerlo).
AXE_SESSION_ID Stringa falso Un UUID che identifica la sessione dell'utente
AXE_USER_ID Stringa falso L'identità di un utente specifico come un indirizzo email, un nome o un ID di accesso. I Rapporti Axe contano gli utenti unici a partire da questo valore.
AXE_USER_JOB_ROLE Stringa falso Il ruolo lavorativo dell'utente
AXE_USER_STATUS Stringa falso Informazioni sullo stato che si desidera associare all'utente

abilitaMonitoraggio

Il metodo enableTracking() consente agli utenti di scegliere se inviare o meno i dati al servizio di utilizzo. L'invio è abilitato per impostazione predefinita.

.enableTracking(state: boolean)

Questo esempio mostra il metodo enableTracking associato al metodo analyze, che registra l'oggetto results nella console:

new AxeDevToolsPuppeteer(page)
  .enableTracking(true)
  .analyze()
  .then(function(results) {
    console.log(results)
  })

impostaUrlMonitoraggio

Il metodo setTrackingUrl() consente agli utenti di cambiare dove vengono inviati i dati sulle metriche di utilizzo.

.setTrackingUrl(url: string)

Questo esempio mostra il metodo setTrackingUrl() con il metodo analyze() e registra l'oggetto results nella console:

new AxeDevToolsPuppeteer(page)
  .enableTracking(true)
  .setTrackingUrl('https://foobar.biz')
  .analyze()
  .then(function(results) {
    console.log(results)
  })

impostaIdDistinto

Questo metodo consente agli utenti di modificare l'id distinto che viene memorizzato o utilizzato.

.setDistinctId(distinctId: string)

Questo esempio mostra il metodo setDistinctId con il metodo analyse e registra l'oggetto dei risultati nella console:

new AxeDevToolsPuppeteer(page)
  .enableTracking(true)
  .setDistinctId('foobar')
  .analyze()
  .then(function(results) {
    console.log(results)
  })