【问题标题】:Specify multiple environments in Intern w/ Browserstack使用 Browserstack 在 Intern 中指定多个环境
【发布时间】:2018-03-26 18:21:37
【问题描述】:

我正在尝试使用 Intern 在 BrowserStack 上运行并行功能测试。我当前工作的 intern.json 配置如下所示:

{
  "proxyPort": 9000,

  "capabilities": {
    "browserstack.local": false,
    "browserstack.debug": true,
    "browserstack.video": true,
    "fixSessionCapabilities": false
  },

  "environments": [
    { "browserName": "Chrome",  "version": 62  },
    { "browserName": "Firefox", "version": 38  },
    { "browserName": "Safari",  "version": 9   },
    { "browserName": "IE",      "version": 11  }
  ],

  "tunnel": "browserstack",

  "tunnelOptions": {
      "username": "myUsername",
      "accessKey": "myAccessKey"
  },

  "reporters": ["pretty"],
  "functionalSuites": ["dist/functional/tests/demo.js"]
}

但是,当我尝试在每个环境对象中指定操作系统、os_version 或其他任何内容时,我的测试将无法运行,如下所示:

{ "browserName": "Chrome",  "version": 62, "os" : "OS X" },

我一直在参考 BrowserStack 文档:https://www.browserstack.com/automate/capabilities

此外,我无法在此配置中指定任何移动设备 - 它大喊它缺少 browserName 属性...

知道如何做上述任何一个吗?谢谢!!!!

【问题讨论】:

    标签: functional-testing intern browserstack


    【解决方案1】:

    这是您的配置的工作示例:

        define({
      proxyPort: 9000,
    
      capabilities: {
        'browserstack.local': false,
        fixSessionCapabilities: false
      },
    
      defaultTimeout: 300000,
    
      environments: [
          { browser: 'Chrome',  'browser_version': '62','os': 'Windows','os_version': '7'  },
            { browser: 'Firefox', 'browser_version': '38'  },
            { browser: 'Safari','browser_version': '9'   },
            { browser: 'IE',  'browser_version': '11'  },
    
            // This will ONLY work on real_mobile supported devices
            { browser: 'Safari', 'device': 'iPhone X', 'real_mobile': 'true'  },
            // This will work as an emulated mobile device
            {"browser": "android", "device": "Google Nexus 7", "os_version": "4.1"}
    
      ],
    
      maxConcurrency: 3,
    
      tunnel: 'BrowserStackTunnel',
    
      tunnelOptions: {
        verbose: true,
         username: '<Username>',
         accessKey: '<AccessKey>'
      },
    
      reporters: [ 'Pretty' ],
    
      loaderOptions: {
        packages: null
      },
    
      suites: null,
    
      functionalSuites: [ 'tests/single_test' ],
    
      excludeInstrumentation: true
    });
    

    以上演示了支持 real_mobile 的设备和模拟移动设备的 env 配置。

    可以在此处找到 BrowserStack Automate 支持的所有设备的列表:https://www.browserstack.com/list-of-browsers-and-platforms?product=automate。标有蓝色图标的设备是真正的移动设备,不能用作模拟器。

    【讨论】:

    • 我没有 realMobile 计划,此解决方案给出错误:“您可以升级到 Automate Mobile 计划以在真实设备上进行测试。请通过 sales@browserstack.com 联系我们的销售团队。”。如果我将 real_mobile 设置为 false,我会收到以下错误:“找不到设备:iPhone X”
    • 如果您可以访问模拟器,您可以使用没有 realMobile 功能的 iPhone 6。如果您无法访问模拟器,则需要联系他们以获取替代解决方案的支持
    • 访问模拟器?如果 realMobile 为假,我会假设 BrowserStack 将默认使用模拟器 - 我没有看到任何表明其他情况的文档。
    • 根据他们的文档,这里的设备可用于测试:browserstack.com/… 和带有蓝色标记的设备是真实的,不能用作模拟器
    • 感谢 BountyHunter - 我联系了 BrowserStack - 他们也确认了这一点 - 我将编辑上面的示例以适应两种方式(支持的移动设备与支持的模拟器)
    【解决方案2】:
    1. 似乎并非所有列出的 os_version BrowserStack 都能正常工作。但是我尝试了下面的配置并且成功了!

      { browser: "Chrome", version: "62", os: "OS X", os_version: "El Capitan" }

    这个应该也可以:

    { browser: "Chrome", version: "62", os: "OS X"}
    
    1. 要在移动设备上运行:我不使用移动设备,所以我不太确定,但我认为最好为设备获取正确的名称,os_version..(您最好直接询问 BrowserStack ) 但我试过了,这个对我有用:

      {browser: "android", device: "Google Nexus 7", os_version: "4.1"}

    【讨论】:

    • 对于#1,将隧道更改为“BrowserStackTunnel”会产生此错误:“错误发生意外错误:“命令失败。”。当我将隧道设置为“browserstack”时 - 它可以工作,我可以查看我在 BrowserStack 上运行的所有测试。
    • 对于#3,该移动设备确实有效!奇怪 - 他们中的许多人都没有工作,我仍在等待 BrowserStack 的回复以澄清这一点。
    • 对于#1:对不起,我更新了我的答案。您使用实习生 4(而我仍在使用 3 :D)
    • 对于#2、#3:我看到了同样的事情——并非 BrowserStack 列表中的每个环境都有效。但是因为我只是需要在某些环境下运行测试,所以我懒得问
    猜你喜欢
    • 1970-01-01
    • 2012-08-21
    • 2020-11-19
    • 2019-11-02
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    相关资源
    最近更新 更多