settings_app_browsertest.js revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
1// Copyright 2013 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 * TestFixture for App Launcher's Settings App testing.
7 * @extends {testing.Test}
8 * @constructor
9 */
10function SettingsAppWebUITest() {}
11
12SettingsAppWebUITest.prototype = {
13  __proto__: testing.Test.prototype,
14
15  /**
16   * Browse to Settings App page, in a browser.
17   */
18  browsePreload: 'chrome://settings-frame/options_settings_app.html',
19};
20
21GEN('#if defined(ENABLE_SETTINGS_APP)');
22
23// Test opening Settings App, and do some checks on section visibility.
24TEST_F('SettingsAppWebUITest', 'testOpenSettingsApp', function() {
25  // Note there is no location bar in the Settings App.
26
27  // Some things are hidden via a parent, so make a helper function.
28  function isVisible(elementId) {
29    var elem = $(elementId);
30    return elem.offsetWidth > 0 || elem.offsetHeight > 0;
31  }
32  assertTrue(OptionsPage.isSettingsApp());
33  assertTrue(isVisible('sync-users-section'));
34  assertTrue(isVisible('sync-section'));
35
36  // Spot-check some regular settings items that should be hidden.
37  assertFalse(isVisible('change-home-page-section'));
38  assertFalse(isVisible('default-search-engine'));
39  assertFalse(isVisible('privacy-section'));
40  assertFalse(isVisible('startup-section'));
41});
42
43// Check functionality of LoadTimeData.overrideValues(), which the Settings App
44// uses. Do spot checks, so the test is not too fragile. Some of the content
45// strings rely on waiting for sync sign-in status, or platform-specifics.
46TEST_F('SettingsAppWebUITest', 'testStrings', function() {
47  // Ensure we check against the override values.
48  assertTrue(!!loadTimeData.getValue('settingsApp'));
49
50  // Check a product-specific label, to ensure it uses "App Launcher", and not
51  // Chrome / Chromium.
52  var languagesLabelElement =
53      document.querySelector('[i18n-content="languageSectionLabel"]');
54  assertNotEquals(-1, languagesLabelElement.innerHTML.indexOf('App Launcher'));
55});
56
57GEN('#endif  // defined(ENABLE_SETTINGS_APP)');
58