跳至主要內容
版本:23.11.1

Coverage 類別

Coverage 類別提供方法來收集有關頁面使用的 JavaScript 和 CSS 部分的資訊。

簽名

export declare class Coverage

備註

若要以 Istanbul 可用的形式輸出覆蓋率,請參閱 puppeteer-to-istanbul

此類別的建構子標記為內部。第三方程式碼不應直接呼叫建構子或建立擴展 Coverage 類別的子類別。

範例

使用 JavaScript 和 CSS 覆蓋率來取得初始執行程式碼百分比的範例

// Enable both JavaScript and CSS coverage
await Promise.all([
page.coverage.startJSCoverage(),
page.coverage.startCSSCoverage(),
]);
// Navigate to page
await page.goto('https://example.com');
// Disable both JavaScript and CSS coverage
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}%`);

方法

方法

修飾符

描述

startCSSCoverage(options)
startJSCoverage(options)

備註

匿名腳本是指沒有相關 URL 的腳本。這些是使用 evalnew Function 在頁面上動態建立的腳本。如果 reportAnonymousScripts 設定為 true,匿名腳本 URL 將以 debugger://VM 開頭(除非存在神奇的 //# sourceURL 註解,在這種情況下,這將是 URL)。

stopCSSCoverage()

Promise 會解析為所有樣式表覆蓋率報告的陣列。

備註

CSS 覆蓋率不包括沒有 sourceURL 的動態注入樣式標籤。

stopJSCoverage()

Promise 會解析為所有腳本覆蓋率報告的陣列。

備註

JavaScript 覆蓋率預設不包括匿名腳本。但是,會報告具有 sourceURL 的腳本。