Integração do Axe Developer Hub com 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

Use o serviço web REST do Axe Developer Hub com várias plataformas Git

Not for use with personal data

Requer:

Visão Geral

O Axe Developer Hub oferece um serviço web REST que você pode usar como base para integração em suas implementações de CI/CD com serviços como GitLab e BitBucket. Se você estiver usando o GitHub, por favor, veja Usando a Ação do GitHub do Axe Developer Hub.

O serviço REST espera como entrada uma chave API do Axe Developer Hub, seu ID de projeto e um SHA de commit Git. Dentro do objeto de resposta você verá:

  • O número de erros de acessibilidade encontrados durante a última execução de teste
  • O número de erros de acessibilidade acima do limite a11y
  • Um URL direcionando para resultados detalhados no Axe Developer Hub

Recuperar Informações da Execução do Teste

O serviço web responde a uma solicitação GET e pode recuperar informações sobre um SHA de commit Git específico para o projeto especificado do Developer Hub.

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

Requisitos

Sua solicitação exigirá um parâmetro de caminho, um parâmetro de consulta e dois cabeçalhos.

  • Servidor: https://axe.deque.com
  • Ponto de Extremidade: /api-pub/v1/axe-watcher/gh/<*:SHA*>
  • Parâmetro de consulta: ?project_id=<your-project-id>
  • Método de solicitação: GET

Parâmetro de Caminho: O :SHA parâmetro deve ser substituído pelo SHA do commit Git que você deseja examinar.

Parâmetro de Consulta: Substitua '' pelo ID único do projeto que aparece na página de instruções após você criar um projeto. Para encontrar esta informação a qualquer momento após a configuração, vá para seus Projetos no Axe Developer Hub. Encontre seu projeto, vá até a Configurações, então selecione Configurar projeto para abrir a página de instruções.

Cabeçalhos: São necessários dois cabeçalhos:

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

Solicitação de Exemplo:

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

(Cabeçalhos são necessários, mas não mostrados.)

Resposta JSON

O seguinte mostra um exemplo de corpo da resposta JSON retornado pelo serviço:

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

A tabela a seguir fornece informações sobre os valores na resposta JSON:

Item Tipo Descrição
axe_url string O caminho absoluto desses resultados no Axe Developer Hub
difference_in_page_states number Diferença numérica em estados da página em comparação com o compromisso anterior no mesmo ramo
issues_over_a11y_threshold number Contagem de problemas que excedem o limite de acessibilidade
last_run_created_at string Data e hora no formato ISO 8601, fuso horário UTC, granularidade em milissegundos, da execução do teste
last_run_new_violation_count number Contagem de novos erros de acessibilidade
last_run_page_state_count number Contagem de estados da página
last_run_resolved_violation_count number Contagem de problemas de acessibilidade que foram resolvidos desde o compromisso anterior neste ramo
last_run_violation_count number Contagem de erros de acessibilidade
project_name string O nome do projeto conforme mostrado na página de Projetos no Axe Developer Hub

Respostas de Erro

Status Causa Corpo da Resposta
404 Not Found SHA não encontrado, ou nenhuma execução de teste associada a ele { "error": "No Git information found" }
401 Unauthorized Chave de API inválida { "error": "Invalid API key" }

Exemplos de Uso

Os exemplos a seguir mostram como acessar o endpoint REST. Em cada exemplo, você precisa definir os parâmetros necessários como variáveis de ambiente:

Variável de ambiente Descrição
API_KEY Uma chave de API pessoal correspondente ao seu tipo de projeto (encontrada na página da conta Axe )
PROJECT_ID Seu ID único do projeto
GIT_SHA O SHA do commit Git para o qual você gostaria de obter resultados do Axe Developer Hub

JavaScript (Node.js)

Este exemplo solicita resultados do Axe Developer Hub para o SHA especificado (na variável de ambiente GIT_SHA) e ID do projeto especificado. Se novos erros de acessibilidade forem descobertos, a contagem é registrada no console. Caso contrário, 'axe limpo!' é registrado no console.

note

Este exemplo não testa erros como uma chave de API inválida ou informações de Git ausentes. test for errors such as an invalid API key or missing Git information.

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 exemplo usa curl e jq para retornar o número de violações na saída padrão.

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

Se o serviço web retornar um erro de servidor, curl --fail sai com o código 22 e suprime o corpo da resposta. Use a opção --fail-with-body para também retornar o JSON da resposta como parte da saída padrão.