Отчётчик
Запускатель тестов уведомляет отчётчик о различных событиях во время выполнения тестов. Все методы отчётчика являются необязательными.
Вы можете создать настраиваемый отчётчик, реализовав класс с некоторыми методами отчётчика. Убедитесь, что этот класс экспортирован как значение по умолчанию.
- 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);
Аргументы
-
configFullConfigРезультирующая конфигурация.
-
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'- Прервано пользователем.
-
Возвращает
onError
Вызывается при возникновении какой-либо глобальной ошибки, например, необработанного исключения в рабочем процессе.
Использование
reporter.onError(error);
Аргументы
-
errorTestErrorОшибка.
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Результат выполнения теста.
printsToStdio
Указывает, использует ли этот репортер stdio для отчётности. Когда это не так, Playwright Test может добавить некоторый вывод для повышения удобства пользователя. Если ваш репортер не выводит данные в терминал, настоятельно рекомендуется вернуть false.
Использование
reporter.printsToStdio();
Возвращаемое значение
© 2024 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-reporter