Reporter
テストランナーは、テスト実行中に発生する様々なイベントをレポーターに通知します。レポーターのすべてのメソッドはオプションです。
レポーターメソッドの一部を実装したクラスを作成することで、カスタムレポーターを作成できます。このクラスをデフォルトとしてエクスポートしてください。
- TypeScript
- JavaScript
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;
// @ts-check
/** @implements {import('@playwright/test/reporter').Reporter} */
class MyReporter {
constructor(options) {
console.log(`my-awesome-reporter setup with customOption set to ${options.customOption}`);
}
onBegin(config, suite) {
console.log(`Starting the run with ${suite.allTests().length} tests`);
}
onTestBegin(test) {
console.log(`Starting test ${test.title}`);
}
onTestEnd(test, result) {
console.log(`Finished test ${test.title}: ${result.status}`);
}
onEnd(result) {
console.log(`Finished the run: ${result.status}`);
}
}
module.exports = MyReporter;
このレポーターをtestConfig.reporterと共に使用します。レポーターの使用について詳しく学びましょう。
import { defineConfig } from '@playwright/test';
export default defineConfig({
reporter: [['./my-awesome-reporter.ts', { customOption: 'some value' }]],
});
レポーター呼び出しの一般的な順序は以下の通りです。
- reporter.onBegin()は、他のすべてのスイートとテストを含むルートスイートで一度だけ呼び出されます。スイートの階層について詳しく学びましょう。
- reporter.onTestBegin()は、各テスト実行に対して呼び出されます。実行されるTestCaseと、ほとんど空のTestResultが与えられます。テスト結果は、テストの実行中に(例えば、ステップや標準入出力で)入力され、テストが終了すると最終的な
statusを取得します。 - reporter.onStepBegin()とreporter.onStepEnd()は、テスト内の実行された各ステップに対して呼び出されます。ステップが実行されている間、テスト実行はまだ完了していません。
- reporter.onTestEnd()は、テスト実行が終了したときに呼び出されます。この時点で、TestResultは完了しており、testResult.status、testResult.errorなどを使用できます。
- reporter.onEnd()は、実行すべきすべてのテストが終了した後に一度だけ呼び出されます。
- reporter.onExit()は、テストランナーが終了する直前に呼び出されます。
さらに、reporter.onStdOut()とreporter.onStdErr()は、ワーカープロセスで標準出力が生成されたとき(おそらくテスト実行中)、reporter.onError()は、テスト実行外で何か問題が発生したときに呼び出されます。
カスタムレポーターがターミナルに何も出力しない場合は、reporter.printsToStdio()を実装してfalseを返してください。これにより、Playwrightは、ユーザーエクスペリエンスを向上させるために、カスタムレポーターに加えて標準のターミナルレポーターのいずれかを使用します。
結合レポートAPIの注意点
merge-reports CLIコマンドを介して複数のblobレポートを結合する場合、最終レポートを生成するために同じReporter APIが呼び出され、既存のすべてのレポーターは変更なしで動作するはずです。ただし、一部のカスタムレポーターに影響を与える可能性のある微妙な違いがあります。
- 異なるシャードからのプロジェクトは、常に別個のTestProjectオブジェクトとして保持されます。例えば、プロジェクト「Desktop Chrome」が5台のマシンにシャードされた場合、reporter.onBegin()に渡される設定には、同じ名前のプロジェクトの5つのインスタンスが存在することになります。
メソッド
onBegin
追加バージョン: v1.10テスト実行前に一度だけ呼び出されます。すべてのテストはすでに検出され、Suiteの階層に配置されています。
使用法
reporter.onBegin(config, suite);
引数
-
configFullConfig#解決された設定。
-
すべてのプロジェクト、ファイル、テストケースを含むルートスイート。
onEnd
追加バージョン: v1.10すべてのテストが実行された後、またはテストが中断された後に呼び出されます。このメソッドはPromiseを返すことがあり、Playwright Testはそれを待機することに注意してください。レポーターはステータスをオーバーライドして、テストランナーの終了コードに影響を与えることができます。
使用法
await reporter.onEnd(result);
引数
-
-
status"passed" | "failed" | "timedout" | "interrupted"テスト実行ステータス。
-
startTimeDateテスト実行開始の壁時計時間。
-
durationnumberテスト実行時間(ミリ秒)。
完全なテスト実行の結果。
statusは以下のいずれかです。'passed'- すべてが期待通りに完了しました。'failed'- いずれかのテストが失敗しました。'timedout'- testConfig.globalTimeoutに達しました。'interrupted'- ユーザーによって中断されました。
-
戻り値
onError
追加バージョン: v1.10ワーカープロセスでのハンドルされない例外など、グローバルなエラーが発生した場合に呼び出されます。
使用法
reporter.onError(error);
引数
onExit
追加バージョン: v1.33テストランナーが終了する直前に呼び出されます。この時点で、すべてのレポーターはreporter.onEnd()シグナルを受け取っているため、すべてのレポートが構築されているはずです。このフックでレポートをアップロードするコードを実行できます。
使用法
await reporter.onExit();
戻り値
onStdErr
追加バージョン: v1.10ワーカープロセスで標準エラーに何か書き込まれたときに呼び出されます。
使用法
reporter.onStdErr(chunk, test, result);
引数
-
出力チャンク。
-
実行中のテスト。テストが実行されていない場合でも出力が発生する可能性があり、その場合はvoidになります。
-
resultvoid | TestResult#テスト実行の結果。このオブジェクトはテストの実行中にデータが入力されます。
onStdOut
追加バージョン: v1.10ワーカープロセスで標準出力に何か書き込まれたときに呼び出されます。
使用法
reporter.onStdOut(chunk, test, result);
引数
-
出力チャンク。
-
実行中のテスト。テストが実行されていない場合でも出力が発生する可能性があり、その場合はvoidになります。
-
resultvoid | TestResult#テスト実行の結果。このオブジェクトはテストの実行中にデータが入力されます。
onStepBegin
追加バージョン: v1.10ワーカープロセスでテストステップが開始されたときに呼び出されます。
使用法
reporter.onStepBegin(test, result, step);
引数
-
ステップが属するテスト。
-
resultTestResult#テスト実行の結果。このオブジェクトはテストの実行中にデータが入力されます。
-
開始されたテストステップインスタンス。
onStepEnd
追加バージョン: v1.10ワーカープロセスでテストステップが終了したときに呼び出されます。
使用法
reporter.onStepEnd(test, result, step);
引数
onTestBegin
追加バージョン: v1.10ワーカープロセスでテストが開始された後に呼び出されます。
使用法
reporter.onTestBegin(test, result);
引数
-
開始されたテスト。
-
resultTestResult#テスト実行の結果。このオブジェクトはテストの実行中にデータが入力されます。
onTestEnd
追加バージョン: v1.10ワーカープロセスでテストが終了した後に呼び出されます。
使用法
reporter.onTestEnd(test, result);
引数
-
終了したテスト。
-
resultTestResult#テスト実行の結果。
printsToStdio
追加バージョン: v1.10このレポーターがレポートのために標準入出力を使用するかどうか。使用しない場合、Playwright Testはユーザーエクスペリエンスを向上させるためにいくつかの出力を追加する可能性があります。レポーターがターミナルに出力しない場合は、falseを返すことを強く推奨します。
使用法
reporter.printsToStdio();
戻り値