Перейти к основному содержимому

Отчётчики

Введение​

Playwright Test поставляется с несколькими встроенными отчётчиками для различных нужд и возможностью предоставления пользовательских отчётчиков. Самый простой способ попробовать встроенные отчётчики — это передать опцию командной строки --reporter.

npx playwright test --reporter=line

Для большего контроля вы можете указать отчётчики программно в файле конфигурации.

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
reporter: 'line',
});

Несколько отчётчиков​

Вы можете использовать несколько отчётчиков одновременно. Например, вы можете использовать 'list' для красивого вывода в терминале и 'json', чтобы получить подробный json-файл с результатами тестов.

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
reporter: [
['list'],
['json', { outputFile: 'test-results.json' }]
],
});

Отчётчики на CI​

Вы можете использовать разные отчётчики локально и на CI. Например, использование лаконичного отчётчика 'dot' позволяет избежать избыточного вывода. Это значение по умолчанию на CI.

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
// Лаконичный 'dot' для CI, по умолчанию 'list' при локальном запуске
reporter: process.env.CI ? 'dot' : 'list',
});

Встроенные отчётчики​

Все встроенные отчётчики показывают подробную информацию о сбоях и в основном различаются по степени подробности для успешных запусков.

Отчётчик List​

Отчётчик List является значением по умолчанию (за исключением CI, где по умолчанию используется отчётчик dot). Он выводит строку для каждого выполняемого теста.

npx playwright test --reporter=list
playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
reporter: 'list',
});

Вот пример вывода в середине выполнения теста. Сбои будут перечислены в конце.

npx playwright test --reporter=list
Running 124 tests using 6 workers

1 ✓ should access error in env (438ms)
2 ✓ handle long test names (515ms)
3 x 1) render expected (691ms)
4 ✓ should timeout (932ms)
5 should repeat each:
6 ✓ should respect enclosing .gitignore (569ms)
7 should teardown env after timeout:
8 should respect excluded tests:
9 ✓ should handle env beforeEach error (638ms)
10 should respect enclosing .gitignore:

Вы можете включить отображение шагов, передав следующую опцию конфигурации:

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
reporter: [['list', { printSteps: true }]],
});

Отчёт List поддерживает следующие параметры конфигурации и переменные окружения:

Имя переменной окруженияОпция конфигурации отчётчикаОписаниеПо умолчанию
PLAYWRIGHT_LIST_PRINT_STEPSprintStepsПечатать ли каждый шаг на отдельной строке.false
PLAYWRIGHT_FORCE_TTYНужно ли формировать вывод, подходящий для «живого» терминала. Поддерживает true, 1, false, 0, [WIDTH] и [WIDTH]x[HEIGHT]. Значения [WIDTH] и [WIDTH]x[HEIGHT] задают размеры TTY.true, когда терминал в режиме TTY; иначе false.
FORCE_COLORНужно ли выводить цветной вывод.true, когда терминал в режиме TTY; иначе false.

Отчётчик Line​

Отчётчик Line более лаконичен, чем отчётчик List. Он использует одну строку для отчёта о последнем завершённом тесте и выводит сбои по мере их возникновения. Отчётчик Line полезен для больших наборов тестов, где он показывает прогресс, но не засоряет вывод, перечисляя все тесты.

npx playwright test --reporter=line
playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
reporter: 'line',
});

Вот пример вывода в середине выполнения теста. Сбои сообщаются в строке.

npx playwright test --reporter=line
Running 124 tests using 6 workers
1) dot-reporter.spec.ts:20:1 › render expected ===================================================

Error: expect(received).toBe(expected) // Object.is equality

Expected: 1
Received: 0

[23/124] gitignore.spec.ts - should respect nested .gitignore

Отчёт Line поддерживает следующие параметры конфигурации и переменные окружения:

Имя переменной окруженияОпция конфигурации отчётчикаОписаниеПо умолчанию
PLAYWRIGHT_FORCE_TTYНужно ли формировать вывод, подходящий для «живого» терминала. Поддерживает true, 1, false, 0, [WIDTH] и [WIDTH]x[HEIGHT]. Значения [WIDTH] и [WIDTH]x[HEIGHT] задают размеры TTY.true, когда терминал в режиме TTY; иначе false.
FORCE_COLORНужно ли выводить цветной вывод.true, когда терминал в режиме TTY; иначе false.

Отчётчик Dot​

Отчётчик Dot очень лаконичен — он выводит только один символ для каждого успешного выполнения теста. Это значение по умолчанию на CI и полезно, когда вы не хотите большого объёма вывода.

npx playwright test --reporter=dot
playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
reporter: 'dot',
});

Вот пример вывода в середине выполнения теста. Сбои будут перечислены в конце.

npx playwright test --reporter=dot
Running 124 tests using 6 workers
······F·············································

Один символ отображается для каждого выполненного теста, указывая его статус:

СимволОписание
·Пройден
FПровален
×Провален или истекло время - будет повторен
±Пройден при повторе (нестабильный)
TИстекло время
°Пропущен

Отчёт Dot поддерживает следующие параметры конфигурации и переменные окружения:

Имя переменной окруженияОпция конфигурации отчётчикаОписаниеПо умолчанию
PLAYWRIGHT_FORCE_TTYНужно ли формировать вывод, подходящий для «живого» терминала. Поддерживает true, 1, false, 0, [WIDTH] и [WIDTH]x[HEIGHT]. Значения [WIDTH] и [WIDTH]x[HEIGHT] задают размеры TTY.true, когда терминал в режиме TTY; иначе false.
FORCE_COLORНужно ли выводить цветной вывод.true, когда терминал в режиме TTY; иначе false.

Отчётчик HTML​

Отчётчик HTML создаёт автономную папку, содержащую отчёт о выполнении теста, который можно открыть как веб-страницу.

npx playwright test --reporter=html

По умолчанию HTML-отчёт открывается автоматически, если некоторые из тестов не прошли. Вы можете контролировать это поведение с помощью свойства open в конфигурации Playwright или переменной окружения PLAYWRIGHT_HTML_OPEN. Возможные значения для этого свойства: always, never и on-failure (по умолчанию).

Вы также можете настроить host и port, которые используются для предоставления HTML-отчёта.

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
reporter: [['html', { open: 'never' }]],
});

По умолчанию отчёт записывается в папку playwright-report в текущем рабочем каталоге. Можно изменить это расположение, используя переменную окружения PLAYWRIGHT_HTML_OUTPUT_DIR или конфигурацию отчётчика.

В файле конфигурации передайте параметры напрямую:

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
reporter: [['html', { outputFolder: 'my-report' }]],
});

Если вы загружаете вложения из папки данных в другое место, можно использовать опцию attachmentsBaseURL, чтобы HTML-отчёт знал, где их искать.

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
reporter: [['html', { attachmentsBaseURL: 'https://external-storage.com/' }]],
});

Быстрый способ открыть отчёт о последнем запуске теста:

npx playwright show-report

Или если указано нестандартное имя папки:

npx playwright show-report my-report

Отчёт HTML поддерживает следующие параметры конфигурации и переменные окружения:

Имя переменной окруженияОпция конфигурации отчётчикаОписаниеПо умолчанию
PLAYWRIGHT_HTML_TITLEtitleЗаголовок, отображаемый в сгенерированном отчёте.По умолчанию заголовок не отображается
PLAYWRIGHT_HTML_OUTPUT_DIRoutputFolderДиректория, в которую сохранять отчёт.playwright-report
PLAYWRIGHT_HTML_OPENopenКогда открывать HTML-отчёт в браузере: 'always', 'never' или 'on-failure''on-failure'
PLAYWRIGHT_HTML_HOSThostКогда отчёт открывается в браузере, он будет раздаваться, будучи привязанным к этому hostname.localhost
PLAYWRIGHT_HTML_PORTportКогда отчёт открывается в браузере, он будет раздаваться на этом порту.9323 или любой доступный порт, если 9323 недоступен.
PLAYWRIGHT_HTML_ATTACHMENTS_BASE_URLattachmentsBaseURLОтдельное место, куда загружаются вложения из подкаталога data. Нужна только если вы загружаете отчёт и data отдельно в разные места.data/
PLAYWRIGHT_HTML_NO_COPY_PROMPTnoCopyPromptЕсли true, отключает отображение подсказки Copy для ошибок. Поддерживает true, 1, false и 0.false
PLAYWRIGHT_HTML_NO_SNIPPETSnoSnippetsЕсли true, отключает отображение фрагментов кода в логе действий. Если есть ошибка верхнего уровня, раздел отчёта с фрагментом кода всё равно будет отображаться. Поддерживает true, 1, false и 0.false

Отчётчик Blob​

Отчёты Blob содержат все детали о выполнении теста и могут быть использованы позже для создания любого другого отчёта. Их основная функция — облегчить объединение отчётов из разделённых тестов.

npx playwright test --reporter=blob

По умолчанию отчёт записывается в директорию blob-report в директории с package.json или в текущей рабочей директории (если package.json не найден).

Имя файла отчёта выглядит как report-<hash>.zip или report-<hash>-<shard_number>.zip, если используется шардинг. Хэш — необязательное значение, вычисляемое на основе --grep, --grepInverted, --project, testConfig.tag и файловых фильтров, переданных как аргументы командной строки. Хэш гарантирует, что запуск Playwright с разными опциями командной строки будет создавать разные (но стабильные между запусками) имена отчётов. Имя выходного файла можно переопределить в файле конфигурации или передать через переменную окружения 'PLAYWRIGHT_BLOB_OUTPUT_FILE'.

При использовании blob-отчёта для объединения нескольких шардов не нужно передавать никаких опций.

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
reporter: 'blob',
});

Blob-отчёт поддерживает следующие опции конфигурации и переменные окружения:

Имя переменной окруженияОпция конфигурации отчётчикаОписаниеПо умолчанию
PLAYWRIGHT_BLOB_OUTPUT_DIRoutputDirКаталог для сохранения вывода. Существующее содержимое удаляется перед записью нового отчёта.blob-report
PLAYWRIGHT_BLOB_OUTPUT_NAMEfileNameИмя файла отчёта.report-<project>-<hash>-<shard_number>.zip
PLAYWRIGHT_BLOB_OUTPUT_FILEoutputFileПолный путь к выходному файлу. Если определено, outputDir и fileName будут проигнорированы.undefined

Отчётчик JSON​

Отчётчик JSON создаёт объект со всей информацией о выполнении теста.

Скорее всего, вы захотите записать JSON в файл. При запуске с --reporter=json используйте переменную окружения PLAYWRIGHT_JSON_OUTPUT_NAME:

PLAYWRIGHT_JSON_OUTPUT_NAME=results.json npx playwright test --reporter=json

В файле конфигурации передайте параметры напрямую:

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
reporter: [['json', { outputFile: 'results.json' }]],
});

Отчёт JSON поддерживает следующие параметры конфигурации и переменные окружения:

Имя переменной окруженияОпция конфигурации отчётчикаОписаниеПо умолчанию
PLAYWRIGHT_JSON_OUTPUT_DIRКаталог для сохранения выходного файла. Игнорируется, если указан выходной файл.cwd или каталог конфигурации.
PLAYWRIGHT_JSON_OUTPUT_NAMEoutputFileБазовое имя файла для вывода, относительно каталога вывода.Отчёт JSON выводится в stdout.
PLAYWRIGHT_JSON_OUTPUT_FILEoutputFileПолный путь к выходному файлу. Если определено, PLAYWRIGHT_JSON_OUTPUT_DIR и PLAYWRIGHT_JSON_OUTPUT_NAME будут проигнорированы.Отчёт JSON выводится в stdout.

Отчётчик JUnit​

Отчётчик JUnit создаёт отчёт в формате xml в стиле JUnit.

Скорее всего, вы захотите записать отчёт в xml-файл. При запуске с --reporter=junit используйте переменную окружения PLAYWRIGHT_JUNIT_OUTPUT_NAME:

PLAYWRIGHT_JUNIT_OUTPUT_NAME=results.xml npx playwright test --reporter=junit

В файле конфигурации передайте параметры напрямую:

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
reporter: [['junit', { outputFile: 'results.xml' }]],
});

Отчёт JUnit поддерживает следующие параметры конфигурации и переменные окружения:

Имя переменной окруженияОпция конфигурации отчётчикаОписаниеПо умолчанию
PLAYWRIGHT_JUNIT_OUTPUT_DIRКаталог для сохранения выходного файла. Игнорируется, если выходной файл не указан.cwd или каталог конфигурации.
PLAYWRIGHT_JUNIT_OUTPUT_NAMEoutputFileБазовое имя файла для вывода, относительно каталога вывода.Отчёт JUnit выводится в stdout.
PLAYWRIGHT_JUNIT_OUTPUT_FILEoutputFileПолный путь к выходному файлу. Если определено, PLAYWRIGHT_JUNIT_OUTPUT_DIR и PLAYWRIGHT_JUNIT_OUTPUT_NAME будут проигнорированы.Отчёт JUnit выводится в stdout.
PLAYWRIGHT_JUNIT_STRIP_ANSIstripANSIControlSequencesУдалять ли ANSI управляющие последовательности из текста перед записью в отчёт.По умолчанию текст выводится как есть.
PLAYWRIGHT_JUNIT_INCLUDE_PROJECT_IN_TEST_NAMEincludeProjectInTestNameВключать ли имя проекта Playwright в каждое тестовое задание в качестве префикса имени.По умолчанию не включается.
PLAYWRIGHT_JUNIT_SUITE_IDЗначение атрибута id в корневой записи <testsuites/> отчёта.Пустая строка.
PLAYWRIGHT_JUNIT_SUITE_NAMEЗначение атрибута name в корневой записи <testsuites/> отчёта.Пустая строка.

Аннотации GitHub Actions​

Вы можете использовать встроенный отчётчик github, чтобы получить автоматические аннотации сбоев при запуске в GitHub Actions.

Обратите внимание, что все другие отчётчики также работают в GitHub Actions, но не предоставляют аннотаций. Также не рекомендуется использовать этот тип аннотаций, если вы запускаете тесты с помощью стратегии матрицы, так как сбои в трассировке стека будут умножаться и затруднять просмотр файлов в GitHub.

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
// 'github' для GitHub Actions CI для генерации аннотаций, плюс лаконичный 'dot'
// по умолчанию 'list' при локальном запуске
reporter: process.env.CI ? 'github' : 'list',
});

Пользовательские отчётчики​

Вы можете создать пользовательский отчётчик, реализовав класс с некоторыми методами отчётчика. Узнайте больше о Reporter API.

my-awesome-reporter.ts
import type {
FullConfig, FullResult, Reporter, Suite, TestCase, TestResult
} from '@playwright/test/reporter';

class MyReporter implements Reporter {
onBegin(config: FullConfig, suite: Suite) {
console.log(`Starting the run with ${suite.allTests().length} tests`);
}

onTestBegin(test: TestCase, result: TestResult) {
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;

Теперь используйте этот отчётчик с testConfig.reporter.

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
reporter: './my-awesome-reporter.ts',
});

Или просто передайте путь к файлу отчётчика в качестве опции командной строки --reporter:

npx playwright test --reporter="./myreporter/my-awesome-reporter.ts"

Вот краткий список реализаций отчётчиков с открытым исходным кодом, которые вы можете изучить при написании собственного отчётчика: