Проблема с запуском браузера на teamcity агенте.

Всем привет. Не проходит тест на teamcity агенте, не поднимается браузер. Пробовал с chromedriver в обычном, а также headless режимах - ничего не получается.

org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally
(Driver info: chromedriver=2.33.506092 (733a02544d189eeb751fe0d7ddca79a0ee28cce4),platform=Linux 3.10.0-327.el7.x86_64 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 60.04 seconds
Build info: version: ‘3.8.1’, revision: ‘6e95a6684b’, time: ‘2017-12-01T18:33:54.468Z’
System info: host: ‘TPLTCRH7-1042279.net.billing.ru’, ip: ‘127.0.1.1’, os.name: ‘Linux’, os.arch: ‘amd64’, os.version: ‘3.10.0-327.el7.x86_64’, java.version: ‘1.8.0_111’
Driver info: driver.version: ChromeDriver
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$new$0(JsonWireProtocolResponse.java:53)
at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$getResponseFunction$2(JsonWireProtocolResponse.java:91)

При этом на локальной машине тест проходит, а на агенте нет. В build step предварительно сделал шаг установки chrome браузера, он устанавливается, но тест всё равно падает. С firefox тоже самое. Может кто сталкивался подскажите как решили эту проблему?

А зачем Вам отдельный build step для установки браузера? Просто установите его на агенте и всё.
Билд агент запускается в интерактивном режиме?
Какая ОС у Вас локально и какая на агенте?

Николай, есть такая проблема, почему что все агенты запускаются в интерактивном режиме, а мне это не надо, в службах отключил взаимодействие с рабочим столом и в настройках брандмавера тоже все сбросил по умолчанию, переустановил агенты, но они все равно автоматически в интерактивном режиме, как отключить этот режим?

Вы имеете ввиду что браузер запускается?

да, на всех агентах такое, хотя я ничего не настраивал специально

Пока только предположения. Буду перепроверять.
Интерактивный режим агента - это когда Вы видите окошко командной строки агента
Не интерактивный - это когда агент инсталируется как сервис
И в том и другом случае в коде агенту говорится выполни тест в браузере и он его запускает. Режим агента я предполагаю на это не влияет. Нужно либо в коде настраивать как я хочу запускать браузер (не уверен что это возможно примеру в Хроме. Хотя что-то слышал про без UI режим у Хрома) , либо использовать headless браузеры. Например, PhantomJS.

А Вы скриншоты в тестах не делаете? Если не будет UI браузера, то не будет и скриншотов и видео.

нет, скрины не делаю, суть в том что до этого агенты были на другой машине и там не было интерактивного режима все нормально работало, переставил на другую машину и там они стали в интерактиве бежать, решил вернуть обратно, но теперь и на той машине работает в интерактиве
Подумал что проблема в портах, которые настроились так, поэтому решил сбросить настройки портов, но не помогло

Можете запускать в докере а билд степом просто поднимайте перед стартом тестов каждый раз новый контейнер и все.
В самом контейнере уже накачаете туда для браузеров чего угодно и будет у вас к примеру ff и chrome как headless крутится там.
После тестов так же удобно будете все чистить просто кильнув ненужные контейнеры последним билд степом
Если мне не изменяет память то images selenium/node-chrome и selenium/node-firefox уже по умолчанию идут со всем что вам надо для старта тестов.

Пробовал воспроизвести Вашу ситуацию. Пока не получается.
Агент работает как сервис с включенной и выключенной галкой “Interact with desktop” в Windows 7 браузер не появляется, но появляется сообщение


Если его игнорить, то браузер не появляется, а тесты проходят.

Да, у меня на так же, один агент с таким сообщением, но два других запускаются с браузером без предупреждений
На разных компах аналогичная ситуация, но при первой установке агентов такого не было вообще, только после перустановки

Не совсем вас понял

Я говорю о том, что если ваши тесты запускать в изолированной среде то не имеет значение в каком режиме у вас стартуюем TeamCity. Если конкретно то TeamCity просто будет посредником для тестовой среды (он просто скажет в каком то билд степе “разверни мне контейнер с моим приложением и пусть этот контейнер установить уже готовые решения для селениум тестов”). Таким образом вы снимите всю ответственность за выполнение тестов с TeamCity и от него будет требоваться только стартануть нужную команду

Вот небольшой пример как это будет в TeamCity
Например это файл docker-compose.yml в котором уже будет (все что необходимо для прогона тестов это драйвер который уже там прописан, даже если еще что то надо будет поставить то это всегда можно дописать)
И потом вы просто поднимаете эту среду черезе билд степ обычным command line “например sudo docker-compose up”
И того вы имеет:

  • поднятие тестовой среды одной командой в которой уже все есть
  • ставите remote адресс на нужный контейнер и прогоняете тесты
  • TeamCity особождаеться от работы с тестами
    Потом можете последним билд степом просто сказать в command line “docker-compose down” и у вас процессы которые запускались docker-compose up кильнутся тем самым вы будете держать ваш сервер всегда в порядке и чистоте))
version: "2"
services:
  selenium-hub:
    image: selenium/hub:3.8.1
    container_name: selenium-hub
    ports:
      - "4444:4444"
  chrome:
    image: selenium/node-chrome:3.8.1
    depends_on:
      - selenium-hub
    environment:
      - HUB_PORT_4444_TCP_ADDR=selenium-hub
      - HUB_PORT_4444_TCP_PORT=4444

Думаю этот способ решит вашу проблему т.к у вас “org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally”

1 лайк

Спасибо за развернутый ответ, попробую у себя проверить данное решение, обязательно отпишусь