TestSwarm, the project that I’ve been working on over the past 6 months, or so, is now open to the public. Mozilla has been very gracious, allowing me to work on this project exclusively. At the beginning of April I moved from my old position as a JavaScript Evangelist on the Mozilla Evangelism team to that of a JavaScript Tool Developer on the new Developer Tools team (whose other major project is Bespin).

For more information on Test Swarm I’ve written up a detailed explanation of what Test Swarm provides and where it fits into the landscape of JavaScript developer tools.

I’ve also recorded a screencast walkthrough of the TestSwarm site:

Test Swarm Walkthrough from John Resig on Vimeo.

Additionally, there are two previous posts that I’ve made on TestSwarm:

There are some additional screenshots of Test Swarm in action on Flickr.

More Information:

If you’re interested in using Test Swarm I strongly recommend reading the project overview first. If you have any further questions please direct them towards the Test Swarm discussion Group.

TestSwarm ended up being a very challenging project to get to an alpha state (and probably will be even more challenging to get to a final release state). Dealing with cross-browser incompatibilities, cross-domain test suite execution, and asynchronous, distributed, client execution has been more than enough to make for a surprisingly difficult project. It’s mostly written in PHP and uses MySQL as a back end (allowing it to run in virtually any environment). Patches will absolutely be appreciated.

This project has been a long time coming now, the first inklings started back in 2007. Some of us on the jQuery team were discussing ways to distribute the test suite load to multiple browsers in an automated fashion. Andy Kent came along and proposed a participatory application for testing visual code (such as jQuery UI). We worked on that code base for a while but it didn’t get off the ground. Eventually I decided to re-tackle the problem early on in 2009. Even in its rough alpha state we’ve already been able to make great use of TestSwarm. For example, here’s a view of jQuery commits run in TestSwarm:

The vertical axis is SVN commits to jQuery (newer commits at the top), the horizontal axis are all the different browsers that we target. Using TestSwarm we’ve been able to easily spot regressions and fix them with a minimum amount of hassle (especially since all the results are logged).

And this is only the beginning. There are so many different directions in which Test Swarm can be taken. For example:

A pastebin-like service where you can drop in code and see the results come back, from many browsers, in real-time.

IDE integration for sending minor changes out for quick testing.

Manual testing of user interface code. Pushing manual tests, with instructions, to users for them to walk through.

Distributing tests to any number of browsers, rather than a specific sub-set. (You could use this to embed a tiny iframe in your site to collect test results from a small sampling of our users.)

The ability to drive and test browser code or extensions.

And the list goes on. I’m definitely curious to see what directions the community is interested in driving the code base. I’ve gotten it to a level where it’s particularly useful for me and the jQuery team – where should we go from here?