Integratie van Axe Developer Hub met CI/CD-platforms
Gebruik de REST webservice van Axe Developer Hub met verschillende Git-platforms
Vereist:
- Je webproject gebruikt Git-gegevens
- Axe Developer Hub Project-ID
- Deque API-sleutel die overeenkomt met jouw projecttype
Overzicht
Axe Developer Hub biedt een REST webservice die je kunt gebruiken als basis voor integratie in je CI/CD-implementaties met diensten zoals GitLab en BitBucket. Als je GitHub gebruikt, zie dan De Axe Developer Hub GitHub-actie gebruiken.
De REST-service verwacht als invoer een Axe Developer Hub API-sleutel, je project-ID en een Git commit SHA. Binnen het responsobject zie je:
- Het aantal toegankelijkheidsfouten dat is gevonden tijdens de laatste testuitvoering
- Het aantal toegankelijkheidsfouten over de a11y-drempel
- Een URL die verwijst naar gedetailleerde resultaten op Axe Developer Hub
Testuitvoeringsinformatie ophalen
De webservice reageert op een GET-verzoek en kan informatie ophalen over een bepaalde Git commit SHA voor het opgegeven Developer Hub-project.
GET https://axe.deque.com/api-pub/v1/axe-watcher/gh/<:SHA>?project_id=<your-project-id>Vereisten
Je verzoek vereist één padparameter, een queryparameter en twee headers.
- Server:
https://axe.deque.com - Eindpunt:
/api-pub/v1/axe-watcher/gh/<*:SHA*> - Queryparameter:
?project_id=<your-project-id> - Aanvraagmethode: GET
Padparameter: De parameter :SHA moet worden vervangen door de Git commit SHA die je wilt onderzoeken.
Query Parameter: Vervang '
Headers: Twee headers zijn vereist:
Accept: application/jsonX-API-Key:<your-personal-api-key>
Voorbeeldverzoek:
GET https://axe.deque.com/api-pub/v1/axe-watcher/gh/9eabf5b536662000f79978c4d1b6e4eff5c8d785?project_id=268a7e7d-cb23-45a0-aa7d-6f35e3bed2c9(Headers zijn vereist maar niet getoond.)
Respons JSON
Het volgende laat een voorbeeld zien van een JSON-responslichaam dat door de service wordt geretourneerd:
{
"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"
}De volgende tabel geeft informatie over de waarden in de JSON-respons:
| Item | Type | Beschrijving |
|---|---|---|
axe_url |
string |
Het absolute pad van deze resultaten op Axe Developer Hub |
difference_in_page_states |
number |
Numeriek verschil in paginastatussen vergeleken met de vorige commit op dezelfde branch |
issues_over_a11y_threshold |
number |
Aantal problemen dat de a11y-drempel |
last_run_created_at |
string |
Datum en tijd in ISO 8601-indeling, UTC-tijdzone, nauwkeurigheid op milliseconden van de testuitvoering |
last_run_new_violation_count |
number |
Aantal nieuwe toegankelijkheidsfouten |
last_run_page_state_count |
number |
Aantal paginastatussen |
last_run_resolved_violation_count |
number |
Aantal toegankelijkheidsproblemen dat is opgelost sinds de vorige commit op deze branch |
last_run_violation_count |
number |
Aantal toegankelijkheidsfouten |
project_name |
string |
De naam van het project zoals weergegeven op de Projectenpagina in Axe Developer Hub |
Foutreacties
| Status | Oorzaak | Response Body |
|---|---|---|
404 Not Found |
SHA niet gevonden, of geen testuitvoering eraan gekoppeld | { "error": "No Git information found" } |
401 Unauthorized |
Ongeldige API-sleutel | { "error": "Invalid API key" } |
Voorbeeld van gebruik
De volgende voorbeelden laten zien hoe u toegang kunt krijgen tot het REST-eindpunt. In elk voorbeeld moet u de vereiste parameters instellen als omgevingsvariabelen:
| Omgevingsvariabele | Beschrijving |
|---|---|
API_KEY |
Een persoonlijke API-sleutel die overeenkomt met uw projecttype (te vinden op de Axe accountpagina ) |
PROJECT_ID |
Uw unieke project-ID |
GIT_SHA |
De Git-commit SHA waarvoor u resultaten van Axe Developer Hub wilt verkrijgen |
JavaScript (Node.js)
Dit voorbeeld vraagt Axe Developer Hub-resultaten op voor de opgegeven SHA (in de GIT_SHA-omgevingsvariabele) en opgegeven project-ID. Als er nieuwe toegankelijkheidsfouten worden ontdekt, wordt het aantal in de console geregistreerd. Anders wordt 'axe clean!' naar de console gelogd.
Dit voorbeeld controleert niet op fouten zoals een ongeldige API-sleutel of ontbrekende Git-informatie.
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
Dit voorbeeld gebruikt curl en jq om het aantal overtredingen op standaarduitvoer te retourneren.
#!/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'Als de webservice een serverfout retourneert, curl --fail beëindigt het met code 22 en onderdrukt het de response body. Gebruik de --fail-with-body optie om ook de response JSON als onderdeel van de standaarduitvoer te retourneren.
