Integração do Axe Developer Hub com plataformas CI/CD
Use o serviço web REST do Axe Developer Hub com várias plataformas Git
Requer:
- Seu projeto web usa dados Git
- Axe Developer Hub ID do Projeto
- Chave API Deque correspondente ao seu tipo de projeto
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 '
Cabeçalhos: São necessários dois cabeçalhos:
Accept: application/jsonX-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.
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.
