Репортёр
Во время выполнения тестов исполнитель тестов уведомляет репортёр о различных событиях. Все методы репортёра необязательны.
Вы можете создать собственный репортёр, реализовав класс с некоторыми методами репортёра. Не забудьте экспортировать этот класс по умолчанию.
- 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. Результат теста заполняется по мере выполнения теста (например, шагами и данными stdio), а окончательное
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 дополнительно использует один из стандартных репортёров терминала, чтобы повысить удобство работы.
Ошибки репортёра
Playwright перехватывает любые ошибки, выброшенные в методах вашего собственного репортёра. Если вам нужно обнаруживать ошибки репортёра или завершать работу с ошибкой при их возникновении, необходимо самостоятельно обернуть вызовы и обработать ошибки.
Примечания к API объединённых отчётов
При объединении нескольких отчётов blob с помощью команды CLI merge-reports для создания итоговых отчётов вызывается тот же API Reporter, и все существующие репортёры должны работать без изменений. Однако есть некоторые тонкие различия, которые могут повлиять на работу отдельных пользовательских репортёров.
- Проекты из разных сегментов всегда остаются отдельными объектами TestProject. Например, если проект «Desktop Chrome» был распределён между 5 компьютерами, в конфигурации, переданной в reporter.onBegin(), будет 5 экземпляров проектов с одинаковым именем.
Методы
onBegin
Вызывается один раз перед запуском тестов. Все тесты уже обнаружены и организованы в иерархию наборов.
Использование
reporter.onBegin(config, suite);
Аргументы
-
configFullConfigРазрешённая конфигурация.
-
suiteSuiteКорневой набор, содержащий все проекты, файлы и тестовые случаи.
onEnd
Вызывается после выполнения всех тестов или прерывания тестирования. Обратите внимание, что этот метод может вернуть Promise, и Playwright Test будет ожидать его выполнения. Репортёр может переопределить статус и тем самым повлиять на код завершения исполнителя тестов.
Использование
await reporter.onEnd(result);
Аргументы
-
resultObject-
status"passed" | "failed" | "timedout" | "interrupted"Статус запуска тестов.
-
startTimeDateНастенное время начала запуска тестов.
-
durationnumberДлительность запуска тестов в миллисекундах.
Результат полного запуска тестов,
statusможет принимать одно из значений:-
'passed'— всё прошло так, как ожидалось. -
'failed'— один или несколько тестов завершились с ошибкой. -
'timedout'— достигнуто значение testConfig.globalTimeout. -
'interrupted'— прервано пользователем.
-
Возвращает
onError
Вызывается при возникновении глобальной ошибки, например необработанного исключения в рабочем процессе.
Использование
reporter.onError(error); reporter.onError(error, workerInfo);
Аргументы
-
errorTestErrorОшибка.
-
workerInfoWorkerInfo (необязательно)Содержит сведения о рабочем процессе, в котором возникла эта ошибка.
undefinedдля ошибок, не связанных с конкретным рабочим процессом.
onExit
Вызывается непосредственно перед завершением работы исполнителя тестов. К этому моменту все репортёры уже получили сигнал reporter.onEnd(), поэтому все отчёты должны быть сформированы. В этом обработчике можно выполнить код для загрузки отчётов.
Использование
await reporter.onExit();
Возвращает
onStdErr
Вызывается, когда в рабочем процессе что-либо записано в стандартный поток ошибок.
Использование
reporter.onStdErr(chunk, test, result);
Аргументы
-
Фрагмент вывода.
-
Выполнявшийся тест. Обратите внимание, что вывод может появляться, когда ни один тест не выполняется; в таком случае это значение будет void.
-
resultvoid | TestResultРезультат запуска теста; этот объект заполняется по мере выполнения теста.
onStdOut
Вызывается, когда в рабочем процессе что-либо записано в стандартный поток вывода.
Использование
reporter.onStdOut(chunk, test, result);
Аргументы
-
Фрагмент вывода.
-
Выполнявшийся тест. Обратите внимание, что вывод может появляться, когда ни один тест не выполняется; в таком случае это значение будет void.
-
resultvoid | TestResultРезультат запуска теста; этот объект заполняется по мере выполнения теста.
onStepBegin
Вызывается, когда в рабочем процессе начинается шаг теста.
Использование
reporter.onStepBegin(test, result, step);
Аргументы
-
testTestCaseТест, к которому относится шаг.
-
resultTestResultРезультат запуска теста; этот объект заполняется по мере выполнения теста.
-
stepTestStepЭкземпляр начавшегося шага теста.
onStepEnd
Вызывается, когда в рабочем процессе завершается шаг теста.
Использование
reporter.onStepEnd(test, result, step);
Аргументы
-
testTestCaseТест, к которому относится шаг.
-
resultTestResultРезультат запуска теста.
-
stepTestStepЭкземпляр завершившегося шага теста.
onTestBegin
Вызывается после запуска теста в рабочем процессе.
Использование
reporter.onTestBegin(test, result);
Аргументы
-
testTestCaseЗапущенный тест.
-
resultTestResultРезультат запуска теста; этот объект заполняется по мере выполнения теста.
onTestEnd
Вызывается после завершения теста в рабочем процессе.
Использование
reporter.onTestEnd(test, result);
Аргументы
-
testTestCaseЗавершённый тест.
-
resultTestResultРезультат запуска теста.
preprocess
Вызывается после разрешения конфигурации и перед reporter.onBegin(). Позволяет репортёру пометить отдельные тесты как пропущенные, исключённые, исправленные или завершающиеся с ошибкой.
Использование
await reporter.preprocess(params);
Аргументы
-
paramsObject-
configFullConfigРазрешённая конфигурация.
-
suiteSuiteКорневой набор, содержащий проекты, файлы и тестовые случаи, которые будут запущены.
-
testRunTestRunУправляет тем, какие тесты будут запущены, и их ожидаемым статусом.
Набор учитывает фильтрацию
--project,--grep/--grep-invertи.only, поэтому содержит только тесты, соответствующие текущему вызову. Проекты настройки и зависимостей доступны только для чтения и не могут быть изменены через TestRun.Набор игнорирует аргумент
--shard: он всегда содержит полный, не разделённый на сегменты набор тестов. Playwright применяет встроенное разбиение на сегменты после возврата из reporter.preprocess(), если только репортёр не вызовет testRun.skipSharding(). -
Возвращает
printsToStdio
Использует ли этот репортёр stdio для вывода отчётов. Если нет, Playwright Test может добавить некоторый вывод для повышения удобства работы. Если ваш репортёр ничего не выводит в терминал, настоятельно рекомендуется вернуть false.
Использование
reporter.printsToStdio();
Возвращает
© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-reporter