puppeteer/puppeteer

Measured from a full clone on 2026-08-30, three years of authorship history. Every number here comes from npx ancient-code . and can be reproduced with it.

How many people understand each part?

3 of 17 modules depend on one person

risk

Is there a safety net for changes?

tests run in CI and live in a central test directory; tying them to individual modules would need a coverage run

ok

How much scaffolding did nobody remove?

32 in source, 45 in tests (kept, not work), 48 untouched for 3+ years, 50 external issues to check

watch

Does it build from scratch?

the repository states its toolchain, locks its dependencies and documents how to build

ok

Is the documentation real?

2 day-one questions are unanswered: how to restore a backup; where the secrets live and how to rotate them

watch

Who holds the keys?

answered by a person, not by a scanner

not measured
17modules read
4with knowledge concentrated
32fences in source
45in tests, where a closed issue means keep
9.1years, the oldest

Where knowledge is concentrated

Read from who changed what, not from a staffing plan. Contributors are labelled, not named: this is about how knowledge is spread, never about a person.

ModuleChangesPeopleReading
docker 76 10 risk

one person made 74% of the changes

.vscode 3 2 risk

one person made 67% of the changes

.agents 1 1 risk

one person has ever touched it

packages/ng-schematics 139 9 watch

no single owner, but the busiest person made 55% of the changes

Scaffolding nobody removed

Code written because of an external problem, oldest first, from the source only. A comment in a test that links to an issue is usually the regression test for that bug, so a closed issue there is a reason to keep the test, not to remove it. This project has 45 of those and they are not listed here.

UntouchedWhereRecorded reason
9.1 yr packages/puppeteer-core/src/cdp/NetworkManager.ts:805

For certain requestIds we never receive requestWillBeSent event. @see https://crbug.com/750469

crbug:750469
9.1 yr packages/puppeteer-core/src/cdp/NetworkManager.ts:843

For certain requestIds we never receive requestWillBeSent event. @see https://crbug.com/750469

crbug:750469
8.0 yr packages/puppeteer-core/src/cdp/NetworkManager.ts:813

Under certain conditions we never get the Network.responseReceived event from protocol. @see https://crbug.com/883475

crbug:883475
6.1 yr packages/puppeteer-core/src/cdp/Connection.ts:147

There is only ever 1 param arg passed, but the Protocol defines it as an array of 0 or 1 items See this comment: https://github.com/ChromeDe

github:ChromeDevTools/devtools-protocol#113
4.7 yr packages/puppeteer-core/src/cdp/NetworkEventManager.ts:64

Note that (chains of) redirect requests have the same `requestId` (!) as the original request. We have to anticipate series of events like t

crbug:1196004
4.1 yr packages/puppeteer-core/src/cdp/NetworkEventManager.ts:45

There are four possible orders of events: A. `_onRequestWillBeSent` B. `_onRequestWillBeSent`, `_onRequestPaused` C. `_onRequestPaused`, `_o

crbug:1196004
3.9 yr packages/puppeteer-core/src/api/Page.ts:599

remarks For certain requests, might contain undefined. {@link https://crbug.com/750469}

crbug:750469
3.9 yr packages/puppeteer-core/src/api/Page.ts:1096

This does not affect WebSockets and WebRTC PeerConnections (see https://crbug.com/563644). To set the page offline, you can use {@link Page.

crbug:563644
3.9 yr packages/puppeteer-core/src/api/BrowserContext.ts:88

ts // Create a new browser context const context = await browser.createBrowserContext(); // Create a new page inside context. const page = a

unmarked
3.6 yr packages/puppeteer-core/src/api/ElementHandle.ts:1506

Resolves to true if the element is visible in the current viewport. If an element is an SVG, we check if the svg owner element is in the vie

crbug:963246
3.5 yr packages/browsers/src/browser-data/firefox.ts:233

Enable the dump function: which sends messages to the system console https://bugzilla.mozilla.org/show_bug.cgi?id=1543115

bugzilla:1543115
3.4 yr packages/puppeteer-core/src/cdp/NetworkManager.ts:692

Chromium sends wrong extraInfo events for responses served from cache. See https://github.com/puppeteer/puppeteer/issues/9965 and https://cr

github:puppeteer/puppeteer#9965, crbug:1340398

The same report, on your own repository

npx ancient-code .

Everything on this page came out of that one command, run against a full clone. It is free and open source, it needs no account, and your code never leaves your machine.

How to run it Ancient Code on GitHub This repository