summaryrefslogtreecommitdiffstats
path: root/toolkit/components/nimbus/test/browser/browser_experiment_single_feature_enrollment.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/nimbus/test/browser/browser_experiment_single_feature_enrollment.js')
-rw-r--r--toolkit/components/nimbus/test/browser/browser_experiment_single_feature_enrollment.js128
1 files changed, 128 insertions, 0 deletions
diff --git a/toolkit/components/nimbus/test/browser/browser_experiment_single_feature_enrollment.js b/toolkit/components/nimbus/test/browser/browser_experiment_single_feature_enrollment.js
new file mode 100644
index 0000000000..b9a016d778
--- /dev/null
+++ b/toolkit/components/nimbus/test/browser/browser_experiment_single_feature_enrollment.js
@@ -0,0 +1,128 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const { ExperimentFakes } = ChromeUtils.importESModule(
+ "resource://testing-common/NimbusTestUtils.sys.mjs"
+);
+const { ExperimentAPI } = ChromeUtils.importESModule(
+ "resource://nimbus/ExperimentAPI.sys.mjs"
+);
+
+const SINGLE_FEATURE_RECIPE = {
+ appId: "firefox-desktop",
+ appName: "firefox_desktop",
+ arguments: {},
+ branches: [
+ {
+ feature: {
+ featureId: "urlbar",
+ isEarlyStartup: true,
+ value: {
+ enabled: true,
+ quickSuggestEnabled: false,
+ quickSuggestNonSponsoredIndex: -1,
+ quickSuggestShouldShowOnboardingDialog: true,
+ quickSuggestShowOnboardingDialogAfterNRestarts: 2,
+ quickSuggestSponsoredIndex: -1,
+ },
+ },
+ ratio: 1,
+ slug: "control",
+ },
+ {
+ feature: {
+ featureId: "urlbar",
+ isEarlyStartup: true,
+ value: {
+ enabled: true,
+ quickSuggestEnabled: true,
+ quickSuggestNonSponsoredIndex: -1,
+ quickSuggestShouldShowOnboardingDialog: false,
+ quickSuggestShowOnboardingDialogAfterNRestarts: 2,
+ quickSuggestSponsoredIndex: -1,
+ },
+ },
+ ratio: 1,
+ slug: "treatment",
+ },
+ ],
+ bucketConfig: {
+ count: 10000,
+ namespace: "urlbar-9",
+ randomizationUnit: "normandy_id",
+ start: 0,
+ total: 10000,
+ },
+ channel: "release",
+ endDate: null,
+ featureIds: ["urlbar"],
+ id: "firefox-suggest-history-vs-offline",
+ isEnrollmentPaused: false,
+ outcomes: [],
+ probeSets: [],
+ proposedDuration: 28,
+ proposedEnrollment: 7,
+ referenceBranch: "control",
+ schemaVersion: "1.5.0",
+ slug: "firefox-suggest-history-vs-offline",
+ startDate: "2021-07-21",
+ targeting: "true",
+ userFacingDescription: "Smarter suggestions in the AwesomeBar",
+ userFacingName: "Firefox Suggest - History vs Offline",
+};
+
+const SYNC_DATA_PREF_BRANCH = "nimbus.syncdatastore.";
+
+add_task(async function test_TODO() {
+ let { enrollmentPromise, doExperimentCleanup } =
+ ExperimentFakes.enrollmentHelper(SINGLE_FEATURE_RECIPE);
+ let sandbox = sinon.createSandbox();
+ let stub = sandbox.stub(ExperimentAPI, "recordExposureEvent");
+
+ await enrollmentPromise;
+
+ Assert.ok(
+ ExperimentAPI.getExperiment({ featureId: "urlbar" }),
+ "Should enroll in single feature experiment"
+ );
+
+ Assert.ok(
+ Services.prefs.getStringPref(`${SYNC_DATA_PREF_BRANCH}urlbar`),
+ "Should store early startup feature for sync access"
+ );
+ Assert.equal(
+ Services.prefs.getIntPref(
+ `${SYNC_DATA_PREF_BRANCH}urlbar.quickSuggestSponsoredIndex`
+ ),
+ -1,
+ "Should store early startup variable for sync access"
+ );
+
+ Assert.equal(
+ NimbusFeatures.urlbar.getVariable(
+ "quickSuggestShowOnboardingDialogAfterNRestarts"
+ ),
+ 2,
+ "Should return value"
+ );
+
+ NimbusFeatures.urlbar.recordExposureEvent();
+
+ Assert.ok(stub.calledOnce, "Should be called once by urlbar");
+ Assert.equal(
+ stub.firstCall.args[0].experimentSlug,
+ "firefox-suggest-history-vs-offline",
+ "Should have expected slug"
+ );
+ Assert.equal(
+ stub.firstCall.args[0].featureId,
+ "urlbar",
+ "Should have expected featureId"
+ );
+
+ await doExperimentCleanup();
+ sandbox.restore();
+ NimbusFeatures.urlbar._didSendExposureEvent = false;
+});