Pular para o conteúdo principal

ESM com bundler

Com um bundler, o gerador e o motor rodam dentro da página: a pessoa nasce ali mesmo, sem vir de fora. Use quando o código que preenche é seu e vai empacotado (uma página de teste, uma ferramenta interna, um script de desenvolvimento).

import { gerarPessoa } from '@pilutech/botai-core'
import { preencherNaPagina } from '@pilutech/botai-core/navegador'

const hoje = '2026-10-08'
const pessoa = gerarPessoa({ semente: 'cadastro', hoje })
const resultado = await preencherNaPagina(document, pessoa, hoje, {
segundaPassada: false,
})
console.log(pessoa.cpf, resultado.preenchidos.length)

preencherNaPagina(alvo, pessoa, hoje, opcoes) recebe os mesmos parâmetros do __botaiNavegador.preencher do navegador.iife.js e devolve o mesmo resultado, com a mesma 2ª passada. Veja a API.

O que foi provado​

O código acima, empacotado pelo esbuild e carregado num cadastro no Chromium, gerou na página o mesmo CPF que a CLI gera no Node com a mesma semente e o mesmo hoje:

botai pessoa --semente cadastro --hoje 2026-10-08 | grep '"cpf"'
"cpf": "598.815.568-56",

O bundle com o gerador e o motor deu 40 638 bytes minificado, 15 448 em gzip (medido em 2026-10-08, macOS arm64).

IIFE ou ESM​

navegador.iife.js/navegador com bundler
A pessoavem de fora, como JSONnasce na página, com gerarPessoa
Como entra na páginaa ferramenta injeta o texto do arquivovai no seu bundle
Para quemPlaywright cru, Puppeteer, Selenium, Cypress, WebdriverIOo seu próprio código empacotado

A API de baixo nível​

O subpath /navegador exporta também as peças que o preencherNaPagina monta: preencherDocumento, criarRegistro, SEM_CONTORNOS e as funções de DOM. O caso documentado para descer a esse nível é a shadow root fechada: veja Shadow DOM.

O /navegador precisa de DOM: uma página, ou o jsdom com o shim de layout (jsdom).