AI Slop Code Risk Monitor

puppeteer/puppeteer

SlopCodeMonitor badge for puppeteer/puppeteer Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

JavaScript API for Chrome and Firefox

0.5 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for puppeteer/puppeteer, a TypeScript project with 95,772 GitHub stars. SynthScan examined 212,074 lines of code across 1444 source files, recording 107 pattern matches distributed across 6 syntactic categories. The legacy adjusted pattern signal is 0.5 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

0.5
Adjusted Signal
0.5
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
95.8K
Stars
TypeScript
Language
212.1K
Lines of Code
1.4K
Files
107
Pattern Hits
2026-10-31
Scan Date
0.00
HC Hit Rate

Risk Review · Payload v1

Use each vector to guide manual verification of the underlying findings.

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 2.1/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 83 finding(s).

Hallucinated Dependency & Supply Chain Risk 0.6/100 · LOW

Are imports declared and package/API names verified? 24 finding(s).

Agent Over-Engineering Ratio 1.5/100 · LOW

Are wrappers, guards, and repeated structures necessary? 63 finding(s).

PR Review Velocity Impact 2.5/100 · LOW

Which changes need focused human review? 107 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 0MEDIUM 0LOW 107

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 107 distinct pattern matches across 6 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers63 hits · 64 pts
SeverityFileLineSnippetContext
LOWtools/generate-supported-browsers.ts38export function generateSupportedBrowsersTable(CODE
LOWtools/mocha-runner/src/utils.ts125export function findEffectiveExpectationForTest(CODE
LOWtools/mocha-runner/src/utils.ts285export function testIdMatchesExpectationPattern(CODE
LOWtest/src/touch-event-utils.ts18export async function initializeTouchEventReport(CODE
LOWtest/src/utils.ts167export function getUniqueVideoFilePlaceholder(CODE
LOWtest/src/mocha-utils.ts171function adjustBrowserLaunchTimeout(context: Mocha.Context): {CODE
LOWtest/src/bluetooth-emulation.test.ts22async function triggerBluetoothDevicePrompt() {CODE
LOWtest/src/cdp/extensions.test.ts360function assertNoServiceWorkerReported(targets: Target[], id: string) {CODE
LOWwebsite/src/theme/SearchBar/index.js49function usePuppeteerSearchFilters() {CODE
LOWwebsite/src/theme/SearchPage/index.js44function useDocsSearchVersionsHelpers() {CODE
LOW…s/browsers-api/browsers.computesystemexecutablepath.md12export declare function computeSystemExecutablePath(CODE
LOWdocs/browsers-api/browsers.resolvedefaultuserdatadir.md12export declare function resolveDefaultUserDataDir(CODE
LOWpackages/ng-schematics/src/schematics/utils/packages.ts35export function getPackageLatestNpmVersion(name: string): Promise<NodePackage> {CODE
LOWpackages/ng-schematics/src/schematics/utils/packages.ts82export function addPackageJsonDependencies(CODE
LOWpackages/ng-schematics/src/schematics/utils/packages.ts105export function getDependenciesFromOptions(CODE
LOWpackages/browsers/test/src/utils.ts18export function createMockedReadlineInterface(CODE
LOWpackages/browsers/test/src/fileUtil.test.ts123 function assertTestArchiveUnpacked(): void {CODE
LOWpackages/browsers/src/launch.ts104export function computeSystemExecutablePath(CODE
LOWpackages/browsers/src/launch.ts272function unsubscribeFromProcessEvent(CODE
LOWpackages/browsers/src/browser-data/browser-data.ts65async function resolveBuildIdForBrowserTag(CODE
LOWpackages/browsers/src/browser-data/browser-data.ts232export function resolveSystemExecutablePath(CODE
LOWpackages/browsers/src/browser-data/browser-data.ts256export function resolveDefaultUserDataDir(CODE
LOWpackages/browsers/src/browser-data/browser-data.ts280export function resolveSystemExecutablePaths(CODE
LOW⚡packages/browsers/src/browser-data/chrome.ts79export function changeBaseVersionUrlForTesting(url: string): void {CODE
LOW⚡packages/browsers/src/browser-data/chrome.ts82export function resetBaseVersionUrlForTesting(): void {CODE
LOW⚡packages/browsers/src/browser-data/chrome.ts86export async function getLastKnownGoodReleaseForChannel(CODE
LOWpackages/browsers/src/browser-data/chrome.ts110export async function getLastKnownGoodReleaseForMilestone(CODE
LOWpackages/browsers/src/browser-data/chrome.ts122export async function getLastKnownGoodReleaseForBuild(CODE
LOWpackages/browsers/src/browser-data/chrome.ts249function getChromeLinuxOrWslLocation(CODE
LOWpackages/browsers/src/browser-data/chrome.ts281export function resolveSystemExecutablePaths(CODE
LOWpackages/browsers/src/browser-data/chrome.ts327export function resolveDefaultUserDataDir(CODE
LOWpackages/browsers/src/browser-data/chrome.ts408function getBaseUserDataDirPathMac() {CODE
LOWpackages/browsers/src/browser-data/types.ts75export function verifyChromeReleaseChannel(CODE
LOWpackages/browsers/src/browser-data/firefox.ts169export function changeBaseVersionUrlForTesting(url: string): void {CODE
LOWpackages/browsers/src/browser-data/firefox.ts173export function resetBaseVersionUrlForTesting(): void {CODE
LOWpackages/browsers/src/browser-data/firefox.ts212function defaultProfilePreferences(CODE
LOWpackages/puppeteer-core/src/cdp/TargetManager.ts37function isPageTargetBecomingPrimary(CODE
LOWpackages/puppeteer-core/src/cdp/utils.ts201export function valueFromRemoteObjectReference(handle: JSHandle): string {CODE
LOWpackages/puppeteer-core/src/cdp/utils.ts221export function valueFromPrimitiveRemoteObject(CODE
LOWpackages/puppeteer-core/src/cdp/utils.ts321export function convertConsoleMessageLevel(method: string): ConsoleMessageType {CODE
LOWpackages/puppeteer-core/src/cdp/Page.ts104export function convertSameSiteFromPuppeteerToCdp(CODE
LOWpackages/puppeteer-core/src/cdp/Page.ts1466export function convertCookiesPartitionKeyFromPuppeteerToCdp(CODE
LOWpackages/puppeteer-core/src/util/decorators.ts88export function invokeAtMostOnceForArguments(CODE
LOWpackages/puppeteer-core/src/util/ErrorLike.ts52export function createProtocolErrorMessage(object: {CODE
LOW…es/puppeteer-core/src/util/incremental-id-generator.ts10export function createIncrementalIdGenerator(): GetIdFn {CODE
LOWpackages/puppeteer-core/src/bidi/HTTPRequest.test.ts56async function unhandledRejectionsOnAuthenticate(CODE
LOWpackages/puppeteer-core/src/bidi/Page.ts1085function testUrlMatchCookieHostname(CODE
LOWpackages/puppeteer-core/src/bidi/Page.ts1200function cdpSpecificCookiePropertiesFromBidiToPuppeteer(CODE
LOWpackages/puppeteer-core/src/bidi/Page.ts1217export function cdpSpecificCookiePropertiesFromPuppeteerToBidi(CODE
LOWpackages/puppeteer-core/src/bidi/Page.ts1230function convertCookiesSameSiteBiDiToCdp(CODE
LOWpackages/puppeteer-core/src/bidi/Page.ts1245export function convertCookiesSameSiteCdpToBiDi(CODE
LOWpackages/puppeteer-core/src/bidi/Page.ts1260export function convertCookiesExpiryCdpToBiDi(CODE
LOWpackages/puppeteer-core/src/bidi/Page.ts1266export function convertCookiesPartitionKeyFromPuppeteerToBiDi(CODE
LOWpackages/puppeteer-core/src/bidi/util.ts29export function convertConsoleMessageLevel(method: string): ConsoleMessageType {CODE
LOWpackages/puppeteer-core/src/common/GetQueryHandler.ts30export function getQueryHandlerAndSelector(selector: string): {CODE
LOWpackages/puppeteer-core/src/common/util.ts248export async function getReadableFromProtocolStream(CODE
LOWpackages/puppeteer-core/src/common/util.ts405function convertPrintParameterToInches(CODE
LOWpackages/puppeteer-core/src/common/util.ts499export function assertSupportedUrlRestrictions(options: {CODE
LOWpackages/puppeteer-core/src/api/Page.ts720export function setDefaultScreenshotOptions(options: ScreenshotOptions): void {CODE
LOWpackages/puppeteer-core/src/node/BrowserLauncher.ts76export function getBrowserTypeDisplayName(CODE
3 more matches not shown…
Fake / Example Data24 hits · 24 pts
SeverityFileLineSnippetContext
LOWtest/src/defaultbrowsercontext.test.ts27 value: 'John Doe',CODE
LOWtest/src/defaultbrowsercontext.test.ts45 value: 'John Doe',CODE
LOWtest/src/defaultbrowsercontext.test.ts55 value: 'John Doe',CODE
LOWtest/src/accessibility.test.ts36 <input aria-placeholder="placeholder" value="and a value" />CODE
LOWtest/src/accessibility.test.ts39 aria-placeholder="placeholder"CODE
LOWtest/src/accessibility.test.ts63 {role: 'textbox', name: 'placeholder', value: 'and a value'},CODE
LOWtest/src/accessibility.test.ts66 name: 'placeholder',CODE
LOWtest/src/autofill.test.ts45 {name: 'NAME_FULL', value: 'Jane Doe'},CODE
LOWtest/src/autofill.test.ts46 {name: 'ADDRESS_HOME_STREET_ADDRESS', value: '123 Main St'},CODE
LOWtest/src/followSymlinks.test.ts128 await fs.promises.writeFile(targetFile, 'placeholder');CODE
LOWtest/src/followSymlinks.test.ts150 await fs.promises.writeFile(targetFile, 'placeholder');CODE
LOWtest/src/followSymlinks.test.ts172 await fs.promises.writeFile(targetFile, 'placeholder');CODE
LOWtest/src/followSymlinks.test.ts190 await fs.promises.writeFile(targetFile, 'placeholder');CODE
LOWtest/src/followSymlinks.test.ts248 await fs.promises.writeFile(targetFile, 'placeholder');CODE
LOWtest/src/cookies.test.ts34 value: 'John Doe',CODE
LOWtest/src/cookies.test.ts150 value: 'John Doe',CODE
LOWpackages/puppeteer-core/src/util/encoding.test.ts21 const body = 'Lorem ipsum dolor sit amet';CODE
LOWpackages/puppeteer-core/src/util/encoding.test.ts21 const body = 'Lorem ipsum dolor sit amet';CODE
LOWpackages/puppeteer-core/src/util/encoding.test.ts34 const body = btoa('Lorem ipsum dolor sit amet');CODE
LOWpackages/puppeteer-core/src/util/encoding.test.ts34 const body = btoa('Lorem ipsum dolor sit amet');CODE
LOWpackages/puppeteer-core/src/api/HTTPRequest.test.ts26 const body = 'Lorem ipsum dolor sit amet';CODE
LOWpackages/puppeteer-core/src/api/HTTPRequest.test.ts26 const body = 'Lorem ipsum dolor sit amet';CODE
LOWpackages/puppeteer-core/src/api/HTTPRequest.test.ts49 const body = 'Lorem ipsum dolor sit amet';CODE
LOWpackages/puppeteer-core/src/api/HTTPRequest.test.ts49 const body = 'Lorem ipsum dolor sit amet';CODE
Over-Commented Block13 hits · 13 pts
SeverityFileLineSnippetContext
LOWtools/third_party/validate-licenses.ts1// The MIT LicenseCOMMENT
LOWtest/assets/offscreenbuttons.html1<!DOCTYPE html>COMMENT
LOWdocs/troubleshooting.md441 && apt-get update \COMMENT
LOWpackages/testserver/src/index.ts41COMMENT
LOWpackages/puppeteer-core/src/cdp/HTTPResponse.ts21export class CdpHTTPResponse extends HTTPResponse {COMMENT
LOWpackages/puppeteer-core/src/cdp/Accessibility.ts381 #hasErrormessage = false;COMMENT
LOWpackages/puppeteer-core/src/cdp/NetworkManager.ts81 * @internalCOMMENT
LOWpackages/puppeteer-core/src/cdp/TargetManager.ts101 // before resolving puppeteer.connect() or launch() to avoid flakiness.COMMENT
LOWpackages/puppeteer-core/src/cdp/TargetManager.ts361COMMENT
LOWpackages/puppeteer-core/src/cdp/Browser.ts121 #closeCallback: BrowserCloseCallback;COMMENT
LOWpackages/puppeteer-core/src/cdp/LifecycleWatcher.ts61COMMENT
LOWpackages/puppeteer-core/src/cdp/Page.ts141 }COMMENT
LOWpackages/puppeteer-core/src/node/ScreenRecorder.ts181 ],COMMENT
Verbosity Indicators3 hits · 6 pts
SeverityFileLineSnippetContext
LOW⚡test/src/elementhandle.test.ts105 // Step 1: Add Frame and position it absolutely.COMMENT
LOW⚡test/src/elementhandle.test.ts114 // Step 2: Add div and position it absolutely inside frame.COMMENT
LOWtest/src/elementhandle.test.ts133 // Step 3: query div's boxModel and assert box values.COMMENT
Structural Annotation Overuse3 hits · 6 pts
SeverityFileLineSnippetContext
LOW⚡test/src/elementhandle.test.ts105 // Step 1: Add Frame and position it absolutely.COMMENT
LOW⚡test/src/elementhandle.test.ts114 // Step 2: Add div and position it absolutely inside frame.COMMENT
LOWtest/src/elementhandle.test.ts133 // Step 3: query div's boxModel and assert box values.COMMENT
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWpackages/browsers/src/install.ts560 // TODO: Handle error here. Currently the setup.exe sometimesCOMMENT