Selenium + Docker (Запуск тестовых скриптов на Нодах)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модератор: SLEDopit

iOleg
Сообщения: 7

Selenium + Docker

Сообщение iOleg » 09.10.2018 15:57

Всем добра!
Прошу помощи в вопросе ----
имеется docker с установленными контейнерами:
selenium/node-firefox
selenium/node-chrome
selenium/node-firefox-debug
selenium/node-chrome-debug
selenium/hub
выполнял:
# docker run -d -p 4444:4444 –-name selenium-hub selenium/hub - запустил хаб
# docker run -d -–link selenium-hub:hub selenium/node-chrome - запустил ноду хрома
# docker run -d -–link selenium-hub:hub selenium/node-firefox - запустил ноду фаерфокса
Запустил нижеуказанное для просмотра по VNC:
# docker run -d –P –-link selenium-hub:hub selenium/node-chrome-debug
# docker run -d –P –-link selenium-hub:hub selenium/node-firefox-debug
Пока хочу все протестировать на одном сервере (localhost), НО никак не могу понять, как мне на hub (на сервере отсутствует GUI, их тут не может быть) запустить хотя бы самый простой скрипт-тестирования для node-chrome и firefox. Уже обгуглился полностью! Прошу помощи!!!
Спасибо сказали:

Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 7520
Статус: Маньяк
ОС: Android, GNU/Linux, Windows

Re: Selenium + Docker

Сообщение serzh-z » 10.10.2018 14:23

Какой фреймворк для тестирования используете?
Scio me nihil scire.
Спасибо сказали:

iOleg
Сообщения: 7

Re: Selenium + Docker

Сообщение iOleg » 10.10.2018 18:06

serzh-z писал:
10.10.2018 14:23
Какой фреймворк для тестирования используете?
Скорее всего никакой, тк в инстр на просторах интернета после развертывания контейнеров как то сразу идет "и запускаем скрипт...". Вот и возник вопрос, а как запускаем, где запускаем.... :crazy:
Спасибо сказали:

Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 7520
Статус: Маньяк
ОС: Android, GNU/Linux, Windows

Re: Selenium + Docker

Сообщение serzh-z » 10.10.2018 18:22

iOleg
А тесты на чем написаны?

Есть подозрение, что вы неправильно понимаете, как работает Selenium. Если в общем, то так: тест-раннер -> тест (вероятно, тот самый "скрипт") -> Selenium-драйвер -> ферма Selenium.

Драйверу нужно знать адрес хаба, куда слать команды. Контейнеры с нодами (с безголовыми браузерами) должны иметь сетевой доступ к серверу приложения для которого запускаются тесты.
Scio me nihil scire.
Спасибо сказали:

iOleg
Сообщения: 7

Re: Selenium + Docker

Сообщение iOleg » 15.10.2018 15:21

serzh-z писал:
10.10.2018 18:22
А тесты на чем написаны?
Nightwatcher. Написал тест js, проверил работоспособность (проверял на машине без doker-ов), НО вот когда понадобилось развернуть схему hub-nodes, то стало не ясно....
На данный момент имеется selenium/hub, куда я доустановил nightwath, связал (--link) данный hub с selenium/node-chrome, но вот как запустить тест и направить его на node что то не ясно((
Спасибо сказали:

Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 7520
Статус: Маньяк
ОС: Android, GNU/Linux, Windows

Re: Selenium + Docker

Сообщение serzh-z » 15.10.2018 18:08

iOleg писал(а):
15.10.2018 15:21
куда я доустановил nightwath
Эээ...

Нужно всего лишь поправить nightwatch.json, прописав там адрес и порт хаба Selenium (selenium_*), который запущен в контейнере.

Nightwatch можно и нужно запускать локально. Он через веб-драйвер будет коннектиться к Selenium-хабу по HTTP. Ничего доустанавливать на хаб не нужно.
Scio me nihil scire.
Спасибо сказали:

iOleg
Сообщения: 7

Re: Selenium + Docker

Сообщение iOleg » 16.10.2018 09:19

serzh-z писал:
15.10.2018 18:08
Nightwatch можно и нужно запускать локально.
У меня сейчас такая схема: есть сервер где установлен docker и 2 image - selenium/hub и selenium/node-chrome, в selenium/hub я накатил еще nightwatch (и все зависимости для выполнения тестовых скриптов) и на основании этого сделал свой образ (commit-командой). Теперь хочу запускать тесты из новособранного образа. Я сделал что то не так?) Надо nightwatch ставить вне docker?
Спасибо сказали:

Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 7520
Статус: Маньяк
ОС: Android, GNU/Linux, Windows

Re: Selenium + Docker

Сообщение serzh-z » 16.10.2018 10:10

iOleg писал(а):
16.10.2018 09:19
Теперь хочу запускать тесты из новособранного образа. Я сделал что то не так?) Надо nightwatch ставить вне docker?
А, слепили воедино тест-раннер и хаб - ну и так можно. А можно было бы сделал ещё один контейнер, в котором запускаются тесты, чем усложнять и без того перегруженный контейнер хаба.

А так, запускаете в хабе оболочку, если она там есть (docker exec ... sh), и руками запускаете установленный там Nightwatch и тесты.
Scio me nihil scire.
Спасибо сказали:

iOleg
Сообщения: 7

Re: Selenium + Docker

Сообщение iOleg » 16.10.2018 10:24

А тогда еще такой вопрос: я же правильно понимаю, что chromedriver не надо ставить на selenium/hub, тк он должен быть и запускаться на node-chrome? И если это так, то как же указать путь до него в nightwatch.json?

"src_folders": ["/home/project"],
"output_folder": "reports",
"custom_commands_path": "",
"custom_assertions_path": "",
"page_objects_path": "",
"globals_path": "/home/project/globals.js",

"selenium" : {
"start_process" : true,
"server_path" : "/opt/selenium/selenium-server-standalone.jar",
"log_path" : "",
"port" : 4444,
"cli_args" : {
"webdriver.chrome.driver" : "./bin/chromedriver" # не указывать ничего или как то указать путь до node-chrome?
}
},

"test_settings" : {
"default" : {
"selenium_port" : 9515,
"selenium_host" : "localhost",
"default_path_prefix" : "",
"screenshots" : {
"enabled" : true,
"path" : "./screen"
},

"desiredCapabilities": {
"browserName": "chrome",
"javascriptEnabled": true,
"chromeOptions" : {
"args" : ["--no-sandbox", "--headless", "--disable-gpu", "--disable-extensions"]
},
"acceptSslCerts": true
}
}
}
}
Спасибо сказали:

Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 7520
Статус: Маньяк
ОС: Android, GNU/Linux, Windows

Re: Selenium + Docker

Сообщение serzh-z » 16.10.2018 11:57

iOleg писал(а):
16.10.2018 10:24
А тогда еще такой вопрос: я же правильно понимаю, что chromedriver не надо ставить на selenium/hub, тк он должен быть и запускаться на node-chrome?
Да. Связывание нод с хабом выполняется автоматически, либо через переменную среды HUB_HOST, либо через `--link selenium-hub:hub`.
iOleg писал(а):
16.10.2018 10:24
И если это так, то как же указать путь до него в nightwatch.json?
У Nightwatch (у модуля веб-драйвера, от которого он зависит) есть возможность запуска собственной копии Selenium. В случае использования собственной фермы Selenium, ничего дополнительно запускать ему не нужно и start_process стоит отключить. Nightwatch, в данном случае, просто тонкий клиент, выполняющий тесты и работающий с Selenium по HTTP/WebDriver.

P.S.: Вообще, для начала было бы проще отладить запуск Nightwatch локально (с HTTP/WebDriver-подключением к Selenium-хабу), не влезая в контейнеры selenium/*, а потом уже встроить Nightwatch в нужный контейнер.
Scio me nihil scire.
Спасибо сказали:

iOleg
Сообщения: 7

Re: Selenium + Docker

Сообщение iOleg » 16.10.2018 12:59

serzh-z писал:
16.10.2018 11:57
P.S.: Вообще, для начала было бы проще отладить запуск Nightwatch локально (с HTTP/WebDriver-подключением к Selenium-хабу), не влезая в контейнеры selenium/*, а потом уже встроить Nightwatch в нужный контейнер.
А как по Вашему мнению лучше вообще: все же Nightwatch установить отдельно на этом же сервере где и docker образы или вкорячить его в образ docker selenium/hub?
Спасибо сказали:

Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 7520
Статус: Маньяк
ОС: Android, GNU/Linux, Windows

Re: Selenium + Docker

Сообщение serzh-z » 16.10.2018 17:13

iOleg
Я бы сделал отдельный контейнер.

Собственно, примерно так и делал когда-то: три контейнера с нодами и хабом Selenium, контейнеры с компонентами приложения, контейнер с Mocha и тестами. Все связано с помощью Docker Compose.
Scio me nihil scire.
Спасибо сказали:

iOleg
Сообщения: 7

Re: Selenium + Docker

Сообщение iOleg » 16.10.2018 18:22

serzh-z писал:
16.10.2018 17:13
Все связано с помощью Docker Compose.
Может быть знаете вдруг - переиграли все и в схеме появился Jenkins. И теперь задача - как запустить docker-compose на удаленном сервере с развернутым docker selenium/hub и node-chrome. Локально отрабатывает на ура docker-compose.yml, но не могу допереть, где нужно указать данные удаленного сервере для запуска на нем docker images необходимых?
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 14484
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Selenium + Docker

Сообщение Bizdelnick » 16.10.2018 18:26

iOleg писал(а):
16.10.2018 18:22
Локально отрабатывает на ура docker-compose.yml, но не могу допереть, где нужно указать данные удаленного сервере для запуска на нем docker images необходимых?
Что-то мне подсказывает, что надо добавить ноду и прописать её использование для задачи.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 7520
Статус: Маньяк
ОС: Android, GNU/Linux, Windows

Re: Selenium + Docker

Сообщение serzh-z » 16.10.2018 18:37

iOleg писал(а):
16.10.2018 18:22
Локально отрабатывает на ура docker-compose.yml, но не могу допереть, где нужно указать данные удаленного сервере для запуска на нем docker images необходимых?
Не понял.

Если задача на Jenkins представляет собою просто шелл-скрипт, то в нем можно просто указать те же команды (run) для запуска docker/docker-compose. Если же используется какой-нибудь Jenkins-плагин с поддержкой Docker, то надо смотреть в его документации.
Scio me nihil scire.
Спасибо сказали: