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, который включает в себя несколько компонентов:
Трассировка помогает в анализе не только успешных, но и неудачных тестов, показывая, что именно привело к сбою, какие запросы были отправлены, а также как браузер обрабатывал страницу.
Трассировка выполнения тестов в Playwright играет ключевую роль в отладке. Часто бывает трудно понять, почему тест не прошел, и трассировка позволяет отслеживать выполнение теста в деталях. Основные моменты, которые можно анализировать при помощи трассировки:
Отслеживание действий: Трассировка позволяет увидеть, какие именно действия были выполнены на странице, такие как нажатия кнопок, ввод текста, переключения вкладок. Это помогает понять, в какой момент произошел сбой.
Сетевые запросы: В трассировке можно увидеть все сетевые запросы и ответы, которые были сделаны во время теста. Это особенно полезно для проверки API-запросов и их обработки на стороне клиента.
Ошибки браузера: В трассировке можно увидеть сообщения об ошибках JavaScript, которые возникли на странице. Это поможет в поиске проблем с кодом или с загрузкой страниц.
Скриншоты и снимки: Скриншоты и снимки состояния страницы, сделанные на различных этапах теста, позволяют точно увидеть, что происходило в момент выполнения теста. Это особенно полезно, когда тест зависит от внешних факторов, таких как изменения на сайте.
Важной особенностью трассировки в 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 системами и их визуализация значительно улучшает процесс отладки и повышения качества тестирования.