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

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

Utiliza el servicio web REST de Axe Developer Hub con varias plataformas Git

Not for use with personal data

Requisitos:

Descripción general

Axe Developer Hub ofrece un servicio web REST que usted puede utilizar como base para la integración en sus implementaciones CI/CD con servicios como GitLab y BitBucket. Si está utilizando GitHub, por favor vea Usar el GitHub Action de Axe Developer Hub.

El servicio REST espera como entrada una clave API de Axe Developer Hub, su ID de proyecto y un SHA de commit de Git. Dentro del objeto de respuesta verá:

  • El número de errores de accesibilidad encontrados durante la última ejecución de pruebas
  • El número de errores de accesibilidad sobre el umbral de a11y
  • Una URL que dirige a resultados detallados en Axe Developer Hub

Recuperar información de ejecución de pruebas

El servicio web responde a una solicitud GET y puede recuperar información sobre un SHA de commit de Git en particular para el proyecto especificado en Developer Hub.

GET https://axe.deque.com/api-pub/v1/axe-watcher/gh/<:SHA>?project_id=<your-project-id>

Requisitos

Su solicitud requerirá un parámetro de ruta, un parámetro de consulta y dos encabezados.

  • Servidor: https://axe.deque.com
  • Punto final: /api-pub/v1/axe-watcher/gh/<*:SHA*>
  • Parámetro de consulta: ?project_id=<your-project-id>
  • Método de solicitud: GET

Parámetro de ruta: El parámetro :SHA debe ser reemplazado con el SHA de commit de Git que desea examinar.

Parámetro de consulta: Reemplace '' con el ID único del proyecto que aparece en la página de instrucciones después de que crea un proyecto. Para encontrar esta información en cualquier momento después de la configuración, vaya a sus Proyectos en Axe Developer Hub. Encuentre su proyecto, vaya a su Configuraciones, luego seleccione Configurar proyecto para abrir la página de instrucciones.

Encabezados: Se requieren dos encabezados:

  • Accept: application/json
  • X-API-Key:<your-personal-api-key>

Trate su clave de API como un secreto: guárdela en una variable de entorno o en el almacén de secretos de su plataforma CI/CD en lugar de codificarla de forma explícita en sus solicitudes.

Ejemplo de solicitud:

GET https://axe.deque.com/api-pub/v1/axe-watcher/gh/9eabf5b536662000f79978c4d1b6e4eff5c8d785?project_id=268a7e7d-cb23-45a0-aa7d-6f35e3bed2c9

(Se requieren encabezados pero no se muestran.)

Respuesta JSON

Lo siguiente muestra un ejemplo del 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:

Elemento Tipo Descripción
axe_url string La ruta absoluta de estos resultados en Axe Developer Hub
difference_in_page_states number Diferencia numérica en estados de página en comparación con el commit anterior en la misma rama
issues_over_a11y_threshold number Conteo de problemas que exceden el umbral de a11y
last_run_created_at string Fecha y hora en formato ISO 8601, zona horaria UTC, con granularidad milisegundos, de la ejecución de la prueba
last_run_new_violation_count number Conteo de nuevos errores de accesibilidad
last_run_page_state_count number Conteo de estados de página
last_run_resolved_violation_count number Conteo de problemas de accesibilidad que fueron resueltos desde el commit anterior en esta rama
last_run_violation_count number Conteo de errores de accesibilidad
project_name string El nombre del proyecto tal como se muestra en la página Proyectos en Axe Developer Hub

Respuestas de Error

Estado Causa Cuerpo de la Respuesta
404 Not Found SHA no encontrada, o ninguna ejecución de prueba asociada { "error": "No Git information found" }
401 Unauthorized Clave API inválida { "error": "Invalid API key" }

Axe Developer Hub proporciona puntos finales REST adicionales para recuperar datos de sesión y resultados programáticamente. Vea Referencia de la API de Sesiones y Resultados para el punto final de Sesiones (listar sesiones para un proyecto con filtrado y paginación con cursor) y el punto final de Resultados (recuperar resumen o resultados JSON universales completos para una sesión específica).

Ejemplos de Uso

Los siguientes ejemplos muestran cómo acceder al punto final REST. En cada ejemplo, necesitas establecer los parámetros requeridos como variables de entorno:

Variable de entorno Descripción
API_KEY Una clave API personal correspondiente a tu tipo de proyecto (encontrada en la página de cuenta Axe)
PROJECT_ID Tu ID de proyecto único
GIT_SHA El SHA del commit de Git para el cual deseas obtener resultados de Axe Developer Hub

JavaScript (Node.js)

Este ejemplo solicita resultados de Axe Developer Hub para el SHA especificado (en la variable de entorno GIT_SHA) y el ID de proyecto especificado. Si se descubren nuevos errores de accesibilidad, la cuenta se registra en la consola. De lo contrario, '¡axe limpio!' se registra en la consola.

note

Este ejemplo no prueba errores tales como una clave API inválida o información de Git faltante.

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

const { API_KEY, PROJECT_ID, GIT_SHA } = process.env
assert(API_KEY, 'API_KEY is required')
assert(PROJECT_ID, 'PROJECT_ID 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}?project_id=${PROJECT_ID}`,
      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()

Bash

Este ejemplo utiliza curl y jq para devolver el número de violaciones en la salida estándar.

#!/bin/bash

if [ -z $API_KEY ] || [ -z $PROJECT_ID ] || [ -z $GIT_SHA ]; then
  echo "Must set the API_KEY, PROJECT_ID, 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?project_id=$PROJECT_ID" | jq '.last_run_violation_count'

Si el servicio web devuelve un error del servidor, curl --fail sale con el código 22 y suprime el cuerpo de la respuesta. Usa la opción --fail-with-body para también devolver el JSON de la respuesta como parte de la salida estándar.