Commit d6f810ff authored by rbpotter's avatar rbpotter Committed by Commit Bot

Settings: Migrate advanced_page browser tests to Polymer 3

Bug: 1026426
Change-Id: I72fc3a4551c77c4f07e199ba1366f09c3c0afc44
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2136279
Commit-Queue: Rebekah Potter <rbpotter@chromium.org>
Reviewed-by: default avatardpapad <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#757176}
parent 090206ce
......@@ -101,7 +101,6 @@ js2gtest("browser_tests_js_webui") {
"settings/a11y/basic_a11y_test.js",
"settings/a11y/edit_dictionary_a11y_test.js",
"settings/a11y/passwords_a11y_test.js",
"settings/advanced_page_browsertest.js",
"settings/cr_settings_browsertest.js",
"settings/cr_settings_v3_browsertest.js",
"settings/help_page_browsertest.js",
......@@ -215,6 +214,7 @@ js2gtest("browser_tests_js_webui") {
"$root_gen_dir/chrome/test/data/webui/mock_timer.m.js",
"$root_gen_dir/chrome/test/data/webui/resources/list_property_update_behavior_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/about_page_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/advanced_page_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/all_sites_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/appearance_page_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/appearance_fonts_page_test.m.js",
......@@ -272,6 +272,7 @@ js2gtest("browser_tests_js_webui") {
"$root_gen_dir/chrome/test/data/webui/settings/secure_dns_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/settings_main_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/settings_menu_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/settings_page_test_util.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/settings_slider_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/settings_subpage_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/settings_textarea_tests.m.js",
......
......@@ -9,6 +9,7 @@ import("../namespace_rewrites.gni")
js_modulizer("modulize") {
input_files = [
"about_page_tests.js",
"advanced_page_test.js",
"all_sites_tests.js",
"appearance_fonts_page_test.js",
"appearance_page_test.js",
......@@ -69,6 +70,7 @@ js_modulizer("modulize") {
"settings_animated_pages_test.js",
"settings_main_test.js",
"settings_menu_test.js",
"settings_page_test_util.js",
"settings_slider_tests.js",
"settings_subpage_test.js",
"settings_textarea_tests.js",
......@@ -156,6 +158,8 @@ js_modulizer("modulize") {
"settings.setSearchManagerForTesting|setSearchManagerForTesting",
"settings.TestLanguagesBrowserProxy|TestLanguagesBrowserProxy",
"settings.TestLifetimeBrowserProxy|TestLifetimeBrowserProxy",
"settings_page_test_util.getPage|getPage",
"settings_page_test_util.getSection|getSection",
"settings_search.createSampleSearchEngine|createSampleSearchEngine",
"settings_search.TestSearchEnginesBrowserProxy|TestSearchEnginesBrowserProxy",
"sync_test_util.getSyncAllPrefs|getSyncAllPrefs",
......
......@@ -4,47 +4,40 @@
/** @fileoverview Suite of tests for the Settings advanced page. */
// Polymer BrowserTest fixture.
GEN_INCLUDE(['//chrome/test/data/webui/polymer_browser_test_base.js']);
/**
* @constructor
* @extends {PolymerTest}
*/
function SettingsAdvancedPageBrowserTest() {}
SettingsAdvancedPageBrowserTest.prototype = {
__proto__: PolymerTest.prototype,
/** @override */
browsePreload: 'chrome://settings/',
/** @override */
extraLibraries: [
...PolymerTest.prototype.extraLibraries,
'settings_page_test_util.js',
],
/** @override */
setUp: function() {
PolymerTest.prototype.setUp.call(this);
suiteSetup(function() {
return CrSettingsPrefs.initialized;
});
suiteSetup(() => {
return settings_page_test_util.getPage('basic').then(basicPage => {
this.basicPage = basicPage;
});
});
},
// clang-format off
// #import {CrSettingsPrefs} from 'chrome://settings/settings.js';
// #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
// #import {getPage, getSection} from 'chrome://test/settings/settings_page_test_util.m.js';
// clang-format on
suite('AdvancedPage', function() {
let basicPage = null;
suiteSetup(function() {
PolymerTest.clearBody();
const ui = document.createElement('settings-ui');
document.body.appendChild(ui);
return CrSettingsPrefs.initialized
.then(() => {
return settings_page_test_util.getPage('basic');
})
.then(page => {
basicPage = page;
const settingsMain =
document.querySelector('settings-ui').$$('settings-main');
assertTrue(!!settingsMain);
settingsMain.advancedToggleExpanded =
!settingsMain.advancedToggleExpanded;
Polymer.dom.flush();
});
});
/**
* Verifies the section has a visible #main element and that any possible
* sub-pages are hidden.
* @param {!Node} The DOM node for the section.
*/
verifySubpagesHidden: function(section) {
function verifySubpagesHidden(section) {
// Check if there are sub-pages to verify.
const pages = section.firstElementChild.shadowRoot.querySelector(
'settings-animated-pages');
......@@ -77,49 +70,21 @@ SettingsAdvancedPageBrowserTest.prototype = {
' not to be visible.');
}
}
};
// Times out on debug builders because the Settings page can take several
// seconds to load in a Release build and several times that in a Debug build.
// See https://crbug.com/558434.
GEN('#if !defined(NDEBUG)');
GEN('#define MAYBE_Load DISABLED_Load');
GEN('#else');
GEN('#define MAYBE_Load Load');
GEN('#endif');
TEST_F('SettingsAdvancedPageBrowserTest', 'MAYBE_Load', function() {
// Assign |self| to |this| instead of binding since 'this' in suite()
// and test() will be a Mocha 'Suite' or 'Test' instance.
const self = this;
// Register mocha tests.
suite('SettingsPage', function() {
suiteSetup(function() {
const settingsMain =
document.querySelector('settings-ui').$$('settings-main');
assert(!!settingsMain);
settingsMain.advancedToggleExpanded =
!settingsMain.advancedToggleExpanded;
Polymer.dom.flush();
});
test('load page', function() {
// This will fail if there are any asserts or errors in the Settings page.
});
test('advanced pages', function() {
const page = self.basicPage;
const sections =
['privacy', 'languages', 'downloads', 'printing', 'reset'];
for (let i = 0; i < sections.length; i++) {
const section = settings_page_test_util.getSection(page, sections[i]);
assertTrue(!!section);
self.verifySubpagesHidden(section);
}
});
test('load page', function() {
// This will fail if there are any asserts or errors in the Settings page.
});
// Run all registered tests.
mocha.run();
test('advanced pages', function() {
const sections = ['a11y', 'languages', 'downloads', 'printing', 'reset'];
if (!loadTimeData.getBoolean('privacySettingsRedesignEnabled')) {
sections.push('privacy');
}
for (let i = 0; i < sections.length; i++) {
const section =
settings_page_test_util.getSection(basicPage, sections[i]);
assertTrue(!!section);
verifySubpagesHidden(section);
}
});
});
......@@ -2259,3 +2259,35 @@ CrSettingsBasicPageTest.prototype = {
TEST_F('CrSettingsBasicPageTest', 'All', function() {
mocha.run();
});
/**
* @constructor
* @extends {CrSettingsBrowserTest}
*/
function CrSettingsAdvancedPageTest() {}
CrSettingsAdvancedPageTest.prototype = {
__proto__: CrSettingsBrowserTest.prototype,
/** @override */
browsePreload: 'chrome://settings/',
/** @override */
extraLibraries: CrSettingsBrowserTest.prototype.extraLibraries.concat([
'settings_page_test_util.js',
'advanced_page_test.js',
]),
};
// Times out on debug builders because the Settings page can take several
// seconds to load in a Release build and several times that in a Debug build.
// See https://crbug.com/558434.
GEN('#if !defined(NDEBUG)');
GEN('#define MAYBE_Load DISABLED_Load');
GEN('#else');
GEN('#define MAYBE_Load Load');
GEN('#endif');
TEST_F('CrSettingsAdvancedPageTest', 'MAYBE_Load', function() {
mocha.run();
});
......@@ -389,6 +389,27 @@ TEST_F('CrSettingsRouteV3Test', 'MAYBE_NonExistentRoute', function() {
runMochaSuite('NonExistentRoute');
});
// eslint-disable-next-line no-var
var CrSettingsAdvancedPageV3Test = class extends CrSettingsV3BrowserTest {
/** @override */
get browsePreload() {
return 'chrome://settings/test_loader.html?module=settings/advanced_page_test.m.js';
}
};
// Copied from Polymer 2 test:
// Times out on debug builders because the Settings page can take several
// seconds to load in a Release build and several times that in a Debug build.
// See https://crbug.com/558434.
GEN('#if !defined(NDEBUG)');
GEN('#define MAYBE_Load DISABLED_Load');
GEN('#else');
GEN('#define MAYBE_Load Load');
GEN('#endif');
TEST_F('CrSettingsAdvancedPageV3Test', 'MAYBE_Load', function() {
mocha.run();
});
[['AllSites', 'all_sites_tests.m.js'],
['AppearanceFontsPage', 'appearance_fonts_page_test.m.js'],
['AppearancePage', 'appearance_page_test.m.js'],
......
......@@ -2,6 +2,10 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// clang-format off
// #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
// clang-format on
/** @fileoverview Test utils for Settings page tests. */
cr.define('settings_page_test_util', function() {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment