Эффективное тестирование веб-приложений невозможно без детального контроля за процессом выполнения тестов и анализа возникающих ошибок. Логи представляют собой ключевой инструмент для понимания поведения приложения и тестового кода. WebdriverIO предоставляет гибкие возможности для их сбора, структурирования и анализа.
Логи браузера Позволяют отслеживать действия,
происходящие на клиентской стороне, включая JavaScript ошибки,
предупреждения и сообщения console.log. Основные типы:
browser — стандартный вывод консоли браузера.driver — сообщения WebDriver, связанные с выполнением
команд.performance — данные о производительности страницы,
время загрузки ресурсов.Логи WebdriverIO Включают информацию о выполнении команд WebDriver и внутренних действиях тестового фреймворка. Примеры:
click,
setValue, navigateTo)before, after,
beforeStep, afterStep)Логи тестов Формируются с помощью
reporter и включают:
passed, failed,
skipped)WebdriverIO позволяет настраивать уровни логирования для разных
компонентов через объект logLevels в
wdio.conf.js:
exports.config = {
logLevel: 'info',
logLevels: {
webdriver: 'error',
'@wdio/sync': 'warn'
}
};
Уровни логов:
trace — детальный вывод всех команд и событийdebug — вывод команд WebDriver и внутреннего
состоянияinfo — основные события и ошибкиwarn — предупрежденияerror — критические ошибкиДля анализа производительности рекомендуется использовать уровень
trace в сочетании с performance логами
браузера.
Для получения логов браузера применяется метод
getLogs:
const logs = browser.getLogs('browser'); // можно указать 'driver' или 'performance'
logs.forEach(entry => {
console.log(`[${entry.level}] ${entry.timestamp}: ${entry.message}`);
});
Ключевые моменты:
entry.level — уровень сообщения (INFO,
WARNING, SEVERE)entry.timestamp — время события в миллисекундахentry.message — текст сообщенияИспользование фильтров по уровню позволяет игнорировать незначительные предупреждения и сосредоточиться на критических ошибках.
WebdriverIO поддерживает хуки, которые позволяют сохранять логи на каждом этапе теста. Основные хуки:
beforeStep / afterStep —
логирование действий пользователя или системы после каждой команды.afterTest — сохранение логов при
падении теста:afterTest: function(test, context, { error, result, duration, passed, retries }) {
if (!passed) {
const logs = browser.getLogs('browser');
console.log('Ошибка теста:', test.title);
logs.forEach(entry => console.log(entry.message));
}
}
Такой подход позволяет сохранять только релевантные сообщения, облегчая последующий анализ.
Для крупных проектов полезно интегрировать логи с внешними системами, например:
Пример интеграции с Allure:
const { addAttachment } = require('@wdio/allure-reporter').default;
afterTest: function(test, context, { error }) {
if (error) {
const logs = browser.getLogs('browser').map(l => `${l.level}: ${l.message}`).join('\n');
addAttachment('Browser Logs', logs, 'text/plain');
}
}
WebdriverIO не ограничивается стандартным выводом. Логи можно парсить и фильтровать программно:
const errors = browser.getLogs('browser')
.filter(log => log.level === 'SEVERE')
.map(log => log.message);
errors.forEach(err => console.error('Critical error:', err));
Фильтрация позволяет:
logLevel: 'info' для регулярного запуска и
trace для отладки сложных сценариев.Логи являются основным инструментом диагностики в WebdriverIO, обеспечивая прозрачность работы тестового фреймворка и веб-приложения. Корректная настройка и систематический анализ логов позволяют повысить надежность автоматизированного тестирования и ускорить устранение ошибок.