A small alteration to grunt's default phantom.js and qunit.js files to generate JUnit xml for qunit test results
A small alteration to grunt's default phantom.js and qunit.js files to render rudimentary junit compatible xml for use with Jenkins.
Warning This is primarily used to "get the job done" and there are issues with test timeouts generating broken xml and the testnames in the junit xml output. Feel free to submit PR's if you are feeling frisky.
This plugin currently overrides the default phantom.js and qunit.js files that are included with grunt.
Install the module with
npm install grunt-junit and then add the following to your
gruntloadNpmTasks "grunt-junit" ;
Then from the command line:
JUNIT_OUTPUT=test-output-dir/ grunt junit
All the xml can be found inside the
The file names will take the form
TEST-<dasherized-url>.xml and can be globed easily for use with a CI like Jenkins.
Please note that the "dasherizing" is most likely exceptionally fragile, so please do report issues with specific test urls and I'll make corrections
The junit task is identical to the running qunit save for the additional xml rendering to the output directory. You can find information on configuring the qunit grunt task here.
For any and all commands that have
grunt you can replace them with
node node_modules/.bin/grunt after an
The test suite runs a dummy qunit test that will generate the junit xml and then the test suite will check the xml for some basic properties. You can run the test suite with:
npm install JUNIT_OUTPUT=test/output/ grunt junit --force
The initial test suite contains failures to test for the failure xml, and as a result the
--force option is necessary. Obviously this also means you need to ignore the initial qunit failures and focus on the test out put from the
In lieu of a formal style guide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using
grunt lint from the project root.
Copyright (c) 2012 John Bender Licensed under the MIT license.