Самый простой, быстрый и надёжный способ - запускать браузер рядом с тестом (т.н. “локальный” запуск). В крайнем случае - в докере на той же машине.
Но люди не ищут простых путей. Иногда им хочется запускать браузер в облаках. В теории это может дать вам некоторые плюсы: бесконечное масштабирование и запуск разных версий разных браузеров. Но конечно, есть и свои сложности и ограничения. Смотрите сами.
Селенид это позволяет сделать довольно легко.
Чтобы запустить браузер удалённо, в общем случае нужно задать настройку remote
:
Configuration.remote = "https://your-cloud-provider.com/wd/hub";
Написан на Java командой Selenium.
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>selenide-grid</artifactId>
<version>7.10.0</version>
</dependency>
Позволяет одной аннотацией запускать браузер на той же машине, но внутри докера.
Рабочий пример: selenide-examples/testcontainers.
Плюсы:
Минусы:
Рабочий пример: 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"
));
Плюсы:
Минусы:
Рабочий пример: 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"
));
Плюсы:
Минусы:
Компания Saucelabs тоже предлагает запуск браузеров и мобильников на их серверах.
Пример (старый, но надеемся вскоре обновить).
Плюсы:
Минусы:
Как Selenium Grid, но в докере. И написано на Go, поэтому работает быстро и потребляет мало памяти.
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>selenide-moon</artifactId>
<version>7.10.0</version>
</dependency>
Как Selenium Grid, но в докере. И написано на Go, поэтому работает быстро и потребляет мало памяти.
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>selenide-selenoid</artifactId>
<version>7.10.0</version>
</dependency>
Теоретически остальные облачные провайдеры должны интегрироваться так же легко.
Какие ещё провайдеры пробовали вы? Плюсы, минусы, подводные камни? Расскажите, поделитесь кодом.
И самое главное, стоило ли оно того? Расскажите, какие такие проблемы решает удалённый запуск браузер, ради чего стоило поступиться скоростью, удобством и некоторыми фичами?