Skip to main content

Coverage

Coverage 收集页面使用的 JavaScript 和 CSS 部分的信息。

使用 JavaScript 覆盖率为页面加载生成 Istanbul 报告的示例:

note

Coverage API 仅在基于 Chromium 的浏览器上受支持。

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 = v8toIstanbul('', 0, { source: entry.source });
await converter.load();
converter.applyCoverage(entry.functions);
console.log(JSON.stringify(converter.toIstanbul()));
}
await browser.close();
})();

coverage.startCSSCoverage([options])

Added in: v1.11
  • options? <Object>
    • resetOnNavigation? <boolean> 是否在每次导航时重置覆盖率。默认为 true#
  • returns: <Promise<void>>#

返回覆盖率已启动

coverage.startJSCoverage([options])

Added in: v1.11
  • options? <Object>
    • reportAnonymousScripts? <boolean> 是否应报告页面生成的匿名脚本。默认为 false#
    • resetOnNavigation? <boolean> 是否在每次导航时重置覆盖率。默认为 true#
  • returns: <Promise<void>>#

返回覆盖率已启动

note

匿名脚本是指没有关联 url 的脚本。这些脚本是使用 evalnew Function 在页面上动态创建的。如果 reportAnonymousScripts 设置为 true,匿名脚本将使用 __playwright_evaluation_script__ 作为其 URL。

coverage.stopCSSCoverage()

Added in: v1.11
  • returns: <Promise<Array<Object>>>#
    • url <string> 样式表 URL
    • text? <string> 样式表内容(如果可用)。
    • ranges <Array<Object>> 使用的样式表范围。范围已排序且不重叠。
      • start <number> 文本中的起始偏移量(包含)
      • end <number> 文本中的结束偏移量(不包含)

返回所有样式表的覆盖率报告数组

note

CSS 覆盖率不包括没有 sourceURL 的动态注入样式标签。

coverage.stopJSCoverage()

Added in: v1.11

返回所有脚本的覆盖率报告数组

note

JavaScript 覆盖率默认不包括匿名脚本。但是,会报告带有 sourceURL 的脚本。