angularjs 量角器 3.3.0 未报告规格

angularjs protractor 3.3.0 not reporting specs

我没有看到通过的 运行 的预期输出,断言未列出。我希望看到这一行中的断言“1 spec, 0 failures”。

输出:

  [18:28:06] I/hosted - Using the selenium server at http://localhost:4444/wd/hub
  [18:28:06] I/launcher - Running 1 instances of WebDriver
  Started
  .


  1 spec, 0 failures
  Finished in 0.854 seconds
  [18:28:08] I/launcher - 0 instance(s) of WebDriver still running
  [18:28:08] I/launcher - chrome #01 passed

运行 输出的预期结束,如量角器网站上所见,http://www.protractortest.org/#/ "Run the test"):

  1 test, 3 assertions, 0 failures

规格:

  describe('Viewing index.html', function() {
  'use strict';


   beforeEach(function(){
     browser.get('/');
   });

   it('should have pages in left nav', function() {
      expect(element.all(by.repeater('page in adminClient.selectedSite.pages')).count()).toBeGreaterThan(0);
    });

  });

我确认 by.repeater 定位器有效:

  element.all(by.repeater('page in adminClient.selectedSite.pages')).count()
         .then(function(count){
            console.log('page count: ' + count);
      });

[更新] 根据这个 SO,这是一个版本问题,有人建议在 onPrepare 挂钩上注入 jasmine 记者,但这对我造成了更多 运行 时间错误。

我的量角器配置:

  exports.config = {
    allScriptsTimeout: 11000,
    chromeOnly: true,
    chromeDriver: 'node_modules/protractor/bin/selenium/chromedriver_2.21',
    seleniumAddress: 'http://localhost:4444/wd/hub',
    specs: ['tests/e2e/*-spec.js'],
    capabilities: {
      'browserName': 'chrome'
    },
    baseUrl: 'http://localhost:8889/',
    framework: 'jasmine',
    jasmineNodeOpts: {
      showColors: true,
      defaultTimeoutInterval: 30000
    }
  };

要查看规范名称和断言,您必须将 --verbose 标志传递给量角器。如果你正在使用 g运行t 或其他东西到 运行 量角器,你需要在你的配置中指定这个标志。

编辑 阅读您的编辑后,我相信我已经找到了解决您问题的方法。我已经在我自己的一个项目中尝试过它,它似乎有效。

潜在的问题是您可能正在使用量角器 3,它不再支持许多以前的选项,尤其是在 jasmineNodeOpts 中。要解决此问题,您应该将量角器的版本降级到 2,最新版本是 2.5.1

Here's the related issue on protractor's github repository。它还在 onPrepare 挂钩中提到了一个自定义报告器,就像您正在谈论的那样,但另一个不同:jasmine-spec-reporter。我使用与您使用的配置略有不同的配置也能正常工作,但它不显示断言,只是具有更好的测试输出,我非常喜欢:

jasmineNodeOpts: {
  print: function () {} // remove dots for each test
},

onPrepare: function () {
    var SpecReporter = require('jasmine-spec-reporter');
    jasmine.getEnv().addReporter(new SpecReporter({displayStackTrace: true}));
}