Skip to main content

隔離

簡介

使用 Playwright 撰寫的測試會在稱為瀏覽器情境的隔離乾淨環境中執行。此隔離模型提升了可重現性並防止測試失敗的連鎖反應。

什麼是測試隔離?

測試隔離是指每個測試完全與其他測試隔離。每個測試都獨立於任何其他測試運行。這表示每個測試都有自己的本地儲存、會話儲存、cookies 等。Playwright 使用 BrowserContext 來實現這一點,它相當於無痕模式的設定檔。它們快速且便宜地建立,並且完全隔離,即使在單一瀏覽器中執行也是如此。Playwright 為每個測試建立一個情境,並在該情境中提供預設的 Page

為什麼測試隔離很重要?

  • 沒有失敗的連帶影響。如果一個測試失敗,它不會影響其他測試。
  • 容易偵錯錯誤或不穩定性,因為您可以隨意多次執行單一測試。
  • 在平行執行、分片等情況下,不必考慮執行順序。

測試隔離的兩種方式

在測試隔離方面有兩種不同的策略:從頭開始或在測試之間清理。在測試之間清理的問題是很容易忘記清理,而且有些東西不可能清理,例如「已訪問的連結」。一個測試的狀態可能洩漏到下一個測試,這可能導致您的測試失敗,並且由於問題來自另一個測試而使偵錯變得更困難。從頭開始意味著一切都是新的,所以如果測試失敗,您只需要在該測試內查看以進行偵錯。

Playwright 如何實現測試隔離

Playwright 使用瀏覽器情境來實現測試隔離。每個測試都有自己的瀏覽器情境。執行測試時每次都會建立一個新的瀏覽器情境。當使用 Playwright 作為測試執行器時,瀏覽器情境會預設建立。否則,您可以手動建立瀏覽器情境。

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

test('example test', async ({ page, context }) => {
// "context" 是一個隔離的 BrowserContext,專為此特定測試建立。
// "page" 屬於此情境。
});

test('another test', async ({ page, context }) => {
// 第二個測試中的 "context" 和 "page" 完全
// 與第一個測試隔離。
});

瀏覽器情境也可以用來模擬涉及行動裝置、權限、語言環境和顏色方案的多頁面場景。查看我們的模擬指南以獲取更多資訊。

單一測試中的多個情境

Playwright 可以在單一情境中建立多個瀏覽器情境。這在您想測試多使用者功能(如聊天)時非常有用。

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

test('admin and user', async ({ browser }) => {
// 建立兩個隔離的瀏覽器情境
const adminContext = await browser.newContext();
const userContext = await browser.newContext();

// 建立頁面並獨立與情境互動
const adminPage = await adminContext.newPage();
const userPage = await userContext.newPage();
});