playwright/docs/src/api/class-coverage.md
2021-04-01 18:47:14 -07:00

2.9 KiB

class: Coverage

  • langs: js

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

An example of using JavaScript coverage to produce Istanbul report for page load:

:::note Coverage APIs are only supported on Chromium-based browsers. :::

const { chromium } = require('playwright');
const v8toIstanbul = require('v8-to-istanbul');

(async() => {
  const browser = await chromium.launch();
  const page = await browser.newPage();
  await page.coverage.startJSCoverage();
  await page.goto('https://chromium.org');
  const coverage = await page.coverage.stopJSCoverage();
  for (const entry of coverage) {
    const converter = new v8toIstanbul('', 0, { source: entry.source });
    await converter.load();
    converter.applyCoverage(entry.functions);
    console.log(JSON.stringify(converter.toIstanbul()));
  }
  await browser.close();
})();

async method: Coverage.startCSSCoverage

Returns coverage is started

option: Coverage.startCSSCoverage.resetOnNavigation

  • resetOnNavigation <[boolean]>

Whether to reset coverage on every navigation. Defaults to true.

async method: Coverage.startJSCoverage

Returns 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 [option: reportAnonymousScripts] is set to true, anonymous scripts will have __playwright_evaluation_script__ as their URL. :::

option: Coverage.startJSCoverage.resetOnNavigation

  • resetOnNavigation <[boolean]>

Whether to reset coverage on every navigation. Defaults to true.

option: Coverage.startJSCoverage.reportAnonymousScripts

  • reportAnonymousScripts <[boolean]>

Whether anonymous scripts generated by the page should be reported. Defaults to false.

async method: Coverage.stopCSSCoverage

  • returns: <[Array]<[Object]>>
    • url <[string]> StyleSheet URL
    • text <[string]> StyleSheet content, if available.
    • ranges <[Array]<[Object]>> StyleSheet ranges that were used. Ranges are sorted and non-overlapping.
      • start <[int]> A start offset in text, inclusive
      • end <[int]> An end offset in text, exclusive

Returns the array of coverage reports for all stylesheets

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

async method: Coverage.stopJSCoverage

  • returns: <[Array]<[Object]>>
    • url <[string]> Script URL
    • scriptId <[string]> Script ID
    • source <[string]> Script content, if applicable.
    • functions <[Array]<[Object]>> V8-specific coverage format.
      • functionName <[string]>
      • isBlockCoverage <[boolean]>
      • ranges <[Array]<[Object]>>
        • count <[int]>
        • startOffset <[int]>
        • endOffset <[int]>

Returns the array of coverage reports for all scripts

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