E1 · Batería en verde
5 minCorre la batería completa.
Listo cuando: node scripts/testar.mjs; echo "saída: $?" → BATERIA: 31/31 ok y saída: 0.
Clase 8 · 18 min
Una herramienta solo está lista cuando una prueba demuestra que funciona y que la página sigue igual sin ella. La batería del kit corre sin modelo en los tres modos, compara herramienta con formulario, prueba la confirmación y la remoción. En esta clase la ejecutas, ves cómo se detecta una rotura y sales con el plan fechado de tu sitio.
Empezar la lección
Objetivo: correr la batería automática en los tres modos, ver cómo se detecta una rotura y salir con el checklist y el plan fechado de tu página.
Cuatro niveles y lo que entrega cada uno. Haz clic en un ejercicio para ver el "listo cuando".
sem, polyfill, nativo
3 ejercicios
La misma página en los tres modos, sin costo.
Ver la claseregistrar y llamar
3 ejercicios
Una herramienta tuya, llamada por executeTool.
Ver la claseanotaciones y compuerta
3 ejercicios
Toda acción con efecto detrás del Confirmar.
Ver la clasetres modos
3 ejercicios
Prueba automática que detecta la rotura antes que el visitante.
Ver la claseLa base: kit instalado, contexto seguro y la certeza de que el modo Sem funciona.
Requiere el nivel 1. Definición, registro con detección y el resultado en texto JSON.
Requiere el nivel 2. Anotaciones correctas, texto de terceros como dato y la persona decidiendo.
Requiere los tres. La batería en verde, una rotura provocada y el plan de tu sitio.
Ciclo de vida, formulario y catálogo (clases 4, 6 y 7) entran en el generador de abajo.
Primero las pruebas de regla (node --test, sin navegador), después testar.mjs en los tres modos. Ninguna llamada a un modelo.
cd ~/projetos/formacao-webmcp-site-v72/kit node --test 2>&1 | grep -E "^ℹ (pass|fail)" node scripts/testar.mjs; echo "saída: $?"
ℹ pass 4 ℹ fail 0 == sem Chromium 156.0.8078.4 (Playwright) ok [sem] página sem erro de JavaScript ok [sem] sem rolagem horizontal em 390 px ok [sem] estado WebMCP esperado (sem) · sem ok [sem] busca pelo formulário funciona · of-301 ok [sem] reserva pelo formulário funciona == polyfill ok [polyfill] página sem erro de JavaScript ok [polyfill] sem rolagem horizontal em 390 px ok [polyfill] estado WebMCP esperado (com) · com ok [polyfill] busca pelo formulário funciona · of-301 ok [polyfill] reserva pelo formulário funciona ok [polyfill] as 4 ferramentas do kit registradas · buscar_oficinas, listar_comentarios, minhas_reservas, reservar_vaga ok [polyfill] ferramenta devolve o mesmo que o formulário · of-301 ok [polyfill] a tela mostra o que o agente recebeu · of-301 ok [polyfill] reserva recusada na tela não reserva ok [polyfill] reserva confirmada aparece na tela ok [polyfill] entrada inválida volta erro legível, sem mudar nada · tema inválido: cobol ok [polyfill] ao sair da página as ferramentas saem (AbortSignal) · 0 restantes, toolchange 4x, getTools depois: NotAllowedError ok [polyfill] nenhum erro de JavaScript na sessão do agente == nativo ok [nativo] página sem erro de JavaScript ok [nativo] sem rolagem horizontal em 390 px ok [nativo] estado WebMCP esperado (com) · com ok [nativo] busca pelo formulário funciona · of-301 ok [nativo] reserva pelo formulário funciona ok [nativo] as 4 ferramentas do kit registradas · buscar_oficinas, listar_comentarios, minhas_reservas, reservar_vaga ok [nativo] ferramenta devolve o mesmo que o formulário · of-301 ok [nativo] a tela mostra o que o agente recebeu · of-301 ok [nativo] reserva recusada na tela não reserva ok [nativo] reserva confirmada aparece na tela ok [nativo] entrada inválida volta erro legível, sem mudar nada · tema inválido: cobol ok [nativo] ao sair da página as ferramentas saem (AbortSignal) · 0 restantes, toolchange 4x ok [nativo] nenhum erro de JavaScript na sessão do agente BATERIA: 31/31 ok saída: 0
En el polyfill, getTools después de pagehide da NotAllowedError: apaga la API entera. La prueba acepta las dos formas de "salir": cero herramientas y toolchange disparado.
FALHA [nativo] reserva recusada na tela não reserva BATERIA: 12/13 ok saída: 1
Alguien cambia la espera por el clic por const ok = true para "agilizar". La batería falla en "reserva recusada na tela não reserva" y sale con 1. Para eso existe.
El ensayo copia la página, hace el cambio peligroso en la copia y corre la batería solo en el modo nativo.
cd ~/projetos/formacao-webmcp-site-v72/kit
E=${TMPDIR:-/tmp}/ensaio-webmcp-site/a8; rm -rf $E; mkdir -p $E; cp -r pagina/. $E/
# la "optimización" peligrosa: reservar sin esperar a la persona
sed -i 's/const ok = await ui.pedirConfirmacao({ oficina, nome }, signal);/const ok = true;/' $E/ferramentas.mjs
PAGINA=$E node scripts/testar.mjs nativo | grep -E "FALHA|BATERIA"; echo "saída: ${PIPESTATUS[0]}"Con fecha: 19/10/2026, spec del 16/10/2026.
El sitio funciona igual sin document.modelContext.
Nada de polyfill en producción: es solo para el ensayo.
validar-catalogo.mjs con 0 errores.
Cada herramienta con una intención y la anotación correcta.
Toda herramienta con consequentialHint espera a la persona.
Batería con el caso "recusar" pasando.
Comentario con la fecha de la spec en el archivo de las herramientas.
Token del origin trial con la fecha de fin (Chrome 156) en tu agenda.
Cuando la spec cambie de fecha, corre la batería y relee lo que cambió.
La batería en verde, la rotura detectada y tu plan. Cada ejercicio termina con un listo cuando.
Corre la batería completa.
Listo cuando: node scripts/testar.mjs; echo "saída: $?" → BATERIA: 31/31 ok y saída: 0.
Corre el ensayo de la falla provocada y lee la línea que falló.
Listo cuando: El bloque imprime FALHA [nativo] reserva recusada na tela não reserva, BATERIA: 12/13 ok y saída: 1.
Genera el plan de abajo con la fecha de inicio y las horas que tienes. Escribe en él las 3 herramientas de tu catálogo (clase 7) y la fecha en que volverás a correr la batería.
Listo cuando: Descargaste el plan (.md o .ics) y tiene la fecha de reprueba de la batería.
Elige la fecha de inicio y cuánto tiempo tienes por semana.
La explicación aparece después de la respuesta.
Pregunta 1 de 4
¿Qué verificación detecta el cambio de la confirmación por const ok = true?
Pregunta 2 de 4
¿Por qué la batería compara la herramienta con el formulario?
Pregunta 3 de 4
¿Dónde entra el polyfill en el sitio publicado?
Pregunta 4 de 4
La spec ganó una fecha nueva. ¿Primer paso?
Elige una alternativa. La explicación aparece después de tu intento.