module.exports = function JsonOutputHook() {
var Cucumber = require('cucumber');
var JsonFormatter = Cucumber.Listener.JsonFormatter();
var fs = require('fs');
JsonFormatter.log = function (json) {
fs.writeFile('../reports/cucumberReport.json', json, function (err) {
if (err) throw err;
console.log('json file location: ../reports/cucumberReport.json');
});
};
this.registerListener(JsonFormatter);
};
I am using this code to generate json, but cucumber steps are not updating the pass fail status.
Though the test case got failed it shows result as Pass. And json is also not getting updated though I am adding a hook after execution.
Please help me so I can run cucumber-js with protractor to get json. I want to generate correct report.
This is my scenario: Login successful with valid account
Given I go on "http://store.demoqa.com/products-page/your-account/"
When I input user and password
Then I should see "Logout" link
Step definition file
'use strict';
var myStepDefinitionsWrapper = function () {
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
var expect = chai.expect;
this.Given(/^I go on "([^"]*)"$/,{timeout: 60 * 1000},function (arg1) {
browser.driver.get(arg1);
browser.manage().timeouts().pageLoadTimeout(10000);
});
this.When(/^I input user and password$/,{timeout: 60 * 1000}, function (callback) {
console.log("000000000000");
browser.sleep(5000);
browser.wait(function() {
var login = by.id('log');
return browser.driver.isElementPresent(login);
}, 30000);
browser.driver.findElement(by.id('log')).sendKeys("pratand");
browser.driver.findElement(by.id('pwd')).sendKeys("cygent@india11");
browser.driver.findElement(by.id('login')).click();
callback();
});
this.Then(/^I should see "([^"]*)" link$/,{timeout: 60 * 1000},function (arg1,callback) {
var logoutpath = by.xpath('//div[@id="account_logout"]/a');
browser.wait(function() {
return browser.driver.isElementPresent(logoutpath);
}, 30000);
expect(browser.driver.findElement(logoutpath).getText()).to.eventually.equal(arg1).and.notify(callback());
// expect(true).toEqual(true);
browser.driver.isElementPresent(logoutpath).then(function(isPresent){
browser.driver.findElement(logoutpath).then(function(start){
start.click();
});
});
});
};
module.exports = myStepDefinitionsWrapper;