teste-de-aplicacao-web

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 do navegador.

O que é teste-de-aplicacao-web?

Esta skill fornece um conjunto de ferramentas e padrões para testar aplicações web locais usando Python e Playwright. Ela é útil para desenvolvedores que precisam verificar funcionalidades frontend, depurar comportamento de UI, capturar screenshots e visualizar logs do navegador de forma automatizada. A skill suporta múltiplas plataformas que executam scripts Python com Playwright (via sync_playwright), especialmente aquelas que gerenciam servidores web localmente, como Claude Code, Cursor ou Codex. O principal benefício é a automação de testes em aplicações dinâmicas, usando scripts auxiliares como `scripts/with_server.py` para gerenciar o ciclo de vida de servidores (inclusive múltiplos servidores, como backend e frontend). A abordagem recomendada é o padrão 'Reconhecimento-Então-Ação': primeiro navegar até a aplicação, aguardar o estado 'networkidle', inspecionar o DOM renderizado (com screenshots e seletores), e então executar ações. Scripts auxiliares devem ser chamados como caixas-pretas via `--help`, sem serem lidos para o contexto, para evitar poluição visual. A skill também inclui exemplos de descoberta de elementos, automação de HTML estático e captura de logs de console, além de evitar a armadilha comum de inspecionar o DOM antes do carregamento completo de JavaScript.

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

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · 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ção 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é 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 serem ingeridos em 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 seletores
    │         ├─ Sucesso → Escrever script Playwright usando seletores
    │         └─ Falha/Incompleto → Tratar como dinâmico (abaixo)
    │
    └─ Não (webapp dinâmico) → O servidor já está rodando?
        ├─ Não → Executar: python scripts/with_server.py --help
        │        Então usar o helper + escrever script Playwright simplificado
        │
        └─ Sim → Padrão Reconhecimento-Então-Ação:
            1. Navegar e aguardar networkidle
            2. Tirar screenshot ou inspecionar DOM
            3. Identificar seletores a partir do estado renderizado
            4. Executar ações com os seletores descobertos

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 (ex.: 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 chromium em modo headless
    page = browser.new_page()
    page.goto('http://localhost:5173') # Servidor já rodando 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 Reconhecimento-Então-Ação

  1. Inspecionar DOM renderizado:

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

  3. Executar ações usando os seletores descobertos

Armadilha Comum

❌ Não inspecione o DOM antes de aguardar networkidle em aplicações dinâmicas ✅ 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 scripts/ pode ajudar. Esses scripts lidam com fluxos de trabalho comuns e complexos de forma confiável, sem poluir a janela de contexto. Use --help para ver o uso, depois invoque diretamente.
  • Use sync_playwright() para scripts síncronos
  • Sempre feche o navegador quando terminar
  • Use seletores descritivos: text=, role=, seletores 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 entradas em uma página
    • static_html_automation.py - Usando URLs file:// para HTML local
    • console_logging.py - Capturando logs de console durante automação

Individual skills in this repo

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

ably-automation

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

abstract-automation

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

abuselpdb-automation

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

abyssale-automation

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

accelo-automation

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

accredible-certificates-automation

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

acculynx-automation

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

active-campaign-automation

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

addresszen-automation

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

adobe-automation

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

adrapid-automation

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

adyntel-automation

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

aeroleads-automation

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

aero-workflow-automation

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

affinda-automation

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

affinity-automation

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

agencyzoom-automation

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

agent-mail-automation

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

agentql-automation

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

agenty-automation

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

Habilidades Relacionadas