class: Coverage
优质
小牛编辑
127浏览
2023-12-01
Coverage 收集相关页面使用的 JavaScript 和 CSS 部分的信息。
使用 JavaScript 和 CSS 覆盖率来获取初始百分比的例子 执行代码:
// 启用 JavaScript 和 CSS 覆盖
await Promise.all([
page.coverage.startJSCoverage(),
page.coverage.startCSSCoverage()
]);
// 导航至页面
await page.goto('https://example.com');
// 禁用 JavaScript 和 CSS 覆盖
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;
}
console.log(`Bytes used: ${usedBytes / totalBytes * 100}%`);
使用 Istanbul 输出一个覆盖率表格,见 puppeteer-to-istanbul.
coverage.startCSSCoverage(options)
options
<Object> 覆盖范围的配置项resetOnNavigation
<boolean> 是否重置每个导航的覆盖范围。默认是true
。
- returns: <Promise> Promise that resolves when coverage is started
coverage.startJSCoverage(options)
注意 匿名脚本指的是没有关联 URL 的脚本。 它们是使用
eval
或new Function
在页面上动态创建的脚本。如果reportAnonymousScripts
设置为true
,匿名脚本将使用__puppeteer_evaluation_script__
作为其URL。
coverage.stopCSSCoverage()
- returns: <Promise<Array<Object>>> Promise that resolves to the array of coverage reports for all stylesheets
注意 CSS Coverage 不包含没有 sourceURL 的动态注入式样式标签。
coverage.stopJSCoverage()
- returns: <Promise<Array<Object>>> Promise that resolves to the array of coverage reports for all non-anonymous scripts
注意 JavaScript Coverage 默认情况下不包含匿名脚本。 但是,具有 sourceURL 的脚本将被上报。