Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Running headless firefox Xvfb with Jenkins to run selenium tests

I face with Error: no display specified error when running play framework tests in Jenkins at FreeBSD server. So every time I face with timeout

org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox

Jenkins has:

1) Xvfb plugin installed

2) Play Framework installed

Tests are written using selenide library and selenide module for play framework.

Xvfb configured and enabled in job configuration.

Job console output is:

Checking out Revision 3f485bd2e3dbcfa058fc19f89ab18020e36707d8 (origin/trunk)
...
Xvfb starting$ /usr/local/bin//Xvfb :1 -screen 0  -fbdir /usr/local/jenkins/xvfb-9-786185694297443042.fbdir
...
Command detected: clean
Command detected: deps --sync
Command detected: precompile
Command detected: auto-test
[YalsTests] $ /srv/java/play/play clean
...
~ using java version "1.8.0_72"
[YalsTests] $ /srv/java/play/play auto-test
~ 14 tests to run:
~
~ selenium/front/CorrectInput...         org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
Error: no display specified

    at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:113)
    at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:271)

Job configuration:

[X] Start Xvfb before the build, and shut it down after.
Xvfb specific display name  1
Xvfb display name offset 0

Invoke Play Framework       
Command set     Play 1.x 
Goals   
    Clean project [clean]
    Custom parameter
         Custom command deps --sync
    Precompile all Java sources and templates [precompile]
    Automatically run all application tests [auto-test]
like image 537
kyberorg Avatar asked Nov 09 '22 18:11

kyberorg


1 Answers

The selenium tasks needs to know the DISPLAY that it shall connect to. You can set it e.g. as an environment variable (don't forget to export it, if you do that in .profile)

export DISPLAY=:10

This is for bash, other shells might need a 2 step process:

DISPLAY=:10
export DISPLAY

You can also specify the variable at the command line before the command:

DISPLAY=:10 java -jar mySelenium.jar
like image 144
lilalinux Avatar answered Nov 15 '22 06:11

lilalinux