From 25fd1b2ecec6dbbdf281e954b991644f155e9a35 Mon Sep 17 00:00:00 2001 From: "erikkay@chromium.org" Date: Mon, 17 Aug 2009 20:57:14 +0000 Subject: An initial pass at structure to do end-to-end extension API tests. I'll work on actually fleshing out some tests in the next CL. Review URL: http://codereview.chromium.org/171032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23577 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/extensions/extension_apitest.h | 47 +++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 chrome/browser/extensions/extension_apitest.h (limited to 'chrome/browser/extensions/extension_apitest.h') diff --git a/chrome/browser/extensions/extension_apitest.h b/chrome/browser/extensions/extension_apitest.h new file mode 100644 index 0000000..9e1885b --- /dev/null +++ b/chrome/browser/extensions/extension_apitest.h @@ -0,0 +1,47 @@ +// Copyright (c) 2009 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. + +#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_APITEST_H_ +#define CHROME_BROWSER_EXTENSIONS_EXTENSION_APITEST_H_ + +#include "chrome/browser/extensions/extension_browsertest.h" +#include "chrome/common/notification_service.h" + +// The general flow of these API tests should work like this: +// (1) Setup initial browser state (e.g. create some bookmarks for the +// bookmark test) +// (2) Call ASSERT_TRUE(RunExtensionTest(name)); +// (3) In your extension code, run your test and call chrome.test.pass or +// chrome.test.fail +// (4) Verify expected browser state. +// TODO(erikkay): There should also be a way to drive events in these tests. + +class ExtensionApiTest : public ExtensionBrowserTest { + protected: + // Load |extension_name| and wait for pass / fail notification. + // |extension_name| is a directory in "test/data/extensions/api_test". + bool RunExtensionTest(const char* extension_name); + + // Reset |completed_| and wait for a new pass / fail notification. + bool WaitForPassFail(); + + // All extensions tested by ExtensionApiTest are in the "api_test" dir. + virtual void SetUpCommandLine(CommandLine* command_line); + + // NotificationObserver + void ExtensionApiTest::Observe(NotificationType type, + const NotificationSource& source, + const NotificationDetails& details); + + // Did the extension side of the unit test complete? + bool completed_; + + // Did the extension side of the unit test pass? + bool passed_; + + // If it failed, what was the error message? + std::string message_; +}; + +#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_APITEST_H_ -- cgit v1.1