Webdriverio: ESOCKETTIMEDOUT при запуске тестов в Jenkins

Созданный на 5 апр. 2018  ·  4Комментарии  ·  Источник: webdriverio/webdriverio

Эта проблема

Я не могу запускать тесты в Jenkins несколько раз. Я могу запускать тесты на своем локальном компьютере несколько раз, и он всегда работает нормально, но я получаю ошибку ESOCKETTIMEDOUT в Jenkins.

Среда

  • Версия WebdriverIO: произошло с 4.10.1, а также обновилось до 4.12.0
  • Версия Node.js: 8.9.1
  • Автономный режим или wdio testrunner: автономный
  • если wdio testrunner, запуск синхронных или асинхронных тестов: синхронизация
  • Используемые дополнительные пакеты wdio (если применимо): я использую шаблон огурца

Подробности

Важно отметить, что когда я получаю эту ошибку, я не могу восстановиться (повторное выполнение задания в Jenkins всегда приводит к одной и той же ошибке). Но мне удалось запустить его 2-3 раза без ошибок (так что я видел, как это работает).
Тесты запускаются в Chrome. Раб Дженкинса - это МакМини. Предоставление хоста и порта селена не решает проблему.

Ссылка на журналы Selenium / WebdriverIO

Ошибка Дженкинса с подробным логическим уровнем выглядит так:

+ yarn run local-webserver
yarn run v1.3.2
$ forever start -s ./node_modules/.bin/http-server ./demo-app -s
warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info:    Forever processing file: ./node_modules/.bin/http-server
Done in 0.44s.
+ yarn run wdio
yarn run v1.3.2
$ /Users/jenkins/workspace/family-portal-deploy-test/e2etests/node_modules/.bin/wdio
[18:48:07]  COMMAND POST     "/wd/hub/session"
[18:48:07]  DATA        {"desiredCapabilities":{"javascriptEnabled":true,"locationContextEnabled":true,"handlesAlerts":true,"rotatable":true,"maxInstances":5,"browserName":"chrome","loggingPrefs":{"browser":"ALL","driver":"ALL"},"requestOrigins":{"url":"http://webdriver.io","version":"4.12.0","name":"webdriverio"}}}
ERROR: ESOCKETTIMEDOUT
chrome
    at new RuntimeError (/Users/jenkins/workspace/family-portal-deploy-test/e2etests/node_modules/webdriverio/build/lib/utils/ErrorHandler.js:144:12)
    at Request._callback (/Users/jenkins/workspace/family-portal-deploy-test/e2etests/node_modules/webdriverio/build/lib/utils/RequestHandler.js:330:43)
    at self.callback (/Users/jenkins/workspace/family-portal-deploy-test/e2etests/node_modules/request/request.js:186:22)
    at emitOne (events.js:116:13)
    at Request.emit (events.js:211:7)
    at ClientRequest.<anonymous> (/Users/jenkins/workspace/family-portal-deploy-test/e2etests/node_modules/request/request.js:816:16)
    at Object.onceWrapper (events.js:313:30)
    at emitNone (events.js:106:13)
    at ClientRequest.emit (events.js:208:7)
    at Socket.emitTimeout (_http_client.js:708:34)
    at Object.onceWrapper (events.js:313:30)
    at emitNone (events.js:106:13)
    at Socket.emit (events.js:208:7)
    at Socket._onTimeout (net.js:407:8)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)

error Command failed with exit code 1.

Код для воспроизведения проблемы

То, что делает Дженкинс, очень просто:

  • перейти в конкретный каталог
  • установить версию узла
  • пряжа установить
  • запустить тесты с помощью: yarn run wdio

Самый полезный комментарий

Для тех, кто может столкнуться с той же проблемой, я просто попробовал использовать безголовый хром, и несколько дней назад он работал нормально: D Так что добавьте «безголовый» chromeOption в свои возможности и посмотрите, работает ли он.

Все 4 Комментарий

Похоже, WebdriverIO не может установить соединение с серверной частью WebDriver (вероятно, Chromedriver). Это может быть связано с множеством причин, но маловероятно, что это связано с WebdriverIO. Что-то не так с настройкой вашего драйвера. Может быть, вы одновременно выполняете несколько тестов? Мы ничего не можем сделать, чтобы исправить это в WebdriverIO. Для закрытия этого. Не стесняйтесь обращаться в нашу службу поддержкиGitter если у вас есть дополнительные вопросы.

Привет, @ christian-bromann, спасибо за быстрый ответ.

Меня беспокоит, потому что я запускаю только один тест (одна функция), вход в систему, а также, как я уже упоминал, я мог видеть, как он работает в Jenkins 2-3 раза, но затем он начал давать сбой (всегда с той же ошибкой ). Возможно ли, что селен / веб-драйвер плохо отключен / закрыт после завершения теста? Может быть, есть какие-то открытые соединения из предыдущих прогонов?

Я провел другие тесты (поскольку я тестирую разные сети), настроил новые задания в Jenkins и обнаружил ту же проблему. Первые тесты работают нормально, а затем он начал давать сбой с ESOCKETTIMEDOUT.

Опять же, я могу запустить эти тесты локально без проблем и несколько раз.

Для тех, кто может столкнуться с той же проблемой, я просто попробовал использовать безголовый хром, и несколько дней назад он работал нормально: D Так что добавьте «безголовый» chromeOption в свои возможности и посмотрите, работает ли он.

Привет @LaiaPR , сегодня у меня была такая же проблема. Как вы предположили, добавление опции «без головы» решает проблему. Спасибо!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

mrahman2327 picture mrahman2327  ·  3Комментарии

grofit picture grofit  ·  4Комментарии

KOPTE3 picture KOPTE3  ·  3Комментарии

kiraLinden picture kiraLinden  ·  3Комментарии

Windyq picture Windyq  ·  4Комментарии