2016-04-06 17 views
3
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); 
}; 

IM黃瓜test.json但黃瓜步驟更新不及時的傳球失敗狀態如何使用此代碼生成JSON得到量角器[3.0.0]和黃瓜最新版本

雖然測試用例得到失敗它顯示結果爲通過

和json也沒有得到更新,雖然我添加一個鉤子後執行。

請幫我,所以我可以用量角器運行黃瓜js得到json。

我要生成正確的報告 這是我的方案

方案:登錄成功與有效帳戶

鑑於我去「http://store.demoqa.com/products-page/your-account/」 當我輸入用戶名和密碼 後來我看到「 Logut)」鏈接

Stepdefination文件

'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("[email protected]"); 
     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; 

回答

1

嘗試將其設置在配置文件中:

cucumberOpts: { 
    format: 'json:e2e-reports/json/results.json',} 

,打造如目錄保存JSON:

beforeLaunch:() => { 
const jsonReports = path.join(process.cwd(), '/e2e-reports/json'); 
    const htmlReports = path.join(process.cwd(), '/e2e-reports/html'); 
    if (!fs.existsSync(jsonReports)) { 
     mkdirp.sync(jsonReports); 
    } 
    if (!fs.existsSync(htmlReports)) { 
     mkdirp.sync(htmlReports); 
    }}