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

Unified Diff: chrome/test/base/web_ui_browser_test.cc

Issue 304793002: Support automatically resolving dependencies in javascript tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkgr
Patch Set: Various fixes. 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/test/base/web_ui_browser_test.cc
diff --git a/chrome/test/base/web_ui_browsertest.cc b/chrome/test/base/web_ui_browser_test.cc
similarity index 67%
rename from chrome/test/base/web_ui_browsertest.cc
rename to chrome/test/base/web_ui_browser_test.cc
index 1f874e2df74bb126c398c582bed732599dab5100..5cecf01bbe3935d446f095bf7ba9caf78de0e4a9 100644
--- a/chrome/test/base/web_ui_browsertest.cc
+++ b/chrome/test/base/web_ui_browser_test.cc
@@ -2,13 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/test/base/web_ui_browsertest.h"
+#include "chrome/test/base/web_ui_browser_test.h"
#include <string>
#include <vector>
-#include "base/bind.h"
-#include "base/bind_helpers.h"
#include "base/lazy_instance.h"
#include "base/memory/ref_counted_memory.h"
#include "base/path_service.h"
@@ -19,19 +17,12 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h"
-#include "chrome/browser/ui/browser_navigator.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
-#include "chrome/browser/ui/tabs/tab_strip_model_observer.h"
#include "chrome/browser/ui/webui/web_ui_test_handler.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/url_constants.h"
#include "chrome/test/base/test_chrome_web_ui_controller_factory.h"
#include "chrome/test/base/ui_test_utils.h"
-#include "content/public/browser/navigation_controller.h"
-#include "content/public/browser/notification_observer.h"
-#include "content/public/browser/notification_registrar.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_types.h"
#include "content/public/browser/url_data_source.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_observer.h"
@@ -40,8 +31,6 @@
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/test_navigation_observer.h"
#include "net/base/filename_util.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest-spi.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/base/resource/resource_handle.h"
@@ -49,7 +38,6 @@
#include "chrome/browser/printing/print_preview_dialog_controller.h"
#endif
-using content::NavigationController;
using content::RenderViewHost;
using content::WebContents;
using content::WebUIController;
@@ -587,230 +575,3 @@ void WebUIBrowserTest::SetupHandlers() {
GetMockMessageHandler()->RegisterMessages();
}
}
-
-// According to the interface for EXPECT_FATAL_FAILURE
-// (http://code.google.com/p/googletest/wiki/AdvancedGuide#Catching_Failures)
-// the statement must be statically available. Therefore, we make a static
-// global s_test_ which should point to |this| for the duration of the test run
-// and be cleared afterward.
-class WebUIBrowserExpectFailTest : public WebUIBrowserTest {
- public:
- WebUIBrowserExpectFailTest() {
- EXPECT_FALSE(s_test_);
- s_test_ = this;
- }
-
- protected:
- virtual ~WebUIBrowserExpectFailTest() {
- EXPECT_TRUE(s_test_);
- s_test_ = NULL;
- }
-
- static void RunJavascriptTestNoReturn(const std::string& testname) {
- EXPECT_TRUE(s_test_);
- s_test_->RunJavascriptTest(testname);
- }
-
- static void RunJavascriptAsyncTestNoReturn(const std::string& testname) {
- EXPECT_TRUE(s_test_);
- s_test_->RunJavascriptAsyncTest(testname);
- }
-
- private:
- static WebUIBrowserTest* s_test_;
-};
-
-WebUIBrowserTest* WebUIBrowserExpectFailTest::s_test_ = NULL;
-
-// Test that bogus javascript fails fast - no timeout waiting for result.
-IN_PROC_BROWSER_TEST_F(WebUIBrowserExpectFailTest, TestFailsFast) {
- AddLibrary(base::FilePath(FILE_PATH_LITERAL("sample_downloads.js")));
- ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIDownloadsURL));
- EXPECT_FATAL_FAILURE(RunJavascriptTestNoReturn("DISABLED_BogusFunctionName"),
- "WebUITestHandler::JavaScriptComplete");
-}
-
-// Test that bogus javascript fails fast - no timeout waiting for result.
-IN_PROC_BROWSER_TEST_F(WebUIBrowserExpectFailTest, TestRuntimeErrorFailsFast) {
- AddLibrary(base::FilePath(FILE_PATH_LITERAL("runtime_error.js")));
- ui_test_utils::NavigateToURL(browser(), GURL(kDummyURL));
- EXPECT_FATAL_FAILURE(RunJavascriptTestNoReturn("TestRuntimeErrorFailsFast"),
- "WebUITestHandler::JavaScriptComplete");
-}
-
-// Test that bogus javascript fails async test fast as well - no timeout waiting
-// for result.
-IN_PROC_BROWSER_TEST_F(WebUIBrowserExpectFailTest, TestFailsAsyncFast) {
- AddLibrary(base::FilePath(FILE_PATH_LITERAL("sample_downloads.js")));
- ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIDownloadsURL));
- EXPECT_FATAL_FAILURE(
- RunJavascriptAsyncTestNoReturn("DISABLED_BogusFunctionName"),
- "WebUITestHandler::JavaScriptComplete");
-}
-
-// Tests that the async framework works.
-class WebUIBrowserAsyncTest : public WebUIBrowserTest {
- public:
- // Calls the testDone() function from test_api.js
- void TestDone() {
- RunJavascriptFunction("testDone");
- }
-
- // Starts a failing test.
- void RunTestFailsAssert() {
- RunJavascriptFunction("runAsync", new base::StringValue("testFailsAssert"));
- }
-
- // Starts a passing test.
- void RunTestPasses() {
- RunJavascriptFunction("runAsync", new base::StringValue("testPasses"));
- }
-
- protected:
- WebUIBrowserAsyncTest() {}
-
- // Class to synchronize asynchronous javascript activity with the tests.
- class AsyncWebUIMessageHandler : public WebUIMessageHandler {
- public:
- AsyncWebUIMessageHandler() {}
-
- MOCK_METHOD1(HandleTestContinues, void(const base::ListValue*));
- MOCK_METHOD1(HandleTestFails, void(const base::ListValue*));
- MOCK_METHOD1(HandleTestPasses, void(const base::ListValue*));
-
- private:
- virtual void RegisterMessages() OVERRIDE {
- web_ui()->RegisterMessageCallback("startAsyncTest",
- base::Bind(&AsyncWebUIMessageHandler::HandleStartAsyncTest,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback("testContinues",
- base::Bind(&AsyncWebUIMessageHandler::HandleTestContinues,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback("testFails",
- base::Bind(&AsyncWebUIMessageHandler::HandleTestFails,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback("testPasses",
- base::Bind(&AsyncWebUIMessageHandler::HandleTestPasses,
- base::Unretained(this)));
- }
-
- // Starts the test in |list_value|[0] with the runAsync wrapper.
- void HandleStartAsyncTest(const base::ListValue* list_value) {
- const base::Value* test_name;
- ASSERT_TRUE(list_value->Get(0, &test_name));
- web_ui()->CallJavascriptFunction("runAsync", *test_name);
- }
-
- DISALLOW_COPY_AND_ASSIGN(AsyncWebUIMessageHandler);
- };
-
- // Handler for this object.
- ::testing::StrictMock<AsyncWebUIMessageHandler> message_handler_;
-
- private:
- // Provide this object's handler.
- virtual WebUIMessageHandler* GetMockMessageHandler() OVERRIDE {
- return &message_handler_;
- }
-
- // Set up and browse to kDummyURL for all tests.
- virtual void SetUpOnMainThread() OVERRIDE {
- WebUIBrowserTest::SetUpOnMainThread();
- AddLibrary(base::FilePath(FILE_PATH_LITERAL("async.js")));
- ui_test_utils::NavigateToURL(browser(), GURL(kDummyURL));
- }
-
- DISALLOW_COPY_AND_ASSIGN(WebUIBrowserAsyncTest);
-};
-
-// Test that assertions fail immediately after assertion fails (no testContinues
-// message). (Sync version).
-IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestSyncOkTestFail) {
- ASSERT_FALSE(RunJavascriptTest("testFailsAssert"));
-}
-
-// Test that assertions fail immediately after assertion fails (no testContinues
-// message). (Async version).
-IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncFailsAssert) {
- EXPECT_CALL(message_handler_, HandleTestFails(::testing::_));
- ASSERT_FALSE(RunJavascriptAsyncTest(
- "startAsyncTest", new base::StringValue("testFailsAssert")));
-}
-
-// Test that expectations continue the function, but fail the test.
-IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncFailsExpect) {
- ::testing::InSequence s;
- EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_));
- EXPECT_CALL(message_handler_, HandleTestFails(::testing::_));
- ASSERT_FALSE(RunJavascriptAsyncTest(
- "startAsyncTest", new base::StringValue("testFailsExpect")));
-}
-
-// Test that test continues and passes. (Sync version).
-IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestSyncPasses) {
- EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_));
- ASSERT_TRUE(RunJavascriptTest("testPasses"));
-}
-
-// Test that test continues and passes. (Async version).
-IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncPasses) {
- ::testing::InSequence s;
- EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_));
- EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_))
- .WillOnce(::testing::InvokeWithoutArgs(
- this, &WebUIBrowserAsyncTest::TestDone));
- ASSERT_TRUE(RunJavascriptAsyncTest(
- "startAsyncTest", new base::StringValue("testPasses")));
-}
-
-// Test that two tests pass.
-IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncPassPass) {
- ::testing::InSequence s;
- EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_));
- EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_))
- .WillOnce(::testing::InvokeWithoutArgs(
- this, &WebUIBrowserAsyncTest::RunTestPasses));
- EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_));
- EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_))
- .WillOnce(::testing::InvokeWithoutArgs(
- this, &WebUIBrowserAsyncTest::TestDone));
- ASSERT_TRUE(RunJavascriptAsyncTest(
- "startAsyncTest", new base::StringValue("testPasses")));
-}
-
-// Test that first test passes; second fails.
-IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncPassThenFail) {
- ::testing::InSequence s;
- EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_));
- EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_))
- .WillOnce(::testing::InvokeWithoutArgs(
- this, &WebUIBrowserAsyncTest::RunTestFailsAssert));
- EXPECT_CALL(message_handler_, HandleTestFails(::testing::_));
- ASSERT_FALSE(RunJavascriptAsyncTest(
- "startAsyncTest", new base::StringValue("testPasses")));
-}
-
-// Test that testDone() with failure first then sync pass still fails.
-IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncDoneFailFirstSyncPass) {
- ::testing::InSequence s;
- EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_));
- EXPECT_CALL(message_handler_, HandleTestFails(::testing::_));
-
- // Call runAsync directly instead of deferring through startAsyncTest. It will
- // call testDone() on failure, then return.
- ASSERT_FALSE(RunJavascriptAsyncTest(
- "runAsync", new base::StringValue("testAsyncDoneFailFirstSyncPass")));
-}
-
-// Test that calling testDone during RunJavascriptAsyncTest still completes
-// when waiting for async result. This is similar to the previous test, but call
-// testDone directly and expect pass result.
-IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestTestDoneEarlyPassesAsync) {
- ASSERT_TRUE(RunJavascriptAsyncTest("testDone"));
-}
-
-// Test that calling testDone during RunJavascriptTest still completes when
-// waiting for async result.
-IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestTestDoneEarlyPasses) {
- ASSERT_TRUE(RunJavascriptTest("testDone"));
-}

Powered by Google App Engine
This is Rietveld 408576698