Agentes de navegador: probar el sitio como lo ve el agente|INEMA.CLUB-PRO

Clase 2 · 20 min

Playwright MCP en Claude Code/Codex: el snapshot de accesibilidad en la práctica

Playwright MCP le da un navegador a tu agente de código. No envía una captura de pantalla: envía el snapshot de accesibilidad, con una referencia (ref) en cada control, y el agente actúa por esas refs. En esta clase un script hace exactamente las llamadas que haría el agente, sin modelo, y después conectas el servidor a Claude Code o a Codex.

Comenzar la lección
Un notebook abierto en una terminal oscura, junto a un monitor con un formulario de agendamiento, luz neutra de oficina.

En esta lección vas a

  1. 1El snapshot con refs (e13, e15, e18)
  2. 2Las llamadas: navigate, snapshot, type, select, click, wait_for
  3. 3El error común: tomar el snapshot antes de que la página termine
  4. 4Conectar con Claude Code (.mcp.json) y con Codex (config.toml)

Objetivo: hacer con Playwright MCP lo que hace el agente: leer el snapshot, encontrar el control por la ref y actuar, y conectar el servidor a tu agente.

01Del snapshot al clic

Haz clic en cada bloque.

Haz clic en cada bloque del diagrama para ver lo que hace.

La ref vale para ese snapshot. Si cambió la página, toma otro.

02Lo que el agente recibe y lo que hace

Leyendo la salida del ensayo.

1. Las herramientas

El servidor expone 25 herramientas de navegador (browser_navigate, browser_snapshot, browser_click, browser_type, browser_select_option, browser_wait_for, browser_console_messages…). El agente las ve todas en la lista y elige.

La documentación del proyecto hoy también recomienda un camino por CLI y skills para agentes de código; el kit usa las herramientas por MCP, que es lo que leen Claude Code y Codex.

03El ensayo: las llamadas del agente, sin modelo

ver-como-agente.mjs conecta Playwright MCP por stdio, como lo haría Claude Code, y hace la tarea "ver los horarios de Revisão completa".

Terminal · hacer la tarea con Playwright MCP
cd ~/projetos/formacao-webmcp-navegador-v72/kit
node ver-como-agente.mjs; echo "saída: $?"
Terminal · lo mismo, sin esperar la lista
cd ~/projetos/formacao-webmcp-navegador-v72/kit
node ver-como-agente.mjs --sem-esperar; echo "saída: $?"
Ejemplo del repositorio
→ browser_navigate {"url":"http://127.0.0.1:PORTA/agendar.html"}
→ browser_snapshot {}
  achei: textbox "Seu nome" = e13 · combobox "Serviço" = e15 · button "Ver horários" = e18
→ browser_type {"target":"e13","text":"Ana"}
→ browser_select_option {"target":"e15","values":["Revisão completa"]}
→ browser_click {"target":"e18"}
→ browser_wait_for {"text":"horários livres para"}
→ browser_snapshot {}
  status na página: 2 horários livres para Revisão completa em 2026-11-03.
tarefa: horários de Revisão completa em 2026-11-03 → 2 (08:00, 13:00) em 7 chamadas
saída: 0

Siete llamadas. Cada línea con → es una herramienta llamada por el cliente MCP; PORTA reemplaza el puerto aleatorio del servidor local.

04Tu sitio y tu agente

Primero solo lectura en tu sitio; después el servidor conectado a Claude Code y a Codex, con el Chromium del kit.

Terminal · snapshot de un sitio tuyo
cd ~/projetos/formacao-webmcp-navegador-v72/kit
node ver-como-agente.mjs https://inema.club/; echo "saída: $?"
Terminal · conectar a Claude Code y a Codex
cd ~/projetos/formacao-webmcp-navegador-v72/kit
node configurar.mjs && claude mcp get playwright; echo "saída: $?"
Ejemplo del repositorio
→ browser_navigate {"url":"https://inema.club/"}
→ browser_snapshot {}
- generic [active] [ref=e1]:
  - banner [ref=e2]:
    - generic [ref=e3]:
      - link "INEMA.VIP Participe da Comunidade" [ref=e4] [cursor=pointer]:
        - /url: https://inema.vip
        - img "INEMA.VIP" [ref=e5]
        - generic [ref=e6]: Participe da Comunidade
      - link "INEMA.PRO Assine o INEMA.PRO" [ref=e7] [cursor=pointer]:
        - /url: https://inema.pro
        - img "INEMA.PRO" [ref=e8]
        - generic [ref=e9]: Assine o INEMA.PRO
      - generic [ref=e10]:
        - heading "INEMA.CLUB Portal INEMA" [level=1] [ref=e11]
        - paragraph [ref=e12]: "Aprenda Inteligência Artificial na prática: cursos, agentes, automação e comunidade"
        - generic [ref=e13]:
(…)
ferramentas WebMCP vistas: 8 · buscar_conhecimento [readOnly], buscar_cursos [readOnly], comparar_cursos [readOnly], …
snapshot: 1040 linhas · 749 elementos com ref
saída: 0

Aquí el sitio es inema.club, del propio INEMA. En tu máquina, cámbialo por la dirección de un sitio tuyo: agente de navegador solo contra un sitio tuyo. El resumen trae cuántas líneas y refs recibe el agente; inema.club tiene token de origin trial, así que el Chromium 156 del kit también vio las 8 herramientas WebMCP de él, sin ninguna flag.

05Práctica

El ensayo, tu sitio y tu agente. Cada ejercicio tiene un "listo cuando".

E1 · Las siete llamadas

10 min

Ejecuta el ensayo y después la versión sin esperar. Para cada línea con →, di en una frase qué sabía el agente en ese momento.

Listo cuando: node ver-como-agente.mjs → 2 (08:00, 13:00) em 7 chamadas y saída: 0; con --sem-esperar → 0 (nenhum) y saída: 1.

E2 · El snapshot de tu sitio

10 min

Ejecuta el bloque de lectura con la dirección de un sitio tuyo. Abre la misma página en el navegador y encuentra tres controles en la salida por su nombre.

Listo cuando: node ver-como-agente.mjs con la dirección de tu sitio → snapshot: N linhas · M elementos com ref y saída: 0.

E3 · El servidor en tu agente

10 min

Ejecuta configurar.mjs. En Claude Code, abre claude dentro de kit/ y aprueba el servidor del proyecto. En Codex, pega el fragmento impreso en config.toml.

Listo cuando: claude mcp get playwright → Scope: Project config y, después de aprobar, Status: ✓ Connected; en Codex, el servidor aparece en la lista de /mcp.

06Prueba de la clase

Pregunta 1 de 4

En el snapshot aparece textbox "Seu nome" [ref=e13]. ¿Cómo escribe el agente en ese campo?competencia

07En tres frases

Snapshot con refsEl agente recibe el árbol de accesibilidad y actúa por refs, no por píxeles.
Espera la pruebaUn snapshot tomado demasiado pronto se convierte en una respuesta equivocada que parece correcta.
Conectado a tu agenteUn .mcp.json en el kit para Claude Code, y el mismo fragmento en el config.toml de Codex.

Para ir más allá

Clase anteriorSiguiente clase