protractor - mp3tag - ¿Cómo parametrizo la propiedad baseUrl del archivo de configuración del transportador?
como editar informacion de canciones en pc (2)
La otra opción es usar gruntfile.js y hacer que llame al archivo de configuración del transportador.
//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'']);
};
el archivo de configuración del transportador: 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());
}
}
};
// Para ejecutar con la url predeterminada http: // localhost: 6034
grunt protractor
// Para correr con cualquier otra url
grunt protractor --baseUrl:"http://dev.abc.com/"
Necesito ejecutar mis pruebas de transportadores en diferentes contextos con diferentes baseUrl
en los archivos de configuración. No quiero usar archivos de configuración separados para cada situación ya que es más difícil de mantener. Más bien, quiero pasar la url base como un parámetro de línea de comando. Aquí está lo que he intentado hasta ahora:
El protractor.conf.js:
exports.config = {
onPrepare : {
...
exports.config.baseUrl = browser.params.baseUrl;
...
}
}
Y para invocar transportador:
protractor protractor.conf.js --params.baseUrl ''http://some.server.com''
Esto no funciona, ya que parece que la instancia del browser
ya está configurada antes de onPrepare
.
Del mismo modo, he intentado esto:
exports.config = {
baseUrl : browser.params.baseUrl
}
Pero esto tampoco funciona, ya que parece que la instancia del navegador no está disponible cuando se está generando la configuración.
Parece que puedo usar el nodo estándar process.argv
para acceder a todos los argumentos de la línea de comandos, pero eso parece ir en contra del espíritu del transportador.
¿Cuál es la mejor manera de hacer lo que necesito hacer?
Parece que esto ya es posible, pero la documentación es irregular en esta área. Sin embargo, al observar el código , el transportador admite varios argumentos de línea de comandos aparentemente no documentados.
Por lo tanto, ejecutar algo como esto funcionará:
protractor --baseUrl=''http://some.server.com'' my.conf.js