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

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

Модератор: SLEDopit

Ответить
iOleg
Сообщения: 11

Selenium + Docker

Сообщение iOleg »

Всем добра!
Прошу помощи в вопросе ----
имеется 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
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Selenium + Docker

Сообщение serzh-z »

Какой фреймворк для тестирования используете?
Спасибо сказали:
iOleg
Сообщения: 11

Re: Selenium + Docker

Сообщение iOleg »

serzh-z писал:
10.10.2018 14:23
Какой фреймворк для тестирования используете?
Скорее всего никакой, тк в инстр на просторах интернета после развертывания контейнеров как то сразу идет "и запускаем скрипт...". Вот и возник вопрос, а как запускаем, где запускаем.... :crazy:
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Selenium + Docker

Сообщение serzh-z »

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

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

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

Re: Selenium + Docker

Сообщение iOleg »

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

Re: Selenium + Docker

Сообщение serzh-z »

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

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

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

Re: Selenium + Docker

Сообщение iOleg »

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

Re: Selenium + Docker

Сообщение serzh-z »

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

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

Re: Selenium + Docker

Сообщение iOleg »

А тогда еще такой вопрос: я же правильно понимаю, что 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
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Selenium + Docker

Сообщение serzh-z »

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 в нужный контейнер.
Спасибо сказали:
iOleg
Сообщения: 11

Re: Selenium + Docker

Сообщение iOleg »

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

Re: Selenium + Docker

Сообщение serzh-z »

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

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

Re: Selenium + Docker

Сообщение iOleg »

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

Re: Selenium + Docker

Сообщение Bizdelnick »

iOleg писал(а):
16.10.2018 18:22
Локально отрабатывает на ура docker-compose.yml, но не могу допереть, где нужно указать данные удаленного сервере для запуска на нем docker images необходимых?
Что-то мне подсказывает, что надо добавить ноду и прописать её использование для задачи.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Selenium + Docker

Сообщение serzh-z »

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

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

Re: Selenium + Docker

Сообщение iOleg »

serzh-z писал:
16.10.2018 18:37
Если же используется какой-нибудь Jenkins-плагин с поддержкой Docker, то надо смотреть в его документации.
да) тупо плагин ssh поставил, пробросил ssh-key и в тело задачи добавил просто команду по запуску docker-compose. Очень не красиво, но работает!
Спасибо сказали:
iOleg
Сообщения: 11

Re: Selenium + Docker

Сообщение iOleg »

Тогда уж в продолжении задачи - selenium/hub и node-chrome запущены (слава Богу), последняя задача теперь запустить с дженкинс машины (nightwatch+node) скрипт .js для выполнения наипростейшего теста на google.com на selenium/hub+node-chrome. Имеется опыт в аналогичном вопросе. Подойдет опять же самый тупой способ))) хотя бы....
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Selenium + Docker

Сообщение serzh-z »

iOleg писал(а):
17.10.2018 10:44
Подойдет опять же самый тупой способ))) хотя бы...
А два скриншота, с кодом теста и командной строкой, на сайте Nightwatch тупо не подходят? =)
Спасибо сказали:
iOleg
Сообщения: 11

Re: Selenium + Docker

Сообщение iOleg »

serzh-z писал:
17.10.2018 14:02
А два скриншота, с кодом теста и командной строкой, на сайте Nightwatch тупо не подходят? =)
На локальной машине когда разворачивал NW+node+безголовый_хром я выполнял аналогичный тест без проблем, но теперь надо как то пусть его же, но уже запульнуть selenium/hub+node-chrome...
Спасибо сказали:
iOleg
Сообщения: 11

Re: Selenium + Docker

Сообщение iOleg »

Можно даже упростить...без Дженкинс. Есть сервер где стоят докер и контейнер селениум/хаб и селеним/нод-хром плюс контейнер с найтвочем. Как из ОС запустить тест-скрипт в этой схеме? 0_о
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Selenium + Docker

Сообщение serzh-z »

iOleg
serzh-z писал:
15.10.2018 18:08
Нужно всего лишь поправить nightwatch.json, прописав там адрес и порт хаба Selenium (selenium_*), который запущен в контейнере.
Если проще - нужно указать в конфигурации Nightwatch IP-адрес контейнера с хабом.
Спасибо сказали:
Ответить