• Stars
    star
    152
  • Rank 244,625 (Top 5 %)
  • Language
    JavaScript
  • License
    Other
  • Created over 11 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Web browser & node.js client library for SeatGeek's Sixpack A/B testing framework

sixpack-client

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

Installation

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');

Usage

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 {
    console.log(alt);
  }
});

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: '1.2.2.1',
    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.

Options

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.

Tests

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

Contributing

  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