CLI para desenvolvimento local de casos de teste de acessibilidade da plataforma Wally
Project description
Wally Dev CLI
Wally Dev é uma ferramenta de linha de comando (CLI) para desenvolvimento local de casos de teste de acessibilidade da plataforma Wally.
🚀 Instalação
Opção 1: pipx (Recomendado)
# Instalar pipx (se necessário)
sudo apt install pipx
pipx ensurepath
# Instalar wally-dev
pipx install wally-dev
Opção 2: pip com virtual environment
# Criar e ativar virtual environment
python3 -m venv ~/.venvs/wally-dev
source ~/.venvs/wally-dev/bin/activate
# Instalar
pip install wally-dev
Opção 3: pip direto (sistemas sem proteção PEP 668)
pip install wally-dev
Requisitos
- Python 3.9 ou superior
- Conta ativa na plataforma Wally
📋 Comandos Disponíveis
| Comando | Descrição |
|---|---|
wally-dev login |
Autenticar na plataforma Wally |
wally-dev logout |
Remover credenciais e desbloquear normas |
wally-dev status |
Mostrar status do workspace local |
wally-dev norms list |
Listar normas disponíveis |
wally-dev rules list |
Listar regras de uma norma |
wally-dev checkout |
Baixar casos de teste para desenvolvimento |
wally-dev run |
Executar casos de teste localmente |
wally-dev push |
Enviar alterações para o servidor |
wally-dev upgrade |
Verificar e instalar atualizações |
🔐 Autenticação
# Login interativo
wally-dev login
# Com parâmetros
wally-dev login --username user@example.com --org-id <organization-id>
🔄 Atualizações
O comando upgrade verifica e instala a versão mais recente do wally-dev automaticamente.
# Atualizar interativamente (pergunta antes de instalar)
wally-dev upgrade
# Verificar se há nova versão (exit code 1 = upgrade disponível)
wally-dev upgrade --check
# Atualizar automaticamente sem confirmação (ideal para CI/CD)
wally-dev upgrade --yes
# Atualizar para versão específica
wally-dev upgrade --version 0.2.0
Detecção automática: O comando detecta se você instalou via pipx ou pip e usa o método correto para atualizar.
Exit Codes:
| Código | Significado |
|---|---|
| 0 | Sucesso (atualizado ou já está na última versão) |
| 1 | Upgrade disponível (com --check) |
| 7 | Erro durante o upgrade |
📦 Workflow de Desenvolvimento
1. Listar normas disponíveis
wally-dev norms list
Saída:
╭────────────────── 📋 Normas (3) ──────────────────╮
│ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ │
│ ┃ ID ┃ Nome ┃ │
│ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ │
│ │ 6954434ffdd23615c0e5d85d │ NBR 17225 │ │
│ │ 695c46a91dd6a5bae0e4863b │ Community │ │
│ └──────────────────────────┴───────────────────┘ │
╰───────────────────────────────────────────────────╯
2. Fazer checkout de uma norma
wally-dev checkout --norm-id <norm-id>
Isso irá:
- Bloquear a norma no servidor (impede edições simultâneas)
- Baixar todos os casos de teste e exemplos para
./workspace/
3. Estrutura do Workspace
./workspace/
<norm-id>/
testCases/
<testcase-id>/
testcase.json # Metadados do caso de teste
code/
finder.py # Função que encontra elementos
validator.py # Função que valida elementos
examples/
compliant/
example.html # HTML que deve passar
non-compliant/
example.html # HTML que deve falhar
4. Desenvolver o caso de teste
finder.py
from bs4 import BeautifulSoup
def find(html_content: str):
"""
Encontra elementos HTML para validação.
Args:
html_content: String com o HTML a ser analisado
Yields:
Elementos encontrados para validação
"""
soup = BeautifulSoup(html_content, "html.parser")
for img in soup.find_all("img"):
yield img
validator.py
def validate(element) -> bool:
"""
Valida se um elemento está em conformidade.
Args:
element: Elemento HTML encontrado pelo finder
Returns:
True se o elemento está em conformidade, False caso contrário
"""
alt = element.get("alt", "")
return bool(alt and alt.strip())
5. Executar testes localmente
# Executar todos os exemplos de um caso de teste
wally-dev run --testcase <testcase-id>
# Executar um exemplo específico
wally-dev run --testcase <testcase-id> --example compliant/example.html
# Modo debug (mostra elementos encontrados e validações)
wally-dev run --testcase <testcase-id> --debug
Saída com --debug:
╭───────────────────── 🔍 Debug Output ─────────────────────╮
│ Execução bem sucedida │
│ │
│ Elementos encontrados: 2 │
│ Tempo finder: 0.35ms │
│ Tempo total: 0.40ms │
╰───────────────────────────────────────────────────────────╯
📋 Elementos e Validações:
┏━━━┳━━━━━━━┳━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ # ┃ Linha ┃ Tag ┃ validate() ┃ Snippet ┃
┡━━━╇━━━━━━━╇━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 0 │ 10 │ img │ ✓ True │ <img alt="" src="img.jpg"/> │
│ 1 │ 12 │ img │ ✓ True │ <img aria-hidden="true"/> │
└───┴───────┴─────┴────────────┴─────────────────────────────┘
6. Enviar alterações
wally-dev push --norm-id <norm-id>
🧪 Lógica de Validação
Os casos de teste seguem a convenção:
- Exemplos
compliant/: Todos os elementos encontrados pelofinderdevem retornarTruenovalidator - Exemplos
non-compliant/: Pelo menos um elemento deve retornarFalsenovalidator
⚙️ Configuração
A CLI armazena configurações em ~/.config/wally-dev/.wally-dev.json:
{
"access_token": "...",
"refresh_token": "...",
"user_email": "user@example.com",
"organization_id": "...",
"backend_url": "https://api.wally.equallyze.com/backend/services/v0.0.1"
}
Variáveis de Ambiente
| Variável | Descrição | Default |
|---|---|---|
WALLY_DEV_BACKEND_URL |
URL da API backend | https://api.wally.equallyze.com/... |
WALLY_DEV_CONFIG_DIR |
Diretório de configuração | ~/.config/wally-dev |
🛠️ Desenvolvimento
Instalação para desenvolvimento
git clone https://gitlab.com/AcessibilidadeParaTodos/wally/wally-dev.git
cd wally-dev
# Criar virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Instalar em modo editável com dependências de dev
pip install -e ".[dev]"
Executar testes
pytest
pytest --cov=wally_dev --cov-report=html
Formatação e linting
black wally_dev tests
isort wally_dev tests
ruff check wally_dev tests
mypy wally_dev
📄 Licença
Este software é propriedade da Equallyze Tecnologia LTDA. Todos os direitos reservados. Consulte o arquivo LICENSE para mais detalhes.
🔗 Links
🤝 Suporte
Para suporte, abra uma issue no GitLab ou entre em contato através de contato@equallyze.com.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wally_dev-0.4.0.tar.gz.
File metadata
- Download URL: wally_dev-0.4.0.tar.gz
- Upload date:
- Size: 121.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b7e04aae8c36b1fd32be8021ad5ef4f13a6fb588e34b6cd7dff1f6c0602d271
|
|
| MD5 |
592de80c186c980b83a562471380032c
|
|
| BLAKE2b-256 |
072c6990335f9b77ab052e908c912f8ef36f55f6a04914ff627552e3f60a55b6
|
File details
Details for the file wally_dev-0.4.0-py3-none-any.whl.
File metadata
- Download URL: wally_dev-0.4.0-py3-none-any.whl
- Upload date:
- Size: 89.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3993de1ca187d1c1c403707c86dbdc96f7f23c2c108fcdee62f3a7694cb50f6
|
|
| MD5 |
f2dee1047c9e71457b7ab3b2e3aeab65
|
|
| BLAKE2b-256 |
a85ef1ac7494d63449db60a358fd53779f231cbdb1358a56d7ed249d5b1da9b3
|