diff options
Diffstat (limited to 'app/assets/javascripts/experimentation/utils.js')
-rw-r--r-- | app/assets/javascripts/experimentation/utils.js | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/app/assets/javascripts/experimentation/utils.js b/app/assets/javascripts/experimentation/utils.js index d3e7800f643..572907f226d 100644 --- a/app/assets/javascripts/experimentation/utils.js +++ b/app/assets/javascripts/experimentation/utils.js @@ -1,5 +1,6 @@ // This file only applies to use of experiments through https://gitlab.com/gitlab-org/gitlab-experiment import { get } from 'lodash'; +import { DEFAULT_VARIANT, CANDIDATE_VARIANT } from './constants'; export function getExperimentData(experimentName) { return get(window, ['gon', 'experiment', experimentName]); @@ -8,3 +9,20 @@ export function getExperimentData(experimentName) { export function isExperimentVariant(experimentName, variantName) { return getExperimentData(experimentName)?.variant === variantName; } + +export function getExperimentVariant(experimentName) { + return getExperimentData(experimentName)?.variant || DEFAULT_VARIANT; +} + +export function experiment(experimentName, variants) { + const variant = getExperimentVariant(experimentName); + + switch (variant) { + case DEFAULT_VARIANT: + return variants.use.call(); + case CANDIDATE_VARIANT: + return variants.try.call(); + default: + return variants[variant].call(); + } +} |