CommunityPesquisa e Análise de Dadosgithub.com

ComposioHQ/webapp-testing

Kit de ferramentas para interagir e testar aplicações web locais usando Playwright. Suporta verificação de funcionalidades frontend, depuração de comportamento de UI, captura de screenshots do navegador e visualização de logs.

O que é webapp-testing?

Este skill permite que agentes de IA testem e interajam com aplicações web locais através de scripts Playwright escritos em Python. Ele simplifica o ciclo de testes ao gerenciar automaticamente o ciclo de vida de servidores web (suportando múltiplos servidores simultaneamente) e fornece uma árvore de decisão clara para escolher entre abordagens para HTML estático ou aplicações dinâmicas. O principal caso de uso é a automação de verificações de frontend, captura de screenshots, depuração de comportamento de UI e inspeção do DOM renderizado. A abordagem recomendada é o padrão 'Reconhecimento-Então-Ação': primeiro inspecionar o DOM ou capturar screenshot, depois identificar seletoras e, por fim, executar ações. Scripts auxiliares, localizados na pasta scripts/, devem ser usados como caixas pretas (invocados com --help) para evitar poluir o contexto do agente com código desnecessário. O skill suporta captura de logs do console, identificação de elementos (botões, links, inputs) e automação de HTML estático via URLs file://.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ComposioHQ/awesome-codex-skills/tree/main/webapp-testing

Installed? Explore more Pesquisa e Análise de Dados skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Teste de Aplicações Web

Para testar aplicações web locais, escreva scripts Python nativos com Playwright.

Scripts auxiliares disponíveis:

  • scripts/with_server.py - Gerencia o ciclo de vida do servidor (suporta múltiplos servidores)

Sempre execute scripts com --help primeiro para ver o uso. NÃO leia o código-fonte até que você tenha tentado executar o script primeiro e descoberto que uma solução personalizada é absolutamente necessária. Estes 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 serem ingeridos na sua janela de contexto.

Árvore de Decisão: Escolhendo Sua Abordagem

Tarefa do usuário → É HTML estático?
    ├─ Sim → Ler arquivo HTML diretamente para identificar seletoras
    │         ├─ Sucesso → Escrever script Playwright usando seletoras
    │         └─ Falha/Incompleto → Tratar como dinâmico (abaixo)
    │
    └─ Não (webapp dinâmico) → O servidor já está em execução?
        ├─ Não → Executar: python scripts/with_server.py --help
        │        Em seguida, usar o helper + escrever script Playwright simplificado
        │
        └─ Sim → Padrão de reconhecimento-então-ação:
            1. Navegar e aguardar networkidle
            2. Capturar screenshot ou inspecionar DOM
            3. Identificar seletoras a partir do estado renderizado
            4. Executar ações com as seletoras descobertas

Exemplo: Usando with_server.py

Para iniciar um servidor, execute --help primeiro, depois use o helper:

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 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 iniciar chromium em modo headless
    page = browser.new_page()
    page.goto('http://localhost:5173') # Servidor já em execução e pronto
    page.wait_for_load_state('networkidle') # CRÍTICO: Aguardar execução do JS
    # ... sua lógica de automação
    browser.close()

Padrão de Reconhecimento-Então-Ação

  1. Inspecionar o DOM renderizado:

    page.screenshot(path='/tmp/inspect.png', full_page=True)
    content = page.content()
    page.locator('button').all()
    
  2. Identificar seletoras a partir dos resultados da inspeção

  3. Executar ações usando as seletoras descobertas

Armadilha Comum

❌ Não inspecione o DOM antes de aguardar networkidle em aplicativos dinâmicos ✅ Sim aguarde 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 scripts/ pode ajudar. Esses scripts lidam com fluxos de trabalho complexos e comuns de forma confiável, sem poluir a janela de contexto. Use --help para ver o uso e, em seguida, invoque diretamente.
  • Use sync_playwright() para scripts síncronos
  • Sempre feche o navegador quando terminar
  • Use seletoras descritivas: text=, role=, seletoras CSS ou IDs
  • Adicione esperas apropriadas: page.wait_for_selector() ou page.wait_for_timeout()

Arquivos de Referência

  • examples/ - Exemplos mostrando padrões comuns:
    • element_discovery.py - Descobrindo botões, links e inputs em uma página
    • static_html_automation.py - Usando URLs file:// para HTML local
    • console_logging.py - Capturando logs do console durante a automação

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

ComposioHQ/-21risk-automation

Automate 21risk tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/-2chat-automation

Automate 2chat tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/ably-automation

Automate Ably tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/abstract-automation

Automate Abstract tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/abuselpdb-automation

Automate Abuselpdb tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/abyssale-automation

Automate Abyssale tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/accelo-automation

Automate Accelo tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/accredible-certificates-automation

Automate Accredible Certificates tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/acculynx-automation

Automate Acculynx tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/active-campaign-automation

Automate ActiveCampaign tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/addresszen-automation

Automate Addresszen tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/adobe-automation

Automate Adobe tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/adrapid-automation

Automate Adrapid tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/adyntel-automation

Automate Adyntel tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/aeroleads-automation

Automate Aeroleads tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/aero-workflow-automation

Automate Aero Workflow tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/affinda-automation

Automate Affinda tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/affinity-automation

Automate Affinity tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/agencyzoom-automation

Automate Agencyzoom tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/agent-deep-links

Build, validate, and troubleshoot deep links for Codex, Cursor, VS Code, Visual Studio, and similar tools. Use when users ask for clickable links (especially in Slack) that open threads, files, folders, or app settings.

Habilidades Relacionadas