Режим отладки является важным инструментом для эффективной разработки автоматизированных тестов с использованием Playwright. Он позволяет разработчикам и тестировщикам более глубоко понять поведение тестируемого приложения, выявлять ошибки в тестах и ускорять процесс их устранения. Playwright предоставляет несколько способов отладки, включая интерактивные сессии, журналирование и мониторинг выполнения тестов.
debug()Одним из самых простых способов начать отладку в Playwright является
использование встроенной функции debug(). Эта функция
позволяет приостановить выполнение теста в точке вызова и открыть
интерактивную сессию. При этом можно исследовать состояние элементов
страницы, переменные и даже шаги выполнения теста.
Пример использования:
test('Проверка кнопки', async ({ page }) => {
await page.goto('https://example.com');
await page.click('button#submit');
// Приостанавливает выполнение теста
await page.debug();
const result = await page.textContent('div#result');
expect(result).toBe('Ожидаемый результат');
});
Когда тест выполняется и достигает вызова debug(),
Playwright откроет консоль с возможностью интерактивного взаимодействия
с текущим состоянием страницы. Это позволяет исследовать DOM, события
или даже вручную взаимодействовать с элементами через Playwright
API.
Playwright позволяет также активировать режим отладки с помощью
переменной окружения. Установка переменной DEBUG в значение
pw:api позволяет получать более подробные логи всех
операций, выполняемых в рамках теста. Эта информация полезна для
глубокого анализа тестов, особенно в случае нестабильных или трудно
воспроизводимых ошибок.
Пример:
DEBUG=pw:api node test.js
После активации этого режима Playwright будет выводить подробные логи по всем API вызовам, включая запросы, ответы и другие действия, выполняемые в ходе теста. Это поможет быстрее найти проблемы, такие как некорректные действия с элементами, ошибки в синхронизации и другие проблемы.
pause() для остановки тестаМетод pause() также является важным инструментом для
отладки. Он позволяет приостановить выполнение теста на определённой
строке и вручную продолжить его с помощью интерфейса браузера. Это
полезно, когда необходимо более подробно изучить, что происходит на
экране в процессе выполнения теста.
Пример использования:
test('Проверка перехода на другую страницу', async ({ page }) => {
await page.goto('https://example.com');
// Остановка теста перед кликом
await page.pause();
await page.click('button#next');
const newUrl = page.url();
expect(newUrl).toBe('https://example.com/next');
});
После вызова pause() Playwright откроет браузер в режиме
отладки, где можно вручную продолжить выполнение теста, нажав на
соответствующую кнопку в браузере. Это позволяет в реальном времени
наблюдать за состоянием страницы и теста.
Режим отладки также поддерживает возможность логирования ошибок. С
помощью console.log или аналогичных методов можно выводить
значения переменных и статусы выполнения теста. Такой подход полезен для
отслеживания прогресса выполнения тестов или диагностики проблем.
Пример:
test('Проверка видимости элемента', async ({ page }) => {
await page.goto('https://example.com');
const buttonVisible = await page.isVisible('button#submit');
console.log('Кнопка видна:', buttonVisible);
expect(buttonVisible).toBe(true);
});
Логирование помогает отслеживать, что происходит на разных этапах выполнения теста, и в случае неудачи быстро понять, где именно возникла проблема.
Playwright Inspector — это инструмент, предназначенный для визуальной
отладки тестов. В отличие от других методов отладки, таких как
debug() или pause(), инспектор предоставляет
графический интерфейс для анализа выполнения тестов. Этот инструмент
позволяет наблюдать за элементами страницы, их состоянием, а также
управлять браузером.
Для активации инспектора необходимо вызвать метод
playwright.inspect(). Он откроет интерфейс в браузере,
который позволяет в реальном времени взаимодействовать с тестом. Также в
инспекторе доступны различные функции, такие как захват скриншотов,
видео или анализ состояния DOM.
Пример:
test('Интерактивное тестирование с инспектором', async ({ page }) => {
await page.goto('https://example.com');
await page.click('button#submit');
// Включаем инспектор
await page.playwright.inspect();
const result = await page.textContent('div#result');
expect(result).toBe('Ожидаемый результат');
});
В процессе работы с инспектором можно наблюдать за каждым шагом выполнения теста и быстро реагировать на возникающие проблемы.
Обычно Playwright запускает браузеры в режиме headless, то есть без графического интерфейса. Однако для отладки удобнее использовать браузеры с графическим интерфейсом, чтобы наглядно видеть, что происходит на экране.
Для этого достаточно отключить режим headless при запуске тестов:
test('Проверка загрузки страницы в режиме headful', async ({ browser }) => {
const context = await browser.newContext({
headless: false // Отключаем режим headless
});
const page = await context.newPage();
await page.goto('https://example.com');
});
В этом случае браузер будет запускаться с интерфейсом, и тест будет выполняться в обычном режиме, позволяя наблюдать за состоянием страницы.
Видео и скриншоты — важные инструменты для отладки, которые позволяют записывать процесс выполнения тестов. Это особенно полезно для воспроизведения ошибок и анализа, что произошло в момент сбоя.
Playwright позволяет автоматически сохранять видео и скриншоты для каждого теста. Чтобы включить эту функцию, достаточно настроить соответствующие параметры в конфигурации теста.
Пример:
test('Сохранение скриншота при ошибке', async ({ page }) => {
page.on('pageerror', (error) => {
console.error('Ошибка на странице:', error);
page.screenshot({ path: 'error.png' });
});
await page.goto('https://example.com');
await page.click('button#submit');
});
Если тест завершится с ошибкой, Playwright сохранит скриншот текущего состояния страницы. Аналогично можно сохранять видео, чтобы воспроизвести тест и изучить, что именно произошло в момент сбоя.
Использование режимов отладки в Playwright помогает повысить
производительность и ускоряет процесс разработки тестов. Инструменты,
такие как debug(), pause(), инспектор и
логирование, позволяют разработчикам более детально следить за
выполнением тестов, быстро находить ошибки и оптимизировать
автоматизированные проверки. Включение видео и скриншотов, а также
использование браузеров в режиме headful делают тестирование еще более
наглядным и информативным.