Documentação
CLI & CI/CD
Detecte regressões de acessibilidade antes que cheguem à produção. Integre o Web para Todos ao seu pipeline com uma linha de configuração.
1. Obter chave de API
A API REST exige autenticação via header X-Api-Key. Gere sua chave na página de documentação da API.
bash
# Formato da chave
WPT_API_KEY=wpt_<sha256-hash>
# Verificar a chave
curl -X POST https://webparatodos.com.br/api/v1/analyze \
-H "Content-Type: application/json" \
-H "X-Api-Key: $WPT_API_KEY" \
-d '{"url":"https://example.com"}' | jq '.score.wcagLevel'2. CLI — Node.js
O CLI wpt é um script Node.js sem dependências externas (usa apenas APIs nativas do Node 18+).
Instalação
bash
# Download direto
curl -O https://webparatodos.com.br/cli/wpt.mjs
chmod +x wpt.mjs
# Ou via npx (sem instalação)
npx wpt@latest <url>Uso básico
bash
# Análise simples (usa WPT_API_KEY do ambiente)
node wpt.mjs https://meusite.gov.br
# Com nível mínimo AAA
node wpt.mjs https://meusite.gov.br --min-level AAA
# Saída JSON completa (para integração com outras ferramentas)
node wpt.mjs https://meusite.gov.br --json | jq '.score'
# Chave explícita
node wpt.mjs https://meusite.gov.br --key wpt_abc123Exit codes
| Código | Significado |
|---|---|
0 | Site atingiu o nível mínimo exigido |
1 | Site abaixo do nível mínimo exigido |
2 | Erro de rede, API indisponível ou chave inválida |
3. GitHub Actions
Adicione o workflow abaixo ao seu repositório em .github/workflows/accessibility.yml. A auditoria roda em cada PR que modifique HTML, CSS ou JS.
ℹ️Adicione o segredo WPT_API_KEY nas configurações do repositório em Settings → Secrets → Actions → New repository secret.
.github/workflows/accessibility.yml
name: Auditoria de Acessibilidade
on:
pull_request:
paths:
- '**.html'
- '**.tsx'
- '**.jsx'
- '**.css'
jobs:
accessibility:
name: WCAG 2.1 AA — Web para Todos
runs-on: ubuntu-latest
steps:
- name: Checar código
uses: actions/checkout@v4
- name: Configurar Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Baixar CLI
run: |
curl -fsSL https://webparatodos.com.br/cli/wpt.mjs -o wpt.mjs
chmod +x wpt.mjs
- name: Analisar acessibilidade
env:
WPT_API_KEY: ${{ secrets.WPT_API_KEY }}
SITE_URL: ${{ vars.SITE_URL || 'https://meusite.gov.br' }}
run: node wpt.mjs "$SITE_URL" --min-level AA4. GitLab CI
.gitlab-ci.yml (trecho)
accessibility:
stage: test
image: node:20-alpine
script:
- apk add --no-cache curl
- curl -fsSL https://webparatodos.com.br/cli/wpt.mjs -o wpt.mjs
- node wpt.mjs "$SITE_URL" --min-level AA
variables:
SITE_URL: https://meusite.gov.br
only:
- merge_requests5. API REST direta (curl / qualquer linguagem)
Sem CLI, direto ao ponto:
bash
# Requisição
curl -s -X POST https://webparatodos.com.br/api/v1/analyze \
-H "Content-Type: application/json" \
-H "X-Api-Key: $WPT_API_KEY" \
-d '{"url":"https://meusite.gov.br"}' \
| jq '{nivel: .score.wcagLevel, nota: .score.global}'
# Resposta
{
"nivel": "AA",
"nota": 87
}python
import httpx, os, sys
r = httpx.post(
"https://webparatodos.com.br/api/v1/analyze",
headers={"X-Api-Key": os.environ["WPT_API_KEY"]},
json={"url": "https://meusite.gov.br"},
timeout=30,
)
data = r.json()
level = data["score"]["wcagLevel"]
print(f"Nível: {level} Nota: {data['score']['global']}/100")
sys.exit(0 if level in ("AA", "AAA") else 1)6. Estrutura da resposta
AnalysisResult (simplificado)
{
"url": "https://meusite.gov.br",
"analyzedAt": "2026-03-29T12:00:00.000Z",
"score": {
"global": 87,
"wcagLevel": "AA",
"wcagLevelLabel": "Conformidade AA",
"breakdown": {
"critical": 0,
"serious": 1,
"moderate": 3,
"minor": 5
},
"levelBreakdown": {
"A": { "total": 30, "passed": 30 },
"AA": { "total": 20, "passed": 19 },
"AAA": { "total": 28, "passed": 15 }
}
},
"violations": [
{
"id": "color-contrast",
"severity": "serious",
"wcagCriteria": ["1.4.3"],
"description": "Contraste insuficiente",
"html": "<p class=\"text-gray-400\">...</p>",
"howToFix": "Aumentar contraste para ≥ 4.5:1"
}
],
"passingChecks": [ /* critérios que passaram */ ]
}Documentação completa da API
Todos os parâmetros, headers, rate limits e exemplos de resposta completa.
Ver referência da API