Protractor — это инструмент для end-to-end тестирования приложений на Angular и AngularJS, который работает поверх Selenium WebDriver. Одним из ключевых преимуществ Protractor является возможность запускать тесты в разных браузерах без изменения тестового кода, используя конфигурацию WebDriver.
В Protractor конфигурация браузера задаётся в файле
protractor.conf.js через объект capabilities
или multiCapabilities.
Пример для одного браузера:
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['specs/*.spec.js'],
capabilities: {
browserName: 'chrome',
chromeOptions: {
args: ['--start-maximized', '--disable-infobars']
}
}
};
browserName определяет, какой браузер использовать
(chrome, firefox, edge,
safari).chromeOptions позволяет передавать аргументы и опции
для конкретного браузера.firefoxOptions.Запуск нескольких браузеров одновременно:
Для параллельного тестирования в нескольких браузерах используется
multiCapabilities:
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['specs/*.spec.js'],
multiCapabilities: [
{
browserName: 'chrome',
chromeOptions: {
args: ['--start-maximized']
}
},
{
browserName: 'firefox',
'moz:firefoxOptions': {
args: ['-width=1920', '-height=1080']
}
}
]
};
Каждый объект внутри multiCapabilities запускает
отдельный экземпляр браузера. Тесты распределяются между ними
автоматически, если включена поддержка параллельного выполнения
(maxSessions).
Protractor поддерживает распределение тестов по нескольким браузерам
с помощью параметра maxSessions:
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['specs/*.spec.js'],
multiCapabilities: [
{ browserName: 'chrome' },
{ browserName: 'firefox' }
],
maxSessions: 2
};
maxSessions ограничивает количество одновременно
запускаемых браузерных сессий.multiCapabilities каждый
браузер получает свою сессию.Protractor может работать через directConnect для Chrome
и Firefox, что ускоряет запуск тестов:
exports.config = {
directConnect: true,
specs: ['specs/*.spec.js'],
capabilities: {
browserName: 'chrome'
}
};
directConnect: true обходит необходимость запускать
отдельный Selenium Server.directConnect не подходит, требуется
seleniumAddress.Каждый браузер поддерживает собственные опции, которые можно задавать в конфигурации:
Chrome:
chromeOptions: {
args: [
'--headless',
'--disable-gpu',
'--window-size=1920,1080'
]
}
--headless запускает браузер без графического
интерфейса.--disable-gpu требуется для корректной работы headless
в Windows.--window-size задаёт размеры окна для тестов, особенно
важно для визуальных проверок.Firefox:
'moz:firefoxOptions': {
args: ['-headless']
}
Edge:
msedgeOptions: {
args: ['--start-maximized']
}
Настройки позволяют гибко управлять средой запуска, включая headless режим, размеры окна, пользовательские профили и прокси.
Protractor позволяет динамически изменять браузер и конфигурацию через параметры командной строки:
protractor protractor.conf.js --capabilities.browserName=firefox
Protractor через Selenium WebDriver поддерживает указание версии браузера:
capabilities: {
browserName: 'chrome',
version: '113.0'
}
Каждая браузерная сессия запускается изолированно, что позволяет:
При использовании multiCapabilities важно следить за
ресурсами системы, так как каждый браузер потребляет память и
процессор.
capabilities.multiCapabilities + maxSessions.Protractor предоставляет гибкий механизм запуска на различных браузерах, позволяя тестировать веб-приложения в разных средах без дублирования тестового кода и с высокой степенью автоматизации.