Spec-Zone.ru › Playwright

Репортёр

Во время выполнения тестов исполнитель тестов уведомляет репортёр о различных событиях. Все методы репортёра необязательны.

Вы можете создать собственный репортёр, реализовав класс с некоторыми методами репортёра. Не забудьте экспортировать этот класс по умолчанию.

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

Аргументы

  • config FullConfig

    Разрешённая конфигурация.

  • suite Suite

    Корневой набор, содержащий все проекты, файлы и тестовые случаи.

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​

Вызывается при возникновении глобальной ошибки, например необработанного исключения в рабочем процессе.

Использование

reporter.onError(error);
reporter.onError(error, workerInfo);

Аргументы

  • error TestError

    Ошибка.

  • workerInfo WorkerInfo (необязательно)

    Содержит сведения о рабочем процессе, в котором возникла эта ошибка. undefined для ошибок, не связанных с конкретным рабочим процессом.

onExit​

Вызывается непосредственно перед завершением работы исполнителя тестов. К этому моменту все репортёры уже получили сигнал reporter.onEnd(), поэтому все отчёты должны быть сформированы. В этом обработчике можно выполнить код для загрузки отчётов.

Использование

await reporter.onExit();

Возвращает

  • Promise<void>

onStdErr​

Вызывается, когда в рабочем процессе что-либо записано в стандартный поток ошибок.

Использование

reporter.onStdErr(chunk, test, result);

Аргументы

  • chunk string | Buffer

    Фрагмент вывода.

  • test void | TestCase

    Выполнявшийся тест. Обратите внимание, что вывод может появляться, когда ни один тест не выполняется; в таком случае это значение будет void.

  • result void | TestResult

    Результат запуска теста; этот объект заполняется по мере выполнения теста.

onStdOut​

Вызывается, когда в рабочем процессе что-либо записано в стандартный поток вывода.

Использование

reporter.onStdOut(chunk, test, result);

Аргументы

  • chunk string | Buffer

    Фрагмент вывода.

  • test void | TestCase

    Выполнявшийся тест. Обратите внимание, что вывод может появляться, когда ни один тест не выполняется; в таком случае это значение будет void.

  • result void | TestResult

    Результат запуска теста; этот объект заполняется по мере выполнения теста.

onStepBegin​

Вызывается, когда в рабочем процессе начинается шаг теста.

Использование

reporter.onStepBegin(test, result, step);

Аргументы

  • test TestCase

    Тест, к которому относится шаг.

  • result TestResult

    Результат запуска теста; этот объект заполняется по мере выполнения теста.

  • step TestStep

    Экземпляр начавшегося шага теста.

onStepEnd​

Вызывается, когда в рабочем процессе завершается шаг теста.

Использование

reporter.onStepEnd(test, result, step);

Аргументы

  • test TestCase

    Тест, к которому относится шаг.

  • result TestResult

    Результат запуска теста.

  • step TestStep

    Экземпляр завершившегося шага теста.

onTestBegin​

Вызывается после запуска теста в рабочем процессе.

Использование

reporter.onTestBegin(test, result);

Аргументы

  • test TestCase

    Запущенный тест.

  • result TestResult

    Результат запуска теста; этот объект заполняется по мере выполнения теста.

onTestEnd​

Вызывается после завершения теста в рабочем процессе.

Использование

reporter.onTestEnd(test, result);

Аргументы

  • test TestCase

    Завершённый тест.

  • result TestResult

    Результат запуска теста.

preprocess​

Вызывается после разрешения конфигурации и перед reporter.onBegin(). Позволяет репортёру пометить отдельные тесты как пропущенные, исключённые, исправленные или завершающиеся с ошибкой.

Использование

await reporter.preprocess(params);

Аргументы

  • params Object

    • config FullConfig

      Разрешённая конфигурация.

    • suite Suite

      Корневой набор, содержащий проекты, файлы и тестовые случаи, которые будут запущены.

    • testRun TestRun

      Управляет тем, какие тесты будут запущены, и их ожидаемым статусом.

    Набор учитывает фильтрацию --project, --grep/--grep-invert и .only, поэтому содержит только тесты, соответствующие текущему вызову. Проекты настройки и зависимостей доступны только для чтения и не могут быть изменены через TestRun.

    Набор игнорирует аргумент --shard: он всегда содержит полный, не разделённый на сегменты набор тестов. Playwright применяет встроенное разбиение на сегменты после возврата из reporter.preprocess(), если только репортёр не вызовет testRun.skipSharding().

Возвращает

  • Promise<void>

printsToStdio​

Использует ли этот репортёр stdio для вывода отчётов. Если нет, Playwright Test может добавить некоторый вывод для повышения удобства работы. Если ваш репортёр ничего не выводит в терминал, настоятельно рекомендуется вернуть false.

Использование

reporter.printsToStdio();

Возвращает

  • boolean

© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-reporter

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API