w3schools por manejo llamar linea leer example desde contenido attribute archivos archivo javascript angularjs testing protractor e2e-testing

por - llamar archivo javascript desde html



¿Puedo acceder a los parámetros en mi archivo de configuración del transportador? (3)

Comienzo mis pruebas de transportadores ejecutando lo siguiente:

protractor protractor.conf.js --params.baseUrl=http://www.google.com --suite all

Me gustaría ejecutar una función ''antes del lanzamiento'' que depende de un parámetro (en este caso, la baseUrl). ¿Es eso posible?

exports.config = { seleniumServerJar: ''./node_modules/protractor/selenium/selenium-server-standalone-2.45.0.jar'', seleniumPort: 4455, suites: { all: ''test/*/*.js'', }, capabilities: { ''browserName'': ''firefox'' }, beforeLaunch: function() { console.log(''I want to access my baseUrl parameter here: '' + config.params.baseUrl); }, onPrepare: function() { require(''jasmine-reporters''); jasmine.getEnv().addReporter( new jasmine.JUnitXmlReporter(''output/xmloutput'', true, true)); } };

Si ejecuto eso obtengo un ReferenceError porque la configuración no está definida. ¿Cómo debo hacer eso? ¿Es eso posible?


Aquí hay un código de ejemplo para iterar a través de la línea cmd args en su archivo de configuración de Protractor y establecer especificaciones (y algunos otros valores de configuración de ejecución) directamente desde la línea de comandos:

config.js

// usage: protractor config.js --params.specs="*" --params.browser=ie --params.threads=1 // protractor config.js --params.specs="dir1|dir2" // protractor config.js --params.specs="dir1|dir2/spec1.js|dir2/spec2.js" // process command line arguments and initialize run configuration file var init = function(config) { const path = require(''path''); var specs; for (var i = 3; i < process.argv.length; i++) { var match = process.argv[i].match(/^--params/.([^=]+)=(.*)$/); if (match) switch (match[1]) { case ''specs'': specs = match[2]; break; case ''browser'': config.capabilities.browserName = match[2]; if (match[2].toLowerCase() === ''ie'') { config.capabilities.browserName = ''internet explorer''; config.capabilities.platform = ''ANY''; config.capabilities.version = ''11''; config.seleniumArgs = [''-Dwebdriver.ie.driver='' + path.join(''node_modules'', ''protractor'' ,''selenium'' ,''IEDriverServer.exe'')]; } if (match[2] !== ''chrome'' && match[2] !== ''firefox'') config.directConnect = false; break; case ''timeout'': config.jasmineNodeOpts.defaultTimeoutInterval = parseInt(match[2]); break; case ''threads'': config.capabilities.maxInstances = parseInt(match[2]); config.capabilities.shardTestFiles = config.capabilities.maxInstances > 1; break; } } // generate specs array specs.split(//|/g).forEach(function(dir) { if (dir.endsWith(''.js'')) config.specs.push(dir); else config.specs.push(path.join(dir, ''*.js'')); }); return config; }; exports.config = (function() { return init({ specs: [], framework: ''jasmine'', jasmineNodeOpts: { defaultTimeoutInterval: 300000 // 5 min }, capabilities: { browserName: ''chrome'', shardTestFiles: false, maxInstances: 1 }, directConnect: true }); })();


En caso de que necesite cada elemento en el archivo de configuración completo, puede usar browser.getProcessedConfig() para hacer esto.

onPrepare: () => { browser.getProcessedConfig().then(console.log); // even `params` is in here }


No estoy completamente seguro de si los beforeLaunch() globales del transportador están configurados en la etapa beforeLaunch() , pero definitivamente están disponibles en el paso onPrepare() .

Acceda al objeto params través del objeto del browser global:

console.log(browser.params.baseUrl);

Actualización: al usar Jasmine 2.6+, protractor 4.x, browser.params estaba vacío, pero lo siguiente funcionó en el paso onPrepare() :

console.log(browser.baseUrl);