跳到主要内容

Coverage

覆盖率功能用于收集页面使用的 JavaScript 和 CSS 部分信息。

以下是通过 JavaScript 覆盖率生成 Istanbul 报告的页面加载示例:

:::注意 覆盖率 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();
})();

方法

startCSSCoverage

添加于: v1.11 coverage.startCSSCoverage

返回已启动的覆盖率

用法

await coverage.startCSSCoverage();
await coverage.startCSSCoverage(options);

参数

  • options Object (可选)
    • resetOnNavigation boolean (可选)#

      是否在每次导航时重置覆盖率。默认为 true

返回值


startJSCoverage

添加于: v1.11 coverage.startJSCoverage

启动 JavaScript 代码覆盖率收集

备注

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

用法

await coverage.startJSCoverage();
await coverage.startJSCoverage(options);

参数

  • options Object (可选)
    • reportAnonymousScripts boolean (可选)#

      是否报告页面生成的匿名脚本。默认为 false

    • resetOnNavigation boolean (可选)#

      是否在每次导航时重置覆盖率数据。默认为 true

返回值


stopCSSCoverage

新增于: v1.11 coverage.stopCSSCoverage

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

:::注意

CSS 覆盖率不包含没有 sourceURLs 的动态注入样式标签。 :::

用法

await coverage.stopCSSCoverage();

返回值

  • Promise<Array<Object>>#
    • url string

      样式表 URL

    • text string (可选)

      样式表内容(如果可用)

    • ranges Array<Object>

      • start number

        文本起始偏移量(包含)

      • end number

        文本结束偏移量(不包含)

      已使用的样式表范围。范围已排序且不重叠。


stopJSCoverage

v1.11 版本新增 coverage.stopJSCoverage

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

备注

默认情况下,JavaScript 覆盖率不包含匿名脚本。但会报告带有 sourceURL 的脚本。

使用方法

await coverage.stopJSCoverage();

返回值