Запуск на разных браузерах

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 позволяет передавать аргументы и опции для конкретного браузера.
  • Для Firefox аналогично можно использовать 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 каждый браузер получает свою сессию.
  • Это позволяет значительно ускорить выполнение большого набора тестов.

Настройка браузеров без Selenium Standalone

Protractor может работать через directConnect для Chrome и Firefox, что ускоряет запуск тестов:

exports.config = {
    directConnect: true,
    specs: ['specs/*.spec.js'],
    capabilities: {
        browserName: 'chrome'
    }
};
  • directConnect: true обходит необходимость запускать отдельный Selenium Server.
  • Поддерживается только Chrome и Firefox.
  • Для параллельного тестирования с несколькими браузерами 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
  • Это удобно для интеграции с CI/CD, когда требуется запуск тестов в разных браузерах без изменения файла конфигурации.

Работа с различными версиями браузеров

Protractor через Selenium WebDriver поддерживает указание версии браузера:

capabilities: {
    browserName: 'chrome',
    version: '113.0'
}
  • Если версия не указана, используется последняя установленная версия.
  • Для параллельного тестирования разных версий часто используют Docker-контейнеры с готовыми образами браузеров.

Сессии и изоляция

Каждая браузерная сессия запускается изолированно, что позволяет:

  • Запускать тесты параллельно без конфликтов.
  • Использовать отдельные профили и cookie для разных тестов.
  • Гарантировать, что один тест не влияет на другой.

При использовании multiCapabilities важно следить за ресурсами системы, так как каждый браузер потребляет память и процессор.

Итоговые рекомендации по запуску на разных браузерах

  • Для единичного запуска достаточно capabilities.
  • Для параллельного тестирования в нескольких браузерах используется multiCapabilities + maxSessions.
  • Headless режим ускоряет выполнение тестов и подходит для CI.
  • DirectConnect подходит для локальной отладки Chrome и Firefox.
  • Настройка опций браузеров обеспечивает стабильность и предсказуемость тестов.

Protractor предоставляет гибкий механизм запуска на различных браузерах, позволяя тестировать веб-приложения в разных средах без дублирования тестового кода и с высокой степенью автоматизации.