Skip to content

Latest commit

 

History

History
87 lines (63 loc) · 2.48 KB

README.md

File metadata and controls

87 lines (63 loc) · 2.48 KB

cucumber-junit

wercker status

Converts CucumberJS JSON output into JUnitXML for software like Jenkins to read.

Install

cucumber-junit should be added to your test codebase as a dev dependency. You can do this with:

$ npm install --save-dev cucumber-junit

Alternatively you can manually add it to your package.json file:

{
  "devDependencies" : {
    "cucumber-junit": "latest"
  }
}

then install with:

$ npm install --dev

Run

cucumber-junit should be appended to your existing Cucumber.JS commands

$ node_modules/.bin/cucumber-js --format=json | node_modules/.bin/cucumber-junit > output_JUnit.xml

The following options are supported by lib/cucumber_junit:

  • strict - if true, pending or undefined steps will be reported as failures
  • indent - passed to the [XML formatter][XML], defaults to 4 spaces
  • stream - passed to the [XML formatter][XML] to return the result as a stream
  • declaration - passed to the [XML formatter][XML]
  • prefix - added to each test suite name (if test are executed against multiple browsers/devices)

These options can be specified on the command line when calling .bin/cucumber-junit:

  • -s or --strict
  • -i 4 or --indent 4
  • -e UTF-8 or --encoding "UTF-*" - applied to the XML declaration

Gulp

cucumber-junit can be called from Gulp:

gulp.task('cucumber:report', ['cucumber'], function() {
    gulp.src('test-reports/cucumber.json')
        .pipe(cucumberXmlReport({strict: true}))
        .pipe(gulp.dest('test-reports'));
});

function cucumberXmlReport(opts) {
    var gutil = require('gulp-util'),
        through = require('through2'),
        cucumberJunit = require('cucumber-junit');
    
    return through.obj(function (file, enc, cb) {
        // If tests are executed against multiple browsers/devices
        var suffix = file.path.match(/\/cucumber-?(.*)\.json/);
        if (suffix) {
            opts.prefix = suffix[1] + ';';
        }
        
        var xml = cucumberJunit(file.contents, opts);
        file.contents = new Buffer(xml);
        file.path = gutil.replaceExtension(file.path, '.xml');
        cb(null, file);
    });
}

License

MIT © St. John Johnson [XML]: https://www.npmjs.com/package/xml#options