1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
const { ExperimentAPI, NimbusFeatures } = ChromeUtils.import(
"resource://nimbus/ExperimentAPI.jsm"
);
const { ExperimentFakes } = ChromeUtils.import(
"resource://testing-common/NimbusTestUtils.jsm"
);
const { ExperimentManager } = ChromeUtils.import(
"resource://nimbus/lib/ExperimentManager.jsm"
);
const EXPERIMENT_VALUE = "experiment-value";
const ROLLOUT_VALUE = "rollout-value";
const ROLLOUT = "rollout";
const EXPERIMENT = "experiment";
const VALUES = {
[ROLLOUT]: ROLLOUT_VALUE,
[EXPERIMENT]: EXPERIMENT_VALUE,
};
add_task(async function test_prefs_priority() {
const pref = "nimbus.testing.testSetString";
const featureId = "testFeature";
async function doTest({ settingEnrollments, expectedValue }) {
info(
`Enrolling in a rollout and experiment where the ${settingEnrollments.join(
" and "
)} set the same pref variable.`
);
const enrollmentCleanup = [];
for (const enrollmentKind of [ROLLOUT, EXPERIMENT]) {
const config = {
featureId,
value: {},
};
if (settingEnrollments.includes(enrollmentKind)) {
config.value.testSetString = VALUES[enrollmentKind];
}
enrollmentCleanup.push(
await ExperimentFakes.enrollWithFeatureConfig(config, {
isRollout: enrollmentKind === ROLLOUT,
})
);
}
is(
NimbusFeatures[featureId].getVariable("testSetString"),
expectedValue,
"Expected the variable to match the expected value"
);
is(
Services.prefs.getStringPref(pref),
expectedValue,
"Expected the pref to match the expected value"
);
for (const cleanup of enrollmentCleanup) {
await cleanup();
}
Services.prefs.deleteBranch(pref);
}
for (const settingEnrollments of [
[ROLLOUT],
[EXPERIMENT],
[ROLLOUT, EXPERIMENT],
]) {
const expectedValue = settingEnrollments.includes(EXPERIMENT)
? EXPERIMENT_VALUE
: ROLLOUT_VALUE;
await doTest({ settingEnrollments, expectedValue });
}
});
|