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

Unified Diff: chrome/browser/ui/webui/options/chromeos/shared_options_browsertest.js

Issue 290453006: Quick & dirty example of a WebUIBrowserTest using LoginManagerTestHelper. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: broken test Created 6 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/options/chromeos/shared_options_browsertest.js
diff --git a/chrome/browser/ui/webui/options/chromeos/shared_options_browsertest.js b/chrome/browser/ui/webui/options/chromeos/shared_options_browsertest.js
new file mode 100644
index 0000000000000000000000000000000000000000..58496dd73c58eb668932122dec43d2fddd33644d
--- /dev/null
+++ b/chrome/browser/ui/webui/options/chromeos/shared_options_browsertest.js
@@ -0,0 +1,170 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+GEN('#include "chrome/browser/ui/webui/options/chromeos/shared_options_browsertest.h"');
+
+/**
+ * Wait for the method specified by |methodName|, on the |object| object, to be
+ * called, then execute |afterFunction|.
+ * @param {*} object Object with callable property named |methodName|.
+ * @param {string} methodName The name of the property on |object| to use as a
+ * callback.
+ * @param {!Function} afterFunction A function to call after object.methodName()
+ * is called.
+ */
+function waitForResponse(object, methodName, afterFunction) {
+ var originalCallback = object[methodName];
+
+ // Install a wrapper that temporarily replaces the original function.
+ object[methodName] = function() {
+ object[methodName] = originalCallback;
+ originalCallback.apply(this, arguments);
+ afterFunction();
+ };
+}
+
+/**
+ * Wait for the global window.onpopstate callback to be called (after a tab
+ * history navigation), then execute |afterFunction|.
+ * @param {!Function} afterFunction A function to call after pop state events.
+ */
+function waitForPopstate(afterFunction) {
+ waitForResponse(window, 'onpopstate', afterFunction);
+}
+
+/**
+ * TestFixture for OptionsPage WebUI testing including tab history and support
+ * for preference manipulation. If you don't need the features in the C++
+ * fixture, use the simpler SharedOptionsWebUITest (above) instead.
+ * @extends {testing.Test}
+ * @constructor
+ */
+function SharedOptionsTest() {}
+
+SharedOptionsTest.prototype = {
+ __proto__: testing.Test.prototype,
+
+ /** @override */
+ browsePreload: 'chrome://settings-frame',
+
+ /** @override */
+ typedefCppFixture: 'chromeos::SharedOptionsTest',
+
+ /** @override */
+ isAsync: true,
+
+ /** @override */
+ setUp: function() {
+ console.log("Setting up SharedOptionsTest.js");
+ // user-image-stream is a streaming video element used for capturing a
+ // user image during OOBE.
+ this.accessibilityAuditConfig.ignoreSelectors('videoWithoutCaptions',
+ '.user-image-stream');
+ console.log("Set up SharedOptionsTest.js");
+ },
+
+ /**
+ * Register a mock handler to ensure expectations are met and options pages
+ * behave correctly.
+ */
+ preLoad: function() {
+ console.log("Preloading SharedOptionsTest.js");
+ this.makeAndRegisterMockHandler(
+ ['defaultZoomFactorAction',
+ 'fetchPrefs',
+ 'observePrefs',
+ 'setBooleanPref',
+ 'setIntegerPref',
+ 'setDoublePref',
+ 'setStringPref',
+ 'setObjectPref',
+ 'clearPref',
+ 'coreOptionsUserMetricsAction',
+ ]);
+
+ // Register stubs for methods expected to be called before/during tests.
+ // Specific expectations can be made in the tests themselves.
+ this.mockHandler.stubs().fetchPrefs(ANYTHING);
+ this.mockHandler.stubs().observePrefs(ANYTHING);
+ this.mockHandler.stubs().coreOptionsUserMetricsAction(ANYTHING);
+ console.log("Preloaded SharedOptionsTest.js");
+ },
+
+ /*
+ * Verifies that the correct URLs are listed in the history. Asynchronous.
+ * @param {!Array.<string>} expectedHistory An array of URL paths expected to
+ * be in the tab navigation history, sorted by visit time, including the
+ * current page as the last entry. The base URL (chrome://settings-frame/)
+ * will be prepended to each. An initial 'about:blank' history entry is
+ * assumed and should not be included in this list.
+ * @param {Function=} callback A function to be called after the history has
+ * been verified successfully. May be undefined.
+ * @private
+ */
+ registerUsers_: function(numUsers, callback) {
+ var self = this;
+ SharedOptionsTest.registerUsersCallback = function() {
+ callback();
+ };
+
+ // The C++ fixture will call registerUsersCallback with the results.
+ chrome.send('sharedOptionsTestRegisterUsers', [numUsers]);
+ },
+
+ logInUser_: function(userNum, callback) {
+ var self = this;
+ SharedOptionsTest.logInUserCallback = function() {
+ console.log("logInUserCallback called");
+ callback();
+ };
+
+ // The C++ fixture will call logInUserCallback with the results.
+ chrome.send('sharedOptionsTestLogInUser', [userNum]);
+ },
+
+ addUser_: function(userNum, callback) {
+ console.log("addUSer called");
+ var self = this;
+ SharedOptionsTest.addUserCallback = function() {
+ console.log("addUserCallback called");
+ callback();
+ };
+
+ // The C++ fixture will call addUserCallback with the results.
+ chrome.send('sharedOptionsTestAddUser', [userNum]);
+ },
+};
+
+SharedOptionsTest.verifyHistoryCallback = null;
+
+/**
+ * Set by registerUsers_ to incorporate a followup callback.
+ * @type {Function}
+ */
+SharedOptionsTest.registerUsersCallback = null;
+SharedOptionsTest.logInUserCallback = null;
+SharedOptionsTest.addUserCallback = null;
+
+TEST_F('SharedOptionsTest', 'PRE_Test1', function() {
+ console.log('Starting test!');
+// chrome.send('sharedOptionsTestRegisterUsers', [3]);
+ this.registerUsers_(3, testDone);/*function() {
+ testDone();
+ // Result: Success
+ });*/
+});
+
+TEST_F('SharedOptionsTest', 'Test1', function() {
+ console.log('logInUser');
+
+ var self = this;t
+ this.logInUser_(0, function() {
+ self.addUser_(1, function() {
+ console.log("Test is done");
+ testDone();
+ });
+ });
+
+ // Test fails without an error message.
+});

Powered by Google App Engine
This is Rietveld 408576698