WebdriverIO предоставляет гибкую систему логирования, позволяющую контролировать уровень детализации информации о выполнении тестов, действиях браузера и внутренних процессах. Логирование помогает быстро находить ошибки, отслеживать поведение тестов и анализировать взаимодействие с веб-страницей.
Уровень логирования задается через конфигурационный файл
wdio.conf.js. Параметр logLevel определяет,
какая информация будет выводиться в консоль или сохраняться в файлы:
exports.config = {
logLevel: 'info', // Уровни: 'trace', 'debug', 'info', 'warn', 'error', 'silent'
};
Доступные уровни логирования:
trace.WebdriverIO позволяет создавать собственные логгеры через встроенный
объект logger. Это удобно для ведения логов, специфичных
для определенных модулей или тестов.
const logger = require('@wdio/logger').default;
const log = logger('my-test-logger');
log.info('Тест стартовал');
log.warn('Этот шаг использует устаревший метод');
log.error('Произошла ошибка при клике на элемент');
Каждый лог включает название модуля, что облегчает фильтрацию сообщений при работе с большими проектами.
Высокие уровни логирования (trace, debug)
могут существенно замедлить выполнение тестов, так как каждая команда и
внутренние процессы будут выводиться в консоль. Для регрессионного
тестирования на CI/CD часто используют info или
warn для сокращения объема выводимых данных и повышения
скорости тестов.
WebdriverIO позволяет включать отдельное логирование для команд
браузера через beforeCommand и afterCommand
хуки:
beforeCommand: function (commandName, args) {
console.log(`Выполняется команда: ${commandName} с аргументами: ${args}`);
},
afterCommand: function (commandName, args, result, error) {
if (error) {
console.error(`Ошибка команды ${commandName}: ${error}`);
} else {
console.log(`Команда ${commandName} успешно выполнена`);
}
}
Такой подход дает полный контроль над мониторингом действий в браузере и позволяет выявлять проблемы на уровне отдельных команд.
Для анализа взаимодействия с сервером можно использовать плагин
@wdio/devtools-service, который позволяет перехватывать и
логировать сетевые запросы:
browser.on('Network.requestWillBeSent', (request) => {
console.log('Запрос:', request.request.url);
});
browser.on('Network.responseReceived', (response) => {
console.log('Ответ:', response.response.status, response.response.url);
});
Это помогает тестировать API внутри браузерного контекста и отслеживать поведение приложения при различных сценариях.
WebdriverIO легко интегрируется с внешними системами логирования,
такими как Winston или Pino. Это дает
возможность сохранять логи в файлы, базы данных или системы
мониторинга:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'combined.log' }),
new winston.transports.Console()
]
});
logger.info('Тестовая запись лога');
Комбинируя встроенное логирование WebdriverIO с внешними инструментами, можно строить мощные системы мониторинга и отладки тестов.
Для CI/CD важен баланс между информативностью и объемом логов. Обычно
используют logLevel: 'info' и фильтруют сообщения через
хуки или внешние системы. Детальные уровни применяют только при
локальной отладке или при анализе ошибок, чтобы не перегружать отчеты и
консоль.