summaryrefslogtreecommitdiff
path: root/lib/gitlab/experimentation.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/experimentation.rb')
-rw-r--r--lib/gitlab/experimentation.rb24
1 files changed, 21 insertions, 3 deletions
diff --git a/lib/gitlab/experimentation.rb b/lib/gitlab/experimentation.rb
index d3df9be0d63..9908369426a 100644
--- a/lib/gitlab/experimentation.rb
+++ b/lib/gitlab/experimentation.rb
@@ -53,9 +53,21 @@ module Gitlab
},
new_create_project_ui: {
tracking_category: 'Manage::Import::Experiment::NewCreateProjectUi'
+ },
+ terms_opt_in: {
+ tracking_category: 'Growth::Acquisition::Experiment::TermsOptIn'
+ },
+ contact_sales_btn_in_app: {
+ tracking_category: 'Growth::Conversion::Experiment::ContactSalesInApp'
+ },
+ customize_homepage: {
+ tracking_category: 'Growth::Expansion::Experiment::CustomizeHomepage'
}
}.freeze
+ GROUP_CONTROL = :control
+ GROUP_EXPERIMENTAL = :experimental
+
# Controller concern that checks if an `experimentation_subject_id cookie` is present and sets it if absent.
# Used for A/B testing of experimental features. Exposes the `experiment_enabled?(experiment_name)` method
# to controllers and views. It returns true when the experiment is enabled and the user is selected as part
@@ -100,6 +112,12 @@ module Gitlab
end
end
+ def record_experiment_user(experiment_key)
+ return unless Experimentation.enabled?(experiment_key) && current_user
+
+ ::Experiment.add_user(experiment_key, tracking_group(experiment_key), current_user)
+ end
+
private
def dnt_enabled?
@@ -126,7 +144,7 @@ module Gitlab
{
category: tracking_category(experiment_key),
action: action,
- property: tracking_group(experiment_key),
+ property: "#{tracking_group(experiment_key)}_group",
label: experimentation_subject_id,
value: value
}.compact
@@ -139,7 +157,7 @@ module Gitlab
def tracking_group(experiment_key)
return unless Experimentation.enabled?(experiment_key)
- experiment_enabled?(experiment_key) ? 'experimental_group' : 'control_group'
+ experiment_enabled?(experiment_key) ? GROUP_EXPERIMENTAL : GROUP_CONTROL
end
def forced_enabled?(experiment_key)
@@ -167,7 +185,7 @@ module Gitlab
Experiment = Struct.new(:key, :environment, :tracking_category, keyword_init: true) do
def enabled?
- experiment_percentage.positive?
+ experiment_percentage > 0
end
def enabled_for_environment?