【问题标题】:How to get cucumber-test.json from protractor [3.0.0] and cucumber latest version如何从量角器 [3.0.0] 和 cucumber 最新版本中获取 cucumber-test.json
【发布时间】:2018-09-19 22:34:07
【问题描述】:
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);
};

我正在使用此代码生成json,但是黄瓜步骤没有更新通过失败状态。

虽然测试用例失败了,但结果显示为通过。尽管我在执行后添加了一个钩子,但 json 也没有得到更新。

请帮助我,以便我可以使用量角器运行 cucumber-js 来获取 json。我想生成正确的报告。

这是我的场景:使用有效帐户登录成功

Given I go on "http://store.demoqa.com/products-page/your-account/"
When I input user and password
Then I should see "Logout" link

步骤定义文件

'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;

【问题讨论】:

    标签: javascript json protractor cucumberjs


    【解决方案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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      相关资源
      最近更新 更多