Javascript AB testing tool
npm install splitsterecmascript 6
import splitsterInit from "splitster"
splitsterInit(config)
`
Where config is an object with following structure:
`ecmascript 6
const config = {
tests,
userGroups,
tracks,
options,
}
export default config
`tests
Object of key value pairs representing running tests.Key: string id of test
Value: test configuration
`ecmascript 6
// Your tests specified by id
const tests = {
// Test with id test_1
test_1: { // Short description - optional
description: "Check if user likes more red, blue or green button",
// Groups which user must satisfy - optional
userGroups: ["enUsers"],
// Overall usage of test in % - optional - if not specified 100 is used
usage: 100,
// Array of tracks to use when test is ran - optional
runTrack: [],
// Array of tracks to use when test is being first time applied in code - optional
useTrack: [],
// Array of tracks to use when test is successful
endTrack: [],
// Test is disabled, always return default variant
disabled: false,
// Default variant id
defaultVariant: "RED",
// Variants of the test specified by id.
variants: {
// Variant with id RED
RED: {
// If test is not ran, variant with specified default value is always returned
// Actual value of variant. Will be return by calling splitser.get(test_id).value
value: "RED",
// Ratio of probability distribution against other variants
// ratio 1-1 (also 50-50) means 50% probability
ratio: 3,
},
BLUE: {
value: "BLUE",
ratio: 4,
},
// Shorthand - value is same as ID
GREEN: 2,
},
},
}
`
$3
Track may be string ID of object specified in general tracks section, or inline function taking result of test:
`ecmascript 6
[
GENERAL_TRACK_ID,
(res) => {},
]
`
#### runTrack
tracks used when experiment is ran - this happens only one per test life
`ecmascript 6
splitster.run(test_id) // Runs one experiment
// OR
splitster.runAll() // Runs all experiments
`
#### useTrack
tracks used when experiment value is required. Runs only once.
Useful to make sure user has really seen experiment in action
`ecmascript 6
const variant = splitster.get(test_id) //useTracks calling
if (variant.value === 1) {
// Do stuff
} else if (variant.value === 2) {
// Do other stuff
}
`
#### endTrack
final tracks when test is successful. May be called multiple times.
`ecmascript 6
document.getElementById("button").addEventListener("click", () => {
splitster.track(test_id) //endTracks calling
})
`
userGroups
Defines groups which user must satisfies if test can be started.
`ecmascript 6
import splitsterInit from "splitster"
splitsterInit(config, user)
`
Object of key value pairs
`ecmascript 6
const userGroups = {
enUsers: [
{"language": ["en", "hi"]}
],
customUsers: [
(user) => user.isValid(),
]
}
`
one group is an array of rules which user object must satisfies.Rule can be object: defining structure of user object
or function which takes user object and if returns true, rule passed
tracks
Object of tracks specified by idTrack is a function taking test object and doing developer specified tasks.
Useful for logging, sending results etc.
`ecmascript 6
tracks = {
CONSOLE_TRACK: (test) => { console.log(test) },
}
``
separateTest: if true, only one test is used at time. Test is chosen randomly.
Useful when you don't want to pollute your results with too many tests running at the same time.
expiration: number of days cookies should last.
name: prefix of cookies set in browser - default splitster
{name_test_id}