Используемые инструменты отладки

В WebdriverIO отладка тестов является неотъемлемой частью процесса автоматизации. Для эффективного выявления и устранения ошибок применяется комбинация встроенных возможностей WebdriverIO, внешних инструментов и стандартных подходов JavaScript.

Логирование действий теста

Одним из базовых способов отслеживания выполнения тестов является логирование. WebdriverIO поддерживает встроенные логи через конфигурационный файл wdio.conf.js. Ключевые параметры:

exports.config = {
    logLevel: 'info', // уровни: trace | debug | info | warn | error | silent
    reporters: ['spec', 'dot'],
}
  • trace — подробная информация о каждом шаге;
  • debug — расширенные сведения о действиях драйвера и браузера;
  • info — основные сообщения выполнения;
  • warn и error — предупреждения и ошибки соответственно.

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

Консольные выводы внутри тестов

Для быстрого контроля значений переменных и состояния элементов применяются стандартные console.log, console.warn и console.error. Например:

it('Проверка кнопки отправки формы', async () => {
    const submitBtn = await $('#submit');
    console.log('Кнопка отображается:', await submitBtn.isDisplayed());
});

Такая практика позволяет видеть промежуточные значения и состояние DOM без остановки выполнения теста.

Использование debug и browser.pause()

WebdriverIO предоставляет возможность приостановки выполнения теста для детального анализа с помощью browser.pause():

await browser.url('https://example.com');
await browser.pause(5000); // остановка на 5 секунд

Для более гибкой отладки используется метод debug():

await browser.debug();

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

Снимки экрана и видео

Для анализа визуальных ошибок удобно использовать скриншоты и запись видео выполнения тестов:

await browser.saveScreenshot('./screenshots/test.png');

Скриншоты позволяют фиксировать текущее состояние интерфейса, а при интеграции с сервисами вроде Allure Reporter или Video Recorder становится возможна запись видео всех действий теста для последующего анализа.

Инструменты браузера

WebdriverIO тесно интегрируется с DevTools браузеров. Использование Chrome DevTools Protocol (CDP) расширяет возможности отладки:

  • доступ к сетевым запросам (Network),
  • перехват консольных сообщений браузера,
  • анализ производительности страниц.

Пример включения CDP:

await browser.cdp('Network', 'enable');
browser.on('Network.requestWillBeSent', (params) => {
    console.log('Отправлен запрос:', params.request.url);
});

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

Интеграция с отладчиком Node.js

Тесты WebdriverIO можно запускать через Node.js с поддержкой отладки:

node --inspect-brk ./node_modules/.bin/wdio wdio.conf.js

После этого подключение к процессу через Chrome DevTools или VS Code позволяет:

  • ставить точки останова (breakpoints),
  • шагать по коду пошагово (step over, step into),
  • просматривать стек вызовов и значения переменных в реальном времени.

Использование специальных утилит

  • Allure Reporter — визуализация шагов тестов, логов и скриншотов;
  • wdio-screenshot — автоматическое снятие скриншотов при падении теста;
  • wdio-log-uploader — централизованное хранение логов;
  • browser.debug() вместе с Node.js REPL позволяет интерактивно изменять значения и тестировать альтернативные сценарии.

Рекомендации по организации отладки

  1. Логи следует комбинировать с точками останова для минимизации лишней информации.
  2. Скриншоты делать только при падении тестов, чтобы снизить нагрузку на диск.
  3. Асинхронные действия проверять через CDP или перехват сетевых запросов для точной диагностики.
  4. Интерактивный режим debug() использовать для сложных сценариев, где простое логирование недостаточно.
  5. Конфигурацию logLevel менять в зависимости от среды: debug для локальной разработки, info или warn для CI.

Использование этих инструментов позволяет создавать стабильные и предсказуемые тесты, быстро выявлять ошибки и контролировать процесс автоматизации на всех этапах выполнения.