Escribir pruebas de Hamcrest

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
Not for use with personal data

Uso de Hamcrest Emparejadores con axe DevTools

Prerrequisitos

Para escribir pruebas de accesibilidad y producir resultados, ya debe haber creado un archivo de prueba con axe DevTools y su elección de Selenium WebDriver preimportado y preinicializado. Si aún no lo has hecho, lee esta guía sobre cómo hacerlo.

Se ha proporcionado un conjunto de matchers para realizar pruebas de accesibilidad a través de Hamcrest usando Selenium WebDriver. Estos comparadores se pueden utilizar en un marco de pruebas unitarias o en pasos de Cucumber personalizados.

Elegir un método de escaneo

Como se ve en las declaraciones de importación, hay dos métodos de escaneo de accesibilidad. El primero, isAxeClean, lanzará una excepción y detendrá las pruebas si se encuentran violaciones. El segundo, isAuditedForAccessibility, no detendrá las pruebas ni lanzará una excepción independientemente del nivel de accesibilidad de la página escaneada.

Redacción de pruebas

Para los ejemplos restantes, se muestra el método isAxeClean para abreviar, pero ambos métodos funcionan indistintamente. Con los objetos WebDriver y AxeDriver instanciados e inicializados, crear un escaneo es tan simple como agregar estas dos líneas de código a un método de prueba. Reemplace $URL con la URL deseada de la página que desea escanear.

webDriver.get("$URL");
assertThat(axedriver, isAxeClean());

Al probar varias páginas, puede repetir el proceso de get y scan sin tener que crear nuevas instancias de los controladores. Para escanear diferentes estados de una página, puedes manipularla utilizando la API del controlador web y luego ejecutar un nuevo escaneo.

Referencia adicional

Hay varios métodos de encadenamiento disponibles para modificar la forma en que se escanea la página. Estos métodos incluyen cláusulas de exclusión/inclusión o alcance y modificaciones de estándares de accesibilidad, reglas de accesibilidad y conjuntos de reglas de accesibilidad. Para abreviar, todos los métodos encadenados están vinculados con isAxeClean(), pero son intercambiables con isAuditedForAccessibility().

Estándares de accesibilidad

Deque ofrece un método encadenado, según el cual se puede especificar directamente qué estándares de pruebas de accesibilidad se utilizan en un escaneo.

Nombre de la etiqueta Norma de accesibilidad
wcag2a WCAG 2.0 Nivel A
wcag2aa WCAG 2.0 Nivel AA
wcag2aaa WCAG 2.0 Nivel AAA
wcag21a WCAG 2.1 Nivel A
wcag21aa WCAG 2.1 Nivel AA
wcag21aaa WCAG 2.0 Nivel AAA
wcag22a WCAG 2.2 Nivel A
wcag22aa WCAG 2.2 Nivel AA
wcag22aaa WCAG 2.2 Nivel AAA
section508 Sección 508
EN-301-549 EN 301 549
TTv5 Trusted Tester v5
best-practice Mejores prácticas avaladas por Deque

Si no está seguro de qué estándar es para usted, lea la documentación de axe-core para saber qué reglas están asociadas con qué estándar o contáctenos a través de su representante de Deque o nuestra mesa de ayuda. Para obtener una lista completa de las reglas que se aplican a cada estándar, consulte esta página en Descripciones de las reglas

Para utilizar un único estándar, simplemente agregue el método de cadena 'according to' y pase el estándar deseado.

assertThat(axedriver, isAxeClean().accordingTo("wcag2a"));

Además de utilizar un estándar de prueba, hay dos formas de escanear contra dos o más estándares de prueba. Ambos funcionan de forma idéntica.

assertThat(axedriver, isAxeClean().accordingTo("wcag2a", "section508"));
assertThat(axedriver, isAxeClean().accordingTo("wcag2a").accordingTo("section508"));

Alcance

Deque ofrece dos métodos en cadena para ayudar a delimitar los escaneos. El método within() modifica el escaneo para escanear únicamente la página dentro de los límites del selector que se le pasa. El método excluding() funciona al revés. Altera el escaneo para ignorar el contenido dentro del selector que se le pasa. Los siguientes ejemplos muestran el método within(), pero el método excluding() funciona de manera idéntica.

De forma más sencilla, la afirmación se modifica con un selector.

assertThat(axedriver, isAxeClean().within("#selector1")); 

También son posibles los selectores compuestos. En el siguiente ejemplo, solo se escanean los elementos con el selector 2 dentro del selector 1

assertThat(axedriver, isAxeClean().within("#selector1 .selector2"));

Hay tres formas de realizar una selección múltiple, o seleccionar múltiples ámbitos para realizar pruebas. En todos estos ejemplos, los elementos se encuentran dentro del selector 1 y el selector 2 .

assertThat(axedriver, isAxeClean().within("#selector1, .selector2"));
assertThat(axedriver, isAxeClean().within("#selector1", ".selector2"));
assertThat(axedriver, isAxeClean().within("#selector1").within(".selector2"));

Para poder realizar un alcance dentro de un IFrame, se debe declarar un selector de IFrame. El alcance que se escaneará dentro del IFrame se pasa como parámetro adicional.

assertThat(axedriver, isAxeClean().within(new IFrameSelector("#frame1", "#selector1")));

La definición del ámbito dentro de múltiples IFrames funciona de la misma manera que la selección múltiple estándar. Simplemente cree dos o más selectores IFrame separados por comas.

assertThat(axedriver, isAxeClean().within(new IFrameSelector("#frame1", "selector1"), 
        new IFrameSelector("#frame2", "#selector2")));

También es posible definir el ámbito dentro de IFrames anidados. Este ejemplo muestra la definición del ámbito de un escaneo dentro del selector 1 de un IFrame que está dentro de un segundo IFrame.

assertThat(axedriver, isAxeClean().within(
    new IFrameSelector("#frame1",
    new IFrameSelector("#frame2", "#selector1"))));

Finalmente, es posible establecer múltiples ámbitos dentro de una página así como dentro de un IFrame. Para que esto funcione, se requiere un objeto selector de elementos.

assertThat(axedriver, isAxeClean().within(
    new ElementSelector("#selector1"),
    new ElementSelector("#selector2"),
    new IFrameSelector("#frame", "selector3")));

Selección de reglas

La API también ofrece la posibilidad de modificar qué reglas se utilizan en un escaneo. Hay tres formas de modificar las reglas que se utilizan. Estas incluyen: verificar reglas adicionales fuera del conjunto de reglas estándar para el escaneo, no verificar reglas dentro del conjunto de reglas estándar para el escaneo, y verificar solo aquellas reglas que se especifican explícitamente.

Para obtener una lista completa de las etiquetas de reglas válidas que puede usar con estos métodos y lo que prueban, lea la documentación sobre reglas

Para comprobar reglas adicionales, utilice el método de comprobación. Para probar una sola regla adicional, simplemente pase la etiqueta de la regla al método de comprobación

assertThat(axedriver, isAxeClean().checking("label"));

De manera similar a los otros métodos de cadena, se pueden verificar múltiples reglas adicionales con el método de comprobación de dos maneras:

assertThat(axedriver, isAxeClean().checking("label", "tabindex"));
assertThat(axedriver, isAxeClean().checking("label").checking("tabindex"));

El método de comprobación también se puede encadenar con un método de selección de reglas.

assertThat(axedriver, isAxeClean().accordingTo("wcag2a").checking("tabindex"));

También existe la opción de omitir reglas de un escaneo. Esto es posible mediante el método de omisión. Funciona de forma idéntica al método de verificación, excepto que omite reglas en lugar de agregarlas.

assertThat(axedriver, isAxeClean().skipping("label"));

También se puede utilizar para omitir varias reglas.

assertThat(axedriver, isAxeClean().skipping("label", "tabindex"));
assertThat(axedriver, isAxeClean().skipping("label").skipping("tabindex));

Por último, también se puede utilizar con un método de selección de reglas.

assertThat(axedriver, isAxeClean().accordingTo("wcag2a").skipping("#label"));

El último método se utiliza cuando solo se desean reglas específicas. El método de comprobación exclusiva modifica el escaneo para verificar únicamente aquellas reglas que se le pasan explícitamente. Además, este método no se encadenará con el método de selección de estándares de accesibilidad. Para comprobar solo una única regla:

assertThat(axedriver, isAxeClean().checkingOnly("label"));

Este método también se puede utilizar para comprobar varias reglas de dos maneras.

assertThat(axedriver, isAxeClean().checkingOnly("label", "tabindex"));
assertThat(axedriver, isAxeClean().checkingOnly("label").checkingOnly("tabindex"));

Para obtener una lista completa de las etiquetas de reglas válidas que puede utilizar con estos métodos y lo que prueban, lea la documentación sobre reglas.

Ignorar las infracciones

Es posible configurar el escaneo para ignorar instancias específicas de violaciones. Para ello se utiliza el método de ignorancia. Funciona pasando los selectores de los elementos que desea ignorar como un arreglo, junto con la regla que violan.

assertThat(axedriver, isAxeClean().ignoring("[\".sidebar\", \"#branded-content\"]", "color-contrast"));

Servicio de uso

Obtenga información sobre las tendencias de uso de axe DevTools dentro de su organización

De forma predeterminada, el servicio de utilización está deshabilitado y la URL predeterminada es https://usage.deque.com.

Variables de entorno

Este método permite a los usuarios cambiar valores específicos del servicio de utilización a través de variables de entorno.

Variable ambiental Tipo Descripción
AXE_IS_LOGGED_IN Booleano Si el usuario ha iniciado sesión en la aplicación bajo prueba
AXE_KEYCLOAK_ID Cadena El ID de keycloak del usuario que inició sesión
AXE_USUARIO_ID Cadena El nombre del usuario que ejecuta la prueba.
AXE_SESSION_ID Cadena Descripción de la sesión de prueba
AXE_USER_STATUS Cadena El estado del usuario
AXE_USER_JOB_ROLE Cadena El título/rol del individuo que realiza la prueba
AXE_DISTINCT_ID Cadena Identificación distintiva de un usuario individual
AXE_IS_DEV_INSTANCE Booleano Si la aplicación bajo prueba está en una instancia de desarrollo
ORGANIZACIÓN_AXE Cadena La organización del usuario: organización de datos a escala de toda la empresa
APLICACIÓN AXE Cadena El nombre de la aplicación bajo prueba
AXE_METRICS_URL Cadena La URL a la que se envían los datos de uso
AXE_TRACK_USAGE Booleano Si se capturan o no datos de uso

Próximos pasos

Para un uso posterior de los resultados del análisis de axe DevTools, como los informes, consulte la documentación del paquete Java Selenium de axe DevTools

Solución de problemas

Si tiene problemas al configurar su prueba de accesibilidad, comuníquese directamente con su representante de Deque, contáctenos a través de nuestra mesa de soporte o envíenos un correo electrónico. Estaremos encantados de ayudarle a poner en marcha sus esfuerzos de pruebas de accesibilidad.