Трассировка выполнения — это один из ключевых инструментов в тестировании с помощью Playwright. Она позволяет фиксировать последовательность действий теста, видеть состояние элементов на странице, а также анализировать причины сбоев и ошибок. Playwright предоставляет встроенные механизмы для генерации и сохранения трассировок, которые можно изучать в интерактивном формате.
Трассировка включается на уровне браузерного
контекста. Для этого используется метод
context.tracing.start(). Основные параметры:
name — название сессии трассировки.screenshots — логическое значение, указывающее, нужно
ли сохранять скриншоты.snapshots — сохранять ли DOM-снимки страницы на каждом
шаге.sources — включение исходных файлов, чтобы видеть
скрипты и ресурсы.Пример:
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const context = await browser.newContext();
await context.tracing.start({ screenshots: true, snapshots: true, sources: true });
const page = await context.newPage();
await page.goto('https://example.com');
await page.click('text=More information');
await context.tracing.stop({ path: 'trace.zip' });
await browser.close();
})();
В этом примере трассировка фиксирует каждый шаг выполнения теста,
включая скриншоты и DOM-снимки, и сохраняет результаты в архив
trace.zip.
Файл трассировки в формате .zip открывается через
Playwright CLI или в браузере с использованием встроенного просмотрщика.
Основные возможности анализа:
click,
fill, navigate).Для открытия трассировки используется команда:
npx playwright show-trace trace.zip
Трассировка может значительно увеличивать объем данных и замедлять выполнение тестов. Рекомендуется включать её выборочно:
snapshots: false и
screenshots: false, если требуется только лог
действий.Трассировка особенно полезна при интеграции с системами непрерывной интеграции:
.zip можно сохранять как артефакт
сборки.Playwright позволяет динамически включать и останавливать трассировку в середине сценария. Например:
await context.tracing.start({ screenshots: true });
await page.goto('https://example.com');
await context.tracing.stop({ path: 'initial_trace.zip' });
await context.tracing.start({ screenshots: true });
await page.click('text=Next step');
await context.tracing.stop({ path: 'step2_trace.zip' });
Такой подход позволяет создавать несколько независимых трассировок для разных этапов сценария, облегчая анализ и экономя место на диске.
path при остановке трассировки, чтобы
результаты сохранялись в читаемом формате.screenshots: true для визуальной
диагностики UI-проблем.Трассировка выполнения в Playwright является мощным инструментом для глубокого анализа тестов и быстрого выявления ошибок как в локальной среде, так и в автоматизированных пайплайнах. Она позволяет не только отлаживать тесты, но и документировать поведение приложения на различных этапах тестирования.