Claude Code Plugins

Community-maintained marketplace

Feedback

Toolkit para interagir e testar aplicações web locais usando Chrome DevTools MCP. Suporta verificação de funcionalidade frontend, debugging de UI, captura de screenshots, análise de performance, inspeção de network e visualização de logs do console.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name devtools-testing
description Toolkit para interagir e testar aplicações web locais usando Chrome DevTools MCP. Suporta verificação de funcionalidade frontend, debugging de UI, captura de screenshots, análise de performance, inspeção de network e visualização de logs do console.
license Complete terms in LICENSE.txt

Web Application Testing com Chrome DevTools MCP

Para testar aplicações web locais, use as ferramentas MCP do Chrome DevTools diretamente.

Vantagens do Chrome DevTools MCP:

  • ✅ Integração nativa com Chrome DevTools
  • ✅ Performance insights automáticos (Core Web Vitals)
  • ✅ Network debugging completo
  • ✅ Console logging em tempo real
  • ✅ Screenshots e snapshots do DOM
  • ✅ Não requer scripts Python externos

Ferramentas MCP Disponíveis

📝 Input Automation (8 tools)

  • mcp__chrome-devtools__click - Clicar em elementos
  • mcp__chrome-devtools__drag - Arrastar elementos
  • mcp__chrome-devtools__fill - Preencher inputs
  • mcp__chrome-devtools__fill_form - Preencher formulários completos
  • mcp__chrome-devtools__handle_dialog - Lidar com dialogs/alerts
  • mcp__chrome-devtools__hover - Hover sobre elementos
  • mcp__chrome-devtools__press_key - Pressionar teclas
  • mcp__chrome-devtools__upload_file - Upload de arquivos

🧭 Navigation (6 tools)

  • mcp__chrome-devtools__navigate_page - Navegar para URLs
  • mcp__chrome-devtools__new_page - Criar nova aba
  • mcp__chrome-devtools__list_pages - Listar abas abertas
  • mcp__chrome-devtools__select_page - Selecionar aba
  • mcp__chrome-devtools__close_page - Fechar aba
  • mcp__chrome-devtools__wait_for - Aguardar texto aparecer

🔍 Debugging (5 tools)

  • mcp__chrome-devtools__take_snapshot - Snapshot do DOM (a11y tree)
  • mcp__chrome-devtools__take_screenshot - Screenshot da página
  • mcp__chrome-devtools__evaluate_script - Executar JavaScript
  • mcp__chrome-devtools__list_console_messages - Listar logs do console
  • mcp__chrome-devtools__get_console_message - Obter log específico

📊 Performance (3 tools)

  • mcp__chrome-devtools__performance_start_trace - Iniciar trace
  • mcp__chrome-devtools__performance_stop_trace - Parar trace e obter insights
  • mcp__chrome-devtools__performance_analyze_insight - Analisar insight específico

🌐 Network (2 tools)

  • mcp__chrome-devtools__list_network_requests - Listar requisições
  • mcp__chrome-devtools__get_network_request - Obter detalhes de requisição

📱 Emulation (2 tools)

  • mcp__chrome-devtools__emulate - Emular device, rede, geolocalização
  • mcp__chrome-devtools__resize_page - Redimensionar viewport

Árvore de Decisão: Escolhendo sua Abordagem

Tarefa do usuário → HTML estático?
    ├─ Sim → Ler arquivo HTML diretamente para identificar seletores
    │         ├─ Sucesso → Usar ferramentas MCP com seletores
    │         └─ Falha/Incompleto → Tratar como dinâmico (abaixo)
    │
    └─ Não (webapp dinâmico) → Servidor já está rodando?
        ├─ Não → Iniciar servidor primeiro (npm run dev, etc)
        │
        └─ Sim → Padrão Reconnaissance-Then-Action:
            1. new_page ou navigate_page para URL
            2. take_snapshot para ver estrutura do DOM
            3. Identificar seletores (uid) do snapshot
            4. Executar ações com seletores descobertos

Padrão: Reconnaissance-Then-Action 🎯

1. Navegar e Inspecionar

Ferramentas:
- mcp__chrome-devtools__new_page(url="http://localhost:3000")
  OU
- mcp__chrome-devtools__navigate_page(url="http://localhost:3000")

- mcp__chrome-devtools__take_snapshot()
  → Retorna estrutura do DOM com UIDs únicos para cada elemento

2. Identificar Seletores

Do snapshot, você recebe elementos como:

[42] button "Login" (enabled)
[43] input email (empty)
[44] input password (empty)

Os números entre colchetes são os UIDs dos elementos.

3. Executar Ações

Use os UIDs para interagir:
- mcp__chrome-devtools__fill(uid="43", value="user@example.com")
- mcp__chrome-devtools__fill(uid="44", value="senha123")
- mcp__chrome-devtools__click(uid="42")

Exemplos Práticos

Ver pasta examples/ para exemplos detalhados:

  • element_discovery.md - Descobrir elementos na página
  • console_logging.md - Capturar logs do console
  • static_html_automation.md - Automatizar HTML estático

Armadilhas Comuns ⚠️

❌ Não use UIDs de snapshots antigos

1. take_snapshot()  → UIDs: 10, 11, 12
2. navigate_page(url="outra-url")
3. click(uid="10")  ❌ UID inválido! Nova página = novos UIDs

Sempre tire novo snapshot após navegação

1. navigate_page(url="nova-url")
2. take_snapshot()  → Novos UIDs: 20, 21, 22
3. click(uid="20")  ✓ Correto!

❌ Não assuma que elementos existem

1. navigate_page(url="http://localhost:3000")
2. click(uid="10")  ❌ Não sabemos se uid 10 existe!

Sempre faça reconnaissance primeiro

1. navigate_page(url="http://localhost:3000")
2. take_snapshot()  → Verificar o que existe
3. click(uid="10")  ✓ Agora sabemos que existe!

❌ Não ignore wait_for em SPAs

1. click(uid="10")  # Trigger navigation
2. take_snapshot()  ❌ Pode capturar antes de carregar!

Aguarde conteúdo esperado

1. click(uid="10")
2. wait_for(text="Dashboard")  ✓ Aguarda carregar
3. take_snapshot()

Melhores Práticas 📋

  1. Use snapshot como primeiro passo - Sempre faça take_snapshot() antes de interagir
  2. Prefira snapshot a screenshot para descoberta - Snapshot dá UIDs, screenshot é só visual
  3. Use verbose=true quando precisar de mais contexto
  4. Aproveite fill_form para múltiplos campos - Uma chamada para vários inputs
  5. Network e Console são passivos - Capturam automaticamente, consulte depois
  6. Performance trace é sua ferramenta de diagnóstico - Use para problemas de performance
  7. Use wait_for() para sincronização - Melhor que timeouts arbitrários

Script Utilitário

Helper script disponível: scripts/with_server.py

Gerencia lifecycle de servidores (útil tanto para Playwright legado quanto para Chrome DevTools MCP):

# Single server
python scripts/with_server.py --server "npm run dev" --port 5173

# Multiple servers (backend + frontend)
python scripts/with_server.py \
  --server "cd backend && python server.py" --port 3000 \
  --server "cd frontend && npm run dev" --port 5173

Após servidores iniciados, use as ferramentas MCP chrome-devtools para testar.

Migração do Playwright

Se você está migrando de Playwright, consulte MIGRATION-GUIDE.md para um guia completo de conversão.

Exemplos legados em Python/Playwright estão disponíveis em examples/LEGACY-PLAYWRIGHT/ para referência.

Recursos Adicionais

  • Chrome DevTools MCP Server: chrome-devtools-mcp/
  • Tool Reference: chrome-devtools-mcp/docs/tool-reference.md
  • Troubleshooting: chrome-devtools-mcp/docs/troubleshooting.md
  • Design Principles: chrome-devtools-mcp/docs/design-principles.md

Quando Usar

✅ Use DevTools MCP Testing para:

  • Testar SPAs React/Vue/Angular
  • Debugging de problemas de UI
  • Análise de performance detalhada (Core Web Vitals)
  • Inspeção de network requests
  • Captura de console logs
  • Testes E2E simples
  • Verificação de responsividade
  • Emulação de devices e network

⚠️ Considere alternativas para:

  • Testes unitários (use Jest, Vitest)
  • Testes de API pura (use Postman, curl)
  • Load testing (use k6, Artillery)
  • Cross-browser testing (DevTools MCP é Chrome apenas)