Setting up automated Selenium testing with Jenkins/Hudson

Please note: This article is old and refers to Selenium Server which has been deprecated by Selenium Webdriver so the following post is now pretty useless!

There's a big thing about unit testing at the moment, well, unit testing is something that's been around for years, and no doubt it's something that the best companies have been doing for a long time. There can be quite an overhead in setting up testing, especially unit testing, because it can require a test environment as well as the tests themselves. In the longer term, code is more stable, better managed, and you can be a lot more confident when deploying.

I've always been one for getting the best return on effort which is why I particularly like Selenium. There is the Firefox plugin for Selenium where you can record your tests directly from your browser, export them to your code base, commit them and then Jenkins will run them for you!

Without repeating stuff and giving credit where it's due I followed the blog here:

That got me most of the way but unfortunately, because I didn't understand all of the configuration lines it just didn't work. So hopefully, I can explain them now and help you set your own one up.

In the execute shell step we have this:

export DISPLAY=":99" && java -jar /var/lib/selenium/selenium-server.jar
-browserSessionReuse -htmlSuite *firefox http://path/to/app

This must be all on one line, that may not be completely true, but if you test the command from the terminal, then it must be all on one line because they are parameters for the selenium-server.jar program.

This is the web address of the site you are testing. The server doing the testing will need to access it so you should test it by curling it. I had the site running on the same server doing the tests so I also needed to check the vhost was set up correctly and the site was working.
I originally thought this was the filepath to the web root, I have no idea why I thought that now. It is the path to the Selenium test suite. You need to export your test suite from the Selenium IDE by doing: File > Export Test Suite As... > HTML. Note, there is also the option to 'Export Test Case'. I may have done and in fact it didn't work until I had both a test suite file and a test case file. e.g. testlogin.html which tested logging in, and testsuite.html which just pretty much specified testlogin.html. Both are readable HTML table structures. These need to be uploaded to the server to the path above and of course the full path calls the test suite rather than the test case.
This is a log file which I had to create and make sure was writeable by Jenkins.

If you're still having problems running Selenium through Jenkins then take the full command and run it through terminal. It should give you some useful errors and you can also add the -debug flag after selenium-server.jar.

Once it's all done, you'll have a link in Jenkins to the most recent selenium report on the project page and of course the build will fail if the Selenium tests fail.

Post new comment

By submitting this form, you accept the Mollom privacy policy.

User login

Author of...

  • search for 'search' on and bing comes up first!?!?!?! 8 years 35 weeks ago
  • A genius, high value tip/test for #Drupal #continuousintegration with #Jenkins and #selenium if I do say so myself 8 years 35 weeks ago
  • @philhawksworth Damn it! Someone beat me to it! 8 years 36 weeks ago
  • A short post I just wrote on setting up #Memcache for #Drupal: 8 years 37 weeks ago
  • Seems is down, but you can still download modules by hacking the download link to remove ftp. #drupal 8 years 38 weeks ago
  • dear #lazyweb #phpundercontrol ( #cruisecontrol ) or #jenkins for #drupal #continuousintegration 8 years 39 weeks ago
  • You've got to have some nuts to do this: 8 years 39 weeks ago
  • Dratman #drupal 8 years 39 weeks ago
Oliver Polden