An npm module and grunt plugin which generates your Protractor test reports in HTML with screenshots
npm install protractor-html-screenshot-reporterprotractor-html-screenshot-reporter module is available via npm:
bash
$ npm install protractor-html-screenshot-reporter --save-dev
`
In your Protractor configuration file, register protractor-html-screenshot-reporter in Jasmine:
`javascript
var HtmlReporter = require('protractor-html-screenshot-reporter');
exports.config = {
// your config here ...
onPrepare: function() {
// Add a screenshot reporter and store screenshots to /tmp/screnshots:
jasmine.getEnv().addReporter(new HtmlReporter({
baseDirectory: '/tmp/screenshots'
}));
}
}
`
Configuration
$3
You have to pass a directory path as parameter when creating a new instance of
the screenshot reporter:
`javascript
var reporter = new HtmlReporter({
baseDirectory: '/tmp/screenshots'
});
`
If the given directory does not exists, it is created automatically as soon as a screenshot needs to be stored.
$3
The function passed as second argument to the constructor is used to build up paths for screenshot files:
`javascript
var path = require('path');
new HtmlReporter({
baseDirectory: '/tmp/screenshots'
, pathBuilder: function pathBuilder(spec, descriptions, results, capabilities) {
// Return '/' as path for screenshots:
// Example: 'firefox/list-should work'.
return path.join(capabilities.caps_.browser, descriptions.join('-'));
}
});
`
If you omit the path builder, a GUID is used by default instead.
$3
You can modify the contents of the JSON meta data file by passing a function metaDataBuilder function as third constructor parameter:
`javascript
new HtmlReporter({
baseDirectory: '/tmp/screenshots'
, metaDataBuilder: function metaDataBuilder(spec, descriptions, results, capabilities) {
// Return the description of the spec and if it has passed or not:
return {
description: descriptions.join(' ')
, passed: results.passed()
};
}
});
`
If you omit the meta data builder, the default implementation is used
$3
You can define if you want report from skipped test cases using the takeScreenShotsForSkippedSpecs option:
`javascript
new HtmlReporter({
baseDirectory: '/tmp/screenshots'
, takeScreenShotsForSkippedSpecs: true
});
`
Default is false.
$3
Also you can define if you want capture screenshots only from failed test cases using the takeScreenShotsOnlyForFailedSpecs: option:
`javascript
new HtmlReporter({
baseDirectory: '/tmp/screenshots'
, takeScreenShotsOnlyForFailedSpecs: true
});
`
If you set the value to true, the reporter for the passed test will still be generated, but, there will be no screenshot.
Default is false.
$3
Also you can define a document title for the html report generated using the docTitle: option:
`javascript
new HtmlReporter({
baseDirectory: '/tmp/screenshots'
, docTitle: 'my reporter'
});
`
Default is Generated test report.
$3
Also you can change document name for the html report generated using the docName: option:
`javascript
new HtmlReporter({
baseDirectory: '/tmp/screenshots'
, docName: 'index.html'
});
`
Default is report.html.
$3
You can change stylesheet used for the html report generated using the cssOverrideFile: option:
`javascript
new HtmlReporter({
baseDirectory: '/tmp/screenshots'
, cssOverrideFile: 'css/style.css'
});
`
$3
You can preserve the base directory using preserveDirectory: option:
`javascript
new HtmlReporter({
baseDirectory: '/tmp/screenshots'
, preserveDirectory: true
});
`
Default is false.
HTML Reporter
On running the task via grunt, screenshot reporter will be generating json and png files for each test.
Now, you will also get a summary report, Stack trace information also.
With this postprocessing, you will get a json which has all the metadata, and also an html page showing the results.
!test report in html
Please see the examples folder for a sample usage.
For running the sample, do the following commands in the examples folder
`bash
$ npm install
$ grunt install
$ grunt test:e2e
``