Встроенный HTML-репортёр Playwright прикрепляет скриншоты и трейсы к каждому падению без какой-либо конфигурации, но генерирует новый самодостаточный отчёт на каждый прогон без истории. Allure добавляет графики трендов между прогонами, разбивку по шагам на уровне теста и фильтрацию по серьёзности, но требует отдельного шага генерации после завершения тестов. Эта статья разбирает настройку обоих репортёров, аннотации которые делают Allure оправданным с точки зрения дополнительных усилий, интеграцию с GitHub Actions для каждого варианта и критерии выбора между ними.

Встроенный HTML-репортёр

Playwright поставляется с HTML-репортёром который не требует никакой настройки. Чтобы включить:

// playwright.config.ts
reporter: [['html', { open: 'never' }]],

После прогона открой playwright-report/index.html. Там будет:

  • Сводка пройденных, упавших, пропущенных и флакующих тестов
  • Полная иерархия тестов (файл → describe → тест)
  • Продолжительность каждого теста
  • Сообщения об ошибках со стектрейсами
  • Скриншоты и трейсы прикреплённые прямо в отчёт для упавших тестов
  • Фильтрация по статусу (клик «Failed» показывает только падения)

Опция open: 'never' останавливает репортёр от автоматического открытия браузера после каждого прогона. Локально это удобно убрать, в CI нужно обязательно.

Для CI загружай папку отчёта как артефакт:

- uses: actions/upload-artifact@v4
  if: always()
  with:
    name: playwright-report
    path: playwright-report/
    retention-days: 30

if: always() гарантирует загрузку артефакта даже когда тесты падают, то есть именно тогда когда он нужен.

Запуск нескольких репортёров

Можно запускать несколько репортёров одновременно:

reporter: [
  ['html', { open: 'never' }],
  ['list'],
  ['junit', { outputFile: 'results.xml' }],
],

List выводит результаты тестов в терминал в реальном времени, удобно для наблюдения за локальным прогоном. JUnit создаёт XML-файл совместимый с Jenkins и другими CI-системами умеющими разбирать формат JUnit. HTML генерирует полный визуальный отчёт.

В CI распространённая комбинация: list + HTML + JUnit. List для видимости в логах, HTML для людей, JUnit для CI-инструментов.

Allure-репортёр

Встроенный HTML-репортёр справляется с задачей. Allure предлагает больше: графики трендов между прогонами, фильтрацию по серьёзности, историю тестов и более удобный интерфейс. Требует дополнительной настройки.

Установка

npm install -D allure-playwright allure-commandline

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

reporter: [
  ['allure-playwright'],
  ['list'],
],

Генерация и открытие отчёта

npx allure generate allure-results --clean -o allure-report
npx allure open allure-report

Первая команда генерирует HTML из сырых результатов. Вторая открывает в браузере. В CI генерируй отчёт отдельным шагом после завершения тестов.

Аннотации Allure

Allure становится по-настоящему полезным когда аннотируешь тесты:

import { test, expect } from '@playwright/test';
import { allure } from 'allure-playwright';

test('user can place an order', async ({ page }) => {
  allure.label('severity', 'critical');
  allure.story('Order placement');
  allure.description('Verifies end-to-end order flow from cart to confirmation.');

  // шаги теста...
  await allure.step('Navigate to product page', async () => {
    await page.goto('/products/laptop');
  });

  await allure.step('Add to cart', async () => {
    await page.getByRole('button', { name: 'Add to cart' }).click();
  });

  await allure.step('Complete checkout', async () => {
    await page.getByRole('link', { name: 'Checkout' }).click();
    // ...
  });
});

Шаги отображаются в отчёте как сворачиваемые секции: видно точный шаг который упал, а не только название теста.

Allure в GitHub Actions

- name: Run tests
  run: npx playwright test

- name: Generate Allure report
  if: always()
  run: npx allure generate allure-results --clean -o allure-report

- name: Upload Allure report
  if: always()
  uses: actions/upload-artifact@v4
  with:
    name: allure-report
    path: allure-report/
    retention-days: 30

Для постоянного хостинга Allure с отслеживанием истории разверни на GitHub Pages или Allure TestOps (их платный сервис). Бесплатный вариант: самостоятельный хостинг отчёта на GitHub Pages через отдельный воркфлоу.

Как выбрать между HTML и Allure

| Возможность | Playwright HTML | Allure |

|-------------|-----------------|--------|

| Настройка | Без конфигурации | npm install + команда генерации |

| Trace viewer | Встроен | Ручное прикрепление |

| История / тренды | Нет | Да |

| Аннотации (серьёзность, story, шаги) | Нет | Да |

| Размер артефакта в CI | Маленький | Больше |

| Доступ команды | Скачать артефакт | Можно хостить постоянно |

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

Используй Allure когда:

  • Есть стейкхолдеры которым нужно читать отчёты но у них нет доступа к GitHub
  • Хочешь отслеживать тренды стабильности тестов со временем
  • Сьют достаточно большой чтобы история по каждому тесту имела значение
  • Нужна классификация по серьёзности для приоритизации

Аннотации тестов без Allure

Если нужна лёгкая категоризация без Allure, Playwright поддерживает встроенные аннотации:

test('checkout fails gracefully on network error', {
  tag: '@regression',
  annotation: { type: 'issue', description: 'https://github.com/org/repo/issues/123' },
}, async ({ page }) => {
  // тело теста
});

Теги отображаются в HTML-репортёре и позволяют фильтровать запускаемые тесты:

npx playwright test --grep @regression

Для большинства команд которым не нужен полноценный Allure этого достаточно.

→ See also: Allure отчёты для Playwright: настройка расширенной отчётности | Отчёты о тестах в CI: форматы, инструменты и интеграция | Playwright Trace Viewer: отлаживайте упавшие тесты как профессионал