Riferimento API
Riferimento API per il pacchetto @axe-core/watcher
Questa guida di riferimento descrive le API fornite dal pacchetto (chiamato anche axe Watcher o semplicemente Watcher). @axe-core/watcher ** **
AxeConfiguration Interfaccia
La proprietà (un parametro passato alle [funzioni di configurazione]) è il mezzo usuale per modificare il tuo axe Watcher per configurare i test di accessibilità. axe (#configuration-functions) AxeConfiguration Le seguenti proprietà sono contenute in AxeConfiguration:
| Nome | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
apiKey |
string |
Sì | La chiave API segreta del tuo progetto. |
autoAnalyze |
boolean |
No | Se Watcher eseguirà automaticamente un'analisi di accessibilità sulla tua pagina. Il valore predefinito è true. |
buildID |
string |
No | Il valore predefinito è null, consigliato per esecuzioni di test a processo singolo (non parallelizzate). Per l'esecuzione dei test in parallelo, tutti i worker devono avere la stessa stringa non nulla. buildID |
configurationOverrides |
ConfigurationOverrides |
No | Consente di sovrascrivere le impostazioni di configurazione globali. |
excludeUrlPatterns |
string[] |
no | Esclude dalla scansione gli URL che corrispondono ai modelli minimatch specificati. |
runContext |
axe.ElementContext |
No | Passato a axe-core. |
runOptions |
RunOptions |
No | Passato a axe-core. |
serverURL |
string |
No | Il server Developer Hub per inviare i risultati. È improbabile che sia necessario modificare questo valore. |
sessionId |
string |
No | Obsoleto. ID di sessione di questa istanza. È improbabile che sia necessario modificare questo valore. Vedi invece buildId . |
scadenza |
Timeouts |
No | Un oggetto Timeouts che rappresenta i millisecondi che mancano al timeout e al fallimento dei metodi del Controller specificati. |
apiKey
Il apiKey valore è l'unica proprietà che deve essere impostata nel tuo AxeConfiguration. Puoi ottenerne il valore dalla pagina Progetti. Per ulteriori informazioni, vedere Gestione progetti .
autoAnalyze
Impostare questo valore su false per impedire l'analisi automatica delle pagine. Per ulteriori informazioni sulla modalità manuale, vedere Controllo del momento in cui si verifica l'analisi della pagina.
buildID
La proprietà opzionale buildID , quando non null, consente ai runner di test paralleli di generare risultati che vengono visualizzati come un'unica esecuzione di test in axe Developer Hub. Nel caso di esecuzioni di test parallele, ogni runner di test dovrebbe condividere la stessa stringa non nulla buildID , il che fa sì che ogni esecuzione di test concateni i suoi risultati con i risultati esistenti per lo stesso buildID e con l'SHA del commit Git. Tuttavia, quando buildID è null, più esecuzioni di test sovrascrivono i risultati esistenti che hanno lo stesso SHA di commit Git.
Di solito è possibile ottenere un valore utilizzabile dal proprio fornitore di integrazione continua. buildID Ad esempio, puoi utilizzare questi valori:
-
github.run_idDisponibile nei flussi di lavoro di GitHub. Per maggiori informazioni, consultare github context nella documentazione di GitHub.
-
CIRCLE_PIPELINE_IDCon CircleCI, il valore sopra indicato è disponibile nell'ambiente del processo. Per ulteriori informazioni, vedere Variabili di ambiente integrate nella documentazione di CircleCI.
Altre variabili d'ambiente di integrazione continua che puoi utilizzare per
buildID:
configurationOverrides
(Facoltativo) Sostituisce i valori impostati nella configurazione globale. Per ulteriori informazioni, consultare l'interfaccia ConfigurationOverrides.
excludeUrlPatterns
(Facoltativo) Impedisce l'analisi di qualsiasi URL che corrisponda a uno qualsiasi dei modelli minimatch nell'array excludeUrlPatterns .
axe: {
excludeUrlPatterns: [ 'https://*.example.com/**', 'https://example.org/**' ]
}Per far corrispondere gli URL, è necessario iniziare il pattern con http:// o https:// o asterisco barra (*/). Per alcuni esempi, vedere la tabella seguente.
Esempi
| URL | Pattern | Corrispondenze? |
|---|---|---|
https://example.com/index.html |
example.com |
Falso |
https://example.com/index.html |
https://*mple.com/index.html |
Vero |
https://example.com/index.html |
https://example.com |
Falso |
https://example.com/index.html |
https://*.example.com |
Falso |
https://example.com/index.html |
https://*.example.com/** |
Falso |
https://example.com/index.html |
https://*example.com/** |
Vero |
https://example.com/index.html |
https://** |
Vero |
https://example.com/index.html |
https://* |
Falso |
https://example.com/index.html |
** |
Vero |
https://example.com/index.html |
*example.com/index.html |
Falso |
https://example.com/index.html |
*example.com/** |
Falso |
https://example.com/index.html |
*/example.com/** |
Vero |
https://example.com/index.html |
htt*/** |
Vero |
https://example.com/index.html |
h*/example.com/** |
Vero |
https://test.example.com/index.html |
https://*example.com/** |
Vero |
https://test.example.com/index.html |
https://*.example.com/** |
Vero |
runContext
(Facoltativo) Consente di scegliere quali elementi includere ed escludere dall'analisi di accessibilità della pagina.
Quando utilizzi runContext per selezionare gli elementi da includere nell'analisi (tramite un singolo selettore CSS, un array di selettori CSS o utilizzando la proprietà include ), axe Developer Hub analizza solo gli elementi selezionati dai selettori CSS. Pertanto, se non viene selezionato alcun elemento (ad esempio a causa di un errore di ortografia in un selettore di classe CSS), non verrà analizzato nulla e, cosa ancora più importante, non verrà catturato alcun stato della pagina.
Il valore di runContext può essere:
-
Un singolo selettore CSS per gli elementi da includere nell'analisi:
axe: { runContext: '.main' } -
Un array di selettori CSS per gli elementi da includere nell'analisi:
axe: { runContext: [ '.main', '.text-block' ] } -
Un oggetto di contesto contenente
includeeexcludeproprietà (come mostrato nell'esempio precedente). Puoi specificareincludeoexcludeo entrambi. Ciascunoincludeoexcludepuò essere un singolo selettore CSS o un array di selettori CSS:axe: { runContext: { include: '.main', exclude: '.ad-section' } }
Ulteriori dettagli sono disponibili nella documentazione di contesto axe-core.
runOptions
(Facoltativo) L'oggetto runOptions consente il seguente sottoinsieme di proprietà del tipo axe-core Options :
-
ancestry: Il valore predefinito èfalse. Setrue, i selettori CSS restituiti includono gli elementi antenati degli elementi restituiti.importantSe la tua pagina utilizza ID o classi dinamiche (ID o classi di elementi che cambiano ogni volta che la pagina viene ricaricata), devi specificare questo
ancestrycometruein modo che axe Developer Hub possa rilevare e monitorare correttamente se i problemi di accessibilità sono duplicati , poiché per impostazione predefinita axe Developer Hub si aspetta che gli ID e le classi degli elementi rimangano gli stessi tra un'esecuzione e l'altra dei test.Quando
ancestryètrue, axe Developer Hub utilizza invece la posizione dell'elemento all'interno dell'albero DOM per individuare lo stesso elemento tra le esecuzioni dei test.Di seguito è mostrato un esempio di un selettore quando
ancestryèfalseper un elemento iframe con ID di main-iframe (<iframe id="main-iframe" ...>):iframe#main-iframeSe
ancestryètrue, il selettore includerebbe l'intero percorso dall'elemento radice e non ci sarebbero ID o classi specificati:html > body > div:nth-child(20) > div:nth-child(1) > div > div > ul > li:nth-child(1) > div > span > iframe -
runOnly: consente di limitare le regole da eseguire specificando nomi o tag. Per ulteriori informazioni, vedererunOnlydi seguito. -
rules: Abilita o disabilita le regole utilizzando laenabledproprietà. Per maggiori informazioni, consultare leregoleseguenti.
Di seguito è riportato un esempio di runOptions:
axe: {
runOptions: {
ancestry: true,
runOnly: {
type: 'tag',
values: 'wcag2a'
},
rules: {
'ruleId1': { enabled: false },
'ruleId2': { enabled: false }
}
}
}runOnly
L'utilizzo di runOnly è considerato un utilizzo avanzato e se utilizzi runOnly, riceverai un avviso(dh-global-configuration#using-runoptionsrunonly).
Non è possibile utilizzare sia runOptions.runOnly che configurationOverrides. Altrimenti riceverai un errore.
Il valore (parte dell'oggetto [runOptions] runOnly ) può essere uno dei seguenti:(#runoptions)
-
Una stringa che rappresenta l'ID della regola che desideri utilizzare per l'analisi dell'accessibilità:
axe: { runOptions: { runOnly: 'ruleId' } } -
Un array di stringhe che rappresentano gli ID delle regole che desideri utilizzare:
axe: { runOptions: { runOnly: [ 'ruleId1', 'ruleId2' ] } } -
Un oggetto con
typeevaluesproprietà. Il valoretypeè una stringa che può essere regola, regola, tag o tags. La proprietàvaluespuò essere una stringa o un array di stringhe che rappresentano la regola o i tag che desideri utilizzare per l'analisi dell'accessibilità. L'esempio seguente mostra come utilizzare l'oggettorunOnlyper limitare i test di accessibilità alle regole contrassegnate come wcag2a:axe: { runOptions: { runOnly: { type: 'tag', values: 'wcag2a' } } }
- Per ulteriori esempi di utilizzo (con axe-core), vedere [Esempi di parametri delle opzioni]
runOnly(https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter-examples) - Per maggiori informazioni sui valori dei tag disponibili, vedere Tag axe-core.
- Per informazioni sulle regole, gli ID delle regole e i tag, vedere Descrizioni delle regole
rules
Il rules valore (sull' runOptions oggetto) consente di abilitare (enabled: true) o disabilitare (enabled: false) regole specifiche durante l'analisi, come mostrato di seguito:
axe: {
runOptions: {
rules: {
'ruleId1': { enabled: false },
'ruleId2': { enabled: false }
}
}
}sessionId
La sessionId proprietà è stata deprecata e non dovrebbe essere utilizzata. Vedere buildID sopra.
timeout
L' timeout oggetto (di tipo Timeouts) in AxeConfiguration imposta i valori di timeout in millisecondi per i rispettivi metodi del controller (o comandi personalizzati per Cypress). (Vedere Classi controller per informazioni sulle classi controller e Comandi personalizzati Cypress per informazioni sui comandi personalizzati Cypress.) Allo scadere del timeout, il test fallisce e viene visualizzato un messaggio che indica che il timeout è stato superato. Per evitare l'errore è possibile aumentare il timeout.
Questi valori di timeout sono indipendenti dal framework di test utilizzato e potrebbe essere necessario aumentare i valori di timeout anche per quel framework.
In questo esempio il timeout viene impostato su analyze 8 secondi, flush 15 secondi, start 10 secondi e stop 10 secondi. (I valori predefiniti sono mostrati nella tabella sotto Interfaccia Timeouts.)
axe: {
timeout: {
analyze: 8000
flush: 15000,
start: 10000,
stop: 10000,
}
}Classi del controller
Funzioni di configurazione
Le funzioni di configurazione fornite da Watcher consentono di modificare la configurazione per il framework di test specificato e di adattare il modo in cui si desidera eseguire Watcher in base alle proprie esigenze. Per ulteriori informazioni, vedere Interfaccia AxeConfiguration .
| Framework di test | Funzione di configurazione |
|---|---|
| Cypress | cypressConfig |
| Playwright | playwrightConfig |
| Playwright Test | playwrightTest |
| Puppeteer | puppeteerConfig |
| WebdriverIO | wdioConfig |
| WebdriverIO Testrunner | wdioTestRunner |
| WebDriverJS | webdriverConfig |
cypressConfig
Crea una configurazione per Cypress.
cypressConfig(config: Cypress.ConfigOptions & Configuration): Cypress.ConfigOptionscypressConfig Parametri
-
config:Cypress.ConfigOptions & ConfigurationTipo di intersezione di
Cypress.ConfigOptionseConfigurazione.
Restituisce: Cypress.ConfigOptions
playwrightConfig
Crea una configurazione per Playwright.
playwrightConfig(opts: Configuration & LaunchOptions): LaunchOptionsplaywrightConfig Parametri
-
opts:Configuration & LaunchOptionsTipo di intersezione di
LaunchOptionseConfigurazione.
Restituisce: LaunchOptions
playwrightTest
Crea una configurazione per Playwright Test.
playwrightTest(options: Options): ReturnValueplaywrightTest Parametri
-
options:OptionsOptionsè un tipo di intersezione diConfigurazioneeLaunchOptions.
Restituisce: ReturnValue
puppeteerConfig
Crea una configurazione per Puppeteer.
puppeteerConfig(opts: Configuration & LaunchOptions & BrowserLaunchArgumentOptions & BrowserConnectOptions): OptionspuppeteerConfig Parametri
-
opts:Configuration & LaunchOptions & BrowserLaunchArgumentOptions & BrowserConnectOptionsTipo di intersezione di
LaunchOptions,BrowserLaunchArgumentOptions,BrowserConnectOptionseConfigurazione.
Restituisce: Options
wdioConfig
Crea una configurazione WebdriverIO.
wdioConfig({ axe, ...options}: Options): RemoteOptionswdioConfig Parametri
-
arg:OptionsOptionsè un tipo di intersezione diRemoteOptionseConfigurazione.
Restituisce: RemoteOptions
wdioTestRunner
Crea una configurazione WebdriverIO Testrunner.
wdioTestRunner(...params: unknown[]): Options.TestrunnerwdioTestRunner Parametri
-
params:sconosciuto[]Il valore
paramsè uno dei seguenti:- Un array contenente un valore, che è un tipo di intersezione di
Options.TestrunnereConfiguration. - Un array in cui il primo valore è un
AxeConfiguratione il secondo valore è unOptions.Testrunner.
- Un array contenente un valore, che è un tipo di intersezione di
Restituisce: Options.Testrunner
webdriverConfig
Crea una configurazione Selenium WebDriver.
webdriverConfig(arg: WebDriverArgs): OptionswebdriverConfig Parametri
-
arg:WebDriverArgsUna
Configurazioneestesa per includere un membro Selenium WebDriverOptions.
Restituisce: Options
Configuration Interfaccia
L' Configuration interfaccia viene utilizzata con le funzioni di configurazione e contiene una proprietà:
| Nome | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
axe |
AxeConfiguration |
Sì | AxeConfiguration L'oggettoda passare alla funzione di configurazione del framework di test. |
Tutte le funzioni di configurazione utilizzano questa axe proprietà per consentirti di impostare Watcher e configurare i test di accessibilità. Per ulteriori informazioni, consultare la sezione successiva, Interfaccia AxeConfiguration.
ConfigurationOverrides Interfaccia
L'interfaccia consente di ignorare le impostazioni di configurazione globali dell'organizzazione per le singole esecuzioni dei test. ConfigurationOverrides Questa proprietà deve essere utilizzata in conformità con le autorizzazioni impostate nella configurazione globale della tua azienda.
| Nome | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
standard di accessibilità |
string |
No | Lo standard di accessibilità da seguire |
axeCoreVersion |
string |
No | Indica quale versione di axe-core deve essere utilizzata. |
migliori pratiche |
boolean |
No | Specifica se seguire le regole delle best practices. |
regole sperimentali |
boolean |
No | Se seguire le regole sperimentali |
accessibilityStandard
Imposta lo standard di accessibilità da utilizzare per il test. Opzioni disponibili:
- 'Tutti' - Esegue test su tutti gli standard disponibili
- 'WCAG 2.2 AAA'
- 'WCAG 2.2 AA'
- 'WCAG 2.2 A'
- 'WCAG 2.1 AAA'
- 'WCAG 2.1 AA'
- 'WCAG 2.1 A'
- 'WCAG 2.0 AAA'
- 'WCAG 2.0 AA'
- 'WCAG 2.0 A'
- 'Tester attendibile v5'
- 'EN 301 549'
L'organizzazione deve consentire l'override di questa impostazione nella configurazione globale e lo standard selezionato deve essere tra le opzioni consentite.
axeCoreVersion
Specifica quale versione di axe-core utilizzare per il test. Le opzioni disponibili includono:
- 'latest' - Ultima versione supportata attualmente in bundle con axe Watcher
- Versioni specifiche dalla 4.4.0 in poi (ad esempio, '4.10.2', '4.9.1', ecc.)
L'organizzazione deve consentire l'override di questa impostazione nella configurazione globale e la versione selezionata deve essere tra le opzioni consentite.
bestPractices
Abilita o disabilita le regole delle best practice per l'esecuzione del test. Le buone pratiche migliorano l'accessibilità ma non fanno parte degli standard formali. Affinché questa impostazione abbia effetto, la tua organizzazione deve consentire la modifica.
experimentalRules
Abilita o disabilita le regole sperimentali per l'esecuzione del test. Le regole sperimentali sono ancora in fase di sviluppo e potrebbero generare falsi positivi. Affinché questa impostazione abbia effetto, la tua organizzazione deve consentire la sovrascrittura nella configurazione globale .
Controller Classi
Le seguenti classi estendono la classe astratta Controller per consentirti di controllare manualmente l'analisi dell'accessibilità delle pagine del tuo sito web.
| Framework di test | Nome |
|---|---|
| Playwright e Test Playwright | PlaywrightController |
| Puppeteer | PuppeteerController |
| WebdriverIO e WebdriverIO Testrunner | WdioController |
| WebDriverJS | WebdriverController |
Per Cypress, i metodi nelle classi *Controller sono implementati come comandi personalizzati. Per ulteriori informazioni, vedere [Comandi personalizzati del controller per Cypress] (#cypress-custom-commands) .
Controller
abstract class ControllerLa Controller classe astratta contiene i metodi per controllare l'analisi della pagina. Ciascuna delle classi concrete estende questa classe, pertanto i seguenti metodi sono disponibili in tutte le classi concrete.
analyze
analyze(): Promise<void>Analizza la pagina corrente per individuare errori di accessibilità. Questo metodo viene chiamato dopo aver impostato una pagina web per l'analisi (ad esempio, dopo aver inserito valori in un modulo) e aver disattivato l'analisi automatica utilizzando il metodo stop o impostando autoAnalyze su false.
analyze Restituisce
Promise<void>
analyze Comando equivalente di Cypress
cy.axeWatcherAnalyze()
flush
flush(): Promise<void>Invia tutti i risultati della scansione di accessibilità ad axe Developer Hub. Dovrebbe essere chiamato al termine dell'esecuzione del test per garantire che i risultati siano stati inviati ai server axe Developer Hub di Deque.
flush Restituisce
Promise<void>
flush Comando equivalente di Cypress
cy.axeWatcherFlush()
start
start(): Promise<void>Riprende l'analisi automatica delle pagine web. Questo metodo viene chiamato quando si desidera riprendere l'analisi automatica delle pagine web per individuare errori di accessibilità.
start Restituisce
Promise<void>
start Comando equivalente di Cypress
cy.axeWatcherStart()
stop
stop(): Promise<void>Arresta l'analisi automatica delle pagine web. Dopo aver chiamato il metodo stop , puoi effettuare qualsiasi configurazione aggiuntiva di cui la tua pagina web potrebbe aver bisogno e quindi chiamare il metodo analyze per verificare la presenza di errori di accessibilità nella pagina.
stop Restituisce
Promise<void>
stop Comando equivalente di Cypress
cy.axeWatcherStop()
PlaywrightController
La classe PlaywrightController consente di controllare manualmente l'analisi dell'accessibilità per le esecuzioni di test con Playwright e Playwright Test. È possibile avviare e interrompere l'analisi automatica dell'accessibilità e analizzare le pagine che richiedono una configurazione aggiuntiva.
Per maggiori informazioni su Playwright, consulta la Documentazione su Playwright.
Costruttore
new PlaywrightController(driver: Page): PlaywrightControllerParametri
driver:Pagina
Il valore driver è un oggetto Playwright Page .
Restituzioni PlaywrightController
Vedere Controller per i metodi implementati nella classe base astratta.
PuppeteerController
La classe PuppeteerController consente il controllo manuale delle esecuzioni di test con Puppeteer. Il controllo manuale consente di effettuare impostazioni aggiuntive richieste dalle pagine web più complesse.
Per maggiori informazioni su Puppeteer, vedere Puppeteer.
Costruttore
new PuppeteerController(driver: Page): PuppeteerControllerParametri
driver:Pagina
Il valore è un oggetto Puppeteer [Page]. driver (https://pptr.dev/api/puppeteer.page)
Restituisce PuppeteerController
Vedere Controller per i metodi implementati nella classe base astratta.
WdioController
WdioController Questo consente di controllare manualmente l'esecuzione dei test di WebdriverIO e WebdriverIO Testrunner. Per le pagine che richiedono impostazioni o configurazioni aggiuntive, è possibile interrompere i test automatici e analizzare manualmente ogni pagina che richiede tale configurazione.
Costruttore
new WdioController(driver: Browser): WdioControllerParametri
driver:Browser
Restituisce WdioController
Vedere Controller per i metodi implementati nella classe base astratta.
WebdriverController
Costruttore
new WebdriverController(driver: WebDriver): WebdriverControllerParametri
driver:WebDriver
Il valore è un oggetto Selenium [WebDriver]. driver (https://www.selenium.dev/documentation/webdriver/)
Restituisce WebdriverController
Vedere Controller per i metodi implementati nella classe base astratta.
Comandi personalizzati Cypress
Nella piattaforma di automazione del browser Cypress, i metodi nelle classi *Controller sono implementati come comandi personalizzati. Per ulteriori informazioni sull'implementazione e l'utilizzo di comandi personalizzati, vedere Comandi personalizzati sul sito della documentazione di Cypress.
Sono implementati i seguenti comandi personalizzati. Ogni comando personalizzato restituisce Chainable<void> per consentire il concatenamento con altri comandi Cypress.
| Metodo del controller | Comando personalizzato Cypress equivalente |
|---|---|
analyze() |
axeWatcherAnalyze() |
flush() |
axeWatcherFlush() |
start() |
axeWatcherStart() |
stop() |
axeWatcherStop() |
A partire dalla versione Watcher 3.9.0, i quattro comandi personalizzati Cypress axeAnalyze(), axeFlush(), axeStart() e axeStop() sono stati deprecati e non devono essere utilizzati.
Se si utilizza il pacchetto @axe-devtools/cypress con Watcher, sarà necessario eseguire l'aggiornamento almeno alla versione 3.9.0 di Watcher perché i comandi personalizzati deprecati sono in conflitto con i comandi personalizzati in @axe-devtools/cypress.
Esempio di comando Cypress
L'esempio seguente mostra come importare i comandi Cypress di axe Developer Hub dal pacchetto @axe-core/watcher e quindi richiamare il comando axeWatcherFlush alla fine di ogni test (inserendolo all'interno di afterEach()):
// Import the axe-watcher commands.
require('@axe-core/watcher/dist/cypressCommands')
// Flush axe-watcher results after each test.
afterEach(() => {
cy.axeWatcherFlush()
})Interfaccia Timeouts
L'oggetto timeout (di tipo Timeouts) nell'interfaccia AxeConfiguration consente agli utenti di modificare i valori di timeout (in millisecondi) per le rispettive funzioni del controller o per i comandi personalizzati Cypress.
interface Timeouts {
start?: number
stop?: number
flush?: number
analyze?: number
}| Nome | Tipo | Obbligatorio | Predefinito | Descrizione |
|---|---|---|---|---|
| analizzare | numero | No | 5000 | Imposta il timeout in millisecondi per la funzione del controller analyze o per il comando personalizzato axeWatcherAnalyze (in Cypress). |
| flush | numero | No | 5000 | Imposta il timeout in millisecondi per la funzione del controller flush o per il comando personalizzato axeWatcherFlush (in Cypress). |
| avvia | numero | No | 2000 | Imposta il timeout in millisecondi per la funzione del controller start o per il comando personalizzato axeWatcherStart (in Cypress). |
| fermare | numero | No | 5000 | Imposta il timeout in millisecondi per la funzione del controller stop o per il comando personalizzato axeWatcherStop (in Cypress). |
