Webdriverio: ESOCKETTIMEDOUT beim Starten von Tests in Jenkins

Erstellt am 5. Apr. 2018  ·  4Kommentare  ·  Quelle: webdriverio/webdriverio

Das Problem

Ich kann Tests in Jenkins nicht mehrmals ausführen. Ich kann Tests auf meinem lokalen Computer mehrmals ausführen und es funktioniert immer einwandfrei, aber ich erhalte einen ESOCKETTIMEDOUT-Fehler in Jenkins.

Umfeld

  • WebdriverIO-Version: passiert mit 4.10.1 und aktualisiert auch auf 4.12.0
  • Node.js-Version: 8.9.1
  • Standalone-Modus oder wdio testrunner: Standalone
  • wenn wdio testrunner, synchrone oder asynchrone Tests ausführen: sync
  • Zusätzliche verwendete wdio-Pakete (falls zutreffend): Ich verwende Gurken-Boilerplate

Einzelheiten

Es ist wichtig zu erwähnen, dass ich mich nicht wiederherstellen kann, wenn ich diesen Fehler erhalte (wenn der Job in Jenkins immer wieder ausgeführt wird, wird immer der gleiche Fehler erzeugt). Aber ich konnte es 2-3 Mal ohne Fehler ausführen (also habe ich gesehen, dass es funktioniert).
Tests werden in Chrome gestartet. Jenkins Sklave ist ein MacMini. Die Bereitstellung von Selen-Host und -Port behebt das Problem nicht.

Link zu Selenium/WebdriverIO-Protokollen

Der Jenkins-Fehler mit ausführlichem Loglevel lautet wie folgt:

+ 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.

Code zum Reproduzieren des Problems

Der Job von Jenkins ist sehr einfach:

  • in ein bestimmtes Verzeichnis gehen
  • Knotenversion einstellen
  • Garn installieren
  • Starten Sie die Tests mit: Garnlauf wdio

Hilfreichster Kommentar

Für diejenigen, die das gleiche Problem haben können, habe ich es gerade mit Headless Chrome versucht und es funktioniert seit einigen Tagen einwandfrei :D Fügen Sie also die "headless" chromeOption zu Ihren Fähigkeiten hinzu und sehen Sie, ob es funktioniert.

Alle 4 Kommentare

Anscheinend kann WebdriverIO keine Verbindung zum WebDriver-Back-End (wahrscheinlich Chromedriver) herstellen. Dies kann viele Gründe haben, aber es ist unwahrscheinlich, dass es mit WebdriverIO zusammenhängt. Etwas stimmt nicht mit Ihrem Treiber-Setup. Vielleicht führen Sie viele Tests gleichzeitig durch? Es gibt nichts, was wir tun können, um dies in WebdriverIO zu beheben. Deshalb schließen Sie diese. Melde dich gerne bei unserem SupportGitter wenn Sie weitere Fragen haben.

Hallo @christian-bromann danke für deine schnelle Antwort.

Ich mache mir Sorgen, weil ich nur einen Test (eine Funktion), die Anmeldung durchführe, und wie ich bereits erwähnt habe, konnte ich es 2-3 Mal in Jenkins sehen, aber dann schlug es fehl (immer mit dem gleichen Fehler) ). Ist es möglich, dass der Selen/Webtreiber nicht richtig getrennt/geschlossen ist, wenn der Test abgeschlossen ist? Vielleicht gibt es einige geöffnete Verbindungen aus früheren Läufen?

Ich habe andere verschiedene Tests durchgeführt (da ich verschiedene Webs teste) und neue Jobs in Jenkins konfiguriert und das gleiche Problem gefunden. Erste Tests funktionieren einwandfrei und dann schlug es mit ESOCKETTIMEDOUT fehl.

Auch hier kann ich diese Tests ohne Probleme und mehrmals lokal ausführen.

Für diejenigen, die das gleiche Problem haben können, habe ich es gerade mit Headless Chrome versucht und es funktioniert seit einigen Tagen einwandfrei :D Fügen Sie also die "headless" chromeOption zu Ihren Fähigkeiten hinzu und sehen Sie, ob es funktioniert.

Hallo @LaiaPR , ich hatte heute das gleiche Problem. Wie Sie vorgeschlagen haben, behebt das Hinzufügen der Option "headless" das Problem. Vielen Dank!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen