Отчётчики
Введение
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({
// Concise 'dot' for CI, default 'list' when running locally
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 выводится в стандартный вывод. |
PLAYWRIGHT_JSON_OUTPUT_FILE |
outputFile |
Полный путь к выходному файлу. Если определён, PLAYWRIGHT_JSON_OUTPUT_DIR и PLAYWRIGHT_JSON_OUTPUT_NAME будут проигнорированы. |
Отчёт JSON выводится в стандартный вывод. |
Репортер 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 выводится в стандартный вывод. |
PLAYWRIGHT_JUNIT_OUTPUT_FILE |
outputFile |
Полный путь к выходному файлу. Если определён, PLAYWRIGHT_JUNIT_OUTPUT_DIR и PLAYWRIGHT_JUNIT_OUTPUT_NAME будут проигнорированы. |
Отчёт JUnit выводится в стандартный вывод. |
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' for GitHub Actions CI to generate annotations, plus a concise 'dot'
// default 'list' when running locally
reporter: process.env.CI ? 'github' : 'list',
}); Пользовательские репортеры
Вы можете создать пользовательский репортер, реализовав класс с некоторыми методами репортера. Подробнее об API Reporter.
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"
Вот короткий список реализаций репортеров с открытым исходным кодом, на которые можно посмотреть при написании собственного репортера:
© 2024 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/test-reporters