Testing made simple. Success made achievable.

From guesswork to growth: Let our A/B testing platform show you the way.

class Client {
constructor(config) {
this.config = config;
this.context = undefined;
this.features = {};
async addDefaultContext() {
let ipObj = await this.getIp();
let ip = ipObj.ip;
this.context = { userID: uuid(), ip: ip };

Getting started

Learn more about Test Lab and how it can help you make better design decisions to maximize user engagement with your application.


Step-by-step guide to setting up our self-hosted platform on your virtual private server or AWS Elastic Container Service.

Architecture guide

Learn about the key features, design, and components of Test Lab.


Use our native JavaScript, React, Ruby, or Python SDKs to integrate Test Lab feature management into your application.

API reference

A guide to API endpoints that you can access via the Admin UI, command line, or Test Lab SDKs.


Meet the team responsible for creating Test Lab.


View the Test Lab case study presentation.

Executive Summary (TL;DR)

Test Lab is an open-source, self-hosted feature management and A/B testing platform.

Test Lab provides feature management infrastructure for the creation of feature toggles, rollouts, and experiments.

  • Toggles and Rollouts are features that are active or inactive for all users of an application or a specified percentage of users, respectively.
  • Experiment features include two or more variants, and each user enrolled in an experiment is presented with one version of an application depending on the variant assigned.

The Test Lab A/B Testing and Feature Flagging Platform consists of:

  1. A Node.js with Express backend server that exposes API endpoints for creating, editing, and deleting features, retrieving feature configurations, and collecting and retrieving feature data
  2. An Admin User Interface (Admin UI) built with React that facilitates creating, editing, deleting, and viewing current, scheduled, and past features as well as viewing experiment data and results
  3. A PostgreSQL database for persisting data that defines the features, the blocks of the user base allocated to each experiment, and event data for experiment analytics
  4. Native SDKs for Node.js, React, Ruby, and Python for communicating directly with the Test Lab API and allocating individual requests to the appropriate feature(s)

Test Lab is Dockerized and can be deployed on your virtual private server or AWS Elastic Container Service with one simple command.

This case study explores key decisions made when designing and implementing the Test Lab platform, including:

  • Design decisions relating to the consistency of the user experience, limiting users to one concurrent experiment with user-blocks, the granularity of user-blocks, and using polling to retrieve updated feature data

Test Lab includes a full test suite on its backend server as well as documentation on installation, the Admin UI, API endpoints, and SDKs.