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: http://www.labelmedia.co.uk/blog/posts/setting-up-selenium-server-on-a-h...

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
/var/lib/jenkins/jobs/project/workspace/path/to/Suite.html
/var/lib/jenkins/jobs/project/workspace/path/to/logs/selenium.html

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.

http://path/to/app
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.
/var/lib/jenkins/jobs/project/workspace/path/to/Suite.html
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.
/var/lib/jenkins/jobs/project/workspace/path/to/logs/selenium.html
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...

  • Very impressed with yell's 3D maps, simply amazing: http://www.yell.com/maps/ 15 years 8 weeks ago
  • So much compelling about #ubuntu #lucid, but at the same time, stuff I can't live without in #kubuntu that deffinitely isn't in ubuntu 15 years 9 weeks ago
  • Scratch that! #ubuntu does have mouse wheel volume control, just not with the thingy open ooooooh! 15 years 9 weeks ago
  • Ok, lucid #ubuntu still doesn't let you control volume with your mouse wheel via the system tray icon, dissappointing 15 years 9 weeks ago
  • The Gimp resynthesizer plugin came in handy quicker than I thought it would: http://2tu.us/1xx3 15 years 11 weeks ago
  • Ohh, content-aware fill in #CS5, oooooooohhhhhhh, resynthesizer already been in Gimp for years: http://2tu.us/1xx3 15 years 11 weeks ago
  • @drupalninja There's a module for that! http://2tu.us/1xw4 15 years 12 weeks ago
  • See, programming by trial and error is foolproof... if you don't give up. 15 years 13 weeks ago
Oliver Polden