Spec-Zone.ru › Playwright

Отчётчики

Введение​

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"

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

  • Репортер Allure
  • Репортер GitHub Actions
  • Репортер Email
  • ReportPortal
  • Monocart

© 2024 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/test-reporters

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API