JSON reporter

JSON Reporter — это инструмент в Playwright, который позволяет записывать и экспортировать результаты тестирования в формате JSON. Это полезно для интеграции с другими системами, таких как CI/CD, а также для последующего анализа или отчётности.

Конфигурация JSON Reporter

JSON Reporter активируется через настройку в конфигурационном файле Playwright. Для включения этого репортера необходимо добавить его в раздел reporter в файле конфигурации playwright.config.ts или playwright.config.js.

Пример конфигурации:

import { defineConfig } from '@playwright/test';

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

В этом примере результаты тестов будут сохранены в файл test-results.json. Параметр outputFile указывает путь к файлу, в который будут записаны данные.

Структура данных JSON

JSON Reporter экспортирует данные в виде структуры, которая представляет результаты всех тестов, выполненных в процессе тестирования. Структура JSON содержит несколько ключевых элементов:

  • tests: Массив объектов, представляющих каждый отдельный тест.
  • startTime: Время начала теста.
  • endTime: Время окончания теста.
  • status: Статус теста (например, “passed”, “failed”).
  • duration: Время выполнения теста в миллисекундах.
  • testName: Имя теста.
  • steps: Массив шагов теста, если они были записаны.
  • errors: Ошибки, если тест не прошёл.

Пример структуры JSON файла:

{
  "startTime": "2023-01-01T00:00:00Z",
  "endTime": "2023-01-01T00:30:00Z",
  "tests": [
    {
      "testName": "Test 1",
      "status": "passed",
      "startTime": "2023-01-01T00:01:00Z",
      "endTime": "2023-01-01T00:05:00Z",
      "duration": 240000,
      "steps": [
        {
          "action": "navigate",
          "target": "https://example.com"
        },
        {
          "action": "click",
          "target": "#submit-button"
        }
      ],
      "errors": []
    },
    {
      "testName": "Test 2",
      "status": "failed",
      "startTime": "2023-01-01T00:06:00Z",
      "endTime": "2023-01-01T00:10:00Z",
      "duration": 240000,
      "steps": [
        {
          "action": "navigate",
          "target": "https://example.com"
        },
        {
          "action": "click",
          "target": "#non-existing-button"
        }
      ],
      "errors": [
        {
          "message": "Element not found: #non-existing-button",
          "stack": "Error: Element not found"
        }
      ]
    }
  ]
}

Использование JSON Reporter в CI/CD

JSON Reporter идеально подходит для интеграции с процессами CI/CD. Результаты тестов в формате JSON можно легко анализировать с помощью различных инструментов и сервисов для мониторинга и отчётности. Например, вы можете настроить систему сборки, чтобы на основе данных JSON автоматически отправлять уведомления о результатах тестов, или интегрировать их с другими тестовыми аналитическими инструментами.

Чтобы автоматически загружать результаты в систему мониторинга, например в Jenkins или GitLab CI, можно использовать соответствующие плагины, которые обрабатывают файлы JSON и отображают отчёты.

Пример для GitLab CI:

test:
  script:
    - npx playwright test
  artifacts:
    paths:
      - test-results.json
    when: always

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

Обработка ошибок и логирование

JSON Reporter также помогает отслеживать ошибки, которые произошли во время выполнения тестов. Если тест не прошёл, в JSON файле будет указан список ошибок с подробными сообщениями и стеками вызовов. Это позволяет разработчикам и тестировщикам эффективно анализировать причины сбоев.

Пример ошибки в JSON:

"errors": [
  {
    "message": "Element not found: #submit-button",
    "stack": "Error: Element not found at https://example.com"
  }
]

Преимущества использования JSON Reporter

  • Автоматизация: Возможность интеграции с другими инструментами и автоматизированными процессами.
  • Подробный отчёт: Получение подробной информации о каждом шаге теста, его продолжительности и ошибках.
  • Гибкость: Формат JSON легко обрабатывается и может быть использован для создания собственных отчётов или анализа.

JSON Reporter является мощным инструментом для профессиональных тестировщиков, обеспечивая высокую гибкость и возможность масштабируемой аналитики.