# eleanor-split-test

> Split testing helper

Latest version **0.1.3** (published 2017-11-25) · ISC license · 0 weekly downloads

## Install

```sh
npm install eleanor-split-test
pnpm add eleanor-split-test
yarn add eleanor-split-test
bun add eleanor-split-test
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.3 |
| Published | 2017-11-25 |
| First published | 2017-11-25 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Maintainers | zappen999 |
| Keywords | Split, test |

## Links

- npm: https://www.npmjs.com/package/eleanor-split-test
- Repository: https://github.com/zappen999/eleanor-split-test
- Homepage: https://github.com/zappen999/eleanor-split-test#readme
- Issues: https://github.com/zappen999/eleanor-split-test/issues
- npm.io page: https://npm.io/package/eleanor-split-test

## Alternatives

- [duck](https://npm.io/package/duck.md) — 4.2M weekly downloads
- [ava](https://npm.io/package/ava.md) — 560.2K weekly downloads
- [storybook-addon-module-mock](https://npm.io/package/storybook-addon-module-mock.md) — 71.7K weekly downloads
- [@ethereum-waffle/mock-contract](https://npm.io/package/@ethereum-waffle/mock-contract.md) — 40.0K weekly downloads
- [aws-elasticsearch-connector](https://npm.io/package/aws-elasticsearch-connector.md) — 37.4K weekly downloads

## Recent versions

- 0.1.3 (latest) — 2017-11-25
- 0.1.2 — 2017-11-25
- 0.1.1 — 2017-11-25
- 0.1.0 — 2017-11-25

## README

# Split testing
The purpose of this module is to aid in split testing node.js based
applications, whether it's in the browser, or backends.

## Scope
This module provides a generic way to setup and measure experiments
with weighted outcomes. 

Conclusions of what outcome performed the best cannot be determined
only by using this module.

## Example usage

```js
import { Experiment } from 'eleanor-split-test';

// setup the experiment
const experiment = new Experiment({
  // Name of this test, to be able to distinguish between tests when running
  // multiple at the same time.
  name: 'green-vs-red-btn',
  // Configure the different outcomes that you want to test, along with a
  // weight that tells how likely the outcome is.
  outcomes: [
    ['green', 0.5],
    ['red', 0.5],
  ],
  // Supply a function that will be triggered when evaluating an experiment.
  report: (experimentName, outcomeName, userId) => {
    console.log('Send to your favorite analytics service');
  },
  // (Optional) Persisting functions, when you want the first outcome be become
  // sticky for this particular user.
  persist: {
    read,
    write,
  },
  // (Optional) Used in multi-user contexts, such as backend applications to
  // distinguish between users when persisting the outcome.
  userId: 3,
});

// evaluate the actual experiment
experiment.evaluate().then(outcomeName => {
  console.log('Lets go with the', outcomeName, 'button');
});

// Example of persisting functions
const fakeDb = {};

function read(key) {
  return Promise.resolve(fakeDb[key]);
}

function write(key, outcome) {
  fakeDb[key] = outcome;
  return Promise.resolve();
}
```

---
_Source: https://npm.io/package/eleanor-split-test · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
