Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@mizchi/playwright-v8-coverage

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@mizchi/playwright-v8-coverage

V8 precise-coverage collector for Playwright (CDP Profiler.takePreciseCoverage) with novelty-scoring helpers. Extracted from chaosbringer.

latest
Source
npmnpm
Version
0.2.0
Version published
Weekly downloads
536
-51.67%
Maintainers
1
Weekly downloads
 
Created
Source

@mizchi/playwright-v8-coverage

V8 precise-coverage collector for Playwright via CDP (Profiler.takePreciseCoverage), with novelty-scoring helpers. Extracted from chaosbringer where it powers AFL-style coverage-guided action selection.

Install

pnpm add @mizchi/playwright-v8-coverage
# also requires playwright as a peer
pnpm add playwright

Requires Node 20+.

Usage

import { chromium } from "playwright";
import { CoverageCollector, coverageDelta } from "@mizchi/playwright-v8-coverage";

const browser = await chromium.launch();
const ctx = await browser.newContext();
const page = await ctx.newPage();

const cdp = await ctx.newCDPSession(page);
const collector = new CoverageCollector(cdp);
await collector.start();

await page.goto("https://example.com");
const before = await collector.take();

await page.click("button#open-drawer");
const after = await collector.take();

const novel = coverageDelta(before, after);
console.log(`drawer click executed ${novel.size} new functions`);

await collector.stop();
await browser.close();

Public API

CoverageCollector

class CoverageCollector {
  constructor(cdp: CDPSession);
  start(): Promise<void>;        // Profiler.enable + startPreciseCoverage
  take(): Promise<Set<string>>;  // snapshot of executed function fingerprints
  stop(): Promise<void>;         // Profiler.stopPreciseCoverage
}

take() returns a Set<string> of function fingerprints <scriptUrl> <functionName> <startOffset>. Counters accumulate across take() calls — diff against a previous snapshot to get per-action deltas.

coverageSignature(scripts) -> Set<string>

Convert a raw V8 precise-coverage snapshot into the fingerprint set. Useful when you already have the CDP response from elsewhere.

coverageDelta(prev, next) -> Set<string>

Set difference: elements of next not in prev.

noveltyMultiplier(score, boost) -> number

1 + boost · log(1 + score). Logarithmic so a target with a huge historical contribution doesn't crush every other target's weight. boost: 0 disables (returns 1).

summarizeCoverage(state) -> CoverageReport

Build a report-shaped summary from running coverage state (totalFunctions, pagesWithNewCoverage, topNovelTargets).

targetKey(url, selector) -> string

Stable map key for a (url, selector) pair. Used as the key in per-target novelty maps.

License

MIT

Keywords

playwright

FAQs

Package last updated on 16 May 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts