Как я могу параметризовать свойство baseUrl файла конфигурации транспортира
Мне нужно запустить тесты транспортира в разных контекстах с разными baseUrl
в конфигурационных файлах. Я не хочу использовать отдельные файлы конфигурации для каждой ситуации, так как это сложнее поддерживать. Скорее, я хочу передать базовый url в качестве параметра командной строки. Вот что я пробовал до сих пор:
Файл protractor.conf.js:
exports.config = {
onPrepare : {
...
exports.config.baseUrl = browser.params.baseUrl;
...
}
}
И для вызова транспортира:
protractor protractor.conf.js --params.baseUrl 'http://some.server.com'
Это не работает, так как кажется, что экземпляр browser
уже настроен до вызова onPrepare
.
Аналогично, я пробовал это:
exports.config = {
baseUrl : browser.params.baseUrl
}
Но это не сработает, так как кажется, что экземпляр браузера недоступен при создании конфигурации.
Похоже, я могу использовать стандартный node process.argv
для доступа ко всем аргументам командной строки, но это, похоже, противоречит духу транспортира.
Каков наилучший способ сделать то, что мне нужно сделать?
Ответы
Ответ 1
Похоже, это уже возможно, но документация в этой области пятнистая. Однако, глядя на код, транспортир поддерживает несколько, казалось бы, недокументированных аргументов командной строки.
Итак, работа над чем-то вроде этого будет работать:
protractor --baseUrl='http://some.server.com' my.conf.js
Ответ 2
Другой вариант - использовать gruntfile.js и вызвать вызов файла конфигурации транспортира.
//gruntfile.js
module.exports = function (grunt) {
grunt.registerTask("default", "", function () {
});
//Configure main project settings
grunt.initConfig({
//Basic settings and infor about our plugins
pkg: grunt.file.readJSON('package.json'),
//Name of plugin
cssmin: {
},
protractor: {
options: {
configFile: "conf.js", // Default config file
keepAlive: true, // If false, the grunt process stops when the test fails.
noColor: false, // If true, protractor will not use colors in its output.
args: {
baseUrl: grunt.option('baseUrl') || 'http://localhost:6034/'
}
},
your_target: { // Grunt requires at least one target to run so you can simply put 'all: {}' here too.
options: {
configFile: "conf.js", // Target-specific config file
args: {
baseUrl: grunt.option('baseUrl') || 'http://localhost:63634/'
}
}
},
},
//uglify
uglify: {
}
});
//Load the plugin
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-protractor-runner');
//Do the Task
grunt.registerTask('default', ['cssmin']);
};
конфигурационный файл Protractor: conf.js
exports.config = {
directConnect: true,
// Capabilities to be passed to the webdriver instance.
capabilities: {
'browserName': 'chrome',
'chromeOptions': {
args: ['--no-sandbox']
}
},
chromeOnly: true,
// Framework to use. Jasmine is recommended.
framework: 'jasmine',
// Spec patterns are relative to the current working directory when
// protractor is called.
specs: ['specs/*/*_spec.js'],
suites : {
abcIdentity : 'specs/abcIdentity/*_spec.js' //picks up all the _spec.js files
},
params: {
UserName: '[email protected]',
Password: '123'
},
// Options to be passed to Jasmine.
jasmineNodeOpts: {
defaultTimeoutInterval: 30000,
includeStackTrace: true
},
onPrepare: function () {
browser.driver.manage().window().maximize();
if (process.env.TEAMCITY_VERSION) {
var jasmineReporters = require('jasmine-reporters');
jasmine.getEnv().addReporter(new jasmineReporters.TeamCityReporter());
}
}
};
//Для запуска с URL-адресом по умолчанию http://localhost:6034
grunt protractor
//Для запуска с любым другим URL
grunt protractor --baseUrl:"http://dev.abc.com/"