BrowserStack – Node.js并发testing

我一直在研究如何使用BrowserStack专门为Node.js中的可伸缩testing创build一个合理的结构。

请在这里查看源代码:

https://gist.github.com/Palgie/10886008 

试图closures会话或退出驱动程序时遇到问题,因此在运行并发testing时,它会经常告诉我,我的最大会话正在使用中(请参阅下文)。

这感觉就像一个竞赛条件,但它可能是一件非常明显的事情。

  Now testing Chrome - 22.0 Now testing IE - 10.0 ․․․․ Stopping test Stopping test ․ 4 passing (14s) 1 failing 1) "after all" hook: Error: This driver instance does not have a valid session ID (did you call WebDriver.quit()?) and may no longer be used. at checkHasNotQuit (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/webdriver.js:291:13) at webdriver.WebDriver.schedule (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/webdriver.js:263:3) at webdriver.WebDriver.quit (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/webdriver.js:331:21) at Context.<anonymous> (/Users/gourleyp/Sites/bs-webdriver/driver.js:35:14) at webdriver.promise.ControlFlow.runInNewFrame_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1598:20) at webdriver.promise.ControlFlow.runEventLoop_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1463:8) at wrapper [as _onTimeout] (timers.js:252:14) at Timer.listOnTimeout [as ontimeout] (timers.js:110:15) ==== async task ==== at Context.<anonymous> (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/testing/index.js:126:14) at Hook.Runnable.run (/usr/local/lib/node_modules/mocha/lib/runnable.js:196:15) at next (/usr/local/lib/node_modules/mocha/lib/runner.js:259:10) at /usr/local/lib/node_modules/mocha/lib/runner.js:271:7 at done (/usr/local/lib/node_modules/mocha/lib/runnable.js:185:5) at /usr/local/lib/node_modules/mocha/lib/runnable.js:199:9 at /Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/testing/index.js:92:5 at /Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/goog/base.js:1178:15 at webdriver.promise.ControlFlow.runInNewFrame_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1598:20) at notify (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:428:12) at notifyAll (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:397:7) at resolve (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:375:7) at fulfill (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:493:5) at /Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1465:10 at Object.webdriver.promise.asap (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:732:5) at newFrame.then.e (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1614:25) at /Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/goog/base.js:1178:15 at webdriver.promise.ControlFlow.runInNewFrame_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1598:20) at notify (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:428:12) at notifyAll (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:397:7) at resolve (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:375:7) at fulfill (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:493:5) at webdriver.promise.ControlFlow.resolveFrame_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1519:9) at webdriver.promise.ControlFlow.getNextTask_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1488:12) at webdriver.promise.ControlFlow.runEventLoop_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1446:59) at wrapper [as _onTimeout] (timers.js:252:14) at Timer.listOnTimeout [as ontimeout] (timers.js:110:15) 

在我的参考资料中,据我所知,它应该执行会话,但不会觉得这样。

 test.after(function() { console.log('Stopping test'); driver.quit(); }); 

据我了解,在浏览器运行所有的摩卡testing或webdrivertesting后,它将终止驱动程序,然后它会在before方法中初始化一个新的实例。

任何帮助,将不胜感激!

干杯

您可以使用selenium runner并行运行testing。 使用Selenium Runner在BrowserStack上并行运行testing的示例在以下文档中给出: https : //www.browserstack.com/automate/node 。

此外,如果selenium跑者不能满足您的需求,您可以请分享您的需求(哪些特定的框架或库代码,你想并行运行),以便我们可以看看这个问题

Akshay @ BrowserStack