Режим отладки

Режим отладки является важным инструментом для эффективной разработки автоматизированных тестов с использованием 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

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('Ожидаемый результат');
});

В процессе работы с инспектором можно наблюдать за каждым шагом выполнения теста и быстро реагировать на возникающие проблемы.

Дебаггинг с использованием браузеров в режиме headless

Обычно 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 делают тестирование еще более наглядным и информативным.