TestSwarm provides distributed continuous integration testing for JavaScript.
The main instance monitoring jQuery core and related projects runs at swarm.jquery.org.
Clone the repo, git clone --recursive git://github.com/jquery/testswarm.git
.
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/.
Found a bug? Please report it using our issue tracker!
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.2+ (or PHP-FPM for NGINX)
- MySQL 4.0+
- cURL (for the cleanup action; see step 8)
-
Set up a MySQL database and create a user with read and write access.
-
Copy
config/sample-localSettings.php
toconfig/localSettings.php
Copyconfig/sample-localSettings.json
toconfig/localSettings.json
.
EditlocalSettings.json
and replace the sample settings with your own.
Refer to the Settings page for more information. -
For Apache:
Copyconfig/sample-.htaccess
to.htaccess
.
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 other than the HomePage (e.g./testswarm/projects
) in your browser.
Required Apache configuration:AllowOverride
is set toAll
(or ensureFileInfo
is included).mod_rewrite
installed and loaded.
For NGINX:
Copyconfig/sample-nginx.conf
to/etc/nginx/sites-available
.
The file name should match your domain e.g. for swarm.example.org:
cp config/sample-nginx.conf /etc/nginx/sites-available/swarm.example.org.conf
Open this conf file in your editor and replace the "example" values with the correct values.
Make sure your install is located at/var/www/testswarm
(otherwise update the file to match the correct 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/sample-robots.txt
torobots.txt
Or, if TestSwarm is not in the root directory, add similar rules to your rootrobots.txt
. -
Set
storage.cacheDir
to a writable directory that is not readable from the web. Either set it to a custom path outside the document root, or use the defaultcache
directory (protected with .htaccess).
Chmod it:chmod 777 cache
. -
Install the TestSwarm database by running:
php scripts/install.php
-
Fetch the latest user-agent information:
php inc/libs/ua-parser/php/uaparser-cli.php -g
Note that ua-parser is based on patterns, so you don't need to re-run this after every browser release to be able to detect this, however it is recommmended to periodically run this to stay up to date (once a month should be enough). -
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
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
See MIT-LICENSE.
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.