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);
引数
-
添付ファイル名。この名前はサニタイズされ、ディスクに保存される際のファイル名のプレフィックスとしても使用されます。
-
optionsObject (optional)-
bodystring | Buffer (optional)#添付ファイルの内容。path とは排他的です。
-
contentTypestring (optional)#レポートで適切に表示するためのこの添付ファイルのコンテンツタイプ。例えば
'application/json'や'image/png'。省略された場合、コンテンツタイプは path に基づいて推論されるか、string 添付ファイルの場合はtext/plain、Buffer 添付ファイルの場合はapplication/octet-streamがデフォルトとなります。 -
添付ファイルへのファイルシステム上のパス。body とは排他的です。
-
戻り値
fail()
追加バージョン: v1.10現在実行中のテストを「失敗すべき」としてマークします。Playwright Testはこのテストを実行し、実際に失敗することを確認します。これは、一部の機能が修正されるまで壊れていることを認識するためのドキュメント目的で役立ちます。これはtest.fail()に似ています。
使用法
testInfo.fail();
fail(condition)
追加バージョン: v1.10オプションの説明を付けて、現在実行中のテストを条件付きで「失敗すべき」としてマークします。これはtest.fail()に似ています。
使用法
testInfo.fail(condition);
testInfo.fail(condition, description);
引数
fixme()
追加バージョン: v1.10テストを「fixme」としてマークし、修正する意図があることを示します。テストはすぐに中断されます。これはtest.fixme()に似ています。
使用法
testInfo.fixme();
fixme(condition)
追加バージョン: v1.10オプションの説明を付けて、現在実行中のテストを条件付きで「fixme」としてマークします。これはtest.fixme()に似ています。
使用法
testInfo.fixme(condition);
testInfo.fixme(condition, description);
引数
outputPath
追加バージョン: v1.10testInfo.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);
引数
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指定された name を持つスナップショットファイルへのパスを返します。kind を渡して特定のパスを取得します。
- expect(page).toHaveScreenshot() の場合は
kind: 'screenshot'。 - expect(locator).toMatchAriaSnapshot() の場合は
kind: 'aria'。 - expect(value).toMatchSnapshot() の場合は
kind: 'snapshot'。
使用法
await expect(page).toHaveScreenshot('header.png');
// Screenshot assertion above expects screenshot at this path:
const screenshotPath = test.info().snapshotPath('header.png', { kind: 'screenshot' });
await expect(page.getByRole('main')).toMatchAriaSnapshot({ name: 'main.aria.yml' });
// Aria snapshot assertion above expects snapshot at this path:
const ariaSnapshotPath = test.info().snapshotPath('main.aria.yml', { kind: 'aria' });
expect('some text').toMatchSnapshot('snapshot.txt');
// Snapshot assertion above expects snapshot at this path:
const snapshotPath = test.info().snapshotPath('snapshot.txt');
expect('some text').toMatchSnapshot(['dir', 'subdir', 'snapshot.txt']);
// Snapshot assertion above expects snapshot at this path:
const nestedPath = test.info().snapshotPath('dir', 'subdir', 'snapshot.txt');
引数
-
スナップショットの名前、またはスナップショットファイルパスを定義するためのパスセグメント。同じテストファイル内の同じ名前のスナップショットは同じであることが期待されます。
kind を渡す場合、複数の名前セグメントはサポートされません。
-
optionsObject (optional)-
kind"snapshot" | "screenshot" | "aria" (optional)追加: v1.53#スナップショットの種類は、どのスナップショットパステンプレートが使用されるかを制御します。詳細についてはtestConfig.snapshotPathTemplateを参照してください。デフォルトは
'snapshot'です。
-
戻り値
プロパティ
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 を渡すことで有効になります。
使用法
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
タイプ