Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Protractor 使用browserstack local在browserstack上运行多容量_Protractor_Browserstack_Gulp Protractor - Fatal编程技术网

Protractor 使用browserstack local在browserstack上运行多容量

Protractor 使用browserstack local在browserstack上运行多容量,protractor,browserstack,gulp-protractor,Protractor,Browserstack,Gulp Protractor,我正在做一个角度项目,我们使用量角器进行端到端测试。我们使用gulp量角器来运行这些测试。每件事在本地都很好。现在我们想要增加被测试的浏览器和设备的数量,所以我开始改变grandor.conf.js来使用browserstack 测试中的web应用程序在本地运行,因此我也使用了browserstack local 我有一个很好的浏览器配置,它可以测试本地运行的网站(灵感来源于) 现在,我正在尝试将其调整为在多浏览器上运行(如下)。我最终得到了这样的配置: exports.config = {

我正在做一个角度项目,我们使用量角器进行端到端测试。我们使用
gulp量角器
来运行这些测试。每件事在本地都很好。现在我们想要增加被测试的浏览器和设备的数量,所以我开始改变
grandor.conf.js
来使用browserstack

测试中的web应用程序在本地运行,因此我也使用了
browserstack local

我有一个很好的浏览器配置,它可以测试本地运行的网站(灵感来源于)

现在,我正在尝试将其调整为在多浏览器上运行(如下)。我最终得到了这样的配置:

exports.config = {
  framework: 'jasmine2',
  onPrepare: common.onPrepare,

  // The address of a running selenium server.
  seleniumAddress: 'http://hub-cloud.browserstack.com/wd/hub',

  commonCapabilities: {
    'browserstack.user': 'OUR_USER',
    'browserstack.key': 'OUR_KEY',
    name: 'Taylor Wimpey e2e tests',
    'browserstack.debug': 'true',
    'browserName': 'chrome',
    'browserstack.local': true
  },

  multiCapabilities: [{
    browserName: 'Chrome'
  },{
    browserName: 'Safari'
  },{
    browserName: 'Firefox'
  },{
    browserName: 'IE'
  }],

  baseUrl: 'http://localhost:3000',

  // Spec patterns are relative to the current working directory when
  // protractor is called.
  specs: [paths.e2e + '/**/*.js'],

  // Options to be passed to Jasmine-node.
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 30000
  },

  // Code to start browserstack local before start of test
  beforeLaunch: function(){
    console.log("Connecting local");
    return new Promise(function(resolve, reject){
      exports.bs_local_args = {
        key: exports.config.commonCapabilities['browserstack.key'],
        force: true
      };
      exports.bs_local = new browserstack.Local();
      exports.bs_local.start(exports.bs_local_args, function(error) {
        if (error) return reject(error);
        console.log('Connected. Now testing...');

        resolve();
      });
    });
  },

  // Code to stop browserstack local after end of test
  onComplete: function(){
    console.log('Stop browserstack local');
    return new Promise(function(resolve){
      exports.bs_local.stop(resolve);
    });
  }
};

// Code to support common capabilities
exports.config.multiCapabilities.forEach(function(caps){
  for(var i in exports.config.commonCapabilities) {
    caps[i] = caps[i] || exports.config.commonCapabilities[i];
  }
});
测试是启动和工作的(我的报告是为每个浏览器生成的),但它从不停止。这里是控制台日志的结尾:

...
[BS] Serving files from: .tmp/serve
[BS] Serving files from: src
Connecting local
Connected. Now testing...
[09:05:39] I/launcher - Running 4 instances of WebDriver
......F......FFF^C
所以我必须手动杀死它们,这不是一个选项,因为最后测试将在持续集成服务器中运行

有人知道如何使用browserstack让e2e测试在多个浏览器上运行,并让测试中的web应用程序在本地运行吗

更新:browserstack支持添加了一个在github repo上本地运行的多功能示例:

唯一的区别是使用
afterLaunch
而不是
onComplete

谢谢