Есть ли смысл переходить с Selenium Grid на Docker-selenium?

Я и ещё 4 тестеров, уже пару лет успешно пишем UI (и не только) тесты, крутим их по ночам в Selenium Grid, рисуем красивые репорты и т.д.

Так как количество тестов и проектов растёт, то возникло такая проблема, что иногда появляются проблемы с Гридом:

  • бывает ноды просто подвисают
  • бывает подвисают сессии, хотя вроде бы должны уничтожаться по тайм-аутам
  • бывает что подвисают браузеры на ноде. Я захожу по RDP, и вижу, что запущено 100+ процессов firefox.

В общем, я борюсь со всем этим, с переменным успехом.

Но вот как-то услыхал, что к проблеме можно подойти с другой стороны. Про это немного писали уже тут:

Но сейчас обстановка поменялась и уже вышел докер под винду.

Вопрос:
Что вы думаете о том, если отказаться от Грида, и вместо этого каждый test suite будет запускать себе докер с нужным браузером?

Что я надеюсь получить от этого:
1) не надо будет поддерживать Грид.
Каждый test suite запустит себе контейнер, прогонит тесты, и выкинет контейнер.
Так?
Или надо будет поддерживать Хост систему для докера? Насколько это проще / сложнее?

2) тестовые сьюты будут более независимы.
Сейчас бывает, что если кто-то положит Грид, то другие тесты уже не запустятся.
Или также будет падать хост для Докера?

3) более лёгкий выбор среды (OS / browser) для тестов.
В случае Грида - нужно, чтобы кто-то построил подходящую ноду, добавил её в Грид.
В случае Докера, это вроде бы должно быть проще тем, что каждый тестер может выбрать себе любой образ. Верно это? Или то же самое?

Может есть какие ещё подводные камни? Преимущества?
У кого есть опыт работы с Docker-selenium?

Вот думаю скоро перевести одну из проблемных test suite на докер - попробовать, как оно пойдёт…

Ничего оно не помешает. Я бы посоветовал посмотреть на Selenoid

Вы имеете в виду Selenide?
При чём же здесь этот фрэймворк?

Насколько я понимаю, тесты написанные с Selenide или без него всё равно надо будет где-то запускать - то ли в Гриде, то ли в Докере - вот в чём вопрос.

Или вы не об этом?

На хабре была отличная статья про Selenoid. Selenium: новая надежда / Habr

3 лайка

Вы тестируте под виндовыми броузерами?

Да, под Windows. Потому что большинство наших клиентов заходит из под Windows.

Конечно, браузер скрывает большую часть различий между OS, но всё-таки…

@SlavikF,
Нет опыта с докером под виндой. И на сегодня убежден что винды под докер нет, разве что допускаю существование headless варианта.

Для себя считаю докер-селениум оправданной штукой. На проэктах активно используем для функционального тестирования. А для кросбраузерного предпочитаю SaaS.

С докер-хостами нет проблем, у нас это ec2 agents под CI. И нет проблем с их масштабируемостью и пересозданием, если протухли (что происходит очень редко)

Docker поддерживает Windows Server 2016 контейнеры. Т.е. нужно вначале купить себе сервер, а потом с него запускать докер с таким же урезанным сервером. Profit. :smiley:

Прикольно конечно. Но по моему изврат еще тот)

а в качестве хостовой ОС для windows-контейнеров Windows 10 Pro разве не подойдет?
Там конечно не тру-докер используется (что-то вроде виртуализации на Hyper-V, которая эмулирует контейнеры - не разбирался), но возможно оверхед небольшой будет.

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

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

@ArtOfLife, поделитесь своими источниками.

Я видел только

With the exception of GUI apps and apps requiring Windows Remote Desktop

И на анонсе слышал что это для серверных нужд. “Управляйте всем через powershell”

Так что для кросс браузерного тестирования пользы ноль. :frowning:

Так и есть. MS пишет, что поддерживаюся только headless приложения:

With the exception of GUI apps and apps requiring Windows Remote Desktop, most apps that run on Windows Server can be dockerized to run in an image based on microsoft/windowsservercore with minimal effort. Examples include Microsoft SQL Server, Apache, Internet Information Services (IIS) and the full .NET framework.

Так что браузеры в Win-Докере не запустятся.

Понятно, что все грустно в обозримом будущем с контейнерами в Windows, особенно с теми, где нужен GUI.
Как я понял, чтобы приложению в контейнере сэмулировать окружение своей изолированной ОС, приходится дублировать кучу сервисов ОС Windows. Т.е. по сути это та же самая виртуалка получается ((

А что насчет использования терминального режима в Windows Server? Технология терминалов отлично работает, на одном сервере работают десятки и сотни пользователей одновременно с приложениями, которые установлены на сервере один раз, но в каждом пользовательском сеансе они работают изолированно друг от друга и в то же время, каждый сенас пользователя не требует под себя полноценное окружение ОС, хотя он и изолирован от других сеансов.
Можно было бы запускать браузеры в терминальных сеансах пользователей: сеанс очень быстро создается, внутри автоматически запускается хаб, после прохождения тестов сеанс пользователя завершается и содержимое временных папок профиля этого пользователя удаляется.:slight_smile: