E1 · Bateria verde
5 minRode a bateria completa.
Pronto quando: node scripts/testar.mjs; echo "saída: $?" → BATERIA: 31/31 ok e saída: 0.
Aula 8 · 18 min
Uma ferramenta só está pronta quando um teste prova que ela funciona e que a página continua igual sem ela. A bateria do kit roda sem modelo nos três modos, compara ferramenta com formulário, testa a confirmação e a remoção. Nesta aula você a roda, vê uma quebra ser pega e sai com o plano datado do seu site.
Começar a aula
Objetivo: rodar a bateria automática nos três modos, ver uma quebra ser pega e sair com o checklist e o plano datado da sua página.
Quatro degraus e o que cada um entrega. Clique num exercício para ver o "pronto quando".
sem, polyfill, nativo
3 exercícios
A mesma página nos três modos, sem custo.
Ver a aularegistrar e chamar
3 exercícios
Uma ferramenta sua, chamada por executeTool.
Ver a aulaA base: kit instalado, contexto seguro e a certeza de que o modo Sem funciona.
Requer o degrau 1. Definição, registro com detecção e o resultado em texto JSON.
Requer o degrau 2. Anotações certas, texto de terceiros como dado e a pessoa decidindo.
Requer os três. A bateria verde, uma quebra provocada e o plano do seu site.
Ciclo de vida, formulário e catálogo (aulas 4, 6 e 7) entram no gerador abaixo.
Primeiro os testes de regra (node --test, sem navegador), depois testar.mjs nos três modos. Nenhuma chamada de 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
No polyfill, getTools depois do pagehide dá NotAllowedError: ele desliga a API inteira. O teste aceita os dois jeitos de "sair": zero ferramentas e toolchange disparado.
FALHA [nativo] reserva recusada na tela não reserva BATERIA: 12/13 ok saída: 1
Alguém troca a espera pelo clique por const ok = true para "agilizar". A bateria falha em "reserva recusada na tela não reserva" e sai com 1. É para isso que ela existe.
O ensaio copia a página, faz a troca perigosa na cópia e roda a bateria só no 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/
# a "otimização" perigosa: reservar sem esperar a pessoa
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]}"Datado: 19/10/2026, spec de 16/10/2026.
O site funciona igual sem document.modelContext.
Nada de polyfill em produção: ele é só para o ensaio.
validar-catalogo.mjs com 0 erros.
Cada ferramenta com uma intenção e a anotação certa.
Toda ferramenta com consequentialHint espera a pessoa.
Bateria com o caso "recusar" passando.
Comentário com a data da spec no arquivo das ferramentas.
Token do origin trial com a data de fim (Chrome 156) na agenda.
Quando a spec mudar de data, rode a bateria e releia o que mudou.
A bateria verde, a quebra pega e o seu plano. Cada exercício termina num pronto quando.
Rode a bateria completa.
Pronto quando: node scripts/testar.mjs; echo "saída: $?" → BATERIA: 31/31 ok e saída: 0.
Rode o ensaio da quebra provocada e leia a linha que falhou.
Pronto quando: O bloco imprime FALHA [nativo] reserva recusada na tela não reserva, BATERIA: 12/13 ok e saída: 1.
Gere o plano abaixo com a data de início e as horas que você tem. Escreva nele as 3 ferramentas do seu catálogo (aula 7) e a data em que vai rodar a bateria de novo.
Pronto quando: Você baixou o plano (.md ou .ics) e ele tem a data de reteste da bateria.
Escolha a data de início e quanto tempo você tem por semana.
A explicação aparece depois da resposta.
Pergunta 1 de 4
Qual verificação pega a troca da confirmação por const ok = true?
Pergunta 2 de 4
Por que a bateria compara a ferramenta com o formulário?
Pergunta 3 de 4
Onde o polyfill entra no site publicado?
Pergunta 4 de 4
A spec ganhou uma data nova. Primeiro passo?
Escolha uma alternativa. A explicação aparece depois da sua tentativa.