Referencia de la API de Puppeteer para Axe DevTools para 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

Referencia para las APIs en el paquete @axe-devtools/puppeteer

Not for use with personal data

Constructores

Existen dos constructores para Axe DevTools Puppeteer. Este es el constructor estándar:

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

Para el primer argumento, debes pasar una instancia de un Puppeteer Frame o Page. Este es el objetivo del escaneo. El segundo argumento es un objeto opcional que puede contener una de las siguientes dos propiedades:

  1. axeSource (opcional): una cadena de código fuente de axe-core
  2. rulesetID (opcional): un ID de conjunto de reglas predeterminado

Para usar una versión específica de axe-core (distinta de la que se incluye de forma estándar con tu versión de Axe DevTools para Web), puedes pasar un archivo fuente de axe-core como argumento. Primero, crea un objeto de fuente de axe leyendo el archivo de axe-core desde el sistema de archivos. Luego, pasa tu instancia de Axe DevTools al objeto de fuente de axe:

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

Si deseas usar un conjunto de reglas predefinido distinto del estándar, puedes pasar el rulesetID a tu instancia de Axe DevTools:

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

Un constructor alternativo puede abrir una página y realizar el bypass de CSP por ti. En lugar de pasarle una página precargada, le pasas un Browser objeto y URL. Automáticamente cierra la página después de que analyze es llamado. Además, realiza automáticamente el bypass de CSP. Este es su constructor:

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

Este constructor incluye las mismas opciones para fuentes de axe-core alternativas o conjuntos de reglas, y estos argumentos se pasan de la misma manera que antes. Aquí hay un archivo de ejemplo que utiliza el constructor alternativo, que registra los resultados del escaneo en la consola:

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();
})();

analizar

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

Este método realiza un análisis y pasa cualquier error encontrado y/o el objeto de resultado a la función de devolución de llamada o promesa proporcionada. Ten en cuenta que no se encadena porque su operación es asincrónica.

El siguiente ejemplo utiliza la promesa devuelta y registra el objeto de resultados en la consola:

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

Este ejemplo muestra el método analyse() con una función de devolución de llamada:

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

analizarUniversal

.analyzeUniversal(): Promise<UniversalExport>

Realiza un análisis y devuelve resultados en el Formato Universal de Axe. El método existente analyze() no cambia.

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

Alcance

Existen dos opciones para establecer el alcance de tus escaneos de Axe DevTools: include y exclude. Ellos limitan los escaneos a los selectores CSS especificados y pueden encadenarse juntos. Ambos usan selectores CSS únicos o arrays de selectores CSS, por lo que puedes personalizar completamente tu escaneo.

incluir

.include(selector: string | string[])

Con el método de encadenamiento include , solo se escanearán los elementos seleccionados por el selector CSS o array de selectores CSS. Esto es útil para verificar instancias únicas de páginas componentizadas o limitar los resultados al desarrollo actual.

El siguiente ejemplo muestra que el alcance está limitado a los elementos dentro de la clase results-panel :

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

excluir

.exclude(selector: string | string[])

El método de encadenamiento exclude elimina los elementos seleccionados por un selector CSS o un array de selectores CSS de la página a escanear. Al igual que el método include , se pueden pasar selectores únicos o un array de selectores. Este método también puede encadenarse con el método include .

La llamada de ejemplo a continuación muestra que el alcance excluye elementos con la clase h2 : results-panel

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

Configuración de Reglas

conReglas

.withRules(rules: string | string[])

Este método limita el análisis al ID de regla o IDs de regla especificados. Para obtener una lista completa de reglas y sus descripciones, visita la documentación de reglas de axe-core.

En el siguiente ejemplo, solo se probarán las reglas html-lang y image-alt :

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

withTags

.withTags(tags: string | string[])

El método withTags limita el escaneo a las reglas asociadas con la etiqueta o etiquetas especificadas. Se puede encontrar una lista completa de etiquetas del conjunto de reglas en la documentación de axe-core.

El siguiente ejemplo prueba solo las reglas de WCAG 2.0 Nivel A:

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

disableRules

.disableRules(rules: string | string[])

Este método elimina una regla específica o un conjunto de reglas de la lista actual de reglas a utilizar. Las reglas se especifican por su ID de regla. Las llamadas posteriores a este método anularán las llamadas anteriores. Se puede encontrar una lista completa de IDs de reglas y sus descripciones en la documentación de reglas de axe-core.

El siguiente ejemplo desactiva la verificación de contraste de color.

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

Además, disableRules se puede encadenar con otros métodos de configuración de reglas para modificar conjuntos de reglas configurados por el usuario.

En el siguiente ejemplo, el conjunto de reglas se modifica para usar solo las reglas WCAG 2.0 A y AA, luego se elimina la regla de verificación de contraste de color:

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

opciones de axe-core

opciones

.options(options: Axe.RunOptions)

El método options especifica opciones a usar por axe.run. Anulará cualquier otra opción configurada, incluidas las llamadas a withRules y withTags. Vea la documentación de la API de axe-core para obtener información.

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

configure

.configure(config: Axe.Spec)

El método configure inyecta un objeto de configuración de axe para modificar el conjunto de reglas antes de un análisis. Las llamadas subsecuentes a este método invalidarán las anteriores llamando a axe.configure() y reemplazando el objeto de configuración. Vea la documentación de la API de axe-core para la estructura del objeto.

El siguiente ejemplo crea una nueva configuración de axe-core y la pasa a Axe DevTools para ser utilizada en el escaneo:

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

Servicio de Uso

Por defecto, el servicio de uso está deshabilitado, y la URL predeterminada es https://usage.deque.com.

Variables de Entorno

Estas variables de entorno le permiten configurar el servicio de uso y cambiar las propiedades de los eventos reportados.

Nombre Tipo Puede sobrescribir Descripción
AXE_DISTINCT_ID Cadena Un identificador UUID que permanece igual para el usuario registrado (a menos que se regenere)
AXE_METRICS_URL Cadena La URL del punto final de uso de REST
AXE_TRACK_USAGE Booleano Habilita la generación de informes del servicio de uso (el valor predeterminado es false)
AXE_APPLICATION Cadena falso La aplicación que se utilizó para verificar errores de accesibilidad
AXE_DEV_INSTANCE Booleano verdadero Indica si este evento es producto de las acciones de un desarrollador de software. Útil para marcar y luego eliminar eventos registrados durante el desarrollo o las pruebas.
AXE_DEPARTMENT Cadena verdadero El departamento del usuario dentro de la organización
AXE_KEYCLOAK_ID Cadena falso El ID de Keycloak del usuario
AXE_LOGGED_IN Booleano falso Registra si el usuario está conectado a la aplicación bajo prueba
AXE_ORGANIZATION Cadena verdadero La organización del usuario
AXE_SESSION_ID Cadena falso Un UUID que identifica la sesión del usuario
AXE_USER_ID Cadena falso La identidad específica de un usuario, como su nombre o ID de inicio de sesión
AXE_USER_JOB_ROLE Cadena falso El rol laboral del usuario
AXE_USER_STATUS Cadena falso Información de estado que desea asociar con el usuario

enableTracking

El método enableTracking() permite a los usuarios optar por enviar datos al servicio de uso.

.enableTracking(state: boolean)

Este ejemplo muestra el método enableTracking emparejado con el método analyze , que registra el objeto results en la consola:

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

setTrackingUrl

El método setTrackingUrl() permite a los usuarios cambiar el lugar donde se envían los datos de métricas de uso.

.setTrackingUrl(url: string)

Este ejemplo muestra el método setTrackingUrl() con el método analyze() y registra el objeto results en la consola:

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

setDistinctId

Este método permite a los usuarios cambiar el id distinto que se está almacenando o utilizando.

.setDistinctId(distinctId: string)

Este ejemplo muestra el setDistinctId método con el analyse método y registra el objeto de resultados en la consola:

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