Skip to main content

Отчётчики

Введение

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, когда терминал находится в режиме 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, когда терминал находится в режиме 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, когда терминал находится в режиме 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_OUTPUT_DIRoutputFolderКаталог для сохранения отчёта.playwright-report
PLAYWRIGHT_HTML_OPENopenКогда открывать HTML-отчёт в браузере, одно из 'always', 'never' или 'on-failure''on-failure'
PLAYWRIGHT_HTML_HOSThostКогда отчёт открывается в браузере, он будет предоставлен с привязкой к этому имени хоста.localhost
PLAYWRIGHT_HTML_PORTportКогда отчёт открывается в браузере, он будет предоставлен на этом порту.9323 или любой доступный порт, если 9323 недоступен.
PLAYWRIGHT_HTML_ATTACHMENTS_BASE_URLattachmentsBaseURLОтдельное расположение, куда загружаются вложения из подкаталога data. Необходимо только в случае, если вы загружаете отчёт и data отдельно в разные места.data/

Отчётчик Blob

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

npx playwright test --reporter=blob

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

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

export default defineConfig({
reporter: [['blob', { outputFile: `./blob-report/report-${os.platform()}.zip` }]],
});

Отчёт 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"

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