Integración de Axe Developer Hub con plataformas CI/CD

Link to Integración de Axe Developer Hub con plataformas CI/CD copied to clipboard

Detalles sobre el servicio REST que puede usar para integrar axe Developer Hub en servicios CI/CD para varias plataformas Git como GitLab o BitBucket.

Free Trial
Not for use with personal data

Introducción

Axe Developer Hub proporciona un servicio web REST que puede usar como base para integrar Axe Developer Hub en sus implementaciones de CI/CD para servicios como GitLab y BitBucket.

El servicio REST espera como entrada una clave API de axe Developer Hub y un SHA de commit de Git, y su objeto de respuesta contiene, entre otros datos, lo siguiente:

  • La cantidad de errores de accesibilidad encontrados durante la última ejecución de prueba
  • El número de errores de accesibilidad por encima del umbral a11y
  • Una URL que proporciona resultados detallados sobre axe Developer Hub

(Consulte Respuesta JSON para obtener más información sobre todo el objeto de respuesta).

Este documento describe el servicio REST y su objeto de respuesta en detalle y proporciona un ejemplo de JavaScript que demuestra su uso.

Recuperar información de Ejecución de Test

GET https://axe.deque.com/api-pub/v1/axe-watcher/gh/:SHA

Recupera información de Axe Developer Hub sobre el commit SHA de Git especificado (GET).

Solicitud

El servicio web responde a una solicitud GET. Su solicitud necesita un parámetro de ruta y dos encabezados.

  • Servidor: https://axe.deque.com
  • Endpoint: /api-pub/v1/axe-watcher/gh/:SHA
  • Método de petición: GET

Parámetro de ruta: El parámetro :SHA debe reemplazarse con el SHA de confirmación de Git que le interesa.

note

Debe utilizar el SHA de confirmación de Git completo de 40 caracteres en lugar de una versión abreviada del mismo (como un SHA abreviado de siete caracteres).

Encabezados: Se requieren dos encabezados:

  • Accept: application/json
  • X-API-Key: clave API de su proyecto

Ejemplo de solicitud:

GET https://axe.deque.com/api-pub/v1/axe-watcher/gh/9eabf5b536662000f79978c4d1b6e4eff5c8d785

(Los encabezados son obligatorios pero no se muestran).

Respuesta JSON

A continuación se muestra un ejemplo de cuerpo de respuesta JSON devuelto por el servicio:

{
  "project_name": "Main test suite",
  "issues_over_a11y_threshold": 2,
  "last_run_created_at": "2024-01-21T17:16:39.267Z",
  "last_run_violation_count": 2,
  "last_run_new_violation_count": 2,
  "last_run_resolved_violation_count": 0,
  "last_run_page_state_count": 2,
  "difference_in_page_states": 0,
  "axe_url": "/axe-watcher/projects/19f12525-bcbe-4b4f-9b12-76de4f375d9b/branches/test-updates/compare/353ec943-b957-4abc-8d3a-5deed182a304/9288e977-b81f-49d7-83de-010255baede4?settings_hash=bc8334022f94bb2d9f69447946df487f&issues_over_a11y_threshold=2"
}

La siguiente tabla proporciona información sobre los valores en la respuesta JSON:

Ítem Tipo Descripción
axe_url cadena La ruta absoluta de estos resultados en axe Developer Hub
difference_in_page_states número Diferencia numérica en estados de página en comparación con la confirmación anterior en la misma rama
problemas_sobre_umbral_a11y número Recuento de problemas que superan el umbral a11y
última_ejecución_creada_a_las cadena Fecha y hora en formato ISO 8601, zona horaria UTC, granularidad de milisegundos, de la ejecución de la prueba
last_run_new_violation_count número Recuento de nuevos errores de accesibilidad
last_run_page_state_count número Recuento de estados de la página
last_run_resolved_violation_count número Recuento de problemas de accesibilidad que se resolvieron desde la última confirmación en esta rama
conteo_de_violaciones_última_ejecución número Recuento de errores de accesibilidad
nombre_del_proyecto cadena El nombre del proyecto tal como se muestra en la página del proyecto

Respuestas de error

Si el servicio no puede encontrar el SHA especificado o si no hay una ejecución de prueba asociada con ese SHA, devuelve un código de respuesta 404 no encontrado y un cuerpo JSON de error:

{
  "error": "No Git information found"
}

Si su clave API no es válida, recibirá un ** código de respuesta 401 no autorizado** y un cuerpo JSON de error:

{
  "error": "Invalid API key"
}

Ejemplos de uso

Esta sección contiene dos ejemplos que muestran cómo acceder al punto final REST en JavaScript y Bash (con curl). Para utilizar estos ejemplos, debe establecer los parámetros necesarios como variables de entorno:

Variable de entorno Descripción
API_KEY La clave API de su proyecto
GIT_SHA El SHA de confirmación de Git para el que desea obtener los resultados de axe Developer Hub

Ejemplo de JavaScript

Este ejemplo de código JavaScript de Node.js muestra cómo realizar solicitudes al punto final REST de axe Developer Hub:

const https = require('https')
const assert = require('assert')

const { API_KEY, GIT_SHA } = process.env
assert(API_KEY, 'API_KEY is required')
assert(GIT_SHA, 'GIT_SHA is required')

const request = () =>
  new Promise((resolve, reject) => {
    /** @type {import('http').RequestOptions} */
    const options = {
      hostname: 'axe.deque.com',
      port: 443,
      path: `/api-pub/v1/axe-watcher/gh/${GIT_SHA}`,
      method: 'GET',
      headers: {
        'X-API-Key': API_KEY,
        Accept: 'application/json'
      }
    }

    let data = ''

    const req = https.request(options, res => {
      res.on('error', reject)

      res.on('data', d => {
        data += d
      })

      res.on('end', () => {
        const json = JSON.parse(data)
        resolve(json)
      })
    })
    req.end()
  })

const main = async () => {
  let json = null
  for (let tries = 0; tries < 10; tries++) {
    try {
      json = await request()
      break
    } catch (err) {
      console.warn(err.message)
    }
  }

  assert(json, 'Unable to fetch data from axe.deque.com')

  const { last_run_violation_count, axe_url, project_name, issues_over_a11y_threshold } = json

  if (last_run_violation_count) {
    console.log(
      `There are ${last_run_violation_count} violations in ${project_name}!`
    )
    console.log(`See ${axe_url} for more information`)
  } else {
    console.log('axe clean!')
  }
}

main()

La muestra solicita los resultados de axe Developer Hub para el SHA especificado (en la variable de entorno GIT_SHA) y, si hay nuevos errores de accesibilidad, registra el recuento en la consola. De lo contrario, registra en el log "¡axe limpio!" en la consola.

note

El ejemplo anterior no prueba errores como una clave API no válida o información de Git faltante.

Ejemplo de bash

El siguiente ejemplo de Bash usa curl y jq para devolver el número de violaciones (el valor last_run_violation_count ) en la salida estándar. Utiliza las mismas variables de entorno que el ejemplo de JavaScript:

#!/bin/bash

if [ -z $API_KEY ] || [ -z $GIT_SHA ]; then
  echo "Must set both API_KEY and GIT_SHA environment variables."
  exit 1
fi

curl --fail -H "Accept: application/json" -H "X-API-Key: $API_KEY" "https://axe.deque.com/api-pub/v1/axe-watcher/gh/$GIT_SHA" | jq '.last_run_violation_count'

Si el servicio web devuelve un error de servidor, curl saldrá con un código de salida de 22 (sin salida de respuesta) debido a la --fail opción. En su lugar, puedes utilizar el --fallar-con-cuerpo Opción para devolver también la respuesta JSON en la salida estándar en caso de falla. Consulte Respuestas de error para obtener más información.

Consulte también

Utilice la acción de GitHub.