メインコンテンツへスキップ

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で追加 testInfo.attach

現在のテストに値またはディスク上のファイルを添付します。一部のレポーターはテストの添付ファイルを表示します。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 した後、添付ファイルを安全に削除できます。

使用法

await testInfo.attach(name);
await testInfo.attach(name, options);

引数

  • name string#

    添付ファイル名。名前はサニタイズされ、ディスクに保存する際のファイル名のプレフィックスとしても使用されます。

  • options Object (オプション)

    • body string | Buffer (オプション)#

      添付ファイルの本文。path と相互に排他的です。

    • contentType string (オプション)#

      レポートで適切に表示するためのこの添付ファイルのコンテンツタイプ。例えば、'application/json''image/png' など。省略した場合、コンテンツタイプは path に基づいて推測されるか、string 添付ファイルの場合は text/plainBuffer 添付ファイルの場合は application/octet-stream がデフォルトになります。

    • path string (オプション)#

      添付ファイルのファイルシステム上のパス。body と相互に排他的です。

戻り値


fail()

v1.10で追加 testInfo.fail()

現在実行中のテストを「失敗するはず」としてマークします。Playwright Test はこのテストを実行し、実際に失敗することを確認します。これは、一部の機能が修正されるまで壊れていることを認識するためのドキュメント目的で役立ちます。これは test.fail() と同様です。

使用法

testInfo.fail();

fail(condition)

v1.10で追加 testInfo.fail(condition)

オプションの説明付きで、現在実行中のテストを条件付きで「失敗するはず」としてマークします。これは test.fail() と同様です。

使用法

testInfo.fail(condition);
testInfo.fail(condition, description);

引数

  • condition boolean#

    条件が true の場合、テストは「失敗するはず」としてマークされます。

  • description string (オプション)#

    テストレポートに反映されるオプションの説明。


fixme()

v1.10で追加 testInfo.fixme()

テストを「fixme」としてマークします。修正する意図があります。テストはすぐに中止されます。これは test.fixme() と同様です。

使用法

testInfo.fixme();

fixme(condition)

v1.10で追加 testInfo.fixme(condition)

オプションの説明付きで、現在実行中のテストを条件付きで「fixme」としてマークします。これは test.fixme() と同様です。

使用法

testInfo.fixme(condition);
testInfo.fixme(condition, description);

引数

  • condition boolean#

    条件が true の場合、テストは「fixme」としてマークされます。

  • description string (オプション)#

    テストレポートに反映されるオプションの説明。


outputPath

v1.10で追加 testInfo.outputPath

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);

引数

  • ...pathSegments Array<string>#

    結果のパスの末尾に追加するパスセグメント。

戻り値


setTimeout

v1.10で追加 testInfo.setTimeout

現在実行中のテストのタイムアウトを変更します。ゼロはタイムアウトがないことを意味します。さまざまなタイムアウト について詳しくはこちらをご覧ください。

タイムアウトは通常、設定ファイル で指定されますが、特定のシナリオでタイムアウトを変更すると便利な場合があります

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);

引数

  • timeout number#

    ミリ秒単位のタイムアウト。


skip()

v1.10で追加 testInfo.skip()

現在実行中のテストを無条件にスキップします。テストはすぐに中止されます。これは test.skip() と同様です。

使用法

testInfo.skip();

skip(condition)

v1.10で追加 testInfo.skip(condition)

オプションの説明付きで、現在実行中のテストを条件付きでスキップします。これは test.skip() と同様です。

使用法

testInfo.skip(condition);
testInfo.skip(condition, description);

引数

  • condition boolean#

    スキップ条件。条件が true の場合、テストはスキップされます。

  • description string (オプション)#

    テストレポートに反映されるオプションの説明。


slow()

v1.10で追加 testInfo.slow()

現在実行中のテストを「slow」としてマークし、デフォルトのタイムアウトの3倍のタイムアウトを与えます。これは test.slow() と同様です。

使用法

testInfo.slow();

slow(condition)

v1.10で追加 testInfo.slow(condition)

オプションの説明付きで、現在実行中のテストを条件付きで「slow」としてマークし、デフォルトのタイムアウトの3倍のタイムアウトを与えます。これは test.slow() と同様です。

使用法

testInfo.slow(condition);
testInfo.slow(condition, description);

引数

  • condition boolean#

    条件が true の場合、テストは「slow」としてマークされます。

  • description string (オプション)#

    テストレポートに反映されるオプションの説明。


snapshotPath

v1.10で追加 testInfo.snapshotPath

指定された pathSegments を持つスナップショットファイルへのパスを返します。スナップショット について詳しくはこちらをご覧ください。

pathSegments は、testInfo.snapshotPath('relative', 'path', 'to', 'snapshot.png') のように、スナップショットファイルへのパスセグメントを受け入れることに注意してください。ただし、このパスは各テストファイルのsnapshotsディレクトリ(つまり a.spec.js-snapshots)内に留まる必要があります。そうでない場合は、例外がスローされます。

使用法

testInfo.snapshotPath(...pathSegments);

引数

  • ...pathSegments Array<string>#

    スナップショットの名前、またはスナップショットファイルのパスを定義するパスセグメント。同じテストファイル内で同じ名前のスナップショットは同じであることが期待されます。

戻り値


プロパティ

annotations

v1.10で追加 testInfo.annotations

現在のテストに適用可能なアノテーションのリスト。テストのアノテーション、テストが属するすべての test.describe() グループのアノテーション、およびテストファイルのファイルレベルのアノテーションが含まれます。

テストアノテーション について詳しくはこちらをご覧ください。

使用法

testInfo.annotations

  • Array<Object>
    • type string

      アノテーションのタイプ。例えば、'skip''fail' など。

    • description string (オプション)

      オプションの説明。


attachments

v1.10で追加 testInfo.attachments

現在のテストに添付されたファイルまたはバッファのリスト。一部のレポーターはテストの添付ファイルを表示します。

添付ファイルを追加するには、この配列に直接プッシュする代わりに testInfo.attach() を使用してください。

使用法

testInfo.attachments

  • Array<Object>
    • name string

      添付ファイル名。

    • contentType string

      レポートで適切に表示するためのこの添付ファイルのコンテンツタイプ。例えば、'application/json''image/png' など。

    • path string (オプション)

      添付ファイルのファイルシステム上のオプションのパス。

    • body Buffer (オプション)

      ファイルの代わりに使われるオプションの添付ファイルの本文。


column

v1.10で追加 testInfo.column

現在実行中のテストが宣言されている列番号。

使用法

testInfo.column


config

v1.10で追加 testInfo.config

設定ファイル からの処理済み設定。

使用法

testInfo.config


duration

v1.10で追加 testInfo.duration

テストが完了するまでにかかったミリ秒数。テストが正常に完了する前は常にゼロです。test.afterEach() フックで使用できます。

使用法

testInfo.duration


error

v1.10で追加 testInfo.error

テスト実行中にスローされた最初のエラー(もしあれば)。これは testInfo.errors の最初の要素と同じです。

使用法

testInfo.error


errors

v1.10で追加 testInfo.errors

テスト実行中にスローされたエラー(もしあれば)。

使用法

testInfo.errors


expectedStatus

v1.10で追加 testInfo.expectedStatus

現在実行中のテストの期待されるステータス。通常は 'passed' ですが、いくつかのケースを除きます。

  • 'skipped' スキップされたテストの場合、例えば test.skip() を使用した場合。
  • 'failed' test.fail() で失敗としてマークされたテストの場合。

期待されるステータスは通常、実際の 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

現在実行中のテストが宣言されているファイルへの絶対パス。

使用法

testInfo.file


fn

v1.10で追加 testInfo.fn

test(title, testFunction) に渡されたテスト関数。

使用法

testInfo.fn


line

v1.10で追加 testInfo.line

現在実行中のテストが宣言されている行番号。

使用法

testInfo.line


outputDir

v1.10で追加 testInfo.outputDir

この特定のテスト実行の出力ディレクトリへの絶対パス。各テスト実行は独自のディレクトリを取得するため、競合することはありません。

使用法

testInfo.outputDir


parallelIndex

v1.10で追加 testInfo.parallelIndex

0 から workers - 1 までのワーカーのインデックス。同時に実行されているワーカーは異なる parallelIndex を持つことが保証されています。ワーカーが再起動された場合(例えば、失敗後)、新しいワーカープロセスは同じ parallelIndex を持ちます。

process.env.TEST_PARALLEL_INDEX としても利用可能です。Playwright Test での 並列処理とシャーディング について詳しくはこちらをご覧ください。

使用法

testInfo.parallelIndex


project

v1.10で追加 testInfo.project

設定ファイル からの処理済みプロジェクト設定。

使用法

testInfo.project


repeatEachIndex

v1.10で追加 testInfo.repeatEachIndex

「repeat each」モードで実行している場合の一意のリピートインデックスを指定します。このモードは、コマンドライン--repeat-each を渡すことで有効になります。

使用法

testInfo.repeatEachIndex


retry

v1.10で追加 testInfo.retry

テストが失敗後にリトライされた場合のリトライ番号を指定します。最初のテスト実行では 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で追加 testInfo.snapshotDir

この特定のテストのスナップショット出力ディレクトリへの絶対パス。各テストスイートは独自のディレクトリを取得するため、競合することはありません。

このプロパティは、testProject.snapshotPathTemplate 設定を考慮していません。

使用法

testInfo.snapshotDir


snapshotSuffix

v1.10で追加 testInfo.snapshotSuffix

testInfo.snapshotSuffix の使用は推奨されていません。スナップショットパスを設定するには、testConfig.snapshotPathTemplate を使用してください。

スナップショットを複数のテスト構成間で区別するために使用されるサフィックス。例えば、スナップショットがプラットフォームに依存する場合、testInfo.snapshotSuffixprocess.platform と等しく設定できます。この場合、expect(value).toMatchSnapshot(snapshotName) はプラットフォームに応じて異なるスナップショットを使用します。スナップショット について詳しくはこちらをご覧ください。

使用法

testInfo.snapshotSuffix


status

v1.10で追加 testInfo.status

現在実行中のテストの実際のステータス。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

テストに適用されるタグ。タグ について詳しくはこちらをご覧ください。

テスト実行中にこのリストに加えられた変更は、テストレポーターには表示されません。

使用法

testInfo.tags


testId

v1.32で追加 testInfo.testId

レポーターAPIのテストケースIDに一致するテストID。

使用法

testInfo.testId


timeout

v1.10で追加 testInfo.timeout

現在実行中のテストのタイムアウト(ミリ秒単位)。ゼロはタイムアウトがないことを意味します。さまざまなタイムアウト について詳しくはこちらをご覧ください。

タイムアウトは通常、設定ファイル で指定されます。

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.10で追加 testInfo.title

test(title, testFunction) に渡された、現在実行中のテストのタイトル。

使用法

testInfo.title


titlePath

v1.10で追加 testInfo.titlePath

テストファイル名から始まる完全なタイトルパス。

使用法

testInfo.titlePath


workerIndex

v1.10で追加 testInfo.workerIndex

テストを実行しているワーカープロセスのユニークなインデックス。ワーカーが再起動された場合(例えば、失敗後)、新しいワーカープロセスは新しいユニークな workerIndex を取得します。

process.env.TEST_WORKER_INDEX としても利用可能です。Playwright Test での 並列処理とシャーディング について詳しくはこちらをご覧ください。

使用法

testInfo.workerIndex