Karma

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

Ejecutando pruebas de accesibilidad con Axe DevTools para Web y Karma a través de marcos de UI

Not for use with personal data

Pruebas con Karma y Axe DevTools

Esta integración con Karma funciona independientemente del marco de UI seleccionado. Esta integración funcionará probando React, Angular, Vue, etc.

Requisitos previos

Para probar tu contenido usando Karma y Axe DevTools, primero necesitas tener los siguientes paquetes instalados en tu proyecto:

  • @axe-devtools/karma-json-reporter
  • @axe-devtools/browser
  • @axe-devtools/cli

Configuración de Karma

Primero necesitamos configurar nuestro archivo karma.config (o karma.conf) para incluir el @axe-devtools/karma-json-reporter como un complemento.

plugins: [
  require('@axe-devtools/karma-json-reporter')
]

Luego, añade axeDevTools a la propiedad reporters. También puedes añadir la propiedad axeDevToolsReporter con el directorio de destino (dir). Por defecto, los informes se crearán en el directorio axeDevToolsReports en el nivel raíz de tu proyecto.

reporters: ['axeDevTools'],
axeDevToolsReporter: {
  dir: 'axe-results'
},

Una vez configurado, el @axe-devtools/karma-json-reporter añadirá un objeto reportero global a tus pruebas llamado axeDevToolsReporter.

Configuración del caso de prueba

Para ejecutar axe dentro de tus especificaciones de prueba para cada componente o página, añade la siguiente importación:

import * as AxeDevTools from "@axe-devtools/browser";

Luego, dentro de tus funciones de configuración de pruebas (por ejemplo, before() o beforeEach()) añade la siguiente función init() para darle un conjunto de reglas particular. Por defecto se utiliza el conjunto de reglas wcag2.1.

before(() => {
  AxeDevTools.init("wcag2.1");
});

Ahora necesitamos crear una prueba como la que se muestra a continuación, donde escanearemos el componente o la página en busca de problemas de accesibilidad. Sin embargo, para llamar correctamente a AxeDevTools.run(), cualquier componente no nativo deberá ser compilado en un elemento nativo para escanear adecuadamente el componente.

it("should have no accessibility violations", async () => {
  const fixture = TestBed.createComponent(AppComponent);
  fixture.detectChanges();
  const compiled = fixture.debugElement.nativeElement;
  
  const results = await AxeDevTools.run(compiled);
  expect(results.violations).toHaveLength(0);
});

Generación de informes con Karma y Axe DevTools

Configurar informes en la prueba

Cada vez que se llame a AxeDevTools.run(), añade una llamada a axeDevToolsReporter.logTestResult() y pásale los resultados de la ejecución de axe. La función logTestResult puede opcionalmente tomar un id como primer parámetro que se utilizará como el nombre de la prueba.

it("should have no accessibility violations", async () => {
  const fixture = TestBed.createComponent(AppComponent);
  fixture.detectChanges();
  const compiled = fixture.debugElement.nativeElement;
  
  const results = await AxeDevTools.run(compiled);
  axeDevToolsReporter.logTestResult(results);
  expect(results.violations).toHaveLength(0);
});

Ahora, cuando se ejecuten las pruebas, el @axe-devtools/karma-json-reporter creará un archivo JSON para cada análisis registrado de Axe DevTools (llamado axeDevToolsResults).

Ejecutando el CLI de Axe DevTools

Una vez que las pruebas se han completado y se han generado los informes, podemos generar un informe de Axe DevTools usando el @axe-devtools/cli.

"test": "karma start && axe reporter ./axe-results --format=html",

Solución de problemas

Si tienes problemas para obtener los resultados del escaneo, contacta directamente a tu representante de Deque, contáctanos a través de nuestro servicio de soporte, o envíenos un correo electrónico. Estaremos encantados de ayudar.

Para más información sobre Axe DevTools en general, consulta la página de resumen de Axe DevTools

Ver también