2017-10-03 3 views
0

Das Problem, mit dem ich konfrontiert wurde, ist, dass, wenn ich mit UI-Tests zu bauen, kann es keine xvfb-Anzeige zum Starten des Browsers finden.TeamCity-Agent mit UI-Tests kann nicht xvfb anzeigen

Server läuft mit Ubuntu 16.

  1. In Headless Modus Chrom gut funktioniert.
  2. Wenn ich manuell Tests wie "mvn clean test" starte - Chrome funktioniert gut. xvfb Server rinnt, ich kann es in der Prozessliste sehen. Ich mache: Export DISPLAY =: 99 und alles funktioniert gut.
  3. Wenn ich beginnen Tests in TC ich diese:

[MainPageTest] java.lang.IllegalArgumentException: org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally (Driver info: chromedriver=2.32.498513 (2c63aa53b2c658de596ed550eb5267ec5967b351),platform=Linux 4.4.0-92-generic x86_64) (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 60.06 seconds Build info: version: '3.4.0', revision: 'unknown', time: 'unknown' System info: host: 'tc.atbdev.ru', ip: '172.31.1.100', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-92-generic', java.version: '1.8.0_144' Driver info: driver.version: ChromeDriver

Kann mir jemand sagen, was ich falsch gemacht habe? Vielleicht sollte ich eine Nummer von DISPLAY irgendwo in Buildkonfiguration zeigen? Ich habe auch Xvnc-Display mit gnome Desktop - kann ich es tatsächlich für Tests verwenden?

UPD: Aber ich habe vergessen zu erwähnen, dass TC und sein Standard-Agent auf dem gleichen Server sind. TC startet per Skript:

Antwort

0

Vielleicht ist ein Docker-basierter Ansatz in Ihrem Fall besser. Schauen Sie sich beispielsweise unseren "docker-headless-vnc-container" https://github.com/ConSol/docker-headless-vnc-container an, in dem alle Probleme bereits gelöst sind. Außerdem haben Sie den Vorteil, dass die Hole UI in einer separaten Containerumgebung gekapselt ist. Dort können Sie eine echte Desktop-Benutzeroberfläche und einen Browser ausführen. Während der Laufzeit des Containers können Sie über VNC in den Container schauen.

Wenn Sie maven im Inneren des Containers verwenden möchten, werfen Sie einen Blick auf