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, который почти пустой. Результат теста будет заполняться во время выполнения теста (например, шагами и вводом/выводом) и получит окончательное 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 объединённого отчёта

При объединении нескольких blob отчётов с помощью команды CLI merge-reports тот же API Отчётчика вызывается для создания окончательных отчётов, и все существующие отчётчики должны работать без изменений. Однако есть некоторые тонкие различия, которые могут повлиять на некоторые настраиваемые отчётчики.

  • Проекты из разных фрагментов всегда сохраняются как отдельные объекты TestProject. Например, если проект «Desktop Chrome» был разделен на 5 машин, то в конфигурации, переданной в reporter.onBegin(), будет 5 экземпляров проектов с тем же именем.

Методы​

onBegin​

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

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

reporter.onBegin(config, suite);

Аргументы

  • config FullConfig

    Результирующая конфигурация.

  • suite Набор

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

onEnd​

Вызывается после выполнения всех тестов или прерывания тестирования. Обратите внимание, что этот метод может возвращать Promise, и Playwright Test будет ожидать его. Отчётчик может переопределить состояние и тем самым повлиять на код завершения запускателя тестов.

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

await reporter.onEnd(result);

Аргументы

  • result Объект
    • status "passed" | "failed" | "timedout" | "interrupted"

      Состояние выполнения теста.

    • startTime [Date]

      Начальное время выполнения теста.

    • duration число

      Длительность выполнения теста в миллисекундах.

    Результат полного выполнения теста, status может быть одним из следующих:
    • 'passed' - Всё прошло успешно.
    • 'failed' - Один или несколько тестов завершились неудачно.
    • 'timedout' - Был достигнут глобальный таймаут testConfig.globalTimeout.
    • 'interrupted' - Прервано пользователем.

Возвращает

  • Promise<Объект>
    • status "passed" | "failed" | "timedout" | "interrupted" (необязательно)

onError​

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

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

reporter.onError(error);

Аргументы

  • error TestError

    Ошибка.

onExit​

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

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

await reporter.onExit();

Возвращает

  • Promise<void>

onStdErr​

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

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

reporter.onStdErr(chunk, test, result);

Аргументы

  • chunk строка | Буфер

    Часть вывода.

  • test void | TestCase

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

  • result void | TestResult

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

onStdOut​

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

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

reporter.onStdOut(chunk, test, result);

Аргументы

  • chunk строка | Буфер

    Часть вывода.

  • 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

    Результат выполнения теста.

printsToStdio​

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

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

reporter.printsToStdio();

Возвращаемое значение

  • boolean

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

Spec-Zone.ru

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