2015-01-30 7 views
7

Просто хотелось бы знать, можно ли указать Cli арг для транспортир какЕсть ли способ передать несколько браузер с помощью транспортира кли

--multiCapabilities.0.browserName хром --multiCapabilities.1.browserName светлячок

так, чтобы он переопределял multiCapabilities, определенные в файле confractor conf.

ответ

4

Есть несколько вещей, которые вы могли бы попробовать.

How can I use command line arguments in Angularjs Protractor? объясняет, как передать переменную params, которая, если бы вы были полностью прокомментированы позже в файле конфигурации, с секцией multiCapabilities (возможно, используйте вспомогательную функцию или оператор if, чтобы вы не должны пройти сложный объект из командной строки). Нелегко сделать, но возможно.

https://sourcegraph.com/github.com/teerapap/grunt-protractor-runner (см. Раздел «Параметры») - это утилита, которая позволяет без проблем передавать эти вещи из командной строки. Это с открытым исходным кодом, и кажется, что это будет легко модно, если оно не удовлетворит ваши потребности.

Самый простой вариант, предполагая, что вам просто нужно несколько различных опций, просто будет использовать два разных конфигурационных файла: «protractor.chrome.conf.js» и «protractor.firefox.conf.js» и запустить в зависимости от того, что который вам нужен в данный момент.

1

Это разумный запрос. Я создал PR для этого здесь: https://github.com/angular/protractor/pull/1770. Пока вы можете исправить этот PR для вашего местного транспортира, чтобы использовать эту функцию.

21

Конкретный пример первого предложения Исаака Лимена:

CLI:

protractor ... --params.browsers="chrome,firefox" 

conf.js:

var capabilities = { 
    chrome: { 
    browserName: 'chrome' 
    }, 

    firefox: { 
    browserName: 'firefox' 
    } 
}; 

... 

getMultiCapabilities: function() { 
    var browsers = this.params.browsers.split(','); 

    // Using lodash to select the keys in `capabilities` corresponding 
    // to the browsers param. 
    return _(capabilities) 
    .pick(browsers) 
    .values() 
    .value(); 
}, 
+0

Я не могу поверить, что вы не получили каких-либо upvotes для это отличное решение, которое работает с текущими ограничениями Protractor. Одно дело, что людям нужно будет «npm install --save-dev lodash» из командной строки, чтобы добавить lodash к своим узлам_модулям и «var _ = require ('lodash'); для импорта библиотеки. –