windows-desktop-e2e
Ensina seu agente de IA a desenhar interfaces bonitas e fáceis de usar e testar o código e achar erros antes dos usuários.
O que ela faz
Esta ferramenta ajuda a testar programas de computador feitos para Windows. Ela verifica se os botões, caixas de texto e outras partes do programa funcionam como esperado, usando uma tecnologia chamada UI Automation.
Quando usar
- ✓Quando você está criando testes para um programa de Windows.
- ✓Quando seus testes automáticos para programas de Windows estão falhando.
- ✓Quando você quer tornar um programa de Windows mais fácil de testar.
Exemplo do que pedir para a IA
“Como posso testar se o botão de login do meu programa de Windows funciona?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta usa o UI Automation, que é uma parte do Windows, para encontrar e interagir com os elementos visuais do programa. Ela permite que os testes cliquem em botões e digitem texto, como um usuário faria.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add affaan-m/ECC --skill windows-desktop-e2eOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/skills/windows-desktop-e2e/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Testes E2E para Desktop Windows
Testes de ponta a ponta (end-to-end) para aplicações desktop nativas do Windows usando pywinauto, com suporte do Windows UI Automation (UIA). Abrange WPF, WinForms, Win32/MFC e Qt (5.x / 6.x) — com orientações específicas para Qt em uma seção dedicada.
Quando Ativar
- Escrevendo ou executando testes E2E para uma aplicação desktop nativa do Windows
- Configurando um conjunto de testes de GUI desktop do zero
- Diagnosticando testes de automação de desktop instáveis ou falhando
- Adicionando testabilidade (AutomationId, nomes acessíveis) a uma aplicação existente
- Integrando E2E de desktop em um pipeline de CI/CD (GitHub Actions
windows-latest)
Quando NÃO Usar
- Aplicações web → use a habilidade
e2e-testing(Playwright) - Aplicações Electron / CEF / WebView2 → a camada HTML precisa de automação de navegador, não UIA
- Aplicações mobile → use ferramentas específicas da plataforma (UIAutomator, XCUITest)
- Testes puramente unitários ou de integração que não precisam de uma GUI em execução
Conceitos Principais
Toda automação de desktop Windows depende do UI Automation (UIA), uma API de acessibilidade integrada ao Windows. Cada framework suportado expõe uma árvore de elementos UIA com propriedades que o Claude pode ler e agir:
Your test (Python)
└── pywinauto (UIA backend)
└── Windows UI Automation API ← built into Windows, framework-agnostic
└── App's UIA provider ← each framework ships its own
└── Running .exe
Qualidade UIA por framework:
| Framework | AutomationId | Confiabilidade | Observações |
|---|---|---|---|
| WPF | 5/5 | Excelente | x:Name mapeia diretamente para AutomationId |
| WinForms | 4/5 | Bom | AccessibleName = AutomationId |
| UWP / WinUI 3 | 5/5 | Excelente | Suporte completo da Microsoft |
| Qt 6.x | 5/5 | Excelente | Acessibilidade habilitada por padrão; nomes de classe mudam para Qt6* |
| Qt 5.15+ | 4/5 | Bom | Módulo de Acessibilidade aprimorado |
| Qt 5.7–5.14 | 3/5 | Razoável | Precisa de QT_ACCESSIBILITY=1; objectName manual |
| Win32 / MFC | 3/5 | Razoável | IDs de controle acessíveis; correspondência de texto comum |
Configuração e Pré-requisitos
# Python 3.8+, Windows only
pip install pywinauto pytest pytest-html Pillow pytest-timeout
# Optional: screen recording
# Install ffmpeg and add to PATH: https://ffmpeg.org/download.html
Verifique se o UIA é alcançável:
from pywinauto import Desktop
Desktop(backend="uia").windows() # lists all top-level windows
Instale o Accessibility Insights for Windows (gratuito, da Microsoft) — seu equivalente ao DevTools para inspecionar a árvore de elementos UIA antes de escrever qualquer teste.
Configuração de Testabilidade (por Framework)
A coisa mais impactante que você pode fazer é dar a cada controle interativo um AutomationId estável antes de escrever os testes.
WPF
<!-- XAML: x:Name becomes AutomationId automatically -->
<TextBox x:Name="usernameInput" />
<PasswordBox x:Name="passwordInput" />
<Button x:Name="btnLogin" Content="Login" />
<TextBlock x:Name="lblError" />
WinForms
// Set in designer or code
usernameInput.AccessibleName = "usernameInput";
passwordInput.AccessibleName = "passwordInput";
btnLogin.AccessibleName = "btnLogin";
lblError.AccessibleName = "lblError";
Win32 / MFC
// Control resource IDs in .rc file are exposed as AutomationId strings
// IDC_EDIT_USERNAME -> AutomationId "1001"
// Prefer SetWindowText for Name; add IAccessible for richer support
Qt — veja a seção dedicada abaixo
Page Object Model
tests/
├── conftest.py # app launch fixture, failure screenshot
├── pytest.ini
├── config.py
├── pages/
│ ├── __init__.py # required for imports
│ ├── base_page.py # locators, wait, screenshot helpers
│ ├── login_page.py
│ └── main_page.py
├── tests/
│ ├── __init__.py
│ ├── test_login.py
│ └── test_main_flow.py
└── artifacts/ # screenshots, videos, logs
base_page.py
import os, time
from pywinauto import Desktop
from config import ACTION_TIMEOUT, ARTIFACT_DIR
class BasePage:
def __init__(self, window):
self.window = window
# --- Localizadores (ordem de prioridade) ---
def by_id(self, auto_id, **kw):
"""AutomationId — o mais estável. Use como primeira opção."""
return self.window.child_window(auto_id=auto_id, **kw)
def by_name(self, name, **kw):
"""Texto visível / nome acessível."""
return self.window.child_window(title=name, **kw)
def by_class(self, cls, index=0, **kw):
"""Classe do controle + índice — frágil, evite se possível."""
…
Perguntas frequentes
Posso usar isso para testar sites?
Não, esta ferramenta é apenas para programas instalados no Windows. Para sites, use ferramentas de teste de navegador.
Preciso ser um programador experiente para usar?
Não, a ferramenta foi feita para ser simples. Ela ajuda a automatizar tarefas de teste que antes exigiriam muito conhecimento técnico.
O que é 'UI Automation'?
É uma tecnologia do Windows que permite que programas (e ferramentas de teste) entendam e interajam com os elementos visuais de outros programas, como botões e caixas de texto.
Detalhes
Descrição original do autor
E2E testing for Windows native desktop apps (WPF, WinForms, Win32/MFC, Qt) using pywinauto and Windows UI Automation. Use when writing E2E tests for a Windows native desktop app with pywinauto or UI Automation.
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #310
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
webapp-testing
Permite testar aplicações web locais, verificar funcionalidades e depurar o comportamento da interface. Captura screenshots e logs do navegador.
anthropics/skills
ponytail-audit
Faz uma auditoria completa do código. Ele encontra bugs, falhas de segurança, código lento e sugere o que remover ou melhorar.
DietrichGebert/ponytail
ponytail-review
Revisa a qualidade de uma mudança no código. Verifica se a lógica está correta, se é segura, rápida e se todas as linhas são necessárias.
DietrichGebert/ponytail