Queen – A Framework To Run Scripts On Many Remote Browsers Using Node.js
queenjs.com
queenjs.com
The problem we (the YUI project) ran into was test failures that would occur only within iframes. We found lots of iframe-only quirks that were useful to know about, but were also distracting since we wanted to make sure using YUI in a typical browser context works first. (I've talked to jQuery's TestSwarm maintainer and they've had similar problems with iframes.)
The tool we use, Yeti, was since rewritten to not require an iframe. http://yeti.cx
I continue to work on Yeti, and there's a lot of interesting things we have done (using multiple browser instances to speed up testing, launching browsers automatically, CI integration) and hope to do (code coverage, performance measurements). Help wanted!
It's neat to see this kind of thing become more popular, and I hope these projects can make testing easier for everyone.
We use it as a distributed way to perform tests in our main project (Aria Templates: https://github.com/ariatemplates/ariatemplates). The tool is able to use PhantomJS (configurable number of instances) and "normal" browsers which can connect in the same manner (by opening a URL). We use PhantomJS on Travis for continuous integration builds before merging pull requests, and real browsers before each release (every 3 weeks).
We support only our own tests so far (eating the own food), but we may add support for other types as well.
Behind the scenes, the tool first gathers a set of classpaths of the tests to run (recursively); then it dispatches them to active browsers (e.g. when you have a couple of people connected via IE8, each of them will receive a subset of tests to run and effectively the test suite finishes earlier).
You can also run the test suite entirely in the command line (PhantomJS), and if you have multicore processor, you may increase the number of PhantomJS instances to parallelize the suite.
Looking forward for comments and forks!
I can't find the particular commit/issue for Webkit, but the authors expressed that they were using the timer limitation to prevent non-foreground tabs from sucking up CPU time. Others came along with workarounds (scheduling 1000 timers at 1ms intervals that will each fire once per second) and the authors said if they saw something like that being put to practice, they'd have to re-evaluate their method for limiting javascript usage by background threads.
https://bitcointalk.org/index.php?topic=9042.msg130817#msg13...
http://news.ycombinator.com/item?id=347359
Plura ran into trouble because they built a pay-for-grid computing platform where the nodes were unsuspecting users:
http://pluraprocessing.wordpress.com/2009/08/24/our-response...
Personally I'd like to see a SETI@Home or Folding@Home in the browser first.