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 grunt.js
file.
grunt.loadNpmTasks( "grunt-junit" );
Then from the command line:
JUNIT_OUTPUT=test-output-dir/ grunt junit
All the xml can be found inside the test-output-dir/
.
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 npm install
.
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 test:files
task.
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.