Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

PHPUnit тесты в докере с selenium Hub - как правильно настроить?

docker
phpunit
docker-selenium
selenium-grid
testng
selenium
Теги: #<Tag:0x00007fedb7e104b8> #<Tag:0x00007fedb7e10378> #<Tag:0x00007fedb7e101c0> #<Tag:0x00007fedb7e11390> #<Tag:0x00007fedb7e0fdb0> #<Tag:0x00007fedb7e0fa18>

(Владимир Голубев) #1

Не могу разобраться, что именно нужно ещё настроить в данной связке. На данный момент у меня в докере в дев окружении крутится сайт на php со своей кучей зависимостей(всё по отдельным контейнерам). PHPUnit поднят в своём контейнере, в него слинкована папка сайта, и у него есть зависимость от контейнера с nginx.
Кусок docker-compose:

phpunit:
      image: phpunit/phpunit:5.7.12
      volumes_from:
          - fpm
      working_dir: /var/www/html/
      links:
          - nginx

Интеграционные тесты в связке с Goutte работают отлично (используется библиотека “laracasts/integrated”: “^0.15.6”), в связке с Selenium БЕЗ докера ранее всё тоже работало (поднимал сервер селениума вручную).

Сейчас пытаюсь настроить запуск селениум тестов внутри докера, по инструкции с https://github.com/elgalu/docker-selenium запулил и запустил контейнер:

docker exec grid wait_all_done 30s
Waiting for docker-selenium to be ready…
Container docker internal IP: 172.17.0.2
Selenium all done and ready for testing!

На http://localhost:4444/ появилась страничка
Selenium Grid Hub v.3.6.0, но дальше возникают проблемы.

При попытке запуска тестов, PHPUnit ругается, и говорит что я забыл запустить селениум:

WebDriver\Exception\CurlExec: Hold on there, partner. Did you maybe forget to boot up Selenium?
java -jar selenium-server-standalone-*.jar
Curl error thrown for http POST to http://localhost:4444/wd/hub/session with params: {“desiredCapabilities”:{“browserName”:“firefox”}}
Failed to connect to localhost port 4444: Connection refused

Страничка http://localhost:4444/wd/hub/session выдаёт 500 ошибку с большим логом ошибок java если на неё зайти вручную(не знаю, нормальное ли это поведение)

Собственно, я даже не могу понять, надо ли что-то донастроить в селениуме, или нужно прописать что-то в тесте, или проблема в самом докере, и PHPUnit просто не видит куда стучаться к селениум хабу.
Буду благодарен за любые подсказки)


(Владимир Голубев) #2

Нашёл проблему - контейнер не видит localhost, точнее - для него это его собственный хост(((
Перенастроил через docker-compose, чтобы всё работало в одной сетке (добавил сервисы отсюда: https://github.com/elgalu/docker-selenium/blob/master/docker-compose-tests.yml ), указал в контейнере phpunit нужный хост, теперь он запускает тесты и висит до посинения, в консоли хаба написано: “1 requests waiting for a slot to be free.”, хотя я создал по три инстанса хрома и фаерфокса.
Вопрос - как выделить ему эти нужные слоты? Что нужно поменять в дефолтном конфиге сервисов, или какую команду запустить?