All Projects → asci → evolutio

asci / evolutio

Licence: other
ab testing framework with automated code removing

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to evolutio

growthbook
Open Source Feature Flagging and A/B Testing Platform
Stars: ✭ 2,342 (+15513.33%)
Mutual labels:  ab-testing, abtesting, abtest
experiment
A/B cookie testing tool for @laravel
Stars: ✭ 55 (+266.67%)
Mutual labels:  ab-testing, abtesting, abtest
bron
🏃‍♂️ Fast & tiny test runner for Node.js
Stars: ✭ 17 (+13.33%)
Mutual labels:  test-framework, testing-tools
Tlsfuzzer
SSL and TLS protocol test suite and fuzzer
Stars: ✭ 335 (+2133.33%)
Mutual labels:  test-framework, testing-tools
Earlgrey
🍵 iOS UI Automation Test Framework
Stars: ✭ 5,353 (+35586.67%)
Mutual labels:  test-framework, testing-tools
IO-TESTER
A functional test framework
Stars: ✭ 32 (+113.33%)
Mutual labels:  test-framework, testing-tools
Wasmite
Now WebAssembly has proper testing, unit-testing and debugging 🤗
Stars: ✭ 20 (+33.33%)
Mutual labels:  test-framework, testing-tools
Mocha
☕️ simple, flexible, fun javascript test framework for node.js & the browser
Stars: ✭ 20,986 (+139806.67%)
Mutual labels:  test-framework, testing-tools
eat
Json based scenario testing tool(which can have test for functional and non-functional)
Stars: ✭ 41 (+173.33%)
Mutual labels:  test-framework, testing-tools
Testcafe
A Node.js tool to automate end-to-end web testing.
Stars: ✭ 9,176 (+61073.33%)
Mutual labels:  test-framework, testing-tools
Qtools
QTools collection of open source tools for embedded systems development on Windows, Linux and MacOS
Stars: ✭ 64 (+326.67%)
Mutual labels:  test-framework, testing-tools
Sltbench
C++ benchmark tool. Practical, stable and fast performance testing framework.
Stars: ✭ 137 (+813.33%)
Mutual labels:  test-framework, testing-tools
Telegraf-Test
Telegraf Test - Simple Test ToolKit of Telegram Bots
Stars: ✭ 22 (+46.67%)
Mutual labels:  test-framework, testing-tools
PixelTest
Fast, modern, simple iOS snapshot testing written purely in Swift.
Stars: ✭ 56 (+273.33%)
Mutual labels:  test-framework, testing-tools
estj
EstJ is my own test framework!
Stars: ✭ 13 (-13.33%)
Mutual labels:  test-framework, testing-tools
EyeJS
A JavaScript testing framework for the real world
Stars: ✭ 68 (+353.33%)
Mutual labels:  test-framework, testing-tools
Testfx
MSTest V2 framework and adapter
Stars: ✭ 391 (+2506.67%)
Mutual labels:  test-framework, testing-tools
Wysiwyg.ABTesting
A/B Testing Package for Neos
Stars: ✭ 16 (+6.67%)
Mutual labels:  ab-testing, abtesting
Rstest
Fixture-based test framework for Rust
Stars: ✭ 182 (+1113.33%)
Mutual labels:  test-framework, testing-tools
Chaos Monkey Spring Boot
Chaos Monkey for Spring Boot
Stars: ✭ 646 (+4206.67%)
Mutual labels:  test-framework, testing-tools

Evolutio-logo

Evolutio

Frontend A\B testing framework with automated code removing of finished tests

Install

npm i evolutio -S

How to use

Terms

  • Mutation - single A\B test or a feature. Contains different genes
  • Gene - single test case or option. Contains a value or piece of code to run
  • DNA - current configuration for A\B test (Mutations). Could be generated dynamically for each runtime
  • Winners DNA - configuration with winner Genes. Used to remove outdated mutations

Example

For example we need to generate 2 different texts for selling button:

Generate our DNA. This could be done by external service. Let's put it into ./src/dna.js file:

export default {
  'sell-button-text': Math.random() > 0.5 ? 'aggressive' : 'normal'
};

Then we use this DNA in src/button.js file:

import evolutio from 'evolutio';
import dna from './dna';
const { Mutation } = evolutio(dna);

function button() {
  const buttonText = Mutation('sell-button-text')
    .gene('aggressive', 'BUY NOW!')
    .gene('normal', 'Buy')
    .value();

  return `<button>${buttonText}</button>`;
}

export default button;

Removing outdated tests

add a script to your package.json:

"clean:abtest": "evolutio -w ./winners.json -s ./src --no-dry"

Here ./src is the directory with your source code (please commit your changes before running this command). And winners.json is a file with winner genes, for example like this:

{
  "sell-button-text": "normal"
}

Then, if you run this command it will modify the code of src/button.js to be like this:

import evolutio from 'evolutio';
import dna from './dna';
const { Mutation } = evolutio(dna);

function button() {
  const buttonText = 'Buy'

  return `<button>${buttonText}</button>`;
}

export default button;

API

DNA

Object Key-value object. Represend a config for current runtime or winners config for removing.

Evolutio

Function Main package function. Expect to receive DNA and returns an object with Mutation function

evolutio(dna:DNA) -> {Mutation: Mutation}

Mutation

Function Mutation function expect to receive test name. Creates new MutationInstance:

Mutation(mutationName:String) -> MutationInstance

MutationInstance

Object with mutation methods:

gene

Add new gene to mutation. Expect gene name and gene value. Value could be any variable or function:

gene(geneName:String, geneValue:mixed) -> MutationInstance

value

Immediately returns a value of active gene according to DNA

value() -> mixed

run

Immediately invoke a function of active gene according to DNA. Like value, but calling a function and returns it's result

run() -> mixed

CLI

Options:
   -d, --dry       Dry run  [true]
   -p, --print     Print output
   -s, --src       path to directory to remove outdated mutations  [./src]
   -w, --winners   Winners DNA: a JSON file with winner mutations, key is a mutation name and value is a winner gene  []
   --version       print version and exit
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].