代理后面的BrowserStack的intern 2配置

时间:2014-10-31 19:10:00

标签: intern browserstack

我不确定当在代理/防火墙后面运行并且当前看到错误/超时时,配置应该针对BrowserStack进行实验2测试。

我的当前配置是:

proxyPort : 9000,
proxyUrl : 'http://localhost:9000',
tunnel : 'BrowserStackLocal',
tunnelOptions : {
    username : 'myusername',
    accessKey : 'myaccesskey',
    hostname : '<myproxyip>',
    proxy : 'http://<myproxyip>:<myproxyport>'
}

我认为我不需要hostname但是如果我删除它,我会立即看到错误getaddrinfo ENOTFOUND

如果使用上面的配置,它似乎更进一步,等待一段时间然后看:

Listening on 0.0.0.0:9000
Starting tunnel...
BrowserStackLocal v3.3
Connecting to BrowserStack using WebSocket protocol...
Connected.
Ready
Error: [POST http://(redacted)@<myproxyip>:4444/wd/hub/session] connect ETIMEDOUT
Error: connect ETIMEDOUT
   at errnoException  <net.js:904:11>
   at Object.afterConnect [as oncomplete]  <net.js:895:19>
FATAL ERROR
Error: [POST http://(redacted)@<myproxyip>:4444/wd/hub/session] connect ETIMEDOUT
Error: connect ETIMEDOUT
   at errnoException  <net.js:904:11>

[POST http://(redacted)@<myproxyip>:4444/wd/hub/session]网址似乎不正确。显然我有这个配置错误的&amp;我很感激任何建议。在代理服务器后面运行时,我很难理解实习生的文档。

2 个答案:

答案 0 :(得分:1)

看起来你支持某种代理。

当你落后于代理服务器时,为了在浏览器堆栈中使用Intern,你需要做两件事:

  1. 获取本地测试连接以使用您正在执行的代理,您可以看到成功消息。

  2. 您必须确保运行Intern测试的节点进程适用于您的代理。要在节点应用程序中启用代理,最简单的选择是使用global-tunnel npm包。有一个分步指南here

  3. 愿意回答您的任何疑问!请发送电子邮件至support@browserstack.com

    Umang,
    BrowserStack支持。

答案 1 :(得分:0)

我不确定,但我认为browserStack.js中存在错误。我认为有些代理支持缺失。当我使用如下所示的配置browserstack_conf.js时,测试运行正常,但当Browserstack尝试将测试结果发布回www.browserstack.com时会出现错误消息

[09:43:06] E/launcher - connect ETIMEDOUT 54.152.200.70:443
[09:43:06] E/launcher - Error: connect ETIMEDOUT 54.152.200.70:443
    at Object.exports._errnoException (util.js:1018:11)
    at exports._exceptionWithHostPort (util.js:1041:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1090:14)
[09:43:06] E/launcher - Process exited with error code 199

我可以通过以下步骤修复此错误:

  1. npm install -g http-proxy-agent
  2. 修改browserStack.js(位于例如C:\Users\myuser\AppData\Romaing\npm\node_modules\protractor\built\driverProviders\中为此添加require并初始化agent并添加到request
  3. 例如,在require

    的顶部添加browserStack.js
    var HttpProxyAgent = require('http-proxy-agent');
    

    并将options的部分更改为

                let options = {
                    hostname: 'www.browserstack.com',
                    port: 443,
                    path: '/automate/sessions/' + session.getId() + '.json',
                    method: 'GET',
                    headers: headers//,
                    agent: new HttpProxyAgent('http://myproxy:3128')
                };    
    

    我使用下面的配置启动Protractor

    // browserstack.conf.js
    
    var browserstack = require('browserstack-local');
    
    exports.config = {
      specs: ['spec.js'],
      webDriverProxy: 'http://myproxy:3128',
      browserstackUser: 'myuser',
      browserstackKey: '*****',
      capabilities: {
        project: 'BrowserStack (beyond Proxy)',
        browserName: 'Chrome',
        browser_version: '50.0',
        os: 'OS X',
        os_version: 'Yosemite',
        'browserstack.local': true,
        'browserstack.debug': true    
      }, 
      // Code to start browserstack local before start of test
      beforeLaunch: function(){
        console.log("Connecting local");
        return new Promise(function(resolve, reject){
          exports.bs_local = new browserstack.Local();
          exports.bs_local.start({'key': '*****',     
         'proxyHost': 'myproxy', 'proxyPort': '3128',    
          'binarypath': 'C:\\Users\\myuser\\Downloads\\BrowserStackLocal-win32\\BrowserStackLocal.exe'},
           function(error) {
            if (error) return reject(error);
            console.log('Connected. Now testing...');
    
            resolve();
    
          });
        });
      },
    
      // Code to stop browserstack local after end of test
      afterLaunch: function(){
        return new Promise(function(resolve, reject){
         exports.bs_local.stop(resolve);
       });
      } 
    };