Integration des axe Developer Hub mit CI/CD-Plattformen

Link to Integration des axe Developer Hub mit CI/CD-Plattformen copied to clipboard

Einzelheiten über den REST-Dienst, mit dem Sie axe Developer Hub in CI/CD-Dienste für verschiedene Git-Plattformen wie GitLab oder BitBucket integrieren können.

Free Trial
Not for use with personal data

Einleitung

Axe Developer Hub stellt einen REST-Webdienst zur Verfügung, den Sie als Grundlage für die Integration von Axe Developer Hub in Ihre CI/CD-Implementierungen für Dienste wie GitLab und BitBucket verwenden können.

Der REST-Dienst erwartet als Eingabe einen API-Schlüssel von axe Developer Hub und einen Git-Commit-SHA. Sein Antwortobjekt enthält unter anderem Folgendes:

  • Die Anzahl der beim letzten Testlauf gefundenen Barrierefreiheitsfehler
  • Die Anzahl der Barrierefreiheitsfehler über dem a11y-Schwellenwert
  • Eine URL, die detaillierte Ergebnisse zum Axe Developer Hub liefert

(Weitere Informationen zum gesamten Antwortobjekt finden Sie unter Response JSON .)

Dieses Dokument beschreibt den REST-Dienst und sein Antwortobjekt im Detail und bietet ein JavaScript-Beispiel, das seine Verwendung demonstriert.

Abrufen von Testlaufinformationen

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

Ruft axe Developer Hub-Informationen zum angegebenen Git-Commit-SHA (GET) ab.

Anfrage

Der Webdienst antwortet auf eine GET-Anfrage. Ihre Anfrage benötigt einen Pfadparameter und zwei Header.

  • Server: https://axe.deque.com
  • Endpunkt: /api-pub/v1/axe-watcher/gh/:SHA
  • Anforderungsmethode: GET

Pfadparameter: Das :SHA Parameter sollte durch den Git-Commit-SHA ersetzt werden, an dem Sie interessiert sind.

note

Sie müssen den vollständigen 40-Zeichen-Git-Commit-SHA verwenden und nicht eine verkürzte Version davon (z. B. einen sieben Zeichen langen verkürzten SHA).

Überschriften: Es werden zwei Überschriften benötigt:

  • Accept: application/json
  • X-API-Key: your-project-api-key

Beispielanfrage:

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

(Kopfzeilen sind erforderlich, werden aber nicht angezeigt.)

JSON-Antwort

Nachfolgend sehen Sie ein Beispiel für einen vom Dienst zurückgegebenen JSON-Antworttext:

{
  "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"
}

Die folgende Tabelle enthält Informationen zu den Werten in der JSON-Antwort:

Element Art Beschreibung
axe_url Zeichenkette Der absolute Pfad dieser Ergebnisse auf axe Developer Hub
Unterschied_in_Seitenzustand Zahl Numerischer Unterschied in Seitenzuständen im Vergleich zum vorherigen Commit auf demselben Zweig
issues_over_a11y_threshold Zahl Anzahl der Probleme, die den [a11y-Schwellenwert] überschreiten(dh-a11y-threshold)
last_run_created_at String Datum und Uhrzeit des Testlaufs im ISO 8601-Format, UTC-Zeitzone, Millisekundengenauigkeit
letzter_lauf_neue_verstoss_anzahl Nummer Anzahl neuer Barrierefreiheitsfehler
letzter_lauf_seitenstatus_anzahl Zahl Anzahl der Seitenzustände
last_run_resolved_violation_count Zahl Anzahl der Zugänglichkeitsprobleme, die seit dem letzten Commit in diesem Branch behoben wurden
Anzahl der Verstöße in der letzten Ausführung Nummer Anzahl der Barrierefreiheitsfehler
Projektname String Der Name des Projekts, wie er auf der [Projektseite] angezeigt wird(dh-manage-projects)

Fehlerantworten

Wenn der Dienst den angegebenen SHA nicht finden kann oder wenn mit diesem SHA kein Testlauf verknüpft ist, gibt er den Antwortcode 404 nicht gefunden und einen JSON-Fehlertext zurück:

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

Wenn Ihr API-Schlüssel ungültig ist, erhalten Sie den Antwortcode 401 Nicht autorisiert und einen JSON-Fehlertext:

{
  "error": "Invalid API key"
}

Anwendungsbeispiele

Dieser Abschnitt enthält zwei Beispiele, die zeigen, wie in JavaScript und Bash (mit curl) auf den REST-Endpunkt zugegriffen wird. Um diese Beispiele zu verwenden, müssen Sie die erforderlichen Parameter als Umgebungsvariablen festlegen:

Umgebungsvariable Beschreibung
API_KEY Der API-Schlüssel Ihres Projekts
GIT_SHA Der Git-Commit-SHA, für den Sie die Ergebnisse des axe Developer Hub abrufen möchten

JavaScript-Beispiel

Dieses Node.js-JavaScript-Codebeispiel zeigt, wie Anfragen an den REST-Endpunkt des axe Developer Hub gestellt werden:

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()

Das Beispiel fordert die Ergebnisse des axe Developer Hub für den angegebenen SHA (in der Umgebungsvariable GIT_SHA) an und protokolliert die Anzahl in der Konsole, wenn neue Barrierefreiheitsfehler auftreten. Andernfalls protokolliert es „axe clean!“ in der Konsole.

note

Das obige Beispiel testet nicht auf Fehler wie einen ungültigen API-Schlüssel oder fehlende Git-Informationen.

Bash-Beispiel

Das folgende Bash-Beispiel verwendet curl und jq , um die Anzahl der Verstöße (den last_run_violation_count Wert) in der Standardausgabe zurückzugeben. Es verwendet die gleichen Umgebungsvariablen wie das JavaScript-Beispiel:

#!/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'

Wenn der Webdienst einen Serverfehler zurückgibt, wird curl mit dem Exit-Code 22 beendet (ohne Antwortausgabe) aufgrund der --fail Option. Sie können stattdessen die --fail-with-body option, um die JSON-Antwort bei einem Fehler auch in der Standardausgabe zurückzugeben. Weitere Informationen finden Sie unter Fehlerantworten .

Siehe auch

Verwenden Sie die GitHub-Aktion.