CodeVetter
← All unpacks
CodeVetter · Repo Unpack evidence

puppeteer/puppeteer

Scanned commit 2e45a3af43 dated 2026-10-02 — last upstream commit. Generated by codevetter 1.15.0 on 2026-10-02.

github.com/puppeteer/puppeteer ↗ · 1482 files · 5.1 MB

Puppeteer Puppeteer is a JavaScript library which provides a high-level API to control Chrome or Firefox over the DevTools Protocol or WebDriver BiDi.

Deep analysis by cli:codex via the codex CLI on 2026-10-02 (402s) — every claim below links to its cited source files. Source inspection; upstream code and tests were not executed.

Overview

Puppeteer is a TypeScript-based JavaScript library for developers automating Chrome and Firefox through CDP or WebDriver BiDi. It combines browser provisioning, process management, navigation, DOM interaction, network control, and document capture behind Browser, BrowserContext, Page, and ElementHandle APIs. This brief investigates commit 2e45a3af43231cd658285e4da5e7f53e40f24edf through public source, configuration, documentation, and test reads; it establishes source behavior rather than runtime results.

System map

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.

Feature catalog

The main user surface is the JavaScript automation API, complemented by browser-management commands and Angular tooling. The inspected APIs cover browser sessions, page interaction, network behavior, captures, and browser-specific controls. CDP and BiDi have differing capabilities, so feature availability depends on browser, protocol, and sometimes browser version. This catalog groups the investigated surfaces and does not claim exhaustive enumeration of every exported method.

Data flow

Consumer options and configuration feed executable selection, process launch, and protocol connection setup. Protocol messages carry command identifiers and session identifiers across the transport boundary, with callbacks and session maps owning pending state. Downloads flow through providers into filesystem caches and metadata. Capture results flow back as strings, byte arrays, streams, or caller-selected files.

Behavior traces

The investigated flows follow concrete calls from consumer entrypoints to browser processes, protocol commands, and filesystem output. Launch includes browser-dependent connection branches and cleanup behavior. Navigation distinguishes document replacement from same-document changes, while capture guards shared browser-context operations. Installation has separate cache-hit, incomplete-install, download, extraction, and metadata branches.

Testing signals

Tests and CI were inspected, not executed; no passing result is asserted. Browser integration tests use Mocha with shared fixtures and a custom expectation-aware runner, while colocated unit tests use node:test. Inspected tests substantiate navigation, screenshot, provider, extraction, configuration, and cleanup coverage. Coverage observations are bounded: expected failures, skipped tests, weak assertions, and CI exclusions limit what test existence establishes.

Risk map

These are security-sensitive source observations and explicitly labeled hypotheses, not confirmed vulnerabilities. The largest trust boundaries involve browser executables, downloaded archives, remote debugging endpoints, host callbacks, and filesystem paths. Platform utilities and protocol differences add compatibility and failure-path uncertainty. The bounded inspection also identified a likely extension-launch synchronization issue requiring runtime reproduction.

Extension points

The code provides explicit hooks for transports, download providers, selectors, command composition, and Angular schematics. Internal factories separate browser-specific launch and protocol behavior from shared public abstractions. These interfaces have concrete contracts and caveats rather than uniform support guarantees. API documentation and suite configuration are additional integration points for changes that introduce capabilities.

Contributor handoff

Tests and CI were inspected, not executed; this handoff is a source-based starting point with bounded coverage. Begin in the owning package and trace the public abstraction through its protocol or Node implementation before editing. Preserve browser-runtime compatibility, asynchronous cleanup, generated documentation conventions, and expectation semantics. Future verification commands require an execution-authorized task and the repository verification skill.

Languages

LanguageFilesShare of source
Markdown752docs/config
TypeScript40281%
HTML99docs/config
JavaScript9319%
JSON70docs/config
YAML22docs/config
CSS12docs/config
Shell10%

Start reading here

Probable source entrypoint: packages/ — inferred from the directory tree and manifest, not the upstream docs.

Source roots

packages/ (356 files)

Repository structure

Top-level pathFiles
docs/731
packages/356
test/259
tools/42
examples/23
.github/23
website/16
test-d/6

Docs found: README.mddocs/api/index.mddocs/api/puppeteer.accessibility.mddocs/api/puppeteer.accessibility.snapshot.mddocs/api/puppeteer.actionoptions.mddocs/api/puppeteer.actionresult.mddocs/api/puppeteer.adapterstate.mddocs/api/puppeteer.addscreenparams.mddocs/api/puppeteer.asyncdisposesymbol.mddocs/api/puppeteer.autofilladdressfield.md

Package

package.json — puppeteer-repo, 42 declared dependencies.

@actions/core@babel/core@babel/plugin-transform-class-properties@babel/plugin-transform-class-static-block@babel/plugin-transform-dynamic-import@babel/plugin-transform-modules-commonjs@babel/plugin-transform-private-methods@babel/plugin-transform-private-property-in-object@microsoft/api-extractor@rollup/plugin-babel@rollup/plugin-node-resolve@stylistic/eslint-plugin

CI & config entrypoints

Structural health signals

Average score 7.2/10 across 96 analyzed source files; 23 hotspots surfaced.

These are deterministic review leads — size, churn, and structural signals — not proof of a bug in this project.

Recent history