Skip to content

Commit

Permalink
[CrOS Settings] Check-in Polymer3 code for multidevice page tests
Browse files Browse the repository at this point in the history
We no longer need to generate modulized versions of the JS test files
(`.m.js`) at build time. Instead, we can check-in the modulized version
and then use the test source files directly in
`os_settings_v3_browsertest.js`.

Bug: 1180979
Test: out/Default/browser_tests --gtest_filter='*OSSettingsMultidevice*'
Change-Id: I8bd847f8c232c752ff086e9df5ae61908f6b73bf
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3556130
Reviewed-by: Kyle Horimoto <khorimoto@chromium.org>
Reviewed-by: Xiaohui Chen <xiaohuic@chromium.org>
Commit-Queue: Wes Okuhara <wesokuhara@google.com>
Cr-Commit-Position: refs/heads/main@{#987121}
  • Loading branch information
Wes Okuhara authored and Chromium LUCI CQ committed Mar 30, 2022
1 parent 9dccb18 commit 6f09691
Show file tree
Hide file tree
Showing 18 changed files with 766 additions and 905 deletions.
11 changes: 0 additions & 11 deletions chrome/test/data/webui/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -329,16 +329,6 @@ if (include_js_tests) {
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/kerberos_page_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/keyboard_shortcut_banner_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/manage_accessibility_page_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/multidevice_feature_item_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/multidevice_feature_toggle_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/multidevice_notification_access_setup_dialog_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/multidevice_page_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/multidevice_permissions_setup_dialog_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/multidevice_smartlock_item_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/multidevice_smartlock_subpage_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/multidevice_subpage_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/multidevice_wifi_sync_disabled_link_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/multidevice_wifi_sync_item_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/network_always_on_vpn_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/network_proxy_section_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/network_summary_item_test.m.js",
Expand Down Expand Up @@ -382,7 +372,6 @@ if (include_js_tests) {
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/test_cups_printers_browser_proxy.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/test_guest_os_browser_proxy.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/test_internet_page_browser_proxy.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/test_multidevice_browser_proxy.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/test_os_languages_browser_proxy.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/test_kerberos_accounts_browser_proxy.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/test_os_languages_metrics_proxy.m.js",
Expand Down
14 changes: 0 additions & 14 deletions chrome/test/data/webui/settings/chromeos/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -98,19 +98,6 @@ js_modulizer("modulize") {
"kerberos_page_test.js",
"keyboard_shortcut_banner_test.js",
"manage_accessibility_page_tests.js",
"multidevice_combined_setup_item_tests.js",
"multidevice_feature_item_tests.js",
"multidevice_feature_toggle_tests.js",
"multidevice_notification_access_setup_dialog_tests.js",
"multidevice_page_tests.js",
"multidevice_permissions_setup_dialog_tests.js",
"multidevice_smartlock_item_test.js",
"multidevice_smartlock_subpage_test.js",
"multidevice_subpage_tests.js",
"multidevice_task_continuation_item_tests.js",
"multidevice_task_continuation_disabled_link_tests.js",
"multidevice_wifi_sync_disabled_link_tests.js",
"multidevice_wifi_sync_item_tests.js",
"network_always_on_vpn_test.js",
"network_proxy_section_test.js",
"network_summary_test.js",
Expand Down Expand Up @@ -156,7 +143,6 @@ js_modulizer("modulize") {
"test_device_name_browser_proxy.js",
"test_guest_os_browser_proxy.js",
"test_kerberos_accounts_browser_proxy.js",
"test_multidevice_browser_proxy.js",
"test_internet_page_browser_proxy.js",
"test_os_languages_browser_proxy.js",
"test_os_languages_metrics_proxy.js",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
// #import {setESimManagerRemoteForTesting} from 'chrome://resources/cr_components/chromeos/cellular_setup/mojo_interface_provider.m.js';
// #import {FakeESimManagerRemote} from 'chrome://test/cr_components/chromeos/cellular_setup/fake_esim_manager_remote.m.js';
// #import {MultiDeviceFeatureState, MultiDeviceBrowserProxyImpl} from 'chrome://os-settings/chromeos/os_settings.js';
// #import {TestMultideviceBrowserProxy} from './test_multidevice_browser_proxy.m.js';
// #import {TestMultideviceBrowserProxy} from './test_multidevice_browser_proxy.js';
// #import {flush, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
// #import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
// #import {OncMojo} from 'chrome://resources/cr_components/chromeos/network/onc_mojo.m.js';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,27 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// clang-format off
// #import 'chrome://os-settings/chromeos/os_settings.js';
import {MultiDeviceFeatureState, SyncBrowserProxyImpl} from 'chrome://os-settings/chromeos/os_settings.js';
import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';

// #import {assertFalse, assertTrue} from '../../chai_assert.js';
// #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
// #import {MultiDeviceFeature, MultiDeviceFeatureState, SyncBrowserProxyImpl} from 'chrome://os-settings/chromeos/os_settings.js';
// #import {TestBrowserProxy} from 'chrome://test/test_browser_proxy.js';
// #import {TestSyncBrowserProxy} from './test_os_sync_browser_proxy.m.js';
// clang-format on
import {assertFalse, assertTrue} from '../../chai_assert.js';

import {TestSyncBrowserProxy} from './test_os_sync_browser_proxy.m.js';

suite('Multidevice', function() {
let combinedSetupItem;

setup(function() {
const browserProxy = new TestSyncBrowserProxy();
settings.SyncBrowserProxyImpl.setInstance(browserProxy);
SyncBrowserProxyImpl.setInstance(browserProxy);

PolymerTest.clearBody();

combinedSetupItem =
document.createElement('settings-multidevice-combined-setup-item');
document.body.appendChild(combinedSetupItem);

Polymer.dom.flush();
flush();
});

teardown(function() {
Expand All @@ -39,8 +36,8 @@ suite('Multidevice', function() {

combinedSetupItem.pageContentData = Object.assign(
{}, combinedSetupItem.pageContentData,
{phoneHubState: settings.MultiDeviceFeatureState.DISABLED_BY_USER});
Polymer.dom.flush();
{phoneHubState: MultiDeviceFeatureState.DISABLED_BY_USER});
flush();

button = combinedSetupItem.$$('cr-button[slot=feature-controller]');
assertTrue(!!button);
Expand All @@ -55,7 +52,7 @@ suite('Multidevice', function() {
notifications: true,
appStreaming: true,
});
Polymer.dom.flush();
flush();

assertEquals(
combinedSetupItem.getSetupName_(),
Expand All @@ -74,7 +71,7 @@ suite('Multidevice', function() {
cameraRoll: true,
notifications: true,
});
Polymer.dom.flush();
flush();

assertEquals(
combinedSetupItem.getSetupName_(),
Expand All @@ -91,7 +88,7 @@ suite('Multidevice', function() {
cameraRoll: true,
appStreaming: true,
});
Polymer.dom.flush();
flush();

assertEquals(
combinedSetupItem.getSetupName_(),
Expand All @@ -108,7 +105,7 @@ suite('Multidevice', function() {
notifications: true,
appStreaming: true,
});
Polymer.dom.flush();
flush();

assertEquals(
combinedSetupItem.getSetupName_(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// clang-format off
// #import 'chrome://os-settings/chromeos/os_settings.js';
import {MultiDeviceFeature, MultiDeviceFeatureState, Router, routes} from 'chrome://os-settings/chromeos/os_settings.js';
import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {eventToPromise} from 'chrome://test/test_util.js';

// #import {MultiDeviceFeature, MultiDeviceFeatureState, routes, Router} from 'chrome://os-settings/chromeos/os_settings.js';
// #import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
// #import {eventToPromise} from 'chrome://test/test_util.js';
// #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
// clang-format on
import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';

suite('Multidevice', function() {
/** @type {?SettingsMultideviceFeatureItemElement} */
Expand All @@ -18,10 +15,10 @@ suite('Multidevice', function() {
let featureToggle = null;
/** @type {?CrToggleElement} */
let crToggle = null;
/** @type {?settings.MultiDeviceFeatureState} */
/** @type {?MultiDeviceFeatureState} */
let featureState = null;

/** @type {!settings.Route} */
/** @type {!Route} */
let initialRoute;

// Fake MultiDeviceFeature enum value
Expand All @@ -30,11 +27,11 @@ suite('Multidevice', function() {

/** Resets both the suite and the (fake) feature to on state. */
function resetFeatureData() {
featureState = settings.MultiDeviceFeatureState.ENABLED_BY_USER;
featureState = MultiDeviceFeatureState.ENABLED_BY_USER;
featureItem.pageContentData = {
betterTogetherState: settings.MultiDeviceFeatureState.ENABLED_BY_USER,
betterTogetherState: MultiDeviceFeatureState.ENABLED_BY_USER,
};
Polymer.dom.flush();
flush();
assertFalse(crToggle.disabled);
assertTrue(crToggle.checked);
}
Expand All @@ -61,12 +58,12 @@ suite('Multidevice', function() {
*/
function checkWhetherClickRoutesAway(element, shouldRouteAway) {
element.click();
Polymer.dom.flush();
flush();
assertEquals(
shouldRouteAway,
initialRoute !== settings.Router.getInstance().getCurrentRoute());
settings.Router.getInstance().navigateTo(initialRoute);
assertEquals(initialRoute, settings.Router.getInstance().getCurrentRoute());
initialRoute !== Router.getInstance().getCurrentRoute());
Router.getInstance().navigateTo(initialRoute);
assertEquals(initialRoute, Router.getInstance().getCurrentRoute());
}

setup(function() {
Expand All @@ -77,21 +74,20 @@ suite('Multidevice', function() {
featureItem.feature = FAKE_MULTIDEVICE_FEATURE;
featureItem.pageContentData = {};
document.body.appendChild(featureItem);
Polymer.dom.flush();
flush();

featureToggle = featureItem.$$('settings-multidevice-feature-toggle');
featureToggle.getFeatureState = () => featureState;

crToggle = featureToggle.$.toggle;

initialRoute = settings.routes.MULTIDEVICE_FEATURES;
settings.routes.FREE_CANDY =
settings.routes.BASIC.createSection('/freeCandy');
featureItem.subpageRoute = settings.routes.FREE_CANDY;
initialRoute = routes.MULTIDEVICE_FEATURES;
routes.FREE_CANDY = routes.BASIC.createSection('/freeCandy');
featureItem.subpageRoute = routes.FREE_CANDY;

resetFeatureData();
settings.Router.getInstance().navigateTo(initialRoute);
Polymer.dom.flush();
Router.getInstance().navigateTo(initialRoute);
flush();
});

teardown(function() {
Expand All @@ -112,13 +108,13 @@ suite('Multidevice', function() {
});

test('row is clickable', async () => {
featureItem.feature = settings.MultiDeviceFeature.BETTER_TOGETHER_SUITE;
featureState = settings.MultiDeviceFeatureState.ENABLED_BY_USER;
featureItem.feature = MultiDeviceFeature.BETTER_TOGETHER_SUITE;
featureState = MultiDeviceFeatureState.ENABLED_BY_USER;
featureItem.subpageRoute = null;
Polymer.dom.flush();
flush();

const expectedEvent =
test_util.eventToPromise('feature-toggle-clicked', featureToggle);
eventToPromise('feature-toggle-clicked', featureToggle);
featureItem.$$('#linkWrapper').click();
await expectedEvent;
});
Expand Down

0 comments on commit 6f09691

Please sign in to comment.