Referencia de la API
La referencia de API para el paquete @axe-core/watcher
Esta guía de referencia describe las API proporcionadas por el paquete (también conocido como @axe-core/watcher
axe Watcher *o simplemente * Watcher ).
AxeConfiguration
Interfaz
La propiedad axe
(un parámetro pasado a las funciones de configuración) es el medio habitual para cambiar su AxeConfiguration
para que axe Watcher configure las pruebas de accesibilidad. Las siguientes propiedades están contenidas en AxeConfiguration
:
Nombre | Tipo | Obligatorio | Descripción |
---|---|---|---|
clave API |
string |
Sí | El secreto de la clave API de su proyecto. |
autoAnalyze |
boolean |
no | Si el Watcher ejecutará un análisis de accesibilidad en su página automáticamente. El valor predeterminado es true . |
buildID |
string |
no | El valor predeterminado es null , que se recomienda para ejecuciones de pruebas de un solo proceso (no paralelizadas). Para las ejecuciones de pruebas en paralelo, todos los trabajadores deben tener la misma cadena buildID no nula. |
configurationOverrides |
ConfigurationOverrides |
no | Permite anular la global configuration settings . |
excludeUrlPatterns |
string[] |
no | Excluye del escaneo las URL que coinciden con los patrones de minimatch especificados. |
runContext |
axe.ElementContext |
no | Pasado al axe-core. |
runOptions |
RunOptions |
no | Pasado al axe-core. |
serverURL |
string |
no | El servidor Developer Hub para enviar resultados. Es poco probable que necesites cambiar este valor. |
ID de sesión |
string |
no | Obsoleto. ID de sesión de esta instancia. Es poco probable que necesites cambiar este valor. Consulte buildId en su lugar. |
tiempo de espera |
Tiempos de espera |
no | Un objeto Timeouts que representa los milisegundos hasta que los métodos del Controller especificado agotan el tiempo de espera y fallan. |
apiKey
El apiKey
valor es la única propiedad que debe establecerse en su AxeConfiguration
. Puede obtener su valor desde la Página de Proyectos. Consulte Administración de proyectos para obtener más información.
autoAnalyze
Establezca este valor en false
para evitar que las páginas se analicen automáticamente. Para obtener más información sobre el modo manual, consulte Controlar Cuándo Se Realiza el Análisis de Página.
buildID
La propiedad opcional buildID
, cuando no está establecida null
, permite que los ejecutores de pruebas paralelos generen resultados que aparecen como una única ejecución de prueba en axe Developer Hub. En el caso de ejecuciones de pruebas paralelas, cada ejecutor de pruebas debe compartir la misma buildID
cadena no nula, lo que hace que cada ejecución de prueba concatene sus resultados con los resultados existentes para el buildID
mismo SHA de confirmación de Git. Sin embargo, cuando buildID
es null
, varias ejecuciones de pruebas sobrescriben los resultados existentes que tienen el mismo SHA de confirmación de Git.
Generalmente, puede obtener un valor utilizable de su proveedor de integración continua. buildID
Por ejemplo, puede utilizar estos valores:
-
github.run_id
Disponible dentro de los flujos de trabajo de GitHub. Consulte contexto de GitHub en la documentación de GitHub para obtener más información.
-
CIRCLE_PIPELINE_ID
Con CircleCI, el valor anterior está disponible en el entorno de su proceso. Consulte Variables de entorno integradas en la documentación de CircleCI para obtener más información.
Otras variables de entorno de integración continua que puedes utilizar para:
buildID
configurationOverrides
(Opcional) Anula los valores establecidos en la configuración global. Consulte la interfaz ConfigurationOverrides para obtener más información.
excludeUrlPatterns
(Opcional) Evita que se analice cualquier URL que coincida con cualquiera de los patrones minimatch en la matriz excludeUrlPatterns
.
axe: {
excludeUrlPatterns: [ 'https://*.example.com/**', 'https://example.org/**' ]
}
Debes comenzar tu patrón con http://
o https://
o asterisco y barra (*/
) para que coincida con las URL. Ve la tabla a continuación para ver ejemplos.
Ejemplos
URL | Patrón | ¿Coincidencias? |
---|---|---|
https://example.com/index.html |
example.com |
Falso |
https://example.com/index.html |
https://*mple.com/index.html |
Verdadero |
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/** |
Verdadero |
https://example.com/index.html |
https://** |
Verdadero |
https://example.com/index.html |
https://* |
Falso |
https://example.com/index.html |
** |
Verdadero |
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/** |
Verdadero |
https://example.com/index.html |
htt*/** |
Verdadero |
https://example.com/index.html |
h*/example.com/** |
Verdadero |
https://test.example.com/index.html |
https://*example.com/** |
Verdadero |
https://test.example.com/index.html |
https://*.example.com/** |
Verdadero |
runContext
(Opcional) Le permite elegir qué elementos se incluyen y excluyen del análisis de accesibilidad de su página.
Cuando usa runContext
para seleccionar elementos que se incluirán en su análisis (a través de un único selector CSS, una matriz de selectores CSS o usando la propiedad include
), axe Developer Hub analiza solo los elementos seleccionados por los selectores CSS. Por lo tanto, si no se selecciona ningún elemento (debido a un error ortográfico en un selector de clase CSS, por ejemplo), no se analizará nada y, lo que es más importante, no se capturará ningún estado de página.
El valor de runContext
puede ser:
-
Un único selector CSS para los elementos que se incluirán en el análisis:
axe: { runContext: '.main' }
-
Una matriz de selectores CSS para los elementos que se incluirán en el análisis:
axe: { runContext: [ '.main', '.text-block' ] }
-
Un objeto de contexto que contiene
include
yexclude
propiedades (como se muestra en el ejemplo anterior). Puede especificarinclude
oexclude
o ambos.include
oexclude
cada uno puede ser un único selector CSS o una matriz de selectores CSS:axe: { runContext: { include: '.main', exclude: '.ad-section' } }
Hay más detalles disponibles en la documentación de contexto de axe-core.
runOptions
(Opcional) El objeto runOptions
permite el siguiente subconjunto de propiedades del tipo axe-core Options
:
-
ancestry
: El valor predeterminado esfalse
. Sitrue
, los selectores CSS devueltos incluyen los elementos ancestros de los elementos devueltos.importantSi su página usa clases o identificadores dinámicos (clases o identificadores de elementos que cambian cada vez que se vuelve a cargar la página), debe especificar
ancestry
comotrue
para que axe Developer Hub pueda detectar y rastrear correctamente si los problemas de accesibilidad son duplicados porque, de manera predeterminada, axe Developer Hub espera que las clases y los identificadores de elementos permanezcan iguales entre ejecuciones de pruebas.Cuando
ancestry
estrue
, axe Developer Hub utiliza la posición del elemento dentro del árbol DOM para localizar el mismo elemento entre ejecuciones de prueba.A continuación se muestra un ejemplo de un selector para un elemento iframe con un ID de main-iframe:
ancestry
false
**<iframe id="main-iframe" ...>
iframe#main-iframe
Si
ancestry
estrue
, el selector incluiría la ruta completa desde el elemento raíz y no hay identificadores ni clases especificados:html > body > div:nth-child(20) > div:nth-child(1) > div > div > ul > li:nth-child(1) > div > span > iframe
-
runOnly
: Esto le permite limitar qué reglas se ejecutan especificando nombres o etiquetas. ConsulterunOnly
a continuación para obtener más información. -
rules
: Habilite o deshabilite reglas usando la propiedadenabled
. Consulte lasreglas
a continuación para obtener más información.
A continuación se muestra un ejemplo de runOptions
:
axe: {
runOptions: {
ancestry: true,
runOnly: {
type: 'tag',
values: 'wcag2a'
},
rules: {
'ruleId1': { enabled: false },
'ruleId2': { enabled: false }
}
}
}
runOnly
El uso de runOnly
se considera un uso avanzado y, si lo usas runOnly
, recibirás una advertencia.
No puedes usar ambos runOptions.runOnly
y configurationOverrides
. De lo contrario, recibirás un error.
El valor (parte del objeto [runOptions
] runOnly
) puede ser uno de los siguientes:(#runoptions)
-
Una cadena que representa el ID de la regla que desea utilizar para el análisis de accesibilidad:
axe: { runOptions: { runOnly: 'ruleId' } }
-
Una matriz de cadenas que representan los identificadores de las reglas que desea utilizar:
axe: { runOptions: { runOnly: [ 'ruleId1', 'ruleId2' ] } }
-
Un objeto con
type
propiedadesvalues
. El valor es una cadena que puede ser reglas, una regla, una etiqueta o etiquetas.type
** ** ** ** La propiedad puede ser una cadena o una matriz de cadenas que representan la regla o las etiquetas que desea utilizar para el análisis de accesibilidad.values
El siguiente ejemplo muestra el uso del objetorunOnly
para limitar las pruebas de accesibilidad a las reglas etiquetadas como wcag2a:axe: { runOptions: { runOnly: { type: 'tag', values: 'wcag2a' } } }
- Para obtener más ejemplos de uso (con axe-core), consulte [Ejemplos de parámetros de opciones].
runOnly
(https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter-examples) - Para obtener más información sobre los valores de etiquetas disponibles, consulte Etiquetas axe-core.
- Para obtener información sobre las reglas, los identificadores de reglas y las etiquetas, consulte [Descripciones de reglas].(https://github.com/dequelabs/axe-core/blob/develop/doc/rule-descriptions.md)
rules
El valor rules
(en el objeto runOptions
) le permite habilitar (enabled: true
) o deshabilitar (enabled: false
) reglas específicas durante el análisis, como se muestra a continuación:
axe: {
runOptions: {
rules: {
'ruleId1': { enabled: false },
'ruleId2': { enabled: false }
}
}
}
sessionId
La propiedad sessionId
está obsoleta y no debe utilizarse. Consulte buildID
arriba.
timeout
El objeto timeout
(de tipo Timeouts
) en AxeConfiguration
establece los valores de tiempo de espera en milisegundos para los respectivos métodos del controlador (o comandos personalizados para Cypress). (Consulte Clases de controlador para obtener información sobre las clases de controlador y Comandos personalizados de Cypress para obtener información sobre los comandos personalizados de Cypress). Cuando expira un tiempo de espera, la prueba falla con un mensaje que indica que se excedió el tiempo de espera. Puede aumentar el tiempo de espera para evitar el error.
Estos valores de tiempo de espera son independientes del marco de prueba que esté utilizando y es posible que también deba aumentar los valores de tiempo de espera para ese marco.
Este ejemplo establece el tiempo de espera en 8 segundos, 15 segundos, 10 segundos y 10 segundos. analyze
flush
start
stop
(Los valores predeterminados se muestran en la tabla en Interfaz Timeouts
.)
axe: {
timeout: {
analyze: 8000
flush: 15000,
start: 10000,
stop: 10000,
}
}
Clases de controlador
Funciones de configuración
Las funciones de configuración proporcionadas por Watcher te permiten modificar tu configuración para el marco de prueba especificado, así como adaptar la forma en que quieres ejecutar Watcher para satisfacer tus necesidades. Consulte Interfaz de configuración de Axe para obtener más información.
Framework de pruebas | Función de configuración |
---|---|
Cypress | cypressConfig |
Playwright | playwrightConfig |
Test de Playwright | playwrightTest |
Puppeteer | puppeteerConfig |
WebdriverIO | wdioConfig |
Ejecutor de pruebas de WebdriverIO | wdioTestRunner |
WebDriverJS | webdriverConfig |
cypressConfig
Crea una configuración para Cypress.
cypressConfig(config: Cypress.ConfigOptions & Configuration): Cypress.ConfigOptions
cypressConfig
Parámetros
-
config
:Cypress.ConfigOptions & Configuration
Tipo de intersección de
Cypress.ConfigOptions
yConfiguración
.
Devuelve: Cypress.ConfigOptions
playwrightConfig
Crea una configuración para Playwright.
playwrightConfig(opts: Configuration & LaunchOptions): LaunchOptions
playwrightConfig
Parámetros
-
opts
:Configuration & LaunchOptions
Tipo de intersección de
LaunchOptions
yConfiguración
.
Devuelve: LaunchOptions
playwrightTest
Crea una configuración para Playwright Test.
playwrightTest(options: Options): ReturnValue
playwrightTest
Parámetros
-
options
:Options
Options
es un tipo de intersección deConfiguración
yLaunchOptions
.
Devuelve: ReturnValue
puppeteerConfig
Crea una configuración para Puppeteer.
puppeteerConfig(opts: Configuration & LaunchOptions & BrowserLaunchArgumentOptions & BrowserConnectOptions): Options
puppeteerConfig
Parámetros
-
opts
:Configuration & LaunchOptions & BrowserLaunchArgumentOptions & BrowserConnectOptions
Tipo de intersección de
LaunchOptions
,BrowserLaunchArgumentOptions
,BrowserConnectOptions
yConfiguración
.
Devuelve: Options
wdioConfig
Crea una configuración de WebdriverIO.
wdioConfig({ axe, ...options}: Options): RemoteOptions
wdioConfig
Parámetros
-
arg
:Options
Options
es un tipo de intersección deRemoteOptions
yConfiguración
.
Devoluciones: RemoteOptions
wdioTestRunner
Crea una configuración de WebdriverIO Testrunner.
wdioTestRunner(...params: unknown[]): Options.Testrunner
wdioTestRunner
Parámetros
-
params
:desconocido[]
El valor de
params
es uno de los siguientes:- Una matriz que contiene un valor, que es un tipo de intersección de
Options.Testrunner
yConfiguration
. - Una matriz donde el primer valor de la matriz es un
AxeConfiguration
y el segundo valor es unOptions.Testrunner
.
- Una matriz que contiene un valor, que es un tipo de intersección de
Devoluciones: Options.Testrunner
webdriverConfig
Crea una configuración de Selenium WebDriver.
webdriverConfig(arg: WebDriverArgs): Options
webdriverConfig
Parámetros
-
arg
:WebDriverArgs
Una
Configuración
ampliada para incluir un elemento Selenium WebDriverOptions
.
Devoluciones: Options
Configuration
Interfaz
Configuration
La interfaz se utiliza con las [funciones de configuración] y contiene una propiedad:(#configuration-functions)
Nombre | Tipo | Obligatorio | Descripción |
---|---|---|---|
axe |
AxeConfiguration |
Sí | El AxeConfiguration que se pasará a la función de configuración de su marco de prueba. |
Todas las funciones de configuración usan esta axe
propiedad para permitirle configurar Watcher y realizar sus pruebas de accesibilidad. Consulte la siguiente sección, AxeConfiguration Interface, para obtener más información.
ConfigurationOverrides
Interfaz
La interfaz le permite anular la configuración global de su organización para ejecuciones de pruebas individuales. ConfigurationOverrides
Esta propiedad debe utilizarse de acuerdo con los permisos establecidos en la configuración global de su empresa.
Nombre | Tipo | Obligatorio | Descripción |
---|---|---|---|
Estándar de accesibilidad |
string |
no | El estándar de accesibilidad a seguir |
axeCoreVersion |
string |
no | Indica qué versión de axe-core se debe utilizar. |
Mejores Prácticas |
boolean |
no | Especifica si se deben seguir las reglas de mejores prácticas. |
Reglas experimentales |
boolean |
no | Si se deben seguir las reglas experimentales |
accessibilityStandard
Establece el estándar de accesibilidad contra el cual se realizará la prueba. Opciones disponibles:
- 'Todos' - Prueba contra todos los estándares disponibles
- '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'
- 'Trusted Tester v5'
- 'EN 301 549'
Su organización debe permitir la anulación de esta configuración en la configuración global, y el estándar seleccionado debe estar entre las opciones permitidas.
axeCoreVersion
Especifica qué versión de axe-core utilizar para las pruebas. Las opciones disponibles incluyen:
- 'latest' - Última versión compatible actualmente incluida con axe Watcher
- Versiones específicas de 4.4.0 y posteriores (por ejemplo, '4.10.2', '4.9.1', etc.)
Su organización debe permitir anular esta configuración en la configuración global, y la versión seleccionada debe estar entre las opciones permitidas.
bestPractices
Habilita o deshabilita reglas de mejores prácticas para la ejecución de pruebas. Las mejores prácticas mejoran la accesibilidad pero no forman parte de estándares formales. Su organización debe permitir la anulación de esta configuración para que tenga efecto.
experimentalRules
Habilita o deshabilita reglas experimentales para la ejecución de pruebas. Las reglas experimentales aún están en desarrollo y pueden producir falsos positivos. Su organización debe permitir la anulación de esta configuración en la configuración global para que tenga efecto.
Controller
Clases
Las siguientes clases extienden la clase abstracta Controller
para permitirle controlar manualmente el análisis de accesibilidad de las páginas de su sitio web.
Frameworks de Pruebas | Nombre |
---|---|
Playwright y Playwright Test | PlaywrightController |
Puppeteer | PuppeteerController |
WebdriverIO y WebdriverIO Testrunner | Controlador Wdio |
WebDriverJS | Controlador Webdriver |
Para Cypress, los métodos de las clases *Controller
se implementan como comandos personalizados. Consulte Comandos personalizados de controlador para Cypress para obtener más información.
Controller
abstract class Controller
La clase abstracta contiene los métodos para controlar el análisis de páginas. Controller
Cada una de las clases concretas extiende esta clase, por lo que los siguientes métodos están disponibles en todas las clases concretas.
analyze
analyze(): Promise<void>
Analiza la página actual en busca de errores de accesibilidad. Debe llamar a este método después de haber configurado una página web para su análisis (por ejemplo, valores ingresados en un formulario) y haber desactivado el análisis automático utilizando el método stop
o configurando autoAnalyze
en false
.
analyze
Devuelve
Promise<void>
analyze
Comando equivalente de Cypress
cy.axeWatcherAnalyze()
flush
flush(): Promise<void>
Envía todos los resultados del análisis de accesibilidad al Centro de desarrolladores de Axe. Se debe llamar al final de la ejecución de la prueba para garantizar que los resultados se hayan enviado a los servidores de Deque's axe Developer Hub.
flush
Devoluciones
Promise<void>
flush
Comando equivalente de Cypress
cy.axeWatcherFlush()
start
start(): Promise<void>
Reanuda el análisis automático de páginas web. Llama a este método cuando quieras reanudar el análisis automático de páginas web en busca de errores de accesibilidad.
start
Devoluciones
Promise<void>
start
Comando equivalente de Cypress
cy.axeWatcherStart()
stop
stop(): Promise<void>
Detiene el análisis automático de páginas web. Después de llamar al método stop
, puede realizar cualquier configuración adicional que su página web pueda requerir y luego llamar al método analyze
para verificar si hay errores de accesibilidad en la página.
stop
Devuelve
Promise<void>
stop
Comando equivalente de Cypress
cy.axeWatcherStop()
PlaywrightController
La clase le permite controlar manualmente el análisis de accesibilidad para ejecuciones de pruebas con Playwright y Playwright Test. PlaywrightController
Puede iniciar y detener el análisis automático de accesibilidad y analizar páginas que requieran configuración adicional.
Para obtener más información sobre Playwright, consulte la Documentación de Playwright.
Constructor
new PlaywrightController(driver: Page): PlaywrightController
Parámetros
driver
:Page
El valor es un objeto Playwright [Page
] driver
.(https://playwright.dev/docs/api/class-page)
Devoluciones PlaywrightController
Consulte Controller
para conocer los métodos implementados en la clase base abstracta.
PuppeteerController
La clase permite el control manual de sus ejecuciones de pruebas con Puppeteer. PuppeteerController
El control manual le permite proporcionar configuración adicional requerida por páginas web más complejas.
Para obtener más información sobre Puppeteer, consulte Puppeteer.
Constructor
new PuppeteerController(driver: Page): PuppeteerController
Parámetros
driver
:Página
El valor es un objeto Puppeteer [Page
] driver
.(https://pptr.dev/api/puppeteer.page)
Returns PuppeteerController
Consulte Controller
para conocer los métodos implementados en la clase base abstracta.
WdioController
Le permite controlar manualmente las ejecuciones de pruebas de WebdriverIO y WebdriverIO Testrunner. WdioController
Para las páginas que requieren instalación o configuración adicional, puede detener las pruebas automáticas y analizar manualmente cada página que requiera dicha configuración.
Constructor
new WdioController(driver: Browser): WdioController
Parámetros
driver
:Browser
Returns WdioController
Consulte Controller
para conocer los métodos implementados en la clase base abstracta.
WebdriverController
Constructor
new WebdriverController(driver: WebDriver): WebdriverController
Parámetros
driver
:WebDriver
El valor es un objeto Selenium [WebDriver
]. driver
(https://www.selenium.dev/documentation/webdriver/)
Devuelve WebdriverController
Consulte Controller
para conocer los métodos implementados en la clase base abstracta.
Comandos personalizados de Cypress
En la plataforma de automatización del navegador Cypress, los métodos de las clases *Controller
se implementan como comandos personalizados. Consulte Comandos personalizados en el sitio de documentación de Cypress para obtener más información sobre la implementación y el uso de comandos personalizados.
Se implementan los siguientes comandos personalizados. Cada comando personalizado devuelve Chainable<void>
para permitir el encadenamiento con otros comandos de Cypress.
Método del controlador | Comando personalizado equivalente de Cypress |
---|---|
analyze() |
axeWatcherAnalyze() |
flush() |
axeWatcherFlush() |
start() |
axeWatcherStart() |
stop() |
axeWatcherStop() |
A partir de Watcher 3.9.0, los cuatro comandos personalizados de Cypress axeAnalyze()
, axeFlush()
, axeStart()
y axeStop()
han quedado obsoletos y no deben utilizarse.
Si está utilizando el paquete @axe-devtools/cypress
con Watcher, deberá actualizar al menos a la versión 3.9.0 de Watcher porque los comandos personalizados obsoletos entran en conflicto con los comandos personalizados en @axe-devtools/cypress
.
Ejemplo de comando Cypress
El siguiente ejemplo muestra cómo importar los comandos Cypress de axe Developer Hub desde el paquete @axe-core/watcher
y luego llamar al comando axeWatcherFlush
al final de cada prueba (colocándolo dentro de afterEach()
):
// Import the axe-watcher commands.
require('@axe-core/watcher/dist/cypressCommands')
// Flush axe-watcher results after each test.
afterEach(() => {
cy.axeWatcherFlush()
})
Interfaz de tiempos de espera
El objeto timeout (de tipo Timeouts) en la interfaz AxeConfiguration permite a los usuarios cambiar los valores de tiempo de espera (en milisegundos) para las respectivas funciones del controlador o los comandos personalizados de Cypress.
interface Timeouts {
start?: number
stop?: number
flush?: number
analyze?: number
}
Nombre | Tipo | Obligatorio | Predeterminado | Descripción |
---|---|---|---|---|
analizar | número | no | 5000 | Establece el tiempo de espera en milisegundos para la función del controlador analyze o el comando personalizado axeWatcherAnalyze (en Cypress). |
vaciar | número | no | 5000 | Establece el tiempo de espera en milisegundos para la función del controlador flush o el comando personalizado axeWatcherFlush (en Cypress). |
comenzar | número | no | 2000 | Establece el tiempo de espera en milisegundos para la función del controlador start o el comando personalizado axeWatcherStart (en Cypress). |
detener | número | no | 5000 | Establece el tiempo de espera en milisegundos para la función del controlador stop o el comando personalizado axeWatcherStop (en Cypress). |