Документация

Облака
Menu


> Selenium Grid

> TestContainers

> LambdaTest

> BrowserStack

> Saucelabs

> Moon

> Selenoid

> Другие облачные провайдеры



Самый простой, быстрый и надёжный способ - запускать браузер рядом с тестом (т.н. “локальный” запуск). В крайнем случае - в докере на той же машине.

Но люди не ищут простых путей. Иногда им хочется запускать браузер в облаках. В теории это может дать вам некоторые плюсы: бесконечное масштабирование и запуск разных версий разных браузеров. Но конечно, есть и свои сложности и ограничения. Смотрите сами.

Селенид это позволяет сделать довольно легко. Чтобы запустить браузер удалённо, в общем случае нужно задать настройку remote:

Configuration.remote = "https://your-cloud-provider.com/wd/hub";

Selenium Grid

Написан на Java командой Selenium.

Как использовать:

<dependency>
  <groupId>com.codeborne</groupId>
  <artifactId>selenide-grid</artifactId>
  <version>7.10.0</version>
</dependency>

Плюсы

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

Минусы

  • Не поддерживает операции с буфером обмена

TestContainers

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

Рабочий пример: selenide-examples/testcontainers.

Плюсы:

  1. Позволяет запускать разные версии браузеров
  2. Умеет записывать видео с тестов (и ещё куча фич TestContainers)
  3. Большинство фич селенида продолжают работать (скриншоты, прокси, CDP и т.д.)

Минусы:

  1. Некоторые фичи селенида не могут работать (clipboard)
  2. Поддерживаются только те браузеры, что в принципе способны работать в докере (Internet Explorer точно нет, насчёт Safari не уверен)


LambdaTest

Рабочий пример: selenide-examples/selenide-lambdatest.
Сайт: LambdaTest.com.

Это рабочий пример тестов на селениде, которые запускают браузер на серверах LambdaTest.
Как видно, настройка там минимальная:

  Configuration.remote = "https://hub.lambdatest.com/wd/hub";
  Configuration.browserCapabilities.setCapability("LT:Options", Map.of(
    "user", "unclebob",
    "accessKey", "0123456789001234567890"
  ));

Плюсы:

  1. Позволяет запускать разные версии браузеров

Минусы:

  1. Некоторые фичи селенида не могут работать (clipboard, прокси, скачивание методом FOLDER)


BrowserStack

Рабочий пример: selenide-examples/selenide-browserstack.
Сайт: BrowserStack.com

Это рабочий пример тестов на селениде, которые запускают браузер на серверах BrowserStack. Как видно, настройка там минимальная:

  Configuration.remote = "https://hub-cloud.browserstack.com/wd/hub";
  Configuration.browserCapabilities.setCapability("bstack:options", Map.of(
    "userName", "unclebob",
    "accessKey", "0123456789001234567890"
  ));

Плюсы:

  1. Позволяет запускать разные версии браузеров

Минусы:

  1. Некоторые фичи селенида не могут работать (clipboard, прокси, скачивание методом FOLDER)


Saucelabs

Компания Saucelabs тоже предлагает запуск браузеров и мобильников на их серверах.

Пример (старый, но надеемся вскоре обновить).

Плюсы:

  1. Позволяет запускать разные версии браузеров

Минусы:

  1. Некоторые фичи селенида не могут работать (clipboard, прокси, скачивание методом FOLDER)


Moon

Как Selenium Grid, но в докере. И написано на Go, поэтому работает быстро и потребляет мало памяти.

Как использовать:

<dependency>
  <groupId>com.codeborne</groupId>
  <artifactId>selenide-moon</artifactId>
  <version>7.10.0</version>
</dependency>

Плюсы:

  1. Поддерживается Селенидом напрямую
  2. Поддерживает скачивание файлов, операции с буфером обмена (фичи, которые не обязательно работают в других облаках).
  3. Позволяет запускать разные версии браузеров
  4. Умеет записывать видео с тестов

Минусы:

  1. Поддерживаются только те браузеры, что в принципе способны работать в докере (Internet Explorer точно нет, насчёт Safari не уверен)


Selenoid

Как Selenium Grid, но в докере. И написано на Go, поэтому работает быстро и потребляет мало памяти.

Как использовать:

<dependency>
  <groupId>com.codeborne</groupId>
  <artifactId>selenide-selenoid</artifactId>
  <version>7.10.0</version>
</dependency>

Плюсы:

  1. Поддерживается Селенидом напрямую
  2. Поддерживает скачивание файлов, операции с буфером обмена (фичи, которые не обязательно работают в других облаках).
  3. Позволяет запускать разные версии браузеров
  4. Умеет записывать видео с тестов

Минусы:

  1. Поддерживаются только те браузеры, что в принципе способны работать в докере (Internet Explorer точно нет, насчёт Safari не уверен)


Другие облачные провайдеры

Теоретически остальные облачные провайдеры должны интегрироваться так же легко.

Какие ещё провайдеры пробовали вы? Плюсы, минусы, подводные камни? Расскажите, поделитесь кодом.

И самое главное, стоило ли оно того? Расскажите, какие такие проблемы решает удалённый запуск браузер, ради чего стоило поступиться скоростью, удобством и некоторыми фичами?