TestSwarm - Distributed Continuous Integration for JavaScript
TestSwarm provides distributed continuous integration testing for JavaScript.
The main instance monitoring jQuery core and related projects runs at swarm.jquery.org.
Quick start
Clone the repo, git clone git://github.com/jquery/testswarm.git
, or
download the latest
release.
Versioning
TestSwarm uses the Semantic Versioning guidelines as much as possible.
Releases will be numbered in the following format:
<major>.<minor>.<patch>
The -alpha
suffix is used to indicate unreleased versions in development.
For more information on SemVer, please visit http://semver.org/.
Bug tracker
Found a bug? Please report it using our issue tracker!
Installation
Environmental compatibility
To run TestSwarm you will need a web server, a database server and PHP. At the moment TestSwarm supports the following, but other configurations may work as well.
- Apache 2.0+, NGINX 1.2+
- PHP 5.3.0+ (or PHP-FPM for NGINX)
- MySQL 4.0+
- cURL (for the cleanup action; see step 7)
Steps
-
Set up a MySQL database and create a user with read and write access.
-
Copy
config/testswarm-sample.json
toconfig/testswarm.json
and update the database settings. For other settings, check the wiki. -
For Apache:
Copyconfig/.htaccess-sample
to.htaccess
.
Currently the only supported webserver is Apache (which uses a.htaccess
file).
To run TestSwarm from a non-root directory, setweb.contextpath
to the correct path from the web root and update RewriteBase in.htaccess
. Verify that.htaccess
is working properly by opening a page (e.g./testswarm/projects
) in your browser. If it doesn't work, make sure your.htaccess
is actually being read (e.g. by putting some jibberish into the.htaccess
file, which should result in a HTTP 500 Error). If it doesn't get loaded, verify thatAllowOverride
is set to "All
" (at least not to "None
") in your Apache configuration.
For NGINX:
Copyconfig/nginx-sample.conf
to/etc/nginx/sites-available
.
The file name should match your domain e.g. for swarm.example.org:
cp config/nginx-sample.conf /etc/nginx/sites-available/swarm.example.org.conf
Open this conf file in your editor and fill in the correct values forYOURURL
, and make sure your install is located at/var/www/testswarm
(otherwise update the file to match your install location).
Now you need to link thesites-available
config to thesites-enabled
config:
(replace the "swarm.example.org" with your own file name):
ln -s /etc/nginx/sites-available/swarm.example.org.conf /etc/nginx/sites-enabled/swarm.example.org.conf
Now make sure that php-fpm is running:/etc/init.d/php-fpm status
if is not running start it:/etc/init.d/php-fpm start
-
Copy
config/robots-sample.txt
torobots.txt
(or add similar rules to your mainrobots.txt
file if TestSwarm is not in the root directory). -
Set
storage.cacheDir
to a writable directory that is not readable from the web. Either set it to a custom path outside the web document root, or use the defaultcache
directory (protected with .htaccess).
Chmod it:chmod 777 cache
. -
Install the TestSwarm database by running:
php scripts/dbInstall.php
-
Create an entry in your crontab for action=cleanup. This performs various cleaning duties such as making timed-out runs available again.
* * * * * curl -s http://swarm.example.org/api.php?action=cleanup > /dev/null
Get involved
You're welcome to use the GitHub issue tracker to start discussions.
Or post to the QUnit and Testing forum.
Most of us are also on IRC in the #jquery-dev channel at irc.freenode.net
Planning for TestSwarm and other projects related to testing of javascript applications based around jQuery happens on the jQuery Testing Team wiki
Documentation
Copyright and license
See MIT-LICENSE.
History
TestSwarm was originally created by John Resig as a basic tool to support unit testing of the jQuery JavaScript library. It was later moved to become an official Mozilla Labs and has since moved again to become a jQuery project.