夾具
Playwright Test 是基於測試夾具的概念。測試夾具用於為每個測試建立環境,為測試提供所需的一切,不多也不少。
Playwright Test 查看每個測試宣告,分析測試所需的夾具集,並專門為該測試準備這些夾具。由夾具準備的值會合併到一個單一物件中,該物件作為第一個參數提供給 test
、hooks、註解和其他夾具。
import { test, expect } from '@playwright/test';
test('basic test', async ({ page }) => {
// ...
});
以上述測試為例,Playwright Test 將在執行測試之前設定 page
夾具,並在測試完成後將其拆除。page
夾具提供一個 Page 物件,該物件可用於測試。
Playwright Test 附帶了下面列出的內建夾具,您也可以新增自己的夾具。Playwright Test 還提供選項來設定 fixtures.browser、fixtures.context 和 fixtures.page。
屬性
browser
新增於:v1.10Browser 實例在同一個 worker 中的所有測試之間共享 - 這使得測試更有效率。但是,每個測試都在隔離的 BrowserContext 中執行,並獲得全新的環境。
用法
test.beforeAll(async ({ browser }) => {
const page = await browser.newPage();
// ...
});
類型
browserName
新增於:v1.10執行測試的瀏覽器名稱。預設為 'chromium'
。可用於根據瀏覽器註解測試。
用法
test('skip this test in Firefox', async ({ page, browserName }) => {
test.skip(browserName === 'firefox', 'Still working on it');
// ...
});
類型
- "chromium" | "firefox" | "webkit"
context
新增於:v1.10為每個測試建立的隔離 BrowserContext 實例。由於 context 彼此隔離,即使多個測試在單個 Browser 中執行以獲得最大效率,每個測試也會獲得全新的環境。
了解如何設定 context 並查看可用選項。
預設的 fixtures.page 屬於此 context。
用法
test('example test', async ({ page, context }) => {
await context.route('*external.com/*', route => route.abort());
// ...
});
類型
page
新增於:v1.10為每個測試建立的隔離 Page 實例。由於 fixtures.context 隔離,因此 Page 在測試之間是隔離的。
這是測試中最常用的夾具。
用法
import { test, expect } from '@playwright/test';
test('basic test', async ({ page }) => {
await page.goto('/signin');
await page.getByLabel('User Name').fill('user');
await page.getByLabel('Password').fill('password');
await page.getByText('Sign in').click();
// ...
});
類型
request
新增於:v1.10每個測試的隔離 APIRequestContext 實例。
用法
import { test, expect } from '@playwright/test';
test('basic test', async ({ request }) => {
await request.post('/signin', {
data: {
username: 'user',
password: 'password'
}
});
// ...
});
類型