Файл protractor.conf.js является основным
конфигурационным файлом для работы Protractor — фреймворка для
end-to-end тестирования Angular и не-Angular приложений на JavaScript.
Он управляет поведением тестов, настройками браузера, путями к тестовым
файлам и интеграцией с различными инструментами. Рассмотрим подробно его
ключевые элементы.
В основе файла лежит объект конфигурации, который экспортируется с
помощью exports.config:
exports.config = {
// параметры конфигурации
};
Внутри этого объекта указываются все настройки тестового окружения: пути к тестам, браузеры, таймауты, фреймворк для тестов и др.
Ключевые свойства:
specs — массив файлов или паттернов, указывающий на
тестовые спецификации:specs: [
'./tests/**/*.spec.js'
],
exclude — массив файлов, которые необходимо исключить
из выполнения:exclude: [
'./tests/old_tests/**/*.spec.js'
],
Использование шаблонов (globs) позволяет удобно структурировать проект и запускать отдельные группы тестов.
capabilities)Секция capabilities определяет браузер, в котором будут
выполняться тесты, и его параметры:
capabilities: {
browserName: 'chrome',
chromeOptions: {
args: ['--disable-gpu', '--window-size=1920,1080']
},
maxInstances: 1
},
Основные моменты:
browserName — название браузера (chrome,
firefox, edge).chromeOptions / moz:firefoxOptions —
дополнительные параметры запуска браузера.maxInstances — максимальное количество параллельных
сессий браузера.multiCapabilities.Protractor поддерживает различные фреймворки, но наиболее часто
используется Jasmine. Настройка производится через
framework:
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
print: function() {}
},
Подробности:
showColors — отображение цветного вывода в
консоли.defaultTimeoutInterval — таймаут ожидания выполнения
теста в миллисекундах.print — функция для кастомного логирования результатов
тестов.Для Mocha или Cucumber используется аналогичная настройка через
framework: 'mocha' или framework: 'custom' с
указанием адаптера.
baseUrl задает адрес, на котором запускаются
тестируемые страницы:baseUrl: 'http://localhost:4200/',
onPrepare — функция, выполняемая перед запуском тестов,
часто используется для глобальных настроек:onPrepare: function() {
browser.waitForAngularEnabled(true);
browser.manage().window().maximize();
},
Основные возможности onPrepare:
waitForAngularEnabled).chai,
expect, protractor-helper).Protractor использует несколько типов таймаутов:
allScriptsTimeout: 11000,
getPageTimeout: 10000,
allScriptsTimeout — время ожидания выполнения любого
скрипта в браузере.getPageTimeout — время ожидания загрузки страницы через
browser.get().Эти значения важны для стабильности тестов, особенно при работе с динамическим контентом.
Protractor позволяет подключать различные репортеры. Наиболее
распространенный способ через onPrepare:
onPrepare: function() {
var jasmineReporters = require('jasmine-reporters');
jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
savePath: 'testresults',
consolidateAll: false
}));
},
Задачи репортера:
params — объект для передачи глобальных переменных в
тесты:
params: {
login: {
username: 'admin',
password: '1234'
},
apiUrl: 'http://localhost:3000/api'
},
Использование: browser.params.login.username. Удобно для
хранения данных авторизации или настроек окружения.
seleniumAddress — адрес работающего Selenium
Server:seleniumAddress: 'http://localhost:4444/wd/hub',
directConnect — использование прямого соединения с
браузером без Selenium Server:directConnect: true,
exclude — файлы для исключения из
выполнения.
plugins — подключение плагинов для
Protractor:
plugins: [{
package: 'protractor-console-plugin',
logLevels: ['SEVERE']
}],
exports.config = {
directConnect: true,
baseUrl: 'http://localhost:4200/',
specs: ['./tests/**/*.spec.js'],
capabilities: {
browserName: 'chrome',
chromeOptions: {
args: ['--headless', '--disable-gpu', '--window-size=1920,1080']
}
},
framework: 'jasmine',
jasmineNodeOpts: {
defaultTimeoutInterval: 30000,
showColors: true
},
onPrepare: function() {
browser.waitForAngularEnabled(true);
browser.manage().window().maximize();
},
allScriptsTimeout: 11000,
getPageTimeout: 10000,
params: {
login: {
username: 'admin',
password: '1234'
}
}
};
Этот пример демонстрирует стандартную настройку для Angular приложения с Jasmine, Chrome в headless режиме и глобальными параметрами.
Файл protractor.conf.js является гибкой точкой настройки
тестового окружения. Правильная структура и использование ключевых опций
позволяют создавать стабильные, масштабируемые и легко поддерживаемые
end-to-end тесты на Protractor.