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, è necessario passare un'istanza di un Puppeteer Frame o Page. Questo è l'obiettivo 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 standard

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 passarle una pagina precaricata, passi un Browser oggetto e URL. Chiude automaticamente la pagina dopo che analyze viene 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 esistente analyze() rimane invariato.

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

Scoping

Esistono due opzioni per delimitare le scansioni del tuo Axe DevTools: include e exclude. Questi delimitano le scansioni ai selettori CSS specificati e possono essere concatenati insieme. Entrambi utilizzano singoli selettori CSS o array di selettori CSS, in modo da poter 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 controllare singoli casi di pagine componentizzate o per limitare i risultati allo sviluppo corrente.

L'esempio seguente mostra che il campo è 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 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 .

La chiamata di esempio seguente mostra l'ambito che esclude gli elementi con la classe h2 : results-panel .

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

Configurazione delle Regole

conRegole

.withRules(rules: string | string[])

Questo metodo limita l'analisi all'ID della regola specificata o agli ID delle regole specificate. Per un elenco completo delle regole e delle loro descrizioni, visita la documentazione delle regole 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 withTags metodo limita la scansione alle regole associate al tag o ai tag specificati. Un elenco completo dei tag del set di regole può essere trovato nella 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'attuale elenco di regole da utilizzare. Le regole sono specificate tramite il loro ID. Le chiamate successive a questo metodo sovrascriveranno le chiamate precedenti. Un elenco completo degli ID delle regole e le loro descrizioni possono essere trovati nella 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 options metodo specifica le opzioni da utilizzare da axe.run. Sovrascriverà qualsiasi altra opzione configurata, incluse le chiamate a withRules e withTags. Vedi la documentazione API di axe-core per informazioni.

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

configura

.configure(config: Axe.Spec)

Il configure metodo inietta un oggetto di configurazione axe per modificare il set di regole prima di un'analisi. Le chiamate successive a questo metodo invalideranno le precedenti richiamando 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 è disabilitato e l'URL predefinito è https://usage.deque.com.

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)
AXE_METRICS_URL Stringa L'URL del punto di accesso REST per l'utilizzo
AXE_TRACK_USAGE Booleano Abilita il report del servizio di utilizzo (il valore predefinito è false)
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
AXE_SESSION_ID Stringa falso Un UUID che identifica la sessione dell'utente
AXE_USER_ID Stringa falso Un'identità specifica dell'utente come nome o ID di accesso
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 enableTracking() metodo consente agli utenti di scegliere di inviare dati al servizio di utilizzo.

.enableTracking(state: boolean)

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

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

impostaUrlMonitoraggio

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

.setTrackingUrl(url: string)

Questo esempio mostra il setTrackingUrl() metodo con il analyze() metodo e registra l' results oggetto 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 setDistinctId metodo con il analyse metodo e registra l'oggetto dei risultati nella console:

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