フィクスチャ
Playwright Testは、テストフィクスチャの概念に基づいています。テストフィクスチャは、各テストの環境を構築するために使用され、テストに必要なものすべてを提供し、それ以外のものは提供しません。
Playwright 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'
}
});
// ...
});
型