I have a webapp build plan running on a Continuous Integration system (Atlassian Bamboo 2.5). I need to incorporate QUnit-based JavaScript unit tests into the build plan so that on each build, the Javascript tests would be run and Bamboo would interpret the test results.
Preferably I would like to be able to make the build process “standalone” so that no connections to external servers would be required. Good ideas on how to accomplish this? The CI system running the build process is on an Ubuntu Linux server.
As I managed to come up with a solution myself, I thought it would be a good idea to share it. The approach might not be flawless, but it’s the first one that seemed to work. Feel free to post improvements and suggestions.
What I did in a nutshell:
I will next go through the more detailed phases. This is what my my directory structure ended up looking like:
lib/ JsTestDriver.jar test/ qunit/ equiv.js QUnitAdapter.js jsTestDriver.conf run_js_tests.sh tests.js test-reports/ build.xmlOn the build server:
apt-get install Xvfb)apt-get install firefox)Into your application to be built:
equiv.jsandQUnitAdapter.jsjsTestDriver.conf):Create a script file for running the unit tests and generating test results (example in Bash,
run_js_tests.sh):Create an Ant target that calls the script:
Finally, tell the Bamboo build plan to both invoke the
testtarget and look for JUnit test results. Here the default"**/test-reports/*.xml"will do fine.