Браузерные логи являются важным инструментом для анализа поведения веб-приложений и выявления ошибок на стороне клиента. WebdriverIO предоставляет мощные возможности для получения, фильтрации и анализа этих логов, что позволяет интегрировать проверку консольных сообщений и сетевых событий в автоматизированные тесты.
WebdriverIO использует метод getLogs, который позволяет
извлекать записи логов из браузера. Метод поддерживает несколько типов
логов, например:
browser — консольные сообщения браузера
(console.log, console.error и др.).driver — сообщения драйвера WebDriver.performance — события производительности.client — логи клиента (зависит от драйвера и
браузера).Пример получения логов браузера:
const logs = await browser.getLogs('browser');
console.log(logs);
Каждая запись лога представляет собой объект с ключами:
level — уровень сообщения (INFO,
WARNING, SEVERE).message — текст сообщения.timestamp — время появления записи.Часто необходимо отслеживать только ошибки или предупреждения. WebdriverIO позволяет фильтровать записи по уровню:
const logs = await browser.getLogs('browser');
const errors = logs.filter(log => log.level === 'SEVERE');
console.log(errors);
Такой подход позволяет интегрировать проверку ошибок браузера в автоматические тесты, что особенно важно для выявления скрытых JavaScript-ошибок.
Логи браузера могут содержать информацию о:
Пример анализа ошибок на странице:
const logs = await browser.getLogs('browser');
logs.forEach(log => {
if (log.level === 'SEVERE') {
console.error(`Ошибка в браузере: ${log.message} (время: ${new Date(log.timestamp)})`);
}
});
Это помогает не только выявлять ошибки, но и связывать их с конкретными действиями теста.
WebdriverIO поддерживает тип логов performance, который
позволяет отслеживать события загрузки страницы, выполнение скриптов и
сетевые запросы. Эти данные полезны для анализа производительности
веб-приложений.
const perfLogs = await browser.getLogs('performance');
perfLogs.forEach(log => {
const message = JSON.parse(log.message).message;
if (message.method === 'Network.responseReceived') {
console.log(`URL: ${message.params.response.url}, Статус: ${message.params.response.status}`);
}
});
Использование логов производительности позволяет интегрировать в тесты проверку времени ответа сервера и корректности сетевых запросов.
Чтобы получать логи браузера, необходимо убедиться, что драйвер
настроен на соответствующий уровень логирования. Для Chrome это
настраивается через goog:loggingPrefs:
capabilities: [{
browserName: 'chrome',
'goog:loggingPrefs': {
browser: 'ALL',
performance: 'ALL'
}
}]
Для Firefox используется аналогичная настройка с ключом
moz:firefoxOptions и параметром log:
capabilities: [{
browserName: 'firefox',
'moz:firefoxOptions': {
log: { level: 'trace' }
}
}]
Это гарантирует, что все необходимые типы логов будут доступны через WebdriverIO.
Браузерные логи можно интегрировать в тестовые сценарии для автоматической проверки отсутствия критических ошибок:
it('не должно быть ошибок в консоли', async () => {
await browser.url('https://example.com');
const logs = await browser.getLogs('browser');
const errors = logs.filter(log => log.level === 'SEVERE');
expect(errors).toHaveLength(0);
});
Такой подход позволяет включить мониторинг клиентских ошибок в процесс CI/CD и предотвращать выпуск приложения с незамеченными проблемами.
performance логи лучше всего
работают в Chrome.performance, поэтому фильтрация и структурирование
данных критически важны для удобного анализа.SEVERE/WARNING) для фокусировки на
критических событиях.Браузерные логи в WebdriverIO предоставляют детализированную картину работы приложения на клиентской стороне и становятся незаменимым инструментом при отладке и автоматизированном тестировании сложных веб-приложений.