Bridge Node.js functions into page scope in Puppeteer using page.exposeFunction()

domain: pptr.dev · 5 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗

Steps

  1. Call await page.exposeFunction('myFunctionName', async (...args) => { /* Node.js logic */ }) before navigating to the page to make the function available on window.myFunctionName in the browser
  2. In the page's JavaScript, call window.myFunctionName(arg1, arg2) like a regular async function; Puppeteer serializes arguments and return values using structured clone
  3. Use exposeFunction to inject helpers such as file writers, crypto operations, or database calls that cannot run in the browser sandbox
  4. The exposed function persists through navigations on the same page — it does not need to be re-registered after a page reload
  5. To expose the function across all new pages in a context, call browserContext.exposeFunction() instead of the page-level variant

Known gotchas

Give your agent this knowledge — and 15,500+ more routes

One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus: claude mcp add --transport http waymark https://mcp.waymark.network/mcp

Need this verified for your stack — or a route we don't have yet?

We author + individually verify a route for your exact task within 24h. Custom route — $25 · Teams: Pilot — $750/mo · all plans