ошибка gulp-protractor с chrome v54/веб-драйвером v2.25

Из-за последнего обновления Chrome (v54) мы заметили, что наши тесты транспортира не работают. Мы попытались обновить до последней версии gulp-protractor (v3.0.0), который, в свою очередь, загружает последнюю версию веб-драйвера (v2.25), чтобы решить проблему, но, к сожалению, возникает новая ошибка, которую нам не удалось устранить.

До обновления хрома все работало нормально.

Конфигурация нашего транспортира выглядит следующим образом:

exports.config = {
  // Capabilities to be passed to the webdriver instance.
  capabilities: {
    'browserName': 'chrome'
  },

  onPrepare: function () {
      var fs = require('fs');
      var testDir = 'testresults/';
      if (!fs.existsSync(testDir)) {
          fs.mkdirSync(testDir);
      }

      var jasmineReporters = require('jasmine-reporters');

      // returning the promise makes protractor wait for the reporter config before executing tests
      return browser.getProcessedConfig().then(function () {
          // you could use other properties here if you want, such as platform and version

          var browserName = 'browser';
          browser.getCapabilities().then(function (caps) {
              browserName = caps.caps_.browserName.replace(/ /g, "_");

              var junitReporter = new jasmineReporters.JUnitXmlReporter({
                  consolidateAll: true,
                  savePath: testDir,
                  // this will produce distinct xml files for each capability
                  filePrefix: 'test-protractor-' + browserName,
                  modifySuiteName: function (generatedSuiteName) {
                      // this will produce distinct suite names for each capability,
                      // e.g. 'firefox.login tests' and 'chrome.login tests'
                      return 'test-protractor-' + browserName + '.' + generatedSuiteName;
                  }
              });
              jasmine.getEnv().addReporter(junitReporter);
          });
      });
  },

  baseUrl: 'http://localhost:3000',

  // Spec patterns are relative to the current working directory when
  // protractor is called.
  specs: [paths.e2e + '/**/*.js'],

  // Options to be passed to Jasmine-node.
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 30000
  }
};

Ошибка:

[13:27:13] E/launcher - Error: Error
    at C:\ws\node_modules\protractor\built\util.js:55:37
    at _rejected (C:\ws\node_modules\q\q.js:844:24)
    at C:\ws\node_modules\q\q.js:870:30
    at Promise.when (C:\ws\node_modules\q\q.js:1122:31)
    at Promise.promise.promiseDispatch (C:\ws\node_modules\q\q.js:788:41)
    at C:\ws\node_modules\q\q.js:604:44
    at runSingle (C:\ws\node_modules\q\q.js:137:13)
    at flush (C:\ws\node_modules\q\q.js:125:13)
    at nextTickCallbackWith0Args (node.js:420:9)
    at process._tickCallback (node.js:349:13)
[13:27:13] E/launcher - Process exited with error code 100

person PremiumTier    schedule 27.10.2016    source источник


Ответы (1)


onPrepare оценивается в файле build/util.js в функции runFilenameOrFn_. К сожалению, трассировка стека бесполезна, но это означает, что onPrepare содержит ошибки. Глядя на ваш метод onPrepare, возникает ошибка при назначении browserName из возможностей браузера. В вашем коде caps.caps_ на самом деле не определено. Поскольку caps.caps_ не определено, caps.caps_.browserName выдает ошибку. Доступ к объекту возможностей должен осуществляться следующим образом:

browser.getCapabilities().then(capabilities => {
  let browserName = capabilities.browserName.replace(/ /g, "_");
person cnishina    schedule 28.10.2016
comment
Хотя ваш код не решил мою проблему из коробки, он явно привлек внимание к проблеме - очевидно, в недавнем обновлении веб-драйвера Chrome доступ к частному свойству «caps_» стал невозможен. Вероятно, не стоило использовать его в любом случае, поэтому решение было таким: browserName = capabilities.get('browserName').replace(/ /g, "_"); Вот ссылка кому-то еще с этой проблемой. Большое спасибо за Вашу помощь! Никогда бы не подумал, что функция onPrepare вызовет такую ​​туманную ошибку. - person PremiumTier; 28.10.2016
comment
Без проблем. runFilenameOrFn_ сообщение об ошибке бесполезно. В конечном итоге это будет улучшено. - person cnishina; 29.10.2016