summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/experimentation/utils.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/experimentation/utils.js')
-rw-r--r--app/assets/javascripts/experimentation/utils.js18
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();
+ }
+}