Protractor предоставляет развитые механизмы логирования, позволяющие отслеживать выполнение тестов, диагностировать ошибки и анализировать поведение веб-приложений на всех этапах тестирования. Логирование является неотъемлемой частью автоматизированного тестирования, так как оно помогает понять, что именно происходит во время выполнения скриптов и выявить узкие места.
Консольные логи браузера Protractor позволяет
получать сообщения из консоли браузера через объект
browser.manage().logs(). Логи могут содержать ошибки
JavaScript, предупреждения и информационные сообщения.
browser.manage().logs().get('browser').then(function(browserLogs) {
browserLogs.forEach(function(log){
console.log(log.level.name + ': ' + log.message);
});
});
Ключевой момент: доступные уровни логов —
SEVERE, WARNING, INFO,
DEBUG. Чаще всего в автоматизированных тестах фильтруют
ошибки уровня SEVERE для выявления критических
проблем.
Логирование действий Protractor Protractor может
логировать шаги теста и действия с элементами через встроенный объект
browser.logger или через кастомные функции. Простейший
способ — использование console.log, однако более
структурное логирование достигается с помощью сторонних библиотек вроде
winston или log4js.
console.log('Клик по кнопке Login выполнен');
Для более профессионального подхода используют уровень логирования
(info, warn, error) и форматируют
сообщения с временными метками и контекстом.
Логирование HTTP-запросов Protractor не имеет
прямого встроенного механизма для логирования сетевых запросов, но можно
использовать возможности браузера и WebDriver для доступа к сетевым
логам через performance logs:
const perfLogs = browser.manage().logs().get('performance');
perfLogs.then((logs) => {
logs.forEach(log => console.log(log.message));
});
Это позволяет отслеживать запросы AJAX, ответы серверов и ошибки API во время выполнения тестов.
Конфигурация уровня логов WebDriver В файле
protractor.conf.js можно указать уровни логирования для
драйвера:
capabilities: {
browserName: 'chrome',
loggingPrefs: {
browser: 'ALL',
driver: 'INFO'
}
}
Это задает сбор всех сообщений из браузера и определенный уровень
логов для WebDriver. Настройка loggingPrefs критична для
обнаружения скрытых проблем на стороне клиента.
Использование Jasmine Reporter Для структурированного логирования результатов тестов часто используют Jasmine Reporter. Он позволяет сохранять логи тестов в файлы, экспортировать их в HTML и интегрировать с CI/CD системами.
const JasmineReporter = require('jasmine-reporters');
jasmine.getEnv().addReporter(new JasmineReporter.JUnitXmlReporter({
savePath: 'testresults',
consolidateAll: false
}));
Этот подход упрощает диагностику проблем при прогоне большого набора тестов и делает результаты легко читаемыми.
Фильтрация критических ошибок: при анализе логов
рекомендуется сразу отделять сообщения уровня SEVERE от
обычной информации и предупреждений.
Структурированное логирование: использование
внешних библиотек (winston, log4js) помогает
централизовать логи и добавлять уровни детализации.
Логирование ожиданий: включение логов при
использовании ExpectedConditions позволяет отслеживать
задержки и таймауты.
const EC = protractor.ExpectedConditions;
browser.wait(EC.visibilityOf(element(by.id('login'))), 5000)
.then(() => console.log('Элемент видим'))
.catch(() => console.error('Элемент не появился в течении 5 секунд'));Сохранение логов для CI/CD: автоматическая запись логов в файл позволяет анализировать тесты после завершения сборки или в случае падения на сервере сборки.
loggingPrefs.marionette и дополнительных
настроек.Protractor поддерживает режим отладки через
browser.debugger() и protractor --debug.
Совмещение встроенного логирования с пошаговой отладкой позволяет
выявлять проблемы на уровне DOM, событий и запросов, а не только по
результатам теста.
browser.debugger();
element(by.id('submit')).click();
Встроенное логирование Protractor является фундаментом для качественного и прозрачного тестирования. Оно обеспечивает сбор информации о действиях браузера, поведении приложения и результатах тестов, что делает процесс диагностики и анализа ошибок максимально информативным.