Мониторинг прохождения тестов

Playwright предоставляет развитые возможности для отслеживания и мониторинга тестов, что позволяет автоматически выявлять сбои, собирать подробные логи и метрики, а также интегрироваться с внешними системами отчетности.

Запуск тестов с логированием

Для мониторинга прохождения тестов важно включить детальное логирование:

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

test('проверка загрузки страницы', async ({ page }) => {
    console.log('Начало теста: загрузка главной страницы');
    await page.goto('https://example.com');
    console.log('Страница загружена, проверяем заголовок');
    const title = await page.title();
    expect(title).toBe('Example Domain');
});

Ключевые моменты:

  • console.log помогает фиксировать шаги теста для последующего анализа.
  • Логи могут быть направлены в файл или систему централизованного мониторинга с помощью Node.js модулей (fs, winston, pino).

Использование test.info() для сбора данных

Playwright предоставляет объект test.info(), который хранит информацию о текущем тесте:

test('тест с метаданными', async ({ page }, testInfo) => {
    await page.goto('https://example.com');
    if (page.url() !== 'https://example.com/') {
        testInfo.attach('screenshot', {
            body: await page.screenshot(),
            contentType: 'image/png'
        });
    }
});
  • testInfo.attach() позволяет прикреплять скриншоты, видео или текстовые файлы к отчету о тесте.
  • Это упрощает диагностику проблем при падении тестов.

Генерация отчетов

Playwright поддерживает встроенные репортеры:

// playwright.config.js
import { defineConfig } from '@playwright/test';

export default defineConfig({
    reporter: [
        ['list'],           // вывод в консоль
        ['html', { open: 'never' }], // HTML отчет
        ['json', { outputFile: 'test-results.json' }] // JSON отчет для CI
    ]
});

Рекомендации:

  • Использовать HTML-репортер для визуального анализа и истории прохождения тестов.
  • JSON-формат удобен для интеграции с CI/CD системами (Jenkins, GitHub Actions, GitLab).

Отслеживание времени выполнения

Playwright автоматически фиксирует длительность каждого теста, что позволяет выявлять медленные сценарии:

test('замер времени выполнения', async ({ page }, testInfo) => {
    const start = Date.now();
    await page.goto('https://example.com');
    const duration = Date.now() - start;
    console.log(`Тест выполнялся ${duration} мс`);
});
  • Анализ длительности помогает оптимизировать тесты и обнаруживать узкие места на странице.

Работа с видео и скриншотами

Для мониторинга прохождения тестов важно использовать визуальные артефакты:

export default defineConfig({
    use: {
        screenshot: 'only-on-failure',
        video: 'retain-on-failure'
    }
});
  • screenshot: 'only-on-failure' делает скриншоты только при падении теста.
  • video: 'retain-on-failure' сохраняет видео выполнения теста для последующего анализа.

Интеграция с внешними системами

Playwright легко интегрируется с системами мониторинга и алертинга:

  • Slack / Teams: отправка уведомлений при падении тестов.
  • Grafana / Prometheus: сбор метрик по времени выполнения и количеству падений.
  • Jira / TestRail: автоматическое создание баг-репортов при неуспешном тесте.

Пример отправки уведомления в Slack через веб-хук:

import fetch from 'node-fetch';

async function notifySlack(message) {
    await fetch('https://hooks.slack.com/services/XXX/YYY/ZZZ', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ text: message })
    });
}

test.afterEach(async ({}, testInfo) => {
    if (testInfo.status !== testInfo.expectedStatus) {
        await notifySlack(`Тест "${testInfo.title}" завершился с ошибкой`);
    }
});

Метрики и аналитика тестов

Для полноценного мониторинга полезно собирать метрики:

  • Количество успешных/провалившихся тестов
  • Среднее время выполнения
  • История изменений по веткам и коммитам
  • Повторяющиеся ошибки и падающие тесты

Эти данные помогают выявлять нестабильные тесты и оптимизировать инфраструктуру.

Настройка CI/CD для постоянного мониторинга

Playwright тесно интегрируется с CI/CD системами. Основные подходы:

  • Запуск тестов на каждом коммите или pull request.
  • Сохранение артефактов (скриншоты, видео, отчеты) для анализа.
  • Генерация уведомлений о неудачных тестах.
  • Сбор статистики по веткам и историческим данным.
# пример GitHub Actions workflow
name: Playwright Tests
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '20'
      - run: npm ci
      - run: npx playwright test --reporter=html
      - uses: actions/upload-artifact@v3
        with:
          name: playwright-report
          path: playwright-report

Использование CI/CD обеспечивает постоянное наблюдение за состоянием проекта и автоматический сбор информации о падениях тестов.