Awesome-omni-skill webapp-testing
Kit de ferramentas para interagir e testar aplicativos web locais usando Playwright. Suporta verificação de funcionalidade de frontend, depuração de comportamento de UI, captura de capturas de tela do navegador e visualização de logs do navegador.
git clone https://github.com/diegosouzapw/awesome-omni-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/fullstack-web/webapp-testing-rafaelramosdf" ~/.claude/skills/diegosouzapw-awesome-omni-skill-webapp-testing-d62926 && rm -rf "$T"
skills/fullstack-web/webapp-testing-rafaelramosdf/SKILL.mdTeste de Aplicação Web
Para testar aplicativos web locais, escreva scripts nativos Python Playwright.
Scripts Auxiliares Disponíveis:
- Gerencia o ciclo de vida do servidor (suporta múltiplos servidores)scripts/with_server.py
Sempre execute scripts com
primeiro para ver o uso. NÃO leia a fonte até tentar executar o script primeiro e descobrir que uma solução personalizada é absolutamente necessária. Esses scripts podem ser muito grandes e, portanto, poluir sua janela de contexto. Eles existem para serem chamados diretamente como scripts de caixa preta, em vez de ingeridos em sua janela de contexto.--help
Árvore de Decisão: Escolhendo Sua Abordagem
Tarefa do usuário → É HTML estático? ├─ Sim → Leia o arquivo HTML diretamente para identificar seletores │ ├─ Sucesso → Escreva script Playwright usando seletores │ └─ Falha/Incompleto → Trate como dinâmico (abaixo) │ └─ Não (webapp dinâmico) → O servidor já está rodando? ├─ Não → Execute: python scripts/with_server.py --help │ Então use o auxiliar + escreva script Playwright simplificado │ └─ Sim → Reconhecimento-então-ação: 1. Navegue e aguarde networkidle 2. Tire captura de tela ou inspecione DOM 3. Identifique seletores do estado renderizado 4. Execute ações com seletores descobertos
Exemplo: Usando with_server.py
Para iniciar um servidor, execute
--help primeiro, depois use o auxiliar:
Servidor único:
python scripts/with_server.py --server "npm run dev" --port 5173 -- python your_automation.py
Múltiplos servidores (por exemplo, backend + frontend):
python scripts/with_server.py \ --server "cd backend && python server.py" --port 3000 \ --server "cd frontend && npm run dev" --port 5173 \ -- python your_automation.py
Para criar um script de automação, inclua apenas a lógica do Playwright (os servidores são gerenciados automaticamente):
from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch(headless=True) # Sempre inicie o chromium no modo headless page = browser.new_page() page.goto('http://localhost:5173') # Servidor já rodando e pronto page.wait_for_load_state('networkidle') # CRÍTICO: Aguarde a execução do JS # ... sua lógica de automação browser.close()
Padrão Reconhecimento-Então-Ação
-
Inspecione o DOM renderizado:
page.screenshot(path='/tmp/inspect.png', full_page=True) content = page.content() page.locator('button').all() -
Identifique seletores a partir dos resultados da inspeção
-
Execute ações usando seletores descobertos
Armadilha Comum
❌ Não inspecione o DOM antes de aguardar
networkidle em aplicativos dinâmicos
✅ Faça aguardar page.wait_for_load_state('networkidle') antes da inspeção
Melhores Práticas
- Use scripts empacotados como caixas pretas - Para realizar uma tarefa, considere se um dos scripts disponíveis em
pode ajudar. Esses scripts lidam com fluxos de trabalho comuns e complexos de forma confiável sem desordenar a janela de contexto. Usescripts/
para ver o uso, depois invoque diretamente.--help - Use
para scripts síncronossync_playwright() - Sempre feche o navegador quando terminar
- Use seletores descritivos:
,text=
, seletores CSS ou IDsrole= - Adicione esperas apropriadas:
oupage.wait_for_selector()page.wait_for_timeout()
Arquivos de Referência
- examples/ - Exemplos mostrando padrões comuns:
- Descobrindo botões, links e entradas em uma páginaelement_discovery.py
- Usando URLs file:// para HTML localstatic_html_automation.py
- Capturando logs do console durante a automaçãoconsole_logging.py