Я использую Selenide + Cucumber + Maven + Junit + Jenkins + Allure.
Тесты гоняются c job’ы Jenkins на виртуальной машине Ubuntu в несколько потоков.
Для этого на Ubuntu в ручную из консоли я запускаю хаб и несколько нод selenium grid’а.
Возникла необходимость запускать грид из job’ы перед стартом тестов.
Нашлось решение делать это в preSteps через ssh.
Но проблема в том, что если стартовать хаб и ноды через ssh, почему-то не запускается браузер.
При инициализации драйвера выходила ошибка Driver info: driver.version: unknown
Драйвер лежал в той же папке, что и джарник грида.
После того, как я явно прописала путь до драйвера, стала вываливаться такая ошибка:
Caused by: org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally
12:49:43 (Driver info: chromedriver=2.32.498513 (2c63aa53b2c658de596ed550eb5267ec5967b351),
platform=Linux 4.4.0-112-generic x86_64) (WARNING: The server did not provide any stacktrace information)
Может кто сталкивался с подобным?
Или хотя бы наведет на мысль, в каком направлении копать?
Получается, если грид запущен из консоли с помощью удаленного рабочего стола - драйвер стартует, а если так же из консоли, но только через ssh, то нет.
Пользователь один и тот же.
Задумайтесь над следующим моментом - под каким юзером вы делаете ssh на машинку с поднятием грида и под каким юзером дженкинс стартует тесты (а соответственно и хром). Если под разными, то вот собственно и оно
в jenkins сделайте отдельным шагом перед тестами поднятие докер контейнеров командой docker-compose up
Плюсы:
Можете выкинуть ваши файлы драйверов т.к все уже будет внутри контейнеров
Если после прогона тестов поставить еще один шаг с командой ‘docker-compose down’, то ваши ноды и хаб автоматом умрут со всеми процессами и т.д (держим тестовый сервер в чистоте)
Любому человеку который захочет прогнать ваши тесты локально не надо искать что и как сделать для поднятия нода и хабов он просто делает одну команду docker-compose up и все.
Минусы:
Иногда так бывает что на сервере для старта докера не хватает полномочий, но это все решаемо и не так часто случается.
Прогон только для ff and chrome
Если хотите еще лучше решение, то посмотрите в сторону selenoid
Да нет, версии совместимые: драйвер 2.32, браузер 61. Это подтверждается тем, что если грид стартовать через удаленный рабочий стол из консоли, всё работает отлично: браузер запускается, тесты отрабатывают.
Да, это отличная мысль) Я в восторге от идеи использования селеноида!
Я даже загрузила нужный селеноид-контейнер на свою виндовую машину, но дальше пока не зашло, к сожалению - возникли другие вопросы более срочного порядка.
Но всё таки, мучительно любопытно, почему при старте грида по ssh браузер не стартует?
У самого был раньше сервак на 4 гига, поднималось спокойно 2 ноды и 1 хаб, но при попытке запускать больше 1 браузера на одну ноду уже не хватало ресурсов.
Если на каждой ноде по одному браузеру все норм, но если на одной ноде 5 ff и на другой 5 chrome то уже 4 гига может не потянуть.
Вывод:
4 гигов спокойно хватает для параллельного запуска тестов в одном ff и в одном chrome, а это уже большая победа)) и улучшений в скорости тестирования и сборки.
Стоит еще добавить что на этой же машине поднималось еще приложение с базой и все крутилось без тормозов и быстро.