量角器的NodeJS茉莉花+ + JUnitXmlReporter运行测试,但无需等待浏览器(Nod

2019-10-20 11:31发布

Im做到底用量角器结束角网站的测试,但想将结果导出到文件詹金斯可以读取(JUnitXmlReporter),所以对于这个工作,我需要做一个“简单的改变”我的量角器的配置文件上在 “onPrepare”:

exports.config = {
  // Do not start a Selenium Standalone sever - only run this using chrome.
  framework: 'jasmine',
  // Capabilities to be passed to the webdriver instance.
  capabilities: {
    'browserName': 'chrome'
  },

  specs: [
    './test1.js',
    './test2.js'
  ], 
  // Options to be passed to Jasmine-node.
  jasmineNodeOpts: {
    showColors: true,
    isVerbose: true
  },
  onPrepare: function() {
      var jasmineReporters = require('jasmine-node-reporter-fix');
      jasmine.getEnv().addReporter(
             new jasmineReporters.JUnitXmlReporter('protractor_output', true, true, 'testresults.e2e.');
  }
};

但一旦我添加此“onPrepare”代码, 所有的试运行,而不必等待浏览器呈现HTML。 如果我删除“onPrepare”代码,所有的测试将开始按预期工作,但詹金斯生成任何文件。

任何想法什么错?

Answer 1:

您可能需要等待浏览器的承诺。

onPrepare: function() {
  var jasmineReporters = require('jasmine-node-reporter-fix');
  var capsPromise = browser.getCapabilities();
  capsPromise.then(function (caps) {
    jasmine.getEnv().addReporter(
      new jasmineReporters.JUnitXmlReporter(
        'protractor_output', true, true, 'testresults.e2e.');
  }
}

也就是说,如果你正在使用量角器,那么你可能需要调用JUnitXmlReporter关闭jasmine对象,而不是jasmineReporters 。 我不使用node-jasminejasmine-node-reporter-fix ,所以我不能给记者如何被导出说话,但"jasmine-reporters":"~1.0.0"记者在采访中还附着在jasmine对象。

https://github.com/larrymyers/jasmine-reporters#protractor



文章来源: Nodejs Protractor + Jasmine + JUnitXmlReporter runs the test but without waiting for the browser