跳至主要内容

覆盖率

覆盖率收集了页面使用的JavaScript和CSS部分的相关信息。

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

note

覆盖率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

Added in: v1.11 coverage.startCSSCoverage

返回覆盖率已启动

用法

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

参数

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

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

返回


startJSCoverage

Added in: v1.11 coverage.startJSCoverage

返回覆盖率已启动

note

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

用法

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

参数

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

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

    • resetOnNavigation boolean (optional)#

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

返回


stopCSSCoverage

Added in: v1.11 coverage.stopCSSCoverage

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

note

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

用法

await coverage.stopCSSCoverage();

返回

  • Promise<数组<Object>>#
    • url string

      样式表URL

    • text string (可选)

      样式表内容(如果可用)。

    • ranges Array<Object>

      • start number

        文本中的起始偏移量(包含)

      • end number

        文本中的结束偏移量,不包含该位置

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


stopJSCoverage

Added in: v1.11 coverage.stopJSCoverage

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

note

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

用法

await coverage.stopJSCoverage();

返回