It’s not uncommon to have a CI server running tests based on Selenium and it’s not uncommon to get in troubles with Linux headless (without a windows manager) servers.
Usually you get errors like
Error: no display specified or may be
Error: cannot open display: :0.0
The following is what I think is a solution that should be portable and does not require a lot of configuration skills.
First of all you need to install the Jenkins Xvfb Plugin, which allows you to easily start a new virtual screen per Jenkins job. Please do not forget to properly configure this plugin in the Jenkins System Configuration screen as described in the plugin page: if you don’t know the path of the Xvfb executable you just run
which Xvfb in a shell on your CI server to get the full path to the command.
Usually the value you will use as Directory in which to find the Xvfb executable is
Once you have this you just need to activate the Xvfb plugin for your job and that should be it, without any modification in your POMs or any other hassle: the plugin will create a new virtual screen, set the DISPLAY environment variable and execute your build.
If you are using the FirefoxDriver, as I do, and you still have issues, but you can see in your output lines like the following ones, then your problems are not any longer related with being on a headless server and my suggestion is to ensure you are using the latest version of the selenium drivers:
Xlib: extension "RANDR" missing on display ":32". failed to create drawable *** LOG addons.xpi: startup *** LOG addons.xpi: Ignoring file entry whose name is not a valid add-on ID: /tmp/.../webdriver-staging *** LOG addons.xpi: checkForChanges *** LOG addons.xpi: No changes found
Please note the initial two lines are perfectly fine and not related to your issues!
I struggled with an error which actually went away right after I updated my selenium-java dependency to the current latest!