AntiGem Browser QA
Visão Geral
Habilidade de teste de navegador unificada e token-enxuta para o browser_mcp nativo do AntiGem (17 ferramentas). Abrange 8 aspectos de teste por meio de divulgação progressiva: fluxos exploratórios, formulários/segurança, layout/acessibilidade/visual, PWA/offline/i18n e snippets de auditoria na página. Protocolo obrigatório: reutilização de aba → bloqueio → descoberta por ref → entradas seguras para React → ações em lote → porta de runtime (console + rede).
Quando Usar
- Criação ou execução de testes E2E em aplicações web/PWA
- Caça a bugs exploratória (fluxos de primeiro uso, sequências adversariais)
- Fuzzing de limites de formulários, payloads XSS, uploads de arquivos, drag-drop, canvas/WebGL
- Auditorias WCAG 2.1 AA/AAA, reflow com zoom de 200%, CLS, alvos de toque (≥48px/≥60dp)
- Diferenciação de regressão visual linha de base vs build, breakpoints responsivos
- Ciclo de vida do Service Worker, sincronização offline IndexedDB/Dexie, clipping de glifos/matras Indic
- Portas de tolerância zero para erros de console / falhas de rede em runtime
Protocolo de Execução Obrigatório
- Reutilização de Aba:
browser_list_tabs → reutilizar existente ou browser_open_url
- Bloqueio de Toque/Zoom:
browser_lock(locked=true) antes de cadeias de múltiplos passos
- Descoberta por Ref Primeiro:
browser_find(query="...") (preferido) ou browser_read_page(filter="interactive") para árvore ARIA com IDs ref_N estáveis
- Entradas Seguras para React:
browser_form_input(ref, value) para <input>, <textarea>, <select>, checkboxes/switches, radios, contenteditable
- Atuação Confiável:
browser_computer (left_click, hover, left_click_drag, key, scroll_to, screenshot, zoom [x0,y0,x1,y1], wait); browser_upload_file para inputs de arquivo; browser_handle_dialog para alertas
- Loteamento de Ida e Volta:
browser_batch para cadeias determinísticas de múltiplos passos
- Porta de Runtime (Tolerância Zero):
browser_get_console_logs(pattern="error|warn") + browser_read_network (recarregar primeiro se a aba for anterior ao anexo MCP) após cada tela
- Desbloqueio:
browser_lock(locked=false) na saída
Checklist Unificado de 8 Aspectos
| # | Aspecto | Portas de Aprovação/Reprovação |
|---|
| 1 | Exploratório e Fluxos | Simulação de primeiro usuário; navegação multi-rota; prioridade modal browser.goBack(); armadilhas de foco; formato de relatório de defeito |
| 2 | Formulários e Componentes | Fuzzing de limites; clamp numérico; validação inline em blur; scroll-para-primeiro-erro; debounce de duplo envio; sanitização XSS; upload de arquivo; drag-drop; verificação de canvas/SVG |
| 3 | Testes de Segurança | Headers CSP; injeção de payload XSS; fallbacks de negação de permissão; flags de cookie seguro |
| 4 | Layout, Acessibilidade e Visual | WCAG AA ≥4,5:1 / Sol AAA ≥7,0:1 / Escotópico Vermelho #000000; reflow com zoom de 200%; CLS ≤0,1; prefers-reduced-motion; alvos de toque ≥48px (padrão) / ≥64px (rural); diff visual linha de base vs build |
| 5 | PWA, Offline e i18n | Manifesto e ciclo de vida SW; IndexedDB/Dexie ACID + useLiveQuery; simulação offline + fila de sincronização; clipping de conjunções/matras Indic; document.documentElement.lang; Lakhs/Crores + tabular-nums |
| 6 | Web APIs e Permissões | navigator.vibrate?.(), negações de permissão de câmera/geo; fallbacks de hardware API |
| 7 | Diagnósticos de Runtime | Falha rápida de erro de console; falha rápida de rede 4xx/5xx; auditorias LCP/memória via browser_eval_js |
| 8 | Celular e Viewport | Matriz browser_set_view_mode mobile/desktop; micro-inspeção browser_computer(action="zoom") |
Tabela de Roteamento de Referência Progressiva
| Foco da Tarefa | Carregar Referência |
|---|
| Caça a bugs exploratória, fluxos de primeiro uso, foco modal, navegação | references/01-exploratory-and-flows.md |
| Validação de formulários, fuzzing de limites, upload de arquivo, drag-drop, canvas, XSS | references/02-forms-components-security.md |
| Auditoria WCAG, contraste, reflow com zoom, CLS, alvos de toque, diff visual | references/03-layout-a11y-visual.md |
| Ciclo de vida SW, IndexedDB, sincronização offline, tipografia Indic, permissões | references/04-pwa-offline-i18n-apis.md |
| Snippets de auditoria na página (rótulos órfãos, caixas delimitadoras, contraste, SW, IndexedDB) | references/05-eval-js-audit-snippets.md |
Referência Rápida: Mapeamento de Ferramentas browser_mcp
| Primitiva Upstream | Ferramenta AntiGem |
|---|
page.fill() / selectOption() / check() | browser_form_input(ref, value) |
page.click() / keyboard.press() / hover() / dragAndDrop() | browser_computer(left_click, hover, left_click_drag, key, scroll_to, ...) |
page.setInputFiles() | browser_upload_file |
page.on('dialog') | browser_handle_dialog(accept=true/false) |
page.evaluate() | browser_eval_js (top-level await, retorna JSON) |
page.on('console') / page.on('pageerror') | browser_get_console_logs(pattern="...") |
page.on('response') / HAR | browser_read_network |
| Cadeias de múltiplos passos | browser_batch + browser_lock |
| Viewport / screenshot / zoom | `browser_set_view_mode + browser_computer(screenshot |
Erros Comuns
- Pular
browser_lock → toque/zoom acidental corrompe IDs de ref
- Usar coordenadas em vez de refs → frágil, quebra com reflow
- Não executar porta de runtime → perde erros de console / requisições com falha
- Carregar todas as referências de uma vez → inchaço de tokens; carregar sob demanda por tabela de roteamento
- Esquecer
browser_lock(false) → deixa a aba bloqueada para o usuário
Impacto no Mundo Real
- Redução de 90% de tokens vs snapshots DOM completos via
browser_find/browser_read_page(filter="interactive")
- Uma única chamada
browser_eval_js executa auditoria de tela completa (a11y + geometria + contraste + SW + IndexedDB)
- Porta de runtime de tolerância zero captura regressões antes que cheguem aos usuários