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

Reporter

テストランナーは、テスト実行中に様々なイベントをレポーターに通知します。レポーターのすべてのメソッドはオプションです。

レポーターメソッドの一部を実装するクラスを作成することで、カスタムレポーターを作成できます。このクラスをデフォルトとしてエクスポートしてください。

my-awesome-reporter.ts
import type {
Reporter, FullConfig, Suite, TestCase, TestResult, FullResult
} from '@playwright/test/reporter';

class MyReporter implements Reporter {
constructor(options: { customOption?: string } = {}) {
console.log(`my-awesome-reporter setup with customOption set to ${options.customOption}`);
}

onBegin(config: FullConfig, suite: Suite) {
console.log(`Starting the run with ${suite.allTests().length} tests`);
}

onTestBegin(test: TestCase) {
console.log(`Starting test ${test.title}`);
}

onTestEnd(test: TestCase, result: TestResult) {
console.log(`Finished test ${test.title}: ${result.status}`);
}

onEnd(result: FullResult) {
console.log(`Finished the run: ${result.status}`);
}
}
export default MyReporter;

このレポーターをtestConfig.reporterと一緒に使用してください。レポーターの使用について詳しくはこちら。

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
reporter: [['./my-awesome-reporter.ts', { customOption: 'some value' }]],
});

レポーター呼び出しの一般的な順序は次のとおりです

  • reporter.onBegin()は、他のすべてのスイートとテストを含むルートスイートで一度呼び出されます。スイートの階層について詳しくはこちら。
  • reporter.onTestBegin()は、各テスト実行に対して呼び出されます。実行されるTestCaseと、ほぼ空のTestResultが与えられます。テスト結果は、テストの実行中に(例えば、ステップやstdioで)データが投入され、テストが終了すると最終的なstatusを取得します。
  • reporter.onStepBegin()reporter.onStepEnd()は、テスト内の実行された各ステップに対して呼び出されます。ステップが実行されている間は、テスト実行はまだ終了していません。
  • reporter.onTestEnd()は、テスト実行が終了したときに呼び出されます。この時点で、TestResultは完全であり、testResult.statustestResult.errorなどを使用できます。
  • reporter.onEnd()は、実行すべきすべてのテストが終了した後に一度呼び出されます。
  • reporter.onExit()は、テストランナーが終了する直前に呼び出されます。

さらに、reporter.onStdOut()reporter.onStdErr()は、ワーカープロセスで標準出力が発生した場合(テスト実行中である可能性あり)に呼び出され、reporter.onError()は、テスト実行外で何か問題が発生した場合に呼び出されます。

カスタムレポーターがターミナルに何も出力しない場合、reporter.printsToStdio()を実装してfalseを返してください。これにより、Playwrightは、ユーザーエクスペリエンスを向上させるために、カスタムレポーターに加えて標準のターミナルレポーターのいずれかを使用します。

統合レポートAPIの注意点

複数のblobレポートをmerge-reports CLIコマンド経由で統合する場合、最終レポートを生成するために同じReporter APIが呼び出され、既存のすべてのレポーターは変更なしで動作するはずです。ただし、一部のカスタムレポーターに影響を与える可能性のある微妙な違いがいくつかあります。

  • 異なるシャードからのプロジェクトは、常に個別のTestProjectオブジェクトとして保持されます。例えば、プロジェクト「Desktop Chrome」が5台のマシンにシャードされた場合、reporter.onBegin()に渡される設定には、同じ名前のプロジェクトが5つのインスタンス存在することになります。

メソッド

onBegin

追加バージョン: v1.10 reporter.onBegin

テストを実行する前に一度呼び出されます。すべてのテストはすでに検出され、Suiteの階層に配置されています。

使用方法

reporter.onBegin(config, suite);

引数

  • config FullConfig#

    解決された設定。

  • suite Suite#

    すべてのプロジェクト、ファイル、テストケースを含むルートスイート。


onEnd

追加バージョン: v1.10 reporter.onEnd

すべてのテストが実行された後、またはテストが中断された後に呼び出されます。このメソッドはPromiseを返す可能性があり、Playwright Testはそれを待機することに注意してください。レポーターはステータスを上書きすることができ、その結果、テストランナーの終了コードに影響を与えることができます。

使用方法

await reporter.onEnd(result);

引数

  • result Object#
    • status "passed" | "failed" | "timedout" | "interrupted"

      テスト実行ステータス。

    • startTime Date

      テスト実行開始時の実時間。

    • duration number

      テスト実行時間(ミリ秒)。

    全テスト実行の結果、statusは以下のいずれかになります
    • 'passed' - すべてが期待通りに完了しました。
    • 'failed' - いずれかのテストが失敗しました。
    • 'timedout' - testConfig.globalTimeoutに達しました。
    • 'interrupted' - ユーザーによって中断されました。

戻り値

  • Promise<Object>#
    • status "passed" | "failed" | "timedout" | "interrupted" (オプション)


onError

追加バージョン: v1.10 reporter.onError

グローバルエラー(例えば、ワーカープロセスでのハンドルされない例外など)が発生した場合に呼び出されます。

使用方法

reporter.onError(error);

引数


onExit

追加バージョン: v1.33 reporter.onExit

テストランナーが終了する直前に呼び出されます。この時点で、すべてのレポーターはreporter.onEnd()シグナルを受信しているため、すべてのレポートは構築されているはずです。このフックでレポートをアップロードするコードを実行できます。

使用方法

await reporter.onExit();

戻り値


onStdErr

追加バージョン: v1.10 reporter.onStdErr

ワーカープロセスで標準エラーに何かが書き込まれたときに呼び出されます。

使用方法

reporter.onStdErr(chunk, test, result);

引数

  • chunk string | Buffer#

    出力チャンク。

  • test void | TestCase#

    実行中のテスト。出力はテストが実行されていない場合にも発生する可能性があり、その場合はvoidになります。

  • result void | TestResult#

    テスト実行の結果。このオブジェクトはテストの実行中にデータが投入されます。


onStdOut

追加バージョン: v1.10 reporter.onStdOut

ワーカープロセスで標準出力に何かが書き込まれたときに呼び出されます。

使用方法

reporter.onStdOut(chunk, test, result);

引数

  • chunk string | Buffer#

    出力チャンク。

  • test void | TestCase#

    実行中のテスト。出力はテストが実行されていない場合にも発生する可能性があり、その場合はvoidになります。

  • result void | TestResult#

    テスト実行の結果。このオブジェクトはテストの実行中にデータが投入されます。


onStepBegin

追加バージョン: v1.10 reporter.onStepBegin

ワーカープロセスでテストステップが開始されたときに呼び出されます。

使用方法

reporter.onStepBegin(test, result, step);

引数

  • test TestCase#

    ステップが属するテスト。

  • result TestResult#

    テスト実行の結果。このオブジェクトはテストの実行中にデータが投入されます。

  • step TestStep#

    開始されたテストステップインスタンス。


onStepEnd

追加バージョン: v1.10 reporter.onStepEnd

ワーカープロセスでテストステップが終了したときに呼び出されます。

使用方法

reporter.onStepEnd(test, result, step);

引数

  • test TestCase#

    ステップが属するテスト。

  • result TestResult#

    テスト実行の結果。

  • step TestStep#

    終了したテストステップインスタンス。


onTestBegin

追加バージョン: v1.10 reporter.onTestBegin

ワーカープロセスでテストが開始された後に呼び出されます。

使用方法

reporter.onTestBegin(test, result);

引数

  • test TestCase#

    開始されたテスト。

  • result TestResult#

    テスト実行の結果。このオブジェクトはテストの実行中にデータが投入されます。


onTestEnd

追加バージョン: v1.10 reporter.onTestEnd

ワーカープロセスでテストが終了した後に呼び出されます。

使用方法

reporter.onTestEnd(test, result);

引数


printsToStdio

追加バージョン: v1.10 reporter.printsToStdio

このレポーターがレポートのためにstdioを使用するかどうか。使用しない場合、Playwright Testはユーザーエクスペリエンスを向上させるため、何らかの出力を追加する可能性があります。レポーターがターミナルに何も出力しない場合は、falseを返すことを強くお勧めします。

使用方法

reporter.printsToStdio();

戻り値