Integrazione personalizzata
L'integrazione personalizzata consente ai team di inviare facilmente tutti i dati dei test dall'estensione axe DevTools direttamente a un endpoint webhook configurabile. Ciò consente di creare un endpoint webhook personalizzato in grado di utilizzare i dati di test axe DevTools.
Attualmente, solo le aziende che hanno acquistato axe DevTools per Web o l'estensione axe DevTools (Pro) tramite un addetto alle vendite Deque possono usufruire dell'integrazione personalizzata. Se sei interessato a ottenere un'integrazione personalizzata, parla con il tuo contatto Deque.
Come funziona
Configurazione dell'integrazione
Qualsiasi amministratore dell'axe Account Portal può configurare l'integrazione.
- Fare clic su "CONFIGURAZIONE" nella barra di navigazione
- Seleziona la scheda "Integrazioni"
- Fare clic su "Aggiungi nuova connessione all'integrazione personalizzata"
- Fornisci un nome (caratteri massimi: 255)
- Fornisci il suo URL webhook
- Fornire una chiave segreta (vedere autenticazione sotto)
Invio dei risultati dei test
Impostazione automatica dei parametri di query testId e url
Per la configurazione automatica dei test sono supportati due parametri di query:
testId: l'identificativo del test all'interno della sua applicazione interna (ad esempio1234567)url: l'URL di test codificato URI (es.https%3A%2F%2Fworkshop.dequelabs.com)
- Collegati (o navighi nel tuo browser) a
/axe-devtools/test-setup?testId=1234567&url=https%3A%2F%2Fworkshop.dequelabs.com - L'estensione axe DevTools rileverà automaticamente il testId e metterà in coda i test da eseguire
- Se viene fornito un parametro di query
url, il browser verrà indirizzerà a tale URL - Se non viene fornito alcun parametro di query
url, le verrà chiesto di navigare manualmente verso l'URL
- Se viene fornito un parametro di query
- Aprire l'estensione axe DevTools se non è già aperta
- Scegli "Scansione pagina intera", "Scansione pagina parziale" o qualsiasi IGT per iniziare il test
- Una volta completato il test, vai alla scheda "Panoramica" del test salvato
- Apri il menu "Opzioni di condivisione"
- Fare clic sull'opzione "Invia risultati all'integrazione personalizzata"
- Se l'endpoint del webhook configurato risponde con un codice di risposta
2xx, verrà visualizzato un messaggio di successo - Se l'endpoint del webhook configurato risponde con un codice di risposta non
2xx, verrà visualizzato un messaggio di errore
- Se l'endpoint del webhook configurato risponde con un codice di risposta
Aggiunta manuale dell'ID del test
- Apri l'estensione axe DevTools
- Crea un nuovo test salvato o accedi a uno esistente
- Una volta completato il test, vai alla scheda "Panoramica" del test salvato
- Apri il menu "Opzioni di condivisione"
- Fare clic sull'opzione "Invia risultati all'integrazione personalizzata"
- Inserisci il tuo ID test
- Fare clic su "Invia"
- Se l'endpoint del webhook configurato risponde con un codice di risposta
2xx, verrà visualizzato un messaggio di successo - Se l'endpoint del webhook configurato risponde con un codice di risposta non
2xx, verrà visualizzato un messaggio di errore
- Se l'endpoint del webhook configurato risponde con un codice di risposta
API del webhook
Questa sezione descrive l'endpoint del webhook per ricevere i risultati dei test da axe DevTools.
Informazioni sull'endpoint
Struttura URL
La struttura dell'URL dipende principalmente da lei. Può utilizzare il dominio e il percorso URL che preferisce (si assicuri solo di inserire l'URL corretto quando configura l'integrazione personalizzata).
POST https://[your-domain]/[webhook-endpoint]Autenticazione
L'autenticazione viene implementata tramite firme webhook. Ogni richiesta webhook include un'intestazione di firma che deve essere verificata per garantire che la richiesta provenga da axe DevTools.
Verifica della firma
- Una chiave segreta è condivisa tra axe DevTools e il suo servizio
- La firma è inclusa nell'intestazione
X-Hub-Signature - Formato:
X-Hub-Signature: sha256=<signature> - Marca temporale
X-Deque-Request-Timestamp: <ISO timestamp> - Verificare la firma calcolando un HMAC SHA-256 del timestamp e del corpo della richiesta utilizzando la chiave segreta originariamente fornita
Example signature verification (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)
)
}Intestazioni di richiesta
| Intestazione | Descrizione |
|---|---|
Content-Type |
application/json |
X-Deque-Event |
Il tipo di evento (ad esempio integration-test-results) |
X-Deque-Request-Id |
Identificatore univoco per la richiesta webhook |
X-Deque-Request-Timestamp |
Un timestamp ISO 8601 |
X-Hub-Signature |
Firma del payload per la verifica dell'autenticità |
Schema del corpo della richiesta
Il payload del webhook segue il formato axe Universal JSON. Di seguito lo schema dettagliato con esempi:
Esempio di 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"
}
]
}Requisiti di risposta
L'endpoint del webhook deve:
- rispondere entro 10 secondi
- Restituisci un codice di stato
2xxper la ricezione avvenuta con successo
Gestione degli errori
Implementare una gestione degli errori appropriata restituendo un codice di stato diverso da 2xx per questi scenari:
- Firma non valida
- Timeout della richiesta
- Payload malformati
- Errori del server
