Nodejs Protractor + Jasmine + JUnitXmlReporter运行测试但不等待浏览器

时间:2014-07-14 06:17:04

标签: node.js angularjs protractor jasmine-node

我正在使用量角器对Angular网站进行端到端测试,但希望将结果导出到Jenkins可以读取的文件(JUnitXmlReporter),因此要实现这一点,我需要进行简单的更改&#34 34;到" 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"代码,所有测试将按预期开始工作,但没有为jenkins生成文件。

任何想法都错了吗?

1 个答案:

答案 0 :(得分:0)

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

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.');
  }
}

也就是说,如果您使用的是Protractor,那么您可能需要从JUnitXmlReporter对象调用jasmine,而不是jasmineReporters。我没有使用node-jasminejasmine-node-reporter-fix,因此我无法说明如何导出记者,但在"jasmine-reporters":"~1.0.0",记者仍然附在jasmine上1}}对象。

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