Selenium + Docker (Запуск тестовых скриптов на Нодах)
Модератор: SLEDopit
Selenium + Docker
Всем добра!
Прошу помощи в вопросе ----
имеется 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. Уже обгуглился полностью! Прошу помощи!!!
Прошу помощи в вопросе ----
имеется 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
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: Selenium + Docker
iOleg
А тесты на чем написаны?
Есть подозрение, что вы неправильно понимаете, как работает Selenium. Если в общем, то так: тест-раннер -> тест (вероятно, тот самый "скрипт") -> Selenium-драйвер -> ферма Selenium.
Драйверу нужно знать адрес хаба, куда слать команды. Контейнеры с нодами (с безголовыми браузерами) должны иметь сетевой доступ к серверу приложения для которого запускаются тесты.
А тесты на чем написаны?
Есть подозрение, что вы неправильно понимаете, как работает Selenium. Если в общем, то так: тест-раннер -> тест (вероятно, тот самый "скрипт") -> Selenium-драйвер -> ферма Selenium.
Драйверу нужно знать адрес хаба, куда слать команды. Контейнеры с нодами (с безголовыми браузерами) должны иметь сетевой доступ к серверу приложения для которого запускаются тесты.
Re: Selenium + Docker
Nightwatcher. Написал тест js, проверил работоспособность (проверял на машине без doker-ов), НО вот когда понадобилось развернуть схему hub-nodes, то стало не ясно....
На данный момент имеется selenium/hub, куда я доустановил nightwath, связал (--link) данный hub с selenium/node-chrome, но вот как запустить тест и направить его на node что то не ясно((
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: Selenium + Docker
Эээ...
Нужно всего лишь поправить nightwatch.json, прописав там адрес и порт хаба Selenium (selenium_*), который запущен в контейнере.
Nightwatch можно и нужно запускать локально. Он через веб-драйвер будет коннектиться к Selenium-хабу по HTTP. Ничего доустанавливать на хаб не нужно.
Re: Selenium + Docker
У меня сейчас такая схема: есть сервер где установлен docker и 2 image - selenium/hub и selenium/node-chrome, в selenium/hub я накатил еще nightwatch (и все зависимости для выполнения тестовых скриптов) и на основании этого сделал свой образ (commit-командой). Теперь хочу запускать тесты из новособранного образа. Я сделал что то не так?) Надо nightwatch ставить вне docker?
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: Selenium + Docker
А, слепили воедино тест-раннер и хаб - ну и так можно. А можно было бы сделал ещё один контейнер, в котором запускаются тесты, чем усложнять и без того перегруженный контейнер хаба.
А так, запускаете в хабе оболочку, если она там есть (docker exec ... sh), и руками запускаете установленный там Nightwatch и тесты.
Re: Selenium + Docker
А тогда еще такой вопрос: я же правильно понимаю, что 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
}
}
}
}
"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
Да. Связывание нод с хабом выполняется автоматически, либо через переменную среды HUB_HOST, либо через `--link selenium-hub:hub`.
У Nightwatch (у модуля веб-драйвера, от которого он зависит) есть возможность запуска собственной копии Selenium. В случае использования собственной фермы Selenium, ничего дополнительно запускать ему не нужно и start_process стоит отключить. Nightwatch, в данном случае, просто тонкий клиент, выполняющий тесты и работающий с Selenium по HTTP/WebDriver.
P.S.: Вообще, для начала было бы проще отладить запуск Nightwatch локально (с HTTP/WebDriver-подключением к Selenium-хабу), не влезая в контейнеры selenium/*, а потом уже встроить Nightwatch в нужный контейнер.
Re: Selenium + Docker
А как по Вашему мнению лучше вообще: все же Nightwatch установить отдельно на этом же сервере где и docker образы или вкорячить его в образ docker selenium/hub?
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: Selenium + Docker
iOleg
Я бы сделал отдельный контейнер.
Собственно, примерно так и делал когда-то: три контейнера с нодами и хабом Selenium, контейнеры с компонентами приложения, контейнер с Mocha и тестами. Все связано с помощью Docker Compose.
Я бы сделал отдельный контейнер.
Собственно, примерно так и делал когда-то: три контейнера с нодами и хабом Selenium, контейнеры с компонентами приложения, контейнер с Mocha и тестами. Все связано с помощью Docker Compose.
Re: Selenium + Docker
Может быть знаете вдруг - переиграли все и в схеме появился Jenkins. И теперь задача - как запустить docker-compose на удаленном сервере с развернутым docker selenium/hub и node-chrome. Локально отрабатывает на ура docker-compose.yml, но не могу допереть, где нужно указать данные удаленного сервере для запуска на нем docker images необходимых?
- Bizdelnick
- Модератор
- Сообщения: 20792
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Selenium + Docker
Что-то мне подсказывает, что надо добавить ноду и прописать её использование для задачи.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: Selenium + Docker
Не понял.
Если задача на Jenkins представляет собою просто шелл-скрипт, то в нем можно просто указать те же команды (run) для запуска docker/docker-compose. Если же используется какой-нибудь Jenkins-плагин с поддержкой Docker, то надо смотреть в его документации.
Re: Selenium + Docker
Тогда уж в продолжении задачи - selenium/hub и node-chrome запущены (слава Богу), последняя задача теперь запустить с дженкинс машины (nightwatch+node) скрипт .js для выполнения наипростейшего теста на google.com на selenium/hub+node-chrome. Имеется опыт в аналогичном вопросе. Подойдет опять же самый тупой способ))) хотя бы....
Re: Selenium + Docker
На локальной машине когда разворачивал NW+node+безголовый_хром я выполнял аналогичный тест без проблем, но теперь надо как то пусть его же, но уже запульнуть selenium/hub+node-chrome...
Re: Selenium + Docker
Можно даже упростить...без Дженкинс. Есть сервер где стоят докер и контейнер селениум/хаб и селеним/нод-хром плюс контейнер с найтвочем. Как из ОС запустить тест-скрипт в этой схеме? 0_о