Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Running QUnit tests with Jenkins and Apache Ant?

Is it possible to execute my QUnit (javascript) unit tests from Jenkins? My build script is Apache Ant. Would Jenkins execute this as a separate Build Step, or would I need to add something in the config of my Ant build script?

like image 654
Agile Ace Avatar asked Apr 23 '12 05:04

Agile Ace


2 Answers

So, I have finally managed to figure this out.

Here's my end-to-end implementation:

  1. Install PhantomJS (http://phantomjs.org/) - I installed this in my build/tools folder

  2. Install the PhantomJS QUnit Runner script (https://gist.github.com/1588423) - also installed this in my build/tools folder

  3. Added the following target to my build.xml file:

    <target name="qunit" description="runs QUnit tests using PhantomJS">
      <!-- QUnit Javascript Unit Tests -->
      <echo message="Executing QUnit Javascript Unit Tests..."/>
      <apply executable="path-to-your-phantomjs-bin-folder/phantomjs" >
        <arg value="-path-to-your-build-tools/qunit-runner.js" />
        <arg line="--qunit path-to-your-qunit-folder/qunit.js --tests path-to-your-test-folder --juni path-where-you-want-to-write-the-JUnit-style-output/qunit-results.xml" />
        <fileset dir="${basedir}/${dir.test}" includes="tests.js" />
        <srcfile/>
      </apply>
    </target>
  1. Under my Jenkins project config, I now invoke Ant with "minify qunit"

  2. I point Jenkins to the JUnit-style output XML file

And, here is the workflow:

  1. Check changes into my repo
  2. Jenkins will poll GitHub for changes
  3. If there are any changes, Jenkins will pull down
  4. Ant will be invoked, doing the build, then running my unit tests
  5. The test results will be published in a JUnit-like XML format
  6. Jenkins will analyse this output file. If no tests failed, the build will be marked as "Success". If any tests failed, the build will be marked as "Unstable"
  7. Jenkins will deploy the web changes
  8. Jenkins will cleanup the work-area

PS: At the moment, you have to manually delete the JUnit-type XML output file. I will fix this later.

PS: Download the customized qunit.js (https://gist.github.com/2488794)

like image 92
Agile Ace Avatar answered Oct 19 '22 21:10

Agile Ace


I've written an Ant task specifically for this

https://github.com/philmander/ant-jstestrunner

like image 4
Phil Mander Avatar answered Oct 19 '22 22:10

Phil Mander