33
44"use strict" ;
55
6- add_task ( async function testHiddenWhenStudiesDisabled ( ) {
6+ const { EnterprisePolicyTesting } = ChromeUtils . importESModule (
7+ "resource://testing-common/EnterprisePolicyTesting.sys.mjs"
8+ ) ;
9+
10+ add_task ( async function testHiddenWhenLabsDisabled ( ) {
711 const cleanup = await setupLabsTest ( ) ;
812 await SpecialPowers . pushPrefEnv ( {
9- set : [
10- [ "browser.preferences.experimental" , true ] ,
11- [ "browser.preferences.experimental.hidden" , false ] ,
12- ] ,
13+ set : [ [ "browser.preferences.experimental.hidden" , false ] ] ,
14+ } ) ;
15+
16+ await EnterprisePolicyTesting . setupPolicyEngineWithJson ( {
17+ policies : {
18+ UserMessaging : { FirefoxLabs : false } ,
19+ } ,
1320 } ) ;
1421
1522 await BrowserTestUtils . openNewForegroundTab (
@@ -19,151 +26,27 @@ add_task(async function testHiddenWhenStudiesDisabled() {
1926
2027 const doc = gBrowser . contentDocument ;
2128
22- await waitForExperimentalFeaturesShown ( doc ) ;
23-
24- const enrollPromises = [
25- promiseNimbusStoreUpdate ( "nimbus-qa-1" , true ) ,
26- promiseNimbusStoreUpdate ( "nimbus-qa-2" , true ) ,
27- ] ;
28-
29- await enrollByClick ( doc . getElementById ( "nimbus-qa-1" ) , true ) ;
30- await enrollByClick ( doc . getElementById ( "nimbus-qa-2" ) , true ) ;
31-
32- await enrollPromises ;
33-
34- const unenrollPromises = [
35- promiseNimbusStoreUpdate ( "nimbus-qa-1" , false ) ,
36- promiseNimbusStoreUpdate ( "nimbus-qa-2" , false ) ,
37- ] ;
38-
39- // Disabling studies should remove the experimental pane.
40- await SpecialPowers . pushPrefEnv ( {
41- set : [ [ "app.shield.optoutstudies.enabled" , false ] ] ,
42- } ) ;
43-
44- await waitForExperimentalFeaturesHidden ( doc ) ;
45- await unenrollPromises ;
46-
47- ok (
48- ! ExperimentAPI . _manager . store . get ( "nimbus-qa-1" ) ?. active ,
49- "Should unenroll from nimbus-qa-1"
50- ) ;
51- ok (
52- ! ExperimentAPI . _manager . store . get ( "nimbus-qa-2" ) ?. active ,
53- "Should unenroll from nimbus-qa-2"
29+ await TestUtils . waitForCondition (
30+ ( ) => doc . getElementById ( "category-experimental" ) . hidden ,
31+ "Wait for Experimental Features section label to become hidden"
5432 ) ;
5533
56- // Re-enabling studies should re-add it.
57- await SpecialPowers . popPrefEnv ( ) ;
58- await waitForExperimentalFeaturesShown ( doc ) ;
59-
60- // Navigate back to the experimental tab.
61- EventUtils . synthesizeMouseAtCenter (
62- doc . getElementById ( "category-experimental" ) ,
63- { } ,
64- gBrowser . contentWindow
34+ is (
35+ doc . getElementById ( "pane-experimental-featureGates" ) ,
36+ null ,
37+ "Experimental Features section not added to the DOM"
6538 ) ;
6639
67- await waitForPageFlush ( ) ;
68-
6940 is (
7041 doc . querySelector ( ".category[selected]" ) . id ,
71- "category-experimental" ,
72- "Experimental category selected"
73- ) ;
74-
75- ok (
76- ! doc . getElementById ( "nimbus-qa-1" ) . checked ,
77- "nimbus-qa-1 checkbox unchecked"
78- ) ;
79- ok (
80- ! doc . getElementById ( "nimbus-qa-2" ) . checked ,
81- "nimbus-qa-2 checkbox unchecked"
82- ) ;
83-
84- await enrollByClick ( doc . getElementById ( "nimbus-qa-1" ) , true ) ;
85- await enrollByClick ( doc . getElementById ( "nimbus-qa-2" ) , true ) ;
86-
87- // Likewise, disabling telemetry should remove the experimental pane.
88- await SpecialPowers . pushPrefEnv ( {
89- set : [ [ "datareporting.healthreport.uploadEnabled" , false ] ] ,
90- } ) ;
91-
92- await waitForExperimentalFeaturesHidden ( doc ) ;
93-
94- ok (
95- ! ExperimentAPI . _manager . store . get ( "nimbus-qa-1" ) ?. active ,
96- "Should unenroll from nimbus-qa-1"
97- ) ;
98- ok (
99- ! ExperimentAPI . _manager . store . get ( "nimbus-qa-2" ) ?. active ,
100- "Should unenroll from nimbus-qa-2"
101- ) ;
102-
103- await SpecialPowers . popPrefEnv ( ) ;
104-
105- // Re-enabling studies should re-add it.
106- await waitForExperimentalFeaturesShown ( doc ) ;
107-
108- ok (
109- ! doc . getElementById ( "nimbus-qa-1" ) . checked ,
110- "nimbus-qa-1 checkbox unchecked"
111- ) ;
112- ok (
113- ! doc . getElementById ( "nimbus-qa-2" ) . checked ,
114- "nimbus-qa-2 checkbox unchecked"
42+ "category-general" ,
43+ "When the experimental features section is hidden, navigating to #experimental should redirect to #general"
11544 ) ;
11645
11746 BrowserTestUtils . removeTab ( gBrowser . selectedTab ) ;
11847
119- await cleanup ( ) ;
12048 await SpecialPowers . popPrefEnv ( ) ;
121- } ) ;
122-
123- async function waitForExperimentalFeaturesShown ( doc ) {
124- await TestUtils . waitForCondition (
125- ( ) => doc . querySelector ( ".featureGate" ) ,
126- "Wait for features to be added to the DOM"
127- ) ;
128-
129- ok (
130- ! doc . getElementById ( "category-experimental" ) . hidden ,
131- "Experimental Features section should not be hidden"
132- ) ;
133-
134- ok (
135- ! Services . prefs . getBoolPref ( "browser.preferences.experimental.hidden" ) ,
136- "Hidden pref should be false"
137- ) ;
138- }
139-
140- async function waitForExperimentalFeaturesHidden ( doc ) {
141- await TestUtils . waitForCondition (
142- ( ) => doc . getElementById ( "category-experimental" ) . hidden ,
143- "Wait for Experimental Features section to get hidden"
144- ) ;
145-
146- ok (
147- doc . getElementById ( "category-experimental" ) . hidden ,
148- "Experimental Features section should be hidden when all features are hidden"
149- ) ;
150- ok (
151- doc . getElementById ( "firefoxExperimentalCategory" ) . hidden ,
152- "Experimental Features header should be hidden when all features are hidden"
153- ) ;
154- is (
155- doc . querySelector ( ".category[selected]" ) . id ,
156- "category-general" ,
157- "When the experimental features section is hidden, navigating to #experimental should redirect to #general"
158- ) ;
159- ok (
160- Services . prefs . getBoolPref ( "browser.preferences.experimental.hidden" ) ,
161- "Hidden pref should be true"
162- ) ;
163- }
49+ await cleanup ( ) ;
16450
165- function waitForPageFlush ( ) {
166- return new Promise ( resolve =>
167- requestAnimationFrame ( ( ) => requestAnimationFrame ( resolve ) )
168- ) ;
169- }
51+ await EnterprisePolicyTesting . setupPolicyEngineWithJson ( { } ) ;
52+ } ) ;
0 commit comments