Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1233)

Side by Side Diff: chrome/test/data/webui/settings/settings_subpage_browsertest.js

Issue 2852433003: MD Settings: Elim SettingsSubpageBrowsertest and SettingsPageVisibility (Closed)
Patch Set: Rebase + fix settings_main_test.js Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/test/data/webui/settings/settings_main_test.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 /**
6 * @fileoverview Suite of tests to ensure that settings subpages exist and
7 * load without errors. Also outputs approximate load times for each subpage.
8 */
9
10 GEN_INCLUDE(['settings_page_browsertest.js']);
11
12 /**
13 * @constructor
14 * @extends {SettingsPageBrowserTest}
15 */
16 function SettingsSubPageBrowserTest() {
17 /** @type {!Array<string>} */
18 this.subPages = [];
19 }
20
21 SettingsSubPageBrowserTest.prototype = {
22 __proto__: SettingsPageBrowserTest.prototype,
23
24 /** @override */
25 preLoad: function() {
26 SettingsPageBrowserTest.prototype.preLoad.call(this);
27 // This will cause all subpages to initially be hidden via dom-if.
28 // This allows us to test loading each subpage independently without other
29 // subpages affecting load times, etc.
30 settingsHidePagesByDefaultForTest = true;
31 },
32
33 /*
34 * Checks all subpages are hidden first.
35 * @private
36 */
37 verifySubPagesHidden_: function() {
38 var page = this.basicPage;
39 assertEquals(0, Object.keys(page.pageVisibility).length);
40
41 // Ensure all pages are still hidden after the dom-ifs compute their |if|.
42 Polymer.dom.flush();
43 var sections = page.shadowRoot.querySelectorAll('settings-section');
44 assertTrue(!!sections);
45 assertEquals(0, sections.length);
46 },
47
48 /**
49 * Ensures the subpage is initially hidden, then sets it to visible and
50 * times the result, outputting a (rough) approximation of load time for the
51 * subpage.
52 * @param {Node} page
53 * @param {string} subpage
54 */
55 testSubPage: function(page, subPage) {
56 Polymer.dom.flush();
57 assertFalse(!!this.getSection(page, subPage));
58 var startTime = window.performance.now();
59 page.set('pageVisibility.' + subPage, true);
60 Polymer.dom.flush();
61 var dtime = window.performance.now() - startTime;
62 console.log('Page: ' + subPage + ' Load time: ' + dtime.toFixed(0) + ' ms');
63 assertTrue(!!this.getSection(page, subPage));
64 // Hide the page so that it doesn't interfere with other subPages.
65 page.set('pageVisibility.' + subPage, false);
66 Polymer.dom.flush();
67 },
68
69 testSubPages: function() {
70 this.subPages.forEach(function(subPage) {
71 test(subPage, function() {
72 this.testSubPage(this.basicPage, subPage);
73 }.bind(this));
74 }.bind(this));
75 },
76 };
77
78 /** @constructor @extends {SettingsSubPageBrowserTest} */
79 function SettingsBasicSubPageBrowserTest() {
80 SettingsSubPageBrowserTest.call(this, 'basic');
81
82 /** @override */
83 this.subPages = [
84 'people',
85 'appearance',
86 'onStartup',
87 'search',
88 ];
89 if (cr.isChromeOS)
90 this.subPages.push('internet', 'bluetooth', 'device');
91 else
92 this.subPages.push('defaultBrowser');
93 }
94
95 SettingsBasicSubPageBrowserTest.prototype = {
96 __proto__: SettingsSubPageBrowserTest.prototype,
97 };
98
99 // Failing on ChromiumOS dbg. https://crbug.com/709442
100 GEN('#if defined(OS_CHROMEOS) && !defined(NDEBUG)');
101 GEN('#define MAYBE_SubPages DISABLED_SubPages');
102 GEN('#else');
103 GEN('#define MAYBE_SubPages SubPages');
104 GEN('#endif');
105 TEST_F('SettingsBasicSubPageBrowserTest', 'MAYBE_SubPages', function() {
106 suiteSetup(this.verifySubPagesHidden_.bind(this));
107 suite('Basic', this.testSubPages.bind(this));
108 mocha.run();
109 });
110
111 /** @constructor @extends {SettingsSubPageBrowserTest} */
112 function SettingsAdvancedSubPageBrowserTest() {
113 // "Advanced" sections live in the settings-basic-page.
114 SettingsSubPageBrowserTest.call(this, 'basic');
115
116 /** @override */
117 this.subPages = [
118 'privacy',
119 'passwordsAndForms',
120 'languages',
121 'downloads',
122 'printing',
123 'a11y',
124 'reset',
125 ];
126 if (cr.isChromeOS)
127 this.subPages.push('dateTime');
128 else
129 this.subPages.push('system');
130 };
131
132 SettingsAdvancedSubPageBrowserTest.prototype = {
133 __proto__: SettingsSubPageBrowserTest.prototype,
134
135 /** @override */
136 setUp: function() {
137 this.toggleAdvanced();
138 SettingsSubPageBrowserTest.prototype.setUp.call(this);
139 },
140 };
141
142 TEST_F('SettingsAdvancedSubPageBrowserTest', 'SubPages', function() {
143 suiteSetup(this.verifySubPagesHidden_.bind(this));
144 suite('Advanced', this.testSubPages.bind(this));
145 mocha.run();
146 });
OLDNEW
« no previous file with comments | « chrome/test/data/webui/settings/settings_main_test.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698