Требования к системе

Protractor работает поверх Node.js и Selenium WebDriver, поэтому ключевое требование — поддержка Node.js и запуска браузеров в режиме автоматизации. Поддерживаются основные настольные операционные системы:

  • Windows: актуальные версии Windows 10 и 11, включая корпоративные сборки. Необходимо наличие прав на установку драйверов браузеров.
  • macOS: версии, поддерживаемые текущими LTS-релизами Node.js. Для Safari требуется включённый режим автоматизации.
  • Linux: дистрибутивы с glibc, совместимые с Node.js (Ubuntu, Debian, CentOS, RHEL). Для headless-запуска браузеров часто требуется дополнительная настройка библиотек.

Серверные сборки ОС без графической подсистемы допускаются при использовании headless-режимов Chrome или Firefox.


Node.js и менеджер пакетов

Protractor — это Node.js-приложение, поэтому Node.js является обязательным компонентом системы.

Рекомендуемые требования:

  • Node.js: LTS-версия, совместимая с используемой версией Protractor (обычно Node.js 14–18).
  • npm или yarn: для управления зависимостями проекта.
  • npx: для запуска локально установленных бинарников без глобальной установки.

Проверка окружения:

node -v
npm -v

Использование слишком новых версий Node.js может приводить к несовместимости с устаревшими версиями Protractor и Selenium.


Protractor и зависимости проекта

Protractor устанавливается как зависимость проекта и тянет за собой Selenium WebDriver и связанные библиотеки.

Минимальный набор зависимостей:

  • protractor
  • selenium-webdriver
  • jasmine или mocha (в зависимости от тестового фреймворка)
  • typescript (если используются тесты на TypeScript)

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


Браузеры и их версии

Для выполнения end-to-end тестов необходимы реальные браузеры или их headless-аналоги.

Поддерживаемые браузеры:

  • Google Chrome / Chromium
  • Mozilla Firefox
  • Microsoft Edge (Chromium)
  • Safari (только на macOS)

Браузеры должны быть установлены локально или доступны в системе CI. Версия браузера должна соответствовать версии драйвера WebDriver.


WebDriver и драйверы браузеров

Protractor использует WebDriver для управления браузерами. Для каждого браузера требуется соответствующий драйвер:

  • ChromeDriver — для Chrome/Chromium
  • GeckoDriver — для Firefox
  • EdgeDriver — для Microsoft Edge
  • SafariDriver — встроен в Safari

Драйверы могут:

  • устанавливаться автоматически через webdriver-manager
  • поставляться через npm-пакеты
  • быть предустановлены в системе CI

Пример обновления драйверов:

npx webdriver-manager update

Несоответствие версий браузера и драйвера — одна из самых частых причин нестабильности тестов.


Angular-приложение и режим синхронизации

Protractor изначально разрабатывался для Angular-приложений и требует:

  • AngularJS или Angular (2+)
  • Доступ к window.angular или включённый режим ожидания нестабильности

Для не-Angular приложений необходимо явно отключать синхронизацию:

browser.waitForAngularEnabled(false);

Это требование напрямую влияет на конфигурацию среды и поведение тестов.


Права доступа и политика безопасности

Для корректной работы необходимы:

  • права на запуск браузеров
  • доступ к сетевым портам (локальный Selenium Server, удалённые Grid-ноды)
  • возможность записи временных файлов (скриншоты, логи)

В корпоративных средах и на CI-серверах часто требуется явное разрешение на запуск headless-браузеров и работу с sandbox-режимами.


Сетевые требования

Protractor-тесты зависят от сетевой доступности тестируемого приложения.

Требования:

  • доступ к тестовому стенду по HTTP/HTTPS
  • корректная работа прокси (если используется)
  • синхронизация времени системы (важно для таймингов и логов)

При использовании Selenium Grid требуется стабильное соединение между нодами и хабом.


Аппаратные ресурсы

End-to-end тесты ресурсоёмки по сравнению с unit-тестами.

Минимальные рекомендации:

  • CPU: 2–4 ядра
  • RAM: от 4 ГБ (8 ГБ для параллельного запуска)
  • SSD-диск для ускорения установки зависимостей и запуска браузеров

Недостаток ресурсов приводит к флейковым тестам, таймаутам и падениям браузеров.


Интеграция с CI/CD

Система должна поддерживать запуск тестов в автоматическом режиме:

  • отсутствие интерактивных диалогов
  • поддержка headless-браузеров
  • корректная работа переменных окружения

Часто требуется установка дополнительных пакетов (например, libnss3, fonts-liberation для Chrome на Linux).


Логи и диагностика

Для полноценной отладки и анализа падений необходимы:

  • доступ к stdout/stderr
  • сохранение логов Protractor и WebDriver
  • возможность делать скриншоты и сохранять HTML-дампы страниц

Система должна позволять хранить и передавать эти артефакты между шагами пайплайна.


Версионная стабильность

Рабочая среда для Protractor должна быть зафиксирована:

  • версии Node.js
  • версии Protractor и Selenium
  • версии браузеров и драйверов

Обновление любого компонента без тестирования совместимости может привести к массовым сбоям e2e-тестов, даже при неизменном тестовом коде.