Options
All
  • Public
  • Public/Protected
  • All
Menu

Coverage gathers information about parts of JavaScript and CSS that were used by the page.

An example of using JavaScript and CSS coverage to get percentage of initially executed code:

// Enable both JavaScript and CSS coverage
await Promise.all([
page.coverage.startJSCoverage(),
page.coverage.startCSSCoverage()
]);
// Navigate to page
await page.goto('https://example.com');
// Disable both JavaScript and CSS coverage
const [jsCoverage, cssCoverage] = await Promise.all([
page.coverage.stopJSCoverage(),
page.coverage.stopCSSCoverage(),
]);
let totalBytes = 0;
let usedBytes = 0;
const coverage = [...jsCoverage, ...cssCoverage];
for (const entry of coverage) {
totalBytes += entry.text.length;
for (const range of entry.ranges)
usedBytes += range.end - range.start - 1;
}
page.meta.log(`Bytes used: ${usedBytes / totalBytes * 100}%`);

Hierarchy

  • _PlatformObjBinding
    • Coverage

Index

Methods

startCSSCoverage

  • Parameters

    • options: StartCoverageOptions

      options <Object> Set of configurable options for coverage

      resetOnNavigation <boolean> Whether to reset coverage on every navigation. Defaults to true.

    Returns Promise<void>

    <Promise> Promise that resolves when coverage is started

startJSCoverage

  • options <Object> Set of configurable options for coverage

    • resetOnNavigation <boolean> Whether to reset coverage on every navigation. Defaults to true.
    • reportAnonymousScripts <boolean> Whether anonymous scripts generated by the page should be reported. Defaults to false.

    returns: <Promise> Promise that resolves when coverage is started

    NOTE Anonymous scripts are ones that don't have an associated url. These are scripts that are dynamically created on the page using eval or new Function. If reportAnonymousScripts is set to true, anonymous scripts will have puppeteer_evaluation_script as their URL.

    Parameters

    Returns Promise<void>

stopCSSCoverage

  • returns: <Promise<Array{Object}>> Promise that resolves to the array of coverage reports for all stylesheets

    • url <string> StyleSheet URL
    • text <string> StyleSheet content
    • ranges Array{Object>> StyleSheet ranges that were used. Ranges are sorted and non-overlapping.
      • start <number> A start offset in text, inclusive
      • end <number> An end offset in text, exclusive

    NOTE CSS Coverage doesn't include dynamically injected style tags without sourceURLs.

    Returns Promise<CoverageEntry[]>

stopJSCoverage

  • returns: <Promise<Array<Object>>> Promise that resolves to the array of coverage reports for all scripts

    • url <string> Script URL
    • text <string> Script content
    • ranges <Array<Object>> Script ranges that were executed. Ranges are sorted and non-overlapping.
    • start <number> A start offset in text, inclusive
    • end <number> An end offset in text, exclusive

    NOTE JavaScript Coverage doesn't include anonymous scripts by default. However, scripts with sourceURLs are reported.

    Returns Promise<CoverageEntry[]>