Distributed continuous integration testing for JavaScript.
TestSwarm provides distributed continuous integration testing for JavaScript.
⚠️ Project status
TestSwarm remains used by jQuery Foundation projects such as jQuery and jQuery UI, but is no longer under active development. Critical issues may be patched, but new issues will not be addressed.We recommend reviewing these alternatives: QTap, Karma, Testem, grunt-contrib-qunit, browserstack-runner, Airtap, Intern, Web Test Runner.
Further reading:
Clone the repo
git clone https://github.com/jquery/testswarm.git
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.
Create an empty MySQL database and create a user with read and write access to it.
Copy config/sample-localSettings.php
to config/localSettings.php
Copy config/sample-localSettings.json
to config/localSettings.json
.
Edit localSettings.json
and replace the sample settings with your own.
Refer to the Settings page for more information.
For Apache:
Copy config/sample-.htaccess
to .htaccess
.
To run TestSwarm from a non-root directory, set web.contextpath
in localSettings.json
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 to All
(or ensure FileInfo
is included).mod_rewrite
installed and loaded.For NGINX:
Copy config/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 the sites-available
config to the sites-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
to robots.txt
Or, if TestSwarm is not in the root directory, add similar rules to your root robots.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
default cache
directory (protected with .htaccess).
Chmod it:
chmod 777 cache
.
Install dependencies
composer install --no-dev
Install the TestSwarm database by running:
php scripts/install.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 https://swarm.example.org/api.php?action=cleanup > /dev/null
You’re welcome to use the GitHub issue tracker
to start discussions.
Some of us are also on Gitter at jquery/dev.
See LICENSE.txt.
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 https://semver.org/.