Обновление депендентов

Protractor является инструментом для end-to-end тестирования Angular и AngularJS приложений. Он построен на основе Selenium WebDriver и тесно интегрируется с экосистемой Node.js. В процессе поддержки тестового проекта критически важно следить за актуальностью зависимостей, так как устаревшие пакеты могут приводить к ошибкам при запуске тестов, несовместимости с браузерами и снижению производительности.


Управление зависимостями через package.json

Все зависимости в проекте Protractor хранятся в файле package.json. Существуют три типа зависимостей:

  • dependencies – пакеты, необходимые для работы приложения. Обычно Protractor не попадает в эту категорию, так как используется только для тестирования.
  • devDependencies – пакеты, используемые исключительно в процессе разработки и тестирования (Protractor, Jasmine, Chai, WebDriver Manager и т.д.).
  • peerDependencies – пакеты, требуемые для работы библиотек, но не устанавливаемые автоматически.

Для обновления зависимостей важно понимать семантику версий:

  • Major (X.0.0) – может содержать несовместимые изменения.
  • Minor (0.X.0) – добавляет новые функции без ломки существующего кода.
  • Patch (0.0.X) – исправление багов без изменения API.

Проверка устаревших пакетов

Node.js предоставляет встроенные инструменты для анализа зависимостей. Основные команды:

npm outdated

Она выводит таблицу, содержащую текущую, желаемую и последнюю доступную версии пакета. Важно обращать внимание на:

  • Разрыв major версии – обновление может потребовать правки тестов.
  • Разрыв minor или patch версии – обычно безопасно обновлять автоматически.

Аналогичная команда для Yarn:

yarn outdated

Обновление зависимостей

1. Обновление конкретного пакета

Для обновления конкретного пакета до последней версии используется:

npm install protractor@latest --save-dev

Если требуется обновление до конкретной версии:

npm install protractor@7.0.0 --save-dev

Yarn поддерживает аналогичный синтаксис:

yarn add protractor@latest --dev

2. Массовое обновление

Для обновления всех пакетов сразу используют:

npm update

Однако эта команда обновляет только minor и patch версии. Чтобы обновить major версии, применяется пакет npm-check-updates:

npx npm-check-updates -u
npm install

Эта последовательность сначала обновляет версии в package.json, а затем устанавливает их.


Учет совместимости с WebDriver

Protractor напрямую взаимодействует с Selenium WebDriver через webdriver-manager. После обновления Protractor важно синхронизировать драйверы:

npx webdriver-manager update

Это гарантирует, что ChromeDriver, GeckoDriver и другие компоненты соответствуют версии браузеров, установленной на машине.


Проверка корректности обновлений

После обновления зависимостей необходимо выполнить полную прогонку тестов. Рекомендуется:

  1. Запуск всех e2e тестов:
npx protractor conf.js
  1. Проверка логов на предупреждения о депрецированных методах.
  2. Обновление конфигурации Protractor (conf.js), если API пакетов изменилось.

Также полезно проверять работу параллельных запусков тестов через multiCapabilities или shardTestFiles, так как обновления могут влиять на распределение сессий WebDriver.


Автоматизация обновления

Для больших проектов удобна автоматизация проверки и обновления зависимостей:

  • Настройка CI/CD пайплайнов с командами npm outdated и npm update.
  • Использование renovate или dependabot для автоматического создания pull request с обновленными версиями.
  • Внедрение статических проверок на совместимость с последними версиями браузеров и Selenium.

Автоматизация снижает риск разрыва тестов и облегчает поддержку большого набора e2e сценариев.


Практические советы

  • Всегда фиксировать версии критичных пакетов в package.json.
  • Обновление major версий проводить в отдельной ветке и тестировать на всех окружениях.
  • Следить за совместимостью с Node.js и браузерами.
  • Использовать семантическое версионирование (^, ~) для контроля автоматических обновлений.
  • Периодически проверять устаревшие пакеты даже если тесты проходят без ошибок — новые версии могут содержать оптимизации и фиксы безопасности.

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