跳到主要內容

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

返回覆蓋率已啟動

注意

匿名腳本是指沒有關聯 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 覆蓋率預設不包含匿名腳本。但是,具有 sourceURLs 的腳本會被報告。

用法

await coverage.stopJSCoverage();

返回