Отчётчики
Введение
Playwright Test поставляется с несколькими встроенными отчётчиками для различных нужд и возможностью предоставления пользовательских отчётчиков. Самый простой способ попробовать встроенные отчётчики — это передать опцию командной строки --reporter
.
npx playwright test --reporter=line
Для большего контроля вы можете указать отчётчики программно в файле конфигурации.
import { defineConfig } from '@playwright/test';
export default defineConfig({
reporter: 'line',
});
Несколько отчётчиков
Вы можете использовать несколько отчётчиков одновременно. Например, вы можете использовать 'list'
для красивого вывода в терминале и 'json'
, чтобы получить подробный json-файл с результатами тестов.
import { defineConfig } from '@playwright/test';
export default defineConfig({
reporter: [
['list'],
['json', { outputFile: 'test-results.json' }]
],
});
Отчётчики на CI
Вы можете использовать разные отчётчики локально и на CI. Например, использование лаконичного отчётчика 'dot'
позволяет избежать избыточного вывода. Это значение по умолчанию на CI.
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
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:
Вы можете включить отображение шагов, передав следующую опцию конфигурации:
import { defineConfig } from '@playwright/test';
export default defineConfig({
reporter: [['list', { printSteps: true }]],
});
Отчёт List поддерживает следующие параметры конфигурации и переменные окружения:
Имя переменной окружения | Опция конфигурации отчётчика | Описание | По умолчанию |
---|---|---|---|
PLAYWRIGHT_LIST_PRINT_STEPS | printSteps | Печатать ли каждый шаг на отдельной строке. | false |
PLAYWRIGHT_FORCE_TTY | Создавать ли вывод, подходящий для живого терминала. Если указано число, оно также будет использоваться в качестве ширины терминала. | true , когда терминал находится в режиме TTY, false в противном случае. | |
FORCE_COLOR | Создавать ли цветной вывод. | true , когда терминал находится в режиме TTY, false в противном случае. |
Отчётчик Line
Отчётчик Line более лаконичен, чем отчётчик List. Он использует одну строку для отчёта о последнем завершённом тесте и выводит сбои по мере их возникновения. Отчётчик Line полезен для больших наборов тестов, где он показывает прогресс, но не засоряет вывод, перечисляя все тесты.
npx playwright test --reporter=line
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
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-отчёта.
import { defineConfig } from '@playwright/test';
export default defineConfig({
reporter: [['html', { open: 'never' }]],
});
По умолчанию отчёт записывается в папку playwright-report
в текущем рабочем каталоге. Можно изменить это расположение, используя переменную окружения PLAYWRIGHT_HTML_OUTPUT_DIR
или конфигурацию отчётчика.
В файле конфигурации передайте параметры напрямую:
import { defineConfig } from '@playwright/test';
export default defineConfig({
reporter: [['html', { outputFolder: 'my-report' }]],
});
Если вы загружаете вложения из папки данных в другое место, вы можете использовать опцию attachmentsBaseURL
, чтобы указать HTML-отчёту, где их искать.
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_DIR | outputFolder | Каталог для сохранения отчёта. | playwright-report |
PLAYWRIGHT_HTML_OPEN | open | Когда открывать HTML-отчёт в браузере, одно из 'always' , 'never' или 'on-failure' | 'on-failure' |
PLAYWRIGHT_HTML_HOST | host | Когда отчёт открывается в браузере, он будет предоставлен с привязкой к этому имени хоста. | localhost |
PLAYWRIGHT_HTML_PORT | port | Когда отчёт открывается в браузере, он будет предоставлен на этом порту. | 9323 или любой доступный порт, если 9323 недоступен. |
PLAYWRIGHT_HTML_ATTACHMENTS_BASE_URL | attachmentsBaseURL | Отдельное расположение, куда загружаются вложения из подкаталога 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'
.
import { defineConfig } from '@playwright/test';
export default defineConfig({
reporter: [['blob', { outputFile: `./blob-report/report-${os.platform()}.zip` }]],
});
Отчёт Blob поддерживает следующие параметры конфигурации и переменные окружения:
Имя переменной окружения | Опция конфигурации отчётчика | Описание | По умолчанию |
---|---|---|---|
PLAYWRIGHT_BLOB_OUTPUT_DIR | outputDir | Каталог для сохранения вывода. Существующее содержимое удаляется перед записью нового отчёта. | blob-report |
PLAYWRIGHT_BLOB_OUTPUT_NAME | fileName | Имя файла отчёта. | report-<project>-<hash>-<shard_number>.zip |
PLAYWRIGHT_BLOB_OUTPUT_FILE | outputFile | Полный путь к выходному файлу. Если определено, outputDir и fileName будут проигнорированы. | undefined |
Отчётчик JSON
Отчётчик JSON создаёт объект со всей информацией о выполнении теста.
Скорее всего, вы захотите записать JSON в файл. При запуске с --reporter=json
используйте переменную окружения PLAYWRIGHT_JSON_OUTPUT_NAME
:
- Bash
- PowerShell
- Batch
PLAYWRIGHT_JSON_OUTPUT_NAME=results.json npx playwright test --reporter=json
$env:PLAYWRIGHT_JSON_OUTPUT_NAME="results.json"
npx playwright test --reporter=json
set PLAYWRIGHT_JSON_OUTPUT_NAME=results.json
npx playwright test --reporter=json
В файле конфигурации передайте параметры напрямую:
import { defineConfig } from '@playwright/test';
export default defineConfig({
reporter: [['json', { outputFile: 'results.json' }]],
});
Отчёт JSON поддерживает следующие параметры конфигурации и переменные окружения:
Имя переменной окружения | Опция конфигурации отчётчика | Описание | По умолчанию |
---|---|---|---|
PLAYWRIGHT_JSON_OUTPUT_DIR | Каталог для сохранения выходного файла. Игнорируется, если указан выходной файл. | cwd или каталог конфигурации. | |
PLAYWRIGHT_JSON_OUTPUT_NAME | outputFile | Базовое имя файла для вывода, относительно каталога вывода. | Отчёт JSON выводится в stdout. |
PLAYWRIGHT_JSON_OUTPUT_FILE | outputFile | Полный путь к выходному файлу. Если определено, PLAYWRIGHT_JSON_OUTPUT_DIR и PLAYWRIGHT_JSON_OUTPUT_NAME будут проигнорированы. | Отчёт JSON выводится в stdout. |
Отчётчик JUnit
Отчётчик JUnit создаёт отчёт в формате xml в стиле JUnit.
Скорее всего, вы захотите записать отчёт в xml-файл. При запуске с --reporter=junit
используйте переменную окружения PLAYWRIGHT_JUNIT_OUTPUT_NAME
:
- Bash
- PowerShell
- Batch
PLAYWRIGHT_JUNIT_OUTPUT_NAME=results.xml npx playwright test --reporter=junit
$env:PLAYWRIGHT_JUNIT_OUTPUT_NAME="results.xml"
npx playwright test --reporter=junit
set PLAYWRIGHT_JUNIT_OUTPUT_NAME=results.xml
npx playwright test --reporter=junit
В файле конфигурации передайте параметры напрямую:
import { defineConfig } from '@playwright/test';
export default defineConfig({
reporter: [['junit', { outputFile: 'results.xml' }]],
});
Отчёт JUnit поддерживает следующие параметры конфигурации и переменные окружения:
Имя переменной окружения | Опция конфигурации отчётчика | Описание | По умолчанию |
---|---|---|---|
PLAYWRIGHT_JUNIT_OUTPUT_DIR | Каталог для сохранения выходного файла. Игнорируется, если выходной файл не указан. | cwd или каталог конфигурации. | |
PLAYWRIGHT_JUNIT_OUTPUT_NAME | outputFile | Базовое имя файла для вывода, относительно каталога вывода. | Отчёт JUnit выводится в stdout. |
PLAYWRIGHT_JUNIT_OUTPUT_FILE | outputFile | Полный путь к выходному файлу. Если определено, PLAYWRIGHT_JUNIT_OUTPUT_DIR и PLAYWRIGHT_JUNIT_OUTPUT_NAME будут проигнорированы. | Отчёт JUnit выводится в stdout. |
PLAYWRIGHT_JUNIT_STRIP_ANSI | stripANSIControlSequences | Удалять ли ANSI управляющие последовательности из текста перед записью в отчёт. | По умолчанию текст выводится как есть. |
PLAYWRIGHT_JUNIT_INCLUDE_PROJECT_IN_TEST_NAME | includeProjectInTestName | Включать ли имя проекта Playwright в каждое тестовое задание в качестве префикса имени. | По умолчанию не включается. |
PLAYWRIGHT_JUNIT_SUITE_ID | Значение атрибута id в корневой записи <testsuites/> отчёта. | Пустая строка. | |
PLAYWRIGHT_JUNIT_SUITE_NAME | Значение атрибута name в корневой записи <testsuites/> отчёта. | Пустая строка. |
Аннотации GitHub Actions
Вы можете использовать встроенный отчётчик github
, чтобы получить автоматические аннотации сбоев при запуске в GitHub Actions.
Обратите внимание, что все другие отчётчики также работают в GitHub Actions, но не предоставляют аннотаций. Также не рекомендуется использовать этот тип аннотаций, если вы запускаете тесты с помощью стратегии матрицы, так как сбои в трассировке стека будут умножаться и затруднять просмотр файлов в GitHub.
import { defineConfig } from '@playwright/test';
export default defineConfig({
// 'github' для GitHub Actions CI для генерации аннотаций, плюс лаконичный 'dot'
// по умолчанию 'list' при локальном запуске
reporter: process.env.CI ? 'github' : 'list',
});
Пользовательские отчётчики
Вы можете создать пользовательский отчётчик, реализовав класс с некоторыми методами отчётчика. Узнайте больше о Reporter API.
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.
import { defineConfig } from '@playwright/test';
export default defineConfig({
reporter: './my-awesome-reporter.ts',
});
Или просто передайте путь к файлу отчётчика в качестве опции командной строки --reporter
:
npx playwright test --reporter="./myreporter/my-awesome-reporter.ts"
Вот краткий список реализаций отчётчиков с открытым исходным кодом, которые вы можете изучить при написании собственного отчётчика: