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

Unified Diff: chrome/browser/ui/webui/signin/login_ui_test_utils.cc

Issue 1102603003: Enable new sign in flow for E2E tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix DOMMessageQueue Created 5 years, 8 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
« no previous file with comments | « chrome/browser/ui/webui/signin/login_ui_test_utils.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/webui/signin/login_ui_test_utils.cc
diff --git a/chrome/browser/ui/webui/signin/login_ui_test_utils.cc b/chrome/browser/ui/webui/signin/login_ui_test_utils.cc
index 7f5e2bfd5c25cbe19b176f0b25d2fffd74b77dd6..c5dde136ec5dbf03543a1572ba35fc411654a207 100644
--- a/chrome/browser/ui/webui/signin/login_ui_test_utils.cc
+++ b/chrome/browser/ui/webui/signin/login_ui_test_utils.cc
@@ -104,10 +104,83 @@ void WaitUntilUIReady(Browser* browser) {
} while (message != "\"ready\"");
}
-void ExecuteJsToSigninInSigninFrame(Browser* browser,
- const std::string& email,
- const std::string& password) {
- std::string js =
+void WaitUntilElementExistsInSigninFrame(Browser* browser,
+ const std::string& element_id) {
+ content::DOMMessageQueue message_queue;
+ std::string js =
+ "function WaitForElementById(elementId) {"
+ " var retries = 10; /* 10 seconds. */"
+ " function CheckelementExists() {"
+ " if (document.getElementById(elementId) != null) {"
+ " window.domAutomationController.setAutomationId(0);"
+ " window.domAutomationController.send('found');"
+ " } else if (retries > 0) { "
+ " retries--;"
+ " window.setTimeout(CheckelementExists, 1000);"
+ " } else {"
+ " window.domAutomationController.setAutomationId(0);"
+ " window.domAutomationController.send('failed');"
+ " }"
+ " }"
+ " CheckelementExists();"
+ "}"
+ "WaitForElementById('" + element_id + "');";
+ content::WebContents* web_contents =
+ browser->tab_strip_model()->GetActiveWebContents();
+ ASSERT_TRUE(content::ExecuteScript(InlineLoginUI::GetAuthFrame(
+ web_contents, GURL(), "signin-frame"), js));
+
+ std::string message;
+ do {
+ ASSERT_TRUE(message_queue.WaitForMessage(&message));
+ if (message == "\"failed\"")
+ LOG(ERROR) << "Failed to find element with id " << element_id;
+ } while (message != "\"found\"");
+}
+
+bool ElementExistsInSigninFrame(Browser* browser,
+ const std::string& element_id) {
+ content::DOMMessageQueue message_queue;
+ std::string js =
+ "window.domAutomationController.setAutomationId(0);"
+ "if (document.getElementById('" + element_id + "') != null) {"
+ " window.domAutomationController.send('found');"
+ "} else { "
+ " window.domAutomationController.send('not found');"
+ "}";
+ content::WebContents* web_contents =
+ browser->tab_strip_model()->GetActiveWebContents();
+ EXPECT_TRUE(content::ExecuteScript(InlineLoginUI::GetAuthFrame(
+ web_contents, GURL(), "signin-frame"), js));
+
+ std::string message;
+ EXPECT_TRUE(message_queue.WaitForMessage(&message));
+ return message == "\"found\"";
+}
+
+void SigninInNewGaiaFlow(Browser* browser,
+ const std::string& email,
+ const std::string& password) {
+ std::string js = "document.getElementById('Email').value = '" + email + "';"
+ "document.getElementById('next').click();";
+
+ content::WebContents* web_contents =
+ browser->tab_strip_model()->GetActiveWebContents();
+ ASSERT_TRUE(content::ExecuteScript(InlineLoginUI::GetAuthFrame(
+ web_contents, GURL(), "signin-frame"), js));
+
+ WaitUntilElementExistsInSigninFrame(browser, "Passwd");
+ js = "document.getElementById('Passwd').value = '" + password + "';"
+ "document.getElementById('signIn').click();";
+
+ ASSERT_TRUE(content::ExecuteScript(InlineLoginUI::GetAuthFrame(
+ web_contents, GURL(), "signin-frame"), js));
+}
+
+void SigninInOldGaiaFlow(Browser* browser,
+ const std::string& email,
+ const std::string& password) {
+ std::string js =
"document.getElementById('Email').value = '" + email + "';"
"document.getElementById('Passwd').value = '" + password + "';"
"document.getElementById('signIn').click();";
@@ -118,6 +191,16 @@ void ExecuteJsToSigninInSigninFrame(Browser* browser,
web_contents, GURL(), "signin-frame"), js));
}
+void ExecuteJsToSigninInSigninFrame(Browser* browser,
+ const std::string& email,
+ const std::string& password) {
+ WaitUntilElementExistsInSigninFrame(browser, "Email");
+ if (ElementExistsInSigninFrame(browser, "next"))
+ SigninInNewGaiaFlow(browser, email, password);
+ else
+ SigninInOldGaiaFlow(browser, email, password);
+}
+
bool SignInWithUI(Browser* browser,
const std::string& username,
const std::string& password) {
« no previous file with comments | « chrome/browser/ui/webui/signin/login_ui_test_utils.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698