フィクスチャ
Playwright Test は テストフィクスチャ の概念に基づいています。テストフィクスチャは各テストの環境を確立するために使用され、テストに必要なものだけを提供します。
Playwright Test は各テスト宣言を調べ、テストに必要なフィクスチャのセットを分析し、それらのフィクスチャをテスト用に特別に準備します。フィクスチャによって準備された値は単一のオブジェクトにマージされ、`test`、フック、アノテーション、およびその他のフィクスチャの最初のパラメータとして利用可能です。
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 インスタンスは、同じワーカー 内のすべてのテスト間で共有されます - これにより、テストが効率的になります。ただし、各テストは分離された 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 インスタンス。コンテキストは互いに分離されているため、複数のテストが単一の Browser で実行されている場合でも、すべてのテストは最大限の効率で新しい環境を取得します。
コンテキストの設定 方法を学び、利用可能なオプション を参照してください。
デフォルトの fixtures.page はこのコンテキストに属します。
使用法
test('example test', async ({ page, context }) => {
await context.route('*external.com/*', route => route.abort());
// ...
});
型
page
追加バージョン: v1.10各テスト用に作成された、分離された Page インスタンス。ページは fixtures.context の分離により、テスト間で分離されています。
これはテストで使用される最も一般的なフィクスチャです。
使用法
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'
}
});
// ...
});
型