Web browser & node.js client library for SeatGeek's Sixpack A/B testing framework
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
test Add session option and regression tests Aug 4, 2016
LICENSE Change to BSD 2-Clause License Feb 20, 2013
README.md Update README with testing info Aug 4, 2016
sixpack.js Add session option and regression tests Aug 4, 2016



Node / browser client library for SeatGeek's Sixpack A/B testing framework.


Include the "sixpack.js" script. The sixpack object will be added to your environment. In the browser do the following:

<script src='sixpack.js'></script>

If you're using sixpack-client with node.js start by installing it with npm:

npm install sixpack-client

then require the "sixpack-client" module:

var sixpack = require('sixpack-client');


Check out the examples in the examples directory for some quick examples for how to use the library. Here's a very basic example in node:

var sixpack = require('sixpack-client');

var session = new sixpack.Session();
session.participate('test-exp', ['alt-one', 'alt-two'], function (err, res) {
  if (err) throw err;
  alt = res.alternative.name
  if (alt == 'alt-one') {
    console.log('default: ' + alt);
  } else {

When instantiating the session object you can pass optional params client_id, base_url, ip_address, user_agent

var sixpack = new sixpack.Session({
    client_id: 12345,
    base_url: 'http://google.com/sixpack',
    ip_address: '',
    user_agent: 'ChromeBot'

Client ID is a previously generated client id that you've previously stored. IP Address and User Agent are used for bot detection.


A number of options can be passed to a sixpack session. A few are highlighted below.

  • base_url. Base URL of the sixpack-server.
  • client_id. ID of the specific client.
  • ignore_alternates_warning. Allow sixpack-js to send a participate request which contains no alternates.
  • timeout. Number of milliseconds to wait for a response from sixpack-server before returning a timeout response.

Forcing an Alternative

For debugging / design work it can be useful to force a page to load using a specific alternative. To force an alternative use the force parameter to participate(). If you're using sixpack.js in the browser you can also just include a query parameter, e.g. /your-page?sixpack-force-EXPERIMENT_NAME=ALTERNATIVE_NAME.


A number of end-to-end tests are located in ./test/sixpack-test.js. They use mocha as the testing framework and chai as the assertion library, and require a running sixpack-server.

Run the tests with:

npm run test

Sixpack server location

The tests assume the sixpack-server server is running and located at http://localhost:5000. To use a different location, e.g. for a Docker container, run tests with the following pattern:

SIXPACK_BASE_URL=http://docker:5000 npm run test


  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Write and run tests with npm test (see Tests above for more information)
  4. Commit your changes (git commit -am 'Added some feature')
  5. Push to the branch (git push -u origin my-new-feature)
  6. Create new pull request