CodeVetter · Repo Unpack · System map
puppeteer/puppeteer
The runtime consists of a consumer library, a browser-management package, and external browser processes. Shared API abstractions sit above CDP and BiDi implementations, while Node-specific launch and filesystem facilities have separate entrypoints. npm workspaces and Wireit coordinate compilation, generated declarations, documentation, and tests. Distribution includes npm packages, a container image, and a separately built documentation website.
- The root build graph coordinates browsers, ng-schematics, puppeteer-core, puppeteer, testserver, integration tests, installation tests, and tooling through npm workspaces and Wireit.
- The puppeteer entrypoint re-exports puppeteer-core and constructs PuppeteerNode with isPuppeteerCore:false and asynchronous getConfiguration.
- The core Node entrypoint installs Node environment dependencies and exports launch/connect; the browser entrypoint constructs the shared Puppeteer class and exports connect.
- BrowserLauncher selects native Firefox BiDi, Chrome CDP over pipe or WebSocket, or Chrome BiDi over CDP; Firefox BiDi rejects pipe connections.
- Browser binaries persist under cacheRoot/browser/platform-buildId; per-browser .metadata stores aliases and optional custom executable paths.
- Published puppeteer and puppeteer-core packages require Node >=22.12.0 and expose compiled JavaScript plus generated declarations; core also declares a browser-specific bundle entry.
- Tag-triggered publishing builds and publishes npm workspaces with provenance; Puppeteer tags also publish a GHCR Docker image whose runtime uses a non-root pptruser.
- The documentation website uses React and Docusaurus, materializes docs before building, and conditionally deploys to GitHub Pages followed by Algolia crawler checks and reindexing.