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
Requisitos:
- Seu projeto web utiliza dados do Git
- ID do projeto no Axe Developer Hub
- Deque API Key corresponding to your project type
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 GitHub, por favor veja Utilizando 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 do Git. No objeto de resposta, você verá:
- O número de erros de acessibilidade encontrados durante a última execução do teste
- O número de erros de acessibilidade acima do limite de 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 determinado SHA de commit do Git 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 parâmetro :SHA deve ser substituído pelo SHA de commit do Git que você deseja examinar.
Parâmetro de Consulta: Substitua '
Cabeçalhos: Dois cabeçalhos são necessários:
Accept: application/jsonX-API-Key:<your-personal-api-key>
Exemplo de Solicitação:
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 são mostrados.)
JSON de Resposta
O seguinte é um exemplo de corpo de 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 destes resultados no Axe Developer Hub |
difference_in_page_states |
number |
Diferença numérica em estados da página comparado ao commit anterior na mesma branch |
issues_over_a11y_threshold |
number |
Contagem de problemas que excedem o limite de a11y |
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 commit 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 nenhum teste associado 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 de conta do Axe ) |
PROJECT_ID |
Seu ID único de 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 o ID do projeto especificado. Se novos erros de acessibilidade forem descobertos, a contagem é registrada no console. Caso contrário, 'axe clean!' é registrado no console.
Este exemplo não testa erros como uma chave de API inválida ou informações Git ausentes.
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.
