TestInfo
TestInfo
には、現在実行中のテストに関する情報が含まれています。テスト関数、test.beforeEach()、test.afterEach()、test.beforeAll()、test.afterAll() のフック、およびテストスコープのフィクスチャで利用可能です。TestInfo
は、ファイルの添付、テストタイムアウトの更新、現在実行中のテストの特定、再試行されたかどうかの判別など、テスト実行を制御するためのユーティリティを提供します。
import { test, expect } from '@playwright/test';
test('basic test', async ({ page }, testInfo) => {
expect(testInfo.title).toBe('basic test');
await page.screenshot(testInfo.outputPath('screenshot.png'));
});
メソッド
attach
追加: v1.10現在のテストに値またはディスク上のファイルを添付します。一部のレポーターはテスト添付ファイルを表示します。path または body のいずれか一方のみを指定する必要があり、両方を指定することはできません。
例えば、スクリーンショットをテストに添付できます。
import { test, expect } from '@playwright/test';
test('basic test', async ({ page }, testInfo) => {
await page.goto('https://playwright.dokyumento.jp');
const screenshot = await page.screenshot();
await testInfo.attach('screenshot', { body: screenshot, contentType: 'image/png' });
});
または、APIから返されたファイルを添付することもできます。
import { test, expect } from '@playwright/test';
import { download } from './my-custom-helpers';
test('basic test', async ({}, testInfo) => {
const tmpPath = await download('a');
await testInfo.attach('downloaded', { path: tmpPath });
});
testInfo.attach() は、添付されたファイルをレポーターがアクセス可能な場所に自動的にコピーします。attach 呼び出しを待機した後、添付ファイルを安全に削除できます。
使用法
await testInfo.attach(name);
await testInfo.attach(name, options);
引数
-
添付ファイルの名前。この名前は、ディスクに保存する際のファイル名のプレフィックスとしてもサニタイズされて使用されます。
-
options
Object (省略可能)
戻り値
fail()
追加: v1.10現在実行中のテストを「失敗すべき」とマークします。Playwright Test はこのテストを実行し、実際に失敗することを確認します。これは、特定の機能が修正されるまで壊れていることを認識するためのドキュメント目的で役立ちます。これは test.fail() と似ています。
使用法
testInfo.fail();
fail(condition)
追加: v1.10オプションの説明とともに、現在実行中のテストを条件付きで「失敗すべき」とマークします。これは test.fail() と似ています。
使用法
testInfo.fail(condition);
testInfo.fail(condition, description);
引数
-
条件が
true
の場合、テストは「失敗すべき」とマークされます。 -
テストレポートに反映されるオプションの説明。
fixme()
追加: v1.10テストを「fixme」(後で修正する意図がある)としてマークします。テストは即座に中止されます。これは test.fixme() と似ています。
使用法
testInfo.fixme();
fixme(condition)
追加: v1.10オプションの説明とともに、現在実行中のテストを条件付きで「fixme」とマークします。これは test.fixme() と似ています。
使用法
testInfo.fixme(condition);
testInfo.fixme(condition, description);
引数
-
条件が
true
の場合、テストは「fixme」とマークされます。 -
テストレポートに反映されるオプションの説明。
outputPath
追加: v1.10テストが一時ファイルを安全に配置できる testInfo.outputDir 内のパスを返します。並行して実行されるテストが互いに干渉しないことを保証します。
import { test, expect } from '@playwright/test';
import fs from 'fs';
test('example test', async ({}, testInfo) => {
const file = testInfo.outputPath('dir', 'temporary-file.txt');
await fs.promises.writeFile(file, 'Put some data to the dir/temporary-file.txt', 'utf8');
});
pathSegments
は、testInfo.outputPath('relative', 'path', 'to', 'output')
のようにテスト出力ディレクトリへのパスセグメントを受け入れることに注意してください。ただし、このパスは各テストの testInfo.outputDir ディレクトリ(つまり、test-results/a-test-title
)内に留まる必要があり、そうでない場合はエラーをスローします。
使用法
testInfo.outputPath(...pathSegments);
引数
戻り値
setTimeout
追加: v1.10現在実行中のテストのタイムアウトを変更します。ゼロはタイムアウトなしを意味します。様々なタイムアウトについて詳しくはこちら。
タイムアウトは通常、設定ファイルで指定されますが、特定のシナリオでタイムアウトを変更すると役立つ場合があります。
import { test, expect } from '@playwright/test';
test.beforeEach(async ({ page }, testInfo) => {
// Extend timeout for all tests running this hook by 30 seconds.
testInfo.setTimeout(testInfo.timeout + 30000);
});
使用法
testInfo.setTimeout(timeout);
引数
skip()
追加: v1.10現在実行中のテストを無条件にスキップします。テストは即座に中止されます。これは test.skip() と似ています。
使用法
testInfo.skip();
skip(condition)
追加: v1.10オプションの説明とともに、現在実行中のテストを条件付きでスキップします。これは test.skip() と似ています。
使用法
testInfo.skip(condition);
testInfo.skip(condition, description);
引数
-
スキップ条件。条件が
true
の場合、テストはスキップされます。 -
テストレポートに反映されるオプションの説明。
slow()
追加: v1.10現在実行中のテストを「遅い」とマークし、デフォルトのタイムアウトの3倍を与えます。これは test.slow() と似ています。
使用法
testInfo.slow();
slow(condition)
追加: v1.10オプションの説明とともに、現在実行中のテストを条件付きで「遅い」とマークし、デフォルトのタイムアウトの3倍を与えます。これは test.slow() と似ています。
使用法
testInfo.slow(condition);
testInfo.slow(condition, description);
引数
snapshotPath
追加: v1.10指定された pathSegments
を持つスナップショットファイルへのパスを返します。スナップショットについて詳しくはこちら。
pathSegments
は、testInfo.snapshotPath('relative', 'path', 'to', 'snapshot.png')
のようにスナップショットファイルへのパスセグメントを受け入れることに注意してください。ただし、このパスは各テストファイルのスナップショットディレクトリ(つまり、a.spec.js-snapshots
)内に留まる必要があり、そうでない場合はエラーをスローします。
使用法
testInfo.snapshotPath(...pathSegments);
引数
-
...pathSegments
Array<string>#スナップショットの名前、またはスナップショットファイルパスを定義するためのパスセグメント。同じテストファイル内で同じ名前のスナップショットは、同一であると期待されます。
戻り値
プロパティ
annotations
追加: v1.10現在のテストに適用されるアノテーションのリスト。テストからのアノテーション、テストが属するすべての test.describe() グループからのアノテーション、およびテストファイルのファイルレベルのアノテーションが含まれます。
テストアノテーションについて詳しくはこちら。
使用法
testInfo.annotations
型
attachments
追加: v1.10現在のテストに添付されたファイルまたはバッファのリスト。一部のレポーターはテスト添付ファイルを表示します。
添付ファイルを追加するには、この配列に直接プッシュするのではなく、testInfo.attach() を使用してください。
使用法
testInfo.attachments
型
column
追加: v1.10現在実行中のテストが宣言されている列番号。
使用法
testInfo.column
型
config
追加: v1.10設定ファイルから処理された設定。
使用法
testInfo.config
型
duration
追加: v1.10テストが完了するまでにかかったミリ秒数。テストが正常に完了するかどうかにかかわらず、完了する前は常にゼロです。test.afterEach() フックで使用できます。
使用法
testInfo.duration
型
error
追加: v1.10テスト実行中にスローされた最初のエラー(もしあれば)。これは testInfo.errors の最初の要素と同じです。
使用法
testInfo.error
型
errors
追加: v1.10テスト実行中にスローされたエラー(もしあれば)。
使用法
testInfo.errors
型
expectedStatus
追加: v1.10現在実行中のテストの期待されるステータス。通常は 'passed'
ですが、いくつかの例外があります。
- スキップされたテストの場合(例: test.skip() 使用時)は
'skipped'
。 - test.fail() で失敗としてマークされたテストの場合は
'failed'
。
期待されるステータスは通常、実際の testInfo.status と比較されます。
import { test, expect } from '@playwright/test';
test.afterEach(async ({}, testInfo) => {
if (testInfo.status !== testInfo.expectedStatus)
console.log(`${testInfo.title} did not run as expected!`);
});
使用法
testInfo.expectedStatus
型
- "passed" | "failed" | "timedOut" | "skipped" | "interrupted"
file
追加: v1.10現在実行中のテストが宣言されているファイルの絶対パス。
使用法
testInfo.file
型
fn
追加: v1.10test(title, testFunction)
に渡されたテスト関数。
使用法
testInfo.fn
型
line
追加: v1.10現在実行中のテストが宣言されている行番号。
使用法
testInfo.line
型
outputDir
追加: v1.10この特定のテスト実行の出力ディレクトリへの絶対パス。各テスト実行は独自のディレクトリを持つため、競合することはありません。
使用法
testInfo.outputDir
型
parallelIndex
追加: v1.100
から workers - 1
までのワーカーのインデックス。同時に実行されているワーカーは異なる parallelIndex
を持つことが保証されています。ワーカーが再起動された場合(例えば失敗後)、新しいワーカープロセスは同じ parallelIndex
を持ちます。
process.env.TEST_PARALLEL_INDEX
としても利用可能です。Playwright Test での 並列処理とシャーディングについて詳しくはこちら。
使用法
testInfo.parallelIndex
型
project
追加: v1.10設定ファイルから処理されたプロジェクト設定。
使用法
testInfo.project
型
repeatEachIndex
追加: v1.10「repeat each」モードで実行する際に、一意のリピートインデックスを指定します。このモードは、コマンドラインに --repeat-each
を渡すことで有効になります。
使用法
testInfo.repeatEachIndex
型
retry
追加: v1.10テストが失敗後に再試行される際の再試行番号を指定します。最初のテスト実行では testInfo.retry はゼロに等しく、最初の再試行では1に等しく、それ以降も同様です。再試行について詳しくはこちら。
import { test, expect } from '@playwright/test';
test.beforeEach(async ({}, testInfo) => {
// You can access testInfo.retry in any hook or fixture.
if (testInfo.retry > 0)
console.log(`Retrying!`);
});
test('my test', async ({ page }, testInfo) => {
// Here we clear some server-side state when retrying.
if (testInfo.retry)
await cleanSomeCachesOnTheServer();
// ...
});
使用法
testInfo.retry
型
snapshotDir
追加: v1.10この特定のテストのスナップショット出力ディレクトリへの絶対パス。各テストスイートは独自のディレクトリを持つため、競合することはありません。
このプロパティは testProject.snapshotPathTemplate の設定を考慮しません。
使用法
testInfo.snapshotDir
型
snapshotSuffix
追加: v1.10testInfo.snapshotSuffix の使用は推奨されません。スナップショットパスを設定するには、testConfig.snapshotPathTemplate を使用してください。
複数のテスト構成間でスナップショットを区別するために使用されるサフィックス。例えば、スナップショットがプラットフォームに依存する場合、testInfo.snapshotSuffix
を process.platform
に設定できます。この場合 expect(value).toMatchSnapshot(snapshotName)
はプラットフォームに応じて異なるスナップショットを使用します。スナップショットについて詳しくはこちら。
使用法
testInfo.snapshotSuffix
型
status
追加: v1.10現在実行中のテストの実際のステータス。テストが test.afterEach() フックとフィクスチャで完了した後で利用可能です。
ステータスは通常、testInfo.expectedStatus と比較されます。
import { test, expect } from '@playwright/test';
test.afterEach(async ({}, testInfo) => {
if (testInfo.status !== testInfo.expectedStatus)
console.log(`${testInfo.title} did not run as expected!`);
});
使用法
testInfo.status
型
- "passed" | "failed" | "timedOut" | "skipped" | "interrupted"
tags
追加: v1.43テストに適用されるタグ。タグについて詳しくはこちら。
テストの実行中にこのリストに対して行われた変更は、テストレポーターには表示されません。
使用法
testInfo.tags
型
testId
追加: v1.32レポーターAPIのテストケースIDと一致するテストID。
使用法
testInfo.testId
型
timeout
追加: v1.10現在実行中のテストのミリ秒単位のタイムアウト。ゼロはタイムアウトなしを意味します。様々なタイムアウトについて詳しくはこちら。
タイムアウトは通常、設定ファイルで指定されます。
import { test, expect } from '@playwright/test';
test.beforeEach(async ({ page }, testInfo) => {
// Extend timeout for all tests running this hook by 30 seconds.
testInfo.setTimeout(testInfo.timeout + 30000);
});
使用法
testInfo.timeout
型
title
追加: v1.10test(title, testFunction)
に渡された、現在実行中のテストのタイトル。
使用法
testInfo.title
型
titlePath
追加: v1.10テストファイル名から始まる完全なタイトルパス。
使用法
testInfo.titlePath
型
workerIndex
追加: v1.10テストを実行しているワーカープロセスの一意のインデックス。ワーカーが再起動された場合(例えば失敗後)、新しいワーカープロセスは新しい一意の workerIndex
を取得します。
process.env.TEST_WORKER_INDEX
としても利用可能です。Playwright Test での 並列処理とシャーディングについて詳しくはこちら。
使用法
testInfo.workerIndex
型