跳到主要內容

PageAssertions

PageAssertions 類別提供了斷言方法,可用於對測試中的 Page 狀態進行斷言。

import { test, expect } from '@playwright/test';

test('navigates to login', async ({ page }) => {
// ...
await page.getByText('Sign in').click();
await expect(page).toHaveURL(/.*\/login/);
});

方法

toHaveScreenshot(name)

新增於版本: v1.23 pageAssertions.toHaveScreenshot(name)

此函數將等待直到兩個連續的頁面螢幕截圖產生相同的結果,然後將最後的螢幕截圖與預期結果進行比較。

用法

await expect(page).toHaveScreenshot('image.png');

請注意,螢幕截圖斷言僅適用於 Playwright 測試執行器。

參數

  • name string | Array<string>#

    快照名稱。

  • options Object (可選)

    • animations "disabled" | "allow" (可選)#

      當設定為 "disabled" 時,停止 CSS 動畫、CSS 過渡和 Web Animations。動畫會根據其持續時間而有不同的處理方式

      • 有限動畫會快速轉到完成,因此它們會觸發 transitionend 事件。
      • 無限動畫會取消到初始狀態,然後在螢幕截圖後重新播放。

      預設為 "disabled",禁用動畫。

    • caret "hide" | "initial" (可選)#

      當設定為 "hide" 時,螢幕截圖將隱藏文字游標。當設定為 "initial" 時,文字游標行為將不會更改。預設為 "hide"

    • clip Object (可選)#

      • x number

        剪裁區域左上角的 x 座標

      • y number

        剪裁區域左上角的 y 座標

      • width number

        剪裁區域的寬度

      • height number

        剪裁區域的高度

      一個物件,用於指定結果圖像的剪裁。

    • fullPage boolean (可選)#

      當為 true 時,會截取整個可捲動頁面的螢幕截圖,而不是當前可見的視窗。預設為 false

    • mask Array<Locator> (可選)#

      指定在截取螢幕截圖時應遮罩的 locator。遮罩的元素將被粉紅色框 #FF00FF(可通過 maskColor 自訂)覆蓋,完全遮蓋其邊界框。

    • maskColor string (可選)新增於版本: v1.35#

      指定遮罩元素的覆蓋框顏色,採用 CSS 顏色格式。預設顏色為粉紅色 #FF00FF

    • maxDiffPixelRatio number (可選)#

      像素差異與像素總量的可接受比率,介於 01 之間。預設值可通過 TestConfig.expect 配置。預設為未設定。

    • maxDiffPixels number (可選)#

      可接受的不同像素數量。預設值可通過 TestConfig.expect 配置。預設為未設定。

    • omitBackground boolean (可選)#

      隱藏預設的白色背景,並允許捕獲具有透明度的螢幕截圖。不適用於 jpeg 圖像。預設為 false

    • scale "css" | "device" (可選)#

      當設定為 "css" 時,螢幕截圖的每個 CSS 像素將有一個像素。對於高 DPI 設備,這將保持螢幕截圖較小。使用 "device" 選項將為每個設備像素產生一個像素,因此高 DPI 設備的螢幕截圖將大兩倍甚至更大。

      預設為 "css"

    • stylePath string | Array<string> (可選)新增於版本: v1.41#

      包含樣式表的檔案名稱,用於在製作螢幕截圖時應用。您可以在此處隱藏動態元素、使元素不可見或更改其屬性,以幫助您建立可重複的螢幕截圖。此樣式表會穿透 Shadow DOM 並應用於內部框架。

    • threshold number (可選)#

      在比較圖像中相同像素之間,YIQ 色彩空間中可接受的感知色彩差異,介於零(嚴格)和一(寬鬆)之間,預設值可通過 TestConfig.expect 配置。預設為 0.2

    • timeout number (可選)#

      以毫秒為單位重試斷言的時間。預設為 TestConfig.expect 中的 timeout

回傳


toHaveScreenshot(options)

新增於版本: v1.23 pageAssertions.toHaveScreenshot(options)

此函數將等待直到兩個連續的頁面螢幕截圖產生相同的結果,然後將最後的螢幕截圖與預期結果進行比較。

用法

await expect(page).toHaveScreenshot();

請注意,螢幕截圖斷言僅適用於 Playwright 測試執行器。

參數

  • options Object (可選)
    • animations "disabled" | "allow" (可選)#

      當設定為 "disabled" 時,停止 CSS 動畫、CSS 過渡和 Web Animations。動畫會根據其持續時間而有不同的處理方式

      • 有限動畫會快速轉到完成,因此它們會觸發 transitionend 事件。
      • 無限動畫會取消到初始狀態,然後在螢幕截圖後重新播放。

      預設為 "disabled",禁用動畫。

    • caret "hide" | "initial" (可選)#

      當設定為 "hide" 時,螢幕截圖將隱藏文字游標。當設定為 "initial" 時,文字游標行為將不會更改。預設為 "hide"

    • clip Object (可選)#

      • x number

        剪裁區域左上角的 x 座標

      • y number

        剪裁區域左上角的 y 座標

      • width number

        剪裁區域的寬度

      • height number

        剪裁區域的高度

      一個物件,用於指定結果圖像的剪裁。

    • fullPage boolean (可選)#

      當為 true 時,會截取整個可捲動頁面的螢幕截圖,而不是當前可見的視窗。預設為 false

    • mask Array<Locator> (可選)#

      指定在截取螢幕截圖時應遮罩的 locator。遮罩的元素將被粉紅色框 #FF00FF(可通過 maskColor 自訂)覆蓋,完全遮蓋其邊界框。

    • maskColor string (可選)新增於版本: v1.35#

      指定遮罩元素的覆蓋框顏色,採用 CSS 顏色格式。預設顏色為粉紅色 #FF00FF

    • maxDiffPixelRatio number (可選)#

      像素差異與像素總量的可接受比率,介於 01 之間。預設值可通過 TestConfig.expect 配置。預設為未設定。

    • maxDiffPixels number (可選)#

      可接受的不同像素數量。預設值可通過 TestConfig.expect 配置。預設為未設定。

    • omitBackground boolean (可選)#

      隱藏預設的白色背景,並允許捕獲具有透明度的螢幕截圖。不適用於 jpeg 圖像。預設為 false

    • scale "css" | "device" (可選)#

      當設定為 "css" 時,螢幕截圖的每個 CSS 像素將有一個像素。對於高 DPI 設備,這將保持螢幕截圖較小。使用 "device" 選項將為每個設備像素產生一個像素,因此高 DPI 設備的螢幕截圖將大兩倍甚至更大。

      預設為 "css"

    • stylePath string | Array<string> (可選)新增於版本: v1.41#

      包含樣式表的檔案名稱,用於在製作螢幕截圖時應用。您可以在此處隱藏動態元素、使元素不可見或更改其屬性,以幫助您建立可重複的螢幕截圖。此樣式表會穿透 Shadow DOM 並應用於內部框架。

    • threshold number (可選)#

      在比較圖像中相同像素之間,YIQ 色彩空間中可接受的感知色彩差異,介於零(嚴格)和一(寬鬆)之間,預設值可通過 TestConfig.expect 配置。預設為 0.2

    • timeout number (可選)#

      以毫秒為單位重試斷言的時間。預設為 TestConfig.expect 中的 timeout

回傳


toHaveTitle

新增於版本: v1.20 pageAssertions.toHaveTitle

確保頁面具有指定的標題。

用法

await expect(page).toHaveTitle(/.*checkout/);

參數

  • titleOrRegExp string | RegExp新增於版本: v1.18#

    預期的標題或 RegExp。

  • options Object (可選)

    • timeout number (可選)新增於版本: v1.18#

      以毫秒為單位重試斷言的時間。預設為 TestConfig.expect 中的 timeout

回傳


toHaveURL

新增於版本: v1.20 pageAssertions.toHaveURL

確保頁面已導航到指定的 URL。

用法

await expect(page).toHaveURL(/.*checkout/);

參數

  • urlOrRegExp string | RegExp新增於版本: v1.18#

    預期的 URL 字串或 RegExp。

  • options Object (可選)

    • ignoreCase boolean (可選)新增於版本: v1.44#

      是否執行不區分大小寫的匹配。ignoreCase 選項優先於指定的對應正則表達式標誌。

    • timeout number (可選)新增於版本: v1.18#

      以毫秒為單位重試斷言的時間。預設為 TestConfig.expect 中的 timeout

回傳


屬性

not

新增於版本: v1.20 pageAssertions.not

使斷言檢查相反的條件。例如,此程式碼測試頁面 URL 不包含 "error"

await expect(page).not.toHaveURL('error');

用法

expect(page).not

類型