Трассировка выполнения тестов

Trасировка выполнения тестов в Playwright — это важная часть процесса тестирования, которая позволяет отслеживать, что происходит на каждом этапе выполнения автоматизированных тестов. Инструменты трассировки в Playwright могут быть использованы для того, чтобы выявить ошибки и проблемы, а также для улучшения понимания того, как именно работает тест и как браузер реагирует на действия.

Включение трассировки

Трассировка в Playwright включает в себя запись и сохранение подробной информации о выполнении теста, включая действия пользователя, запросы и ответы от сервера, а также состояние браузера в различные моменты времени. Для включения трассировки можно использовать метод trace объекта browserContext. Включение трассировки выглядит следующим образом:

const { test, expect, browser } = require('@playwright/test');

test('My Test', async ({ page }) => {
  const context = await browser.newContext();
  await context.tracing.start({ screenshots: true, snapshots: true });
  
  await page.goto('https://example.com');
  await page.click('button#submit');
  
  await context.tracing.stop({ path: 'trace.zip' });
});

Здесь используется метод start() для начала записи трассировки, где можно указать дополнительные опции, такие как захват скриншотов и снимков состояния страниц. Когда тест завершается, вызывается метод stop(), который завершает запись и сохраняет файл трассировки в указанный путь.

Формат трассировки

Результатом работы трассировки является файл в формате .zip, который включает в себя несколько компонентов:

  • Трассировка выполнения: это основная информация о том, какие действия были выполнены на странице, а также состояние DOM.
  • Скриншоты: скриншоты, сделанные в процессе выполнения теста, могут быть полезны для того, чтобы наглядно продемонстрировать, что происходило в конкретный момент времени.
  • Снимки состояния: полные снимки состояния страницы (DOM и другие метаданные) в различные моменты теста.

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

Использование трассировки для отладки

Трассировка выполнения тестов в Playwright играет ключевую роль в отладке. Часто бывает трудно понять, почему тест не прошел, и трассировка позволяет отслеживать выполнение теста в деталях. Основные моменты, которые можно анализировать при помощи трассировки:

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

  2. Сетевые запросы: В трассировке можно увидеть все сетевые запросы и ответы, которые были сделаны во время теста. Это особенно полезно для проверки API-запросов и их обработки на стороне клиента.

  3. Ошибки браузера: В трассировке можно увидеть сообщения об ошибках JavaScript, которые возникли на странице. Это поможет в поиске проблем с кодом или с загрузкой страниц.

  4. Скриншоты и снимки: Скриншоты и снимки состояния страницы, сделанные на различных этапах теста, позволяют точно увидеть, что происходило в момент выполнения теста. Это особенно полезно, когда тест зависит от внешних факторов, таких как изменения на сайте.

Интеграция с CI/CD

Важной особенностью трассировки в Playwright является возможность интеграции с системой непрерывной интеграции (CI) и непрерывного развертывания (CD). В этой связке трассировки позволяют легко отслеживать и анализировать тесты в условиях автоматического запуска.

Playwright поддерживает генерацию трассировок на CI-серверах, таких как Jenkins, GitLab CI или GitHub Actions. Например, трассировки можно настроить так, чтобы они автоматически сохранялись в артефакты сборки, что позволяет разработчикам и тестировщикам быстро получить доступ к этим данным в случае сбоя теста.

Пример настройки трассировки для CI-системы:

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Install dependencies
        run: npm install
      - name: Run tests with tracing
        run: npx playwright test --trace on --output trace-results
      - name: Upload trace artifacts
        uses: actions/upload-artifact@v2
        with:
          name: trace
          path: trace-results/*.zip

Здесь трассировка активируется через команду npx playwright test --trace on, и результат сохраняется в артефакты для дальнейшего анализа.

Просмотр трассировки

Для визуализации и анализа трассировок Playwright предоставляет инструмент playwright show-trace. Это веб-интерфейс, который позволяет открыть файл трассировки и исследовать его. В этом интерфейсе можно увидеть шаги теста, сетевые запросы, скриншоты, а также подробности о выполнении каждого действия.

Команда для запуска интерфейса:

npx playwright show-trace trace.zip

После этого откроется браузер, в котором будет доступна информация о трассировке. Это удобный способ проанализировать, что происходило во время теста.

Трассировка в многозадачности

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

Пример трассировки для многозадачности:

const { test, expect, browser } = require('@playwright/test');

test('Multi-page test with trace', async ({ page, browser }) => {
  const context = await browser.newContext();
  await context.tracing.start({ screenshots: true, snapshots: true });
  
  const page1 = await context.newPage();
  await page1.goto('https://example1.com');
  
  const page2 = await context.newPage();
  await page2.goto('https://example2.com');
  
  await page1.click('button#submit');
  await page2.click('button#next');
  
  await context.tracing.stop({ path: 'multi-trace.zip' });
});

Здесь в одном контексте выполняются два различных теста на разных страницах, и трассировка будет записывать их действия по отдельности, что дает полное представление о процессе тестирования.

Вывод

Использование трассировки выполнения тестов в Playwright является мощным инструментом для автоматизированного тестирования. Это помогает не только выявлять и анализировать ошибки, но и получать подробную информацию о процессе выполнения тестов. Интеграция трассировок с CI/CD системами и их визуализация значительно улучшает процесс отладки и повышения качества тестирования.