フィクスチャ
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'
}
});
// ...
});
タイプ