Index: chrome/test/reliability/automated_ui_tests.h |
diff --git a/chrome/test/reliability/automated_ui_tests.h b/chrome/test/reliability/automated_ui_tests.h |
deleted file mode 100644 |
index 4cb6055f41f5ca75348ed2cb5591fa8662fc20d4..0000000000000000000000000000000000000000 |
--- a/chrome/test/reliability/automated_ui_tests.h |
+++ /dev/null |
@@ -1,362 +0,0 @@ |
-// 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. |
- |
-#ifndef CHROME_TEST_RELIABILITY_AUTOMATED_UI_TESTS_H_ |
-#define CHROME_TEST_RELIABILITY_AUTOMATED_UI_TESTS_H_ |
- |
-// This takes an input file of commands, which consist of a series of |
-// actions, and runs every command, reporting the status of each one |
-// to an output file once all the commands have been run. |
-// |
-// The input file should be an XML file that has a root of any name followed |
-// by a series of elements named "command" with child elements representing |
-// the various actions, in order, to be performed during each command. A |
-// command element can optionally include an "number" attribute to identify it. |
-// |
-// Example: |
-// <CommandList> |
-// <command number="1"><NewTab/><Navigate/><OpenWindow/><Navigate/><Back/> |
-// </command> |
-// <command number="2"><NewTab/><Navigate/><Navigate/><Back/><Forward/> |
-// </command> |
-// <command number="3"><CloseTab/><OpenWindow/><NewTab/><Navigate/><CloseTab/> |
-// </command> |
-// </CommandList> |
-// |
-// When the test is finished it will output results to the output file, |
-// overwriting any previous version of this file. The output file is an |
-// XML file which reports on each command, indicating whether it successfully |
-// ran and if there were any errors. |
-// |
-// Example: (actual output will probably contain more actions per command): |
-// <Report> |
-// <Executed command_number="1"><NewTab/><Navigate/><result><success/> |
-// </result> </Executed> |
-// <Executed command_number="2"><Back/><Forward/><result><success/></result> |
-// </Executed> |
-// <Executed command_number="3"><CloseTab/><result> |
-// <crash crash_dump="C:\a_crash.txt" command_completed="no"/></result> |
-// </Executed> |
-// </Report> |
-// |
-// A "crash" result will have two attributes, crash_dump, which points |
-// to the full path of crash dump associated with this crash, and |
-// command_completed which indicates whether or not the last |
-// action recorded was the final action of the command. |
-// |
-// Furthermore, each individual action may contain additional attributes |
-// to log non-fatal failures. If the attribute 'failed_to_complete="yes"' |
-// is present, then the action did not complete. If that attribute is present, |
-// an info, warning, or error attribute will also be present, and will contain |
-// a string describing the error. The presence of info means the failure was |
-// expected, probably due to a state making the action impossible to perform |
-// like trying to close the last remaining window. Warnings usually mean the |
-// action couldn't complete for an unknown and unexpected reason, but that the |
-// test state is probably fine. Errors are like warnings, but they mean the test |
-// state is probably incorrect, and more failures are likely to be caused by |
-// the same problem. |
-// |
-// Example of some failed actions: |
-// <CloseTab failed_to_complete="yes" info="would_have_exited_application"/> |
-// <Reload failed_to_complete="yes" warning="failed_to_apply_accelerator"/> |
-// <Star failed_to_complete="yes" error="browser_window_not_found"/> |
-// |
-// |
-// Switches |
-// --input : Specifies the input file, must be an absolute directory. |
-// Default is "C:\automated_ui_tests.txt" |
-// |
-// --output : Specifies the output file, must be an absolute directory. |
-// Default is "C:\automated_ui_tests_error_report.txt" |
-// |
-// |
-// Test reproduction options: |
-// |
-// If you're trying to reproduce the results from crash reports use the |
-// following switches |
-// |
-// --key : Specifies, via a comma delimited list, what actions to run. Examples: |
-// --key=SetUp,ZoomPlus,Forward,History,Navigate,Back,TearDown |
-// --key=SetUp,ZoomPlus |
-// Note, the second key doesn't include a TearDown, that will |
-// automatically be added if the result doesn't crash. |
-// |
-// --num-reproductions : Specifies the number of reproductions to run, the |
-// default is 1. Suggested use: run without this flag |
-// to see if we reproduce a crash, then run with the flag |
-// if there isn't a crash, to see if it might be a rare |
-// race condition that causes the crash. |
-// |
-// |
-// Debugging options: |
-// |
-// --debug : Will append each action that is performed to the output file, as |
-// soon as the action is performed. If the program finishes, this file |
-// will be overwritten with the normal results. This flag is used to |
-// help debug the tests if they are crashing before they get a chance |
-// to write their results to file. |
-// |
-// --wait-after-action : waits the specified amount of time (1s by default) |
-// after each action. Useful for debugging. |
- |
-#include <string> |
- |
-#include "chrome/test/reliability/automated_ui_test_base.h" |
-#include "chrome/test/ui/ui_test.h" |
-#include "third_party/libxml/chromium/libxml_utils.h" |
-#include "ui/events/keycodes/keyboard_codes.h" |
- |
-namespace base { |
-class Time; |
-} |
- |
-class AutomatedUITest : public AutomatedUITestBase { |
- protected: |
- AutomatedUITest(); |
- virtual ~AutomatedUITest(); |
- |
- // Runs a reproduction of one set of actions, reporting whether they crash |
- // or not. |
- void RunReproduction(); |
- |
- // Runs automated UI tests which are read from the input file. |
- // Reports crashes to the output file. |
- void RunAutomatedUITest(); |
- |
- // Attempts to perform an action based on the input string. See below for |
- // possible actions. Returns true if the action completes, false otherwise. |
- bool DoAction(const std::string& action); |
- |
- // Actions ------------------------------------------------------------------ |
- |
- // NOTE: This list is sorted alphabetically, so that we can easily detect |
- // missing actions. |
- |
- // Changes the encoding of the page (the encoding is selected at random |
- // from a list of encodings). |
- // Returns true if call to activate the accelerator is successful. |
- // XML element: <ChangeEncoding/> |
- bool ChangeEncoding(); |
- |
- // Opens one of the dialogs (chosen randomly) and exercises it. |
- // XML element: <Dialog/> |
- bool ExerciseDialog(); |
- |
- // Opens the JavaScriptConsole window. While it isn't modal, it takes focus |
- // from the current browser window, so most of the test can't continue until |
- // it is dismissed. |
- // XML element: <JavaScriptConsole/> |
- bool JavaScriptConsole(); |
- |
- // Opens the About dialog. This dialog is modal so a majority of the test |
- // can't be completed until it is dismissed. |
- // XML element: <About/> |
- bool OpenAboutDialog(); |
- |
- // Opens the Clear Browsing Data dialog, this dialog is modal so a majority of |
- // the test can't be completed until it is dismissed. |
- // XML element: <ClearBrowsingData/> |
- bool OpenClearBrowsingDataDialog(); |
- |
- // Opens the Search Engines dialog. While it isn't modal, it takes focus from |
- // the current browser window, so most of the test can't continue until it is |
- // dismissed. |
- // XML element: <EditSearchEngines/> |
- bool OpenEditSearchEnginesDialog(); |
- |
- // Opens the Import Settings dialog, this dialog is modal so a majority of |
- // the test can't be completed until it is dismissed. |
- // XML element: <ImportSettings/> |
- bool OpenImportSettingsDialog(); |
- |
- // Opens the Task Manager dialog. While it isn't modal, it takes focus from |
- // the current browser window, so most of the test can't continue until it is |
- // dismissed. |
- // XML element: <TaskManager/> |
- bool OpenTaskManagerDialog(); |
- |
- // Opens the View Passwords dialog, this dialog is modal so a majority of |
- // the test can't be completed until it is dismissed. |
- // XML element: <ViewPasswords/> |
- bool OpenViewPasswordsDialog(); |
- |
- // Opens the Options dialog. While it isn't modal, it takes focus from |
- // the current browser window, so most of the test can't continue until it is |
- // dismissed. |
- // XML element: <Options/> |
- bool Options(); |
- |
- // Stars the current page. This opens a dialog that may or may not be |
- // dismissed. |
- // XML element: <Star/> |
- bool StarPage(); |
- |
- // Views source of the current page. |
- // Returns true if call to activate the accelerator is successful. |
- // XML element: <ViewSource/> |
- bool ViewSource(); |
- |
- // Decreases the text size on the current active tab. |
- // XML element: <ZoomMinus/> |
- bool ZoomMinus(); |
- |
- // Increases the text size on the current active tab. |
- // XML element: <ZoomPlus/> |
- bool ZoomPlus(); |
- |
- // Test Dialog Actions ****************************************************** |
- // These are a special set of actions that perform multiple actions on a |
- // specified dialog. They run kTestDialogActionsToRun actions randomly |
- // chosen from test_dialog_possible_actions_ after opening the dialog. They |
- // then always end with a PressEscapeKey action, to attempt to close the |
- // dialog. |
- // |
- // The randomly performed actions are logged as child elements of the |
- // TestDialog action. For example (for kTestDialogActionsToRun = 4): |
- // <TestEditKeywords> <PressTabKey/><PressEnterKey/><DownArrow/> |
- // <DownArrow/><PressEscapeKey/> </TestEditKeywords> |
- |
- // Opens About dialog and runs random actions on it. |
- // XML element: <TestAboutChrome/> |
- bool TestAboutChrome(); |
- |
- // Opens Clear Browsing Data dialog and runs random actions on it. |
- // XML element: <TestClearBrowsingData/> |
- bool TestClearBrowsingData(); |
- |
- // Opens Edit Keywords dialog and runs random actions on it. |
- // XML element: <TestEditSearchEngines/> |
- bool TestEditSearchEngines(); |
- |
- // Opens Import Settings dialog and runs random actions on it. |
- // XML element: <TestImportSettings/> |
- bool TestImportSettings(); |
- |
- // Opens Options dialog and runs random actions on it. |
- // XML element: <TestOptions/> |
- bool TestOptions(); |
- |
- // Opens Task Manager and runs random actions on it. |
- // This has the possibility of killing both the browser and renderer |
- // processes, which will cause non-fatal errors for the remaining actions |
- // in this command. |
- // XML element: <TestTaskManager/> |
- bool TestTaskManager(); |
- |
- // Opens View Passwords dialog and runs random actions on it. |
- // XML element: <TestViewPasswords/> |
- bool TestViewPasswords(); |
- |
- // End Test Dialog Actions ************************************************** |
- |
- // Runs a limited set of actions designed to test dialogs. Will run |
- // |num_actions| from the set defined in test_dialog_possible_actions_. |
- bool FuzzyTestDialog(int num_actions); |
- |
- // Navigates to about:crash. |
- // XML element: <Crash/> |
- bool ForceCrash(); |
- |
- // Utility functions -------------------------------------------------------- |
- |
- // Opens init file, reads it into the reader, and closes the file. |
- // Returns false if there are any errors. |
- bool InitXMLReader(); |
- |
- // Closes the xml_writer and outputs the contents of its buffer to |
- // the output file. |
- bool WriteReportToFile(); |
- |
- // Appends the provided string to the output file. |
- void AppendToOutputFile(const std::string& append_string); |
- |
- // Logs a crash to the xml_writer in the form of: |
- // <result><crash crash_dump="|crash_dump|" command_completed="yes/no"/> |
- // </result> |
- // crash_dump - Location of crash dump if applicable. |
- // command_completed - True if all actions in the command were completed |
- // before the crash occured. |
- void LogCrashResult(const base::FilePath& crash_dump, |
- bool command_completed); |
- |
- // Logs a successful command to the xml_writer in the form of: |
- // <result><success/><result/> |
- void LogSuccessResult(); |
- |
- // Adds the attribute "reason=|reason|" to the current element. |
- // Used to log the reason for a given failure while performing an action. |
- void LogActionFailureReason(const std::string& reason); |
- |
- // Adds the attribute 'info="|info|"' to the current element. Used when an |
- // action could not complete for a non-serious issue. Usually because the |
- // state of the test wouldn't allow for a particular action. |
- void AddInfoAttribute(const std::string& info); |
- |
- // Adds the attribute "warning=|warning|" to the current element. Used when |
- // an action could not complete because of a potentially troublesome issue. |
- void AddWarningAttribute(const std::string& warning); |
- |
- // Adds the attribute "error=|error|" to the current element. Used when an |
- // action could not complete due to an unexpected problem which might |
- // invalidate the results of the entire command (not just the action). |
- // This is usually used when the testing environment isn't acting as we'd |
- // expect. For example, no chrome windows are focused, or key presses aren't |
- // being registered. |
- void AddErrorAttribute(const std::string& error); |
- |
- // Returns the full path of the crash dump. This is likely to be the |
- // .txt file, not the actual crash dump. Although they do share |
- // a common name. |
- base::FilePath GetMostRecentCrashDump(); |
- |
- // Returns true if the test has produced any new crash logs. |
- // A "new" crash log is one that was produced since DidCrash was last called |
- // with |update_total_crashes| set to true. |
- bool DidCrash(bool update_total_crashes); |
- |
- // Override the message logging in AutomatedUITestBase. |
- virtual void LogErrorMessage(const std::string& error) OVERRIDE; |
- virtual void LogWarningMessage(const std::string& warning) OVERRIDE; |
- virtual void LogInfoMessage(const std::string& info) OVERRIDE; |
- |
- // Overridden so that UI Test doesn't set up when the tests start. |
- // We use DoAction("SetUp") to set up, because it logs it and makes |
- // it easier to check for crashes when we start the browser. |
- virtual void SetUp() OVERRIDE {} |
- |
- // Overridden so that UI Test doesn't close the browser (which is already |
- // closed) at the end of the test. |
- // We use DoAction("TearDown") to tear down, because it logs it and makes |
- // it easier to check for crashes when we close the browser. |
- virtual void TearDown() OVERRIDE {} |
- |
- private: |
- // Parses the init file. |
- XmlReader init_reader_; |
- |
- // Builds the output file. |
- XmlWriter xml_writer_; |
- |
- // Time the test was started. Used to find crash dumps. |
- base::Time test_start_time_; |
- |
- // Number of times the browser has crashed during this run. |
- // Used to check for new crashes. |
- int total_crashes_; |
- |
- // Used to init the init_reader_. It must exist as long as the reader does. |
- std::string xml_init_file_; |
- |
- // If true, appends the commands to the output file as they are executed. |
- // Used for debugging when automated_ui_tests.cc crashes before it outputs |
- // results. |
- bool debug_logging_enabled_; |
- |
- // A delay in second we wait for after each action. Useful for debugging. |
- int post_action_delay_; |
- |
- DISALLOW_COPY_AND_ASSIGN(AutomatedUITest); |
-}; |
- |
-#endif // CHROME_TEST_RELIABILITY_AUTOMATED_UI_TESTS_H_ |