如何为不同的浏览器和测试套件参数化量角器配置文件



我正在从命令npm run e2e 运行我的Protractor测试

我想要一种方法,如果我通过了npm run e2e firefox,那么我的测试将在Firefox浏览器上执行。

或者,如果我运行npm run e2e chrome,那么它应该在chrome 上运行

如果我通过了两个npm run e2e firefox chrome,那么我的测试应该在两个浏览器上并行运行。

是否可以参数化量角器配置文件?

类似地,如果我可以通过命令传递测试套件名称,并且它应该只执行该特定测试套件下的测试。

这是我的配置文件,这就是我想要实现的:

`//var HtmlReporter = require('protractor-html-screenshot-reporter');
exports.config = {
allScriptsTimeout: 30000,
//Add parameters for browser names
params:{
  pass: {
      browserName : 'chrome',
      testSuitName : 'e2e/TestSuites/_BVT/*.js',
  }
 },  
suites: {    
//Define here List of Sanity Test Scenarios:
  BVT : testSuitName,   
}, 
// configure multiple browsers to run tests
multiCapabilities: [
 shardTestFiles: true,
 maxInstances: 2   
{'browserName': browserName}
],
baseUrl: 'http://mytestUrl/',
 framework: 'jasmine2',
jasmineNodeOpts: {
 defaultTimeoutInterval: 30000
},  
onPrepare: function() {  
var jasmineReporters = require('jasmine-reporters');
browser.driver.manage().window().maximize();
return browser.getProcessedConfig().then(function(config) {   
  var browserName = config.capabilities.browserName;
  var junitReporter = new jasmineReporters.JUnitXmlReporter({
         consolidateAll: true,
         savePath: 'tests/test-results',            
         filePrefix: browserName + '-xmloutput',
         modifySuiteName: function(generatedSuiteName, suite) {             
             return browserName + '.' + generatedSuiteName;
         }              
     });
     jasmine.getEnv().addReporter(junitReporter);
  });    
}, 
resultJsonOutputFile: 'tests/test-results/output.json'    
};`

如有任何帮助,不胜感激
提前谢谢。

我知道这篇文章现在有点过时了,但这个解决方案可能会帮助有类似问题的人。

使用多个配置文件,每个浏览器类型一个,设置一个基本配置文件,并要求将其放入其他每个配置文件中,然后为每个配置文件创建一个npm脚本。不需要参数,一切都很好。

因此,基本配置(称为类似"dractor_base.js"的东西)看起来像:

exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  rootElement: '[ng-app]',
  allScriptsTimeout: 60000,
  framework: 'jasmine',
  specs: ['example-spec.js']
};

然后,您的其他配置(即"dractor_chrome.conf.js")看起来像:

protractor = require('./protractor_base.js');
var config = protractor.config;
config.capabilities: {
  'browserName': 'chrome'
};

exports.config = config;

然后,您可以指定一个多浏览器配置,只指定一个chrome配置等。

--capabilities.chromeOptions.args=headless --capabilities.chromeOptions.args=disable-gpu --capabilities.chromeOptions.args=window-size=1200,600

上面的代码应该适用于您。

我一直在寻找将参数从命令行传递到量角器配置文件的方法,并找到了一种方法:

npm run e2e -- --baseUrl=http://testurl:8080 --suite=suite_name_defined_in_config --capabilities.browserName=browser_Name

我的npm包.json:

 "e2e": "protractor tests/protractor-conf.js",

配置文件包含:

suites: {
    BVT: 'e2e/TestSuites/_BVT/*.js',
    Full: 'e2e/TestSuites/Full/**/*.js',      
},
capabilities: {
  'browserName': 'chrome'
},
baseUrl: 'http://localhost:8080/',  

最新更新