【问题标题】:Running Cucumber.js scenarios in parallel with Webdriver.io and Browserstack Automate与 Webdriver.io 和 Browserstack Automate 并行运行 Cucumber.js 场景
【发布时间】:2016-02-11 18:08:43
【问题描述】:

我目前正在尝试使用 Webdriver.io 的测试运行程序和 Browserstack Automate 对多个浏览器并行运行 Cucumber.js 场景。我已经在测试运行器的配置中为我们想要测试的每个浏览器和操作系统指定了功能。设置了一个 Webdriver.io 配置文件来执行针对 Browserstack Automate 的测试运行。

我想执行一次测试运行,并让每个场景在单独的 Browserstack VM 中同时运行——例如,在 Chrome、Firefox、IE 和 Safari 上运行第一个测试,同时第二个测试是在相同的平台上运行:

Parallel execution of scenarios per VM

不幸的是,似乎发生了以下情况:

Serial execution of scenarios per VM

  • Browserstack 针对每个指定功能在 VM 中连续运行所有功能和场景,而不是为每个 VM 运行一个测试
  • 将单个场景放入单独的功能文件中没有 效果 - 功能(以及因此的场景)仍然在每个 VM 上连续执行

是否可以在单独的 Browserstack VM 中同时运行每个场景?

【问题讨论】:

    标签: selenium cucumber cucumberjs webdriver-io browserstack


    【解决方案1】:

    这里的问题不在于 BrowserStack,而在于您并行启动测试的方式。 BrowserStack 将根据接收请求的方式为测试分配一台远程机器。

    由于您使用的是 WebdriverIO,因此您可以使用“multiremote”功能并行运行测试,如下所示:

    var browser = webdriverio.multiremote({
        myChromeBrowser: {
            desiredCapabilities: {
                browserName: 'chrome'
            }
        },
        myFirefoxBrowser: {
            desiredCapabilities: {
                browserName: 'firefox'
            }
        }
    });
    

    要使用 BrowserStack 的“多远程”功能,您可以查看sample script

    此外,建议您发送电子邮件至 support@browserstack.com 以获取更多帮助。


    更新:
    WebDriverIO v4.0 现在固有地支持并行测试。通过指定多组功能,您可以在不同的浏览器和操作系统组合上并行运行,如下所示:

    user: process.env.BROWSERSTACK_USERNAME,
    key: process.env.BROWSERSTACK_ACCESS_KEY,
    
    maxInstances: 10,
    
    capabilities: [{
         os: 'OS X',
         os_version: 'Yosemite',
         browser: 'firefox',
         browser_version: '44',
         name: 'Parallel Tests',
         build: 'Sample WebDriverIO tests',
     },    
     {
         os: 'Windows',
         os_version: '10',
         browser: 'Chrome',
         browser_version: '44',
         name: 'Parallel Tests',
         build: 'Sample WebDriverIO tests'
     }]
    

    您可以参考示例项目here 了解更多详细信息。

    【讨论】:

    • 谢谢,但我之前在 WebdriverIO 网站上看过 Multiremote,它似乎是为设置多个浏览器以相互交互而设计的,而不是用于真正的并行测试运行。正如文档所述:“注意:Multiremote 并不意味着并行执行所有测试。它应该可以帮助您协调多个浏览器以进行复杂的集成测试。”
    猜你喜欢
    • 2014-10-21
    • 2022-01-17
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    相关资源
    最近更新 更多