Integración Personalizada
La integración personalizada permite a los equipos enviar fácilmente todos los datos de prueba desde la extensión axe DevTools directamente a un endpoint configurable de webhook. Esto le permite configurar un endpoint de webhook personalizado que pueda consumir los datos de prueba de axe DevTools.
Actualmente, solo las empresas que han adquirido axe DevTools para Web o la extensión axe DevTools (Pro) a través de un vendedor de Deque califican para la integración personalizada. Si está interesado en obtener una integración personalizada, hable con su contacto de Deque.
Cómo funciona
Configuración de la Integración
Cualquier administrador del portal de cuentas de axe puede configurar la integración.
- Haga clic en „CONFIGURACIÓN“ en la barra de navegación
- Seleccione la pestaña „Integraciones“
- Haga clic en „Agregar nueva conexión a Integración Personalizada“

- Proporcione un nombre (máx. 255 caracteres)
- Proporcione la URL de su webhook
- Proporcione un secreto (ver autenticación abajo)
Envío de Resultados de Prueba
Configuración Automática de Parámetros de Consulta testId y url
Para la configuración automática de pruebas, se admiten dos parámetros de consulta:
testId: el identificador de la prueba dentro de su aplicación interna (por ejemplo,1234567)url: la URL de prueba codificada en URI (por ejemplo,https%3A%2F%2Fworkshop.dequelabs.com)
- Enlace (o navegue su navegador) a
/axe-devtools/test-setup?testId=1234567&url=https%3A%2F%2Fworkshop.dequelabs.com - La extensión axe DevTools detectará automáticamente el testId y programará la prueba que se va a realizar
- Si se proporciona un parámetro de consulta
url, el navegador se dirigirá a dicha URL - Si no se proporciona un parámetro de consulta
url, se le pedirá que navegue manualmente a la URL
- Si se proporciona un parámetro de consulta
- Abra la extensión axe DevTools si no está ya abierta

- Elija „Escaneo de Página Completa“, „Escaneo de Página Parcial“ o cualquier IGT para comenzar a probar
- Una vez que la prueba esté completa, navegue a la pestaña „Vista general“ de su prueba guardada
- Abra el menú „Opciones de Compartir“

- Haga clic en la opción „Enviar resultados a integración personalizada“
- Si el endpoint configurado del webhook responde con un código de respuesta
2xx, se mostrará un mensaje de éxito - Si el endpoint configurado del webhook responde con un código de respuesta diferente a
2xx, se mostrará un mensaje de error
- Si el endpoint configurado del webhook responde con un código de respuesta
Añadir Manualmente el ID de Prueba
- Abra la extensión axe DevTools
- Cree una nueva prueba guardada o navegue a una existente
- Una vez que la prueba esté completa, navegue a la pestaña „Vista general“ de su prueba guardada
- Abra el menú „Opciones de Compartir“
- Haga clic en la opción „Enviar resultados a integración personalizada“

- Ingrese su ID de Prueba
- Haga clic en „Enviar“
- Si el endpoint configurado del webhook responde con un código de respuesta
2xx, se mostrará un mensaje de éxito - Si el endpoint configurado del webhook responde con un código de respuesta diferente a
2xx, se mostrará un mensaje de error
- Si el endpoint configurado del webhook responde con un código de respuesta
API de Webhook
Esta sección describe el endpoint de webhook para recibir resultados de prueba de axe DevTools.
Información del Endpoint
Estructura de la URL
La estructura de la URL depende principalmente de ti. Puedes usar el dominio y la ruta de URL que desees (asegúrate de ingresar la URL correcta al configurar la integración personalizada).
POST https://[your-domain]/[webhook-endpoint]Autenticación
La autenticación se implementa utilizando firmas de webhook. Cada solicitud de webhook incluye un encabezado de firma que debe verificarse para asegurar que la solicitud proviene de axe DevTools.
Verificación de Firma
- Se comparte una clave secreta entre axe DevTools y tu servicio
- La firma está incluida en el encabezado
X-Hub-Signature - Formato:
X-Hub-Signature: sha256=<signature> - Marca de tiempo
X-Deque-Request-Timestamp: <ISO timestamp> - Verifica la firma calculando un HMAC SHA-256 de la marca de tiempo y el cuerpo de la solicitud usando tu clave secreta que fue proporcionada originalmente
Ejemplo de verificación de firma (node):
import crypto from 'crypto'
function verifyWebhookSignature(payload, timestamp, signature, secret) {
const expectedSignatureBody = Buffer.from(timestamp + JSON.stringify(payload), 'utf8')
const expectedSignature = crypto
.createHmac('sha256', secret)
.update(expectedSignatureBody)
.digest('base64')
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expectedSignature)
)
}Encabezados de Solicitud
| Encabezado | Descripción |
|---|---|
Content-Type |
application/json |
X-Deque-Event |
El tipo de evento (por ejemplo, integration-test-results) |
X-Deque-Request-Id |
Identificador único para la solicitud de webhook |
X-Deque-Request-Timestamp |
Una marca de tiempo ISO 8601 |
X-Hub-Signature |
Firma del payload para verificación |
Esquema de Cuerpo de Solicitud
El payload del webhook sigue el formato JSON Universal de axe. A continuación se presenta el esquema detallado con ejemplos:
Ejemplo de Payload
{
"source": {
"productName": "axe DevTools Enterprise",
"productComponentName": "axe-core",
"productVersion": "4.7.2"
},
"testDetails": {
"testId": "test-123e4567-e89b",
"integrationTestId": "your-test-id-123456",
"startDate": "2025-01-09T10:00:00Z",
"endDate": "2025-01-09T10:01:00Z",
"engine": "axe-core",
"axeVersion": "4.7.2",
"standard": "WCAG 2.1 AA",
"bestPracticesEnabled": true,
"experimentalEnabled": false,
"testName": "Homepage Accessibility Scan",
"createdBy": "john.doe@example.com"
},
"allIssues": [
{
"issueId": "issue-123",
"ruleId": "color-contrast",
"description": "Elements must have sufficient color contrast",
"help": "Elements must meet minimum color contrast ratio requirements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.7/color-contrast",
"impact": "serious",
"needsReview": false,
"isExperimental": false,
"isManual": false,
"summary": "Button text does not have sufficient contrast with background",
"selector": [["#main-nav", "button.login"]],
"tags": ["wcag2aa", "wcag143"],
"createdAt": "2025-01-09T10:00:30Z",
"testUrl": "https://example.com/homepage"
}
]
}Requisitos de Respuesta
Tu punto final de webhook debe:
- responder dentro de 10 segundos
- Devolver un código de estado
2xxpara la recepción exitosa
Manejo de Errores
Implementa un manejo adecuado de errores devolviendo un código de estado no 2xx para estos escenarios:
- Firma inválida
- Tiempo de espera de la solicitud
- Payloads malformados
- Errores del servidor
