1 /* 2 * Copyright 2007 united internet (unitedinternet.com) Robert Zimmermann 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 * 16 */ 17 package com.unitedinternet.portal.selenium.utils.logging; 18 19 /** 20 * The LoggingResultFormatter can be used to log in any format you want to. 21 * 22 * The formatter is responsible for writing results. 23 * 24 * Also the formatter is resposible for handling encodings right for whatever output storage is used. 25 * 26 * Currently there is an HtmlResultFormatter implemented. There could also be an CSVFormatter, DatabaseFormatter or whatever you 27 * want the log to look like. 28 * 29 * @author Robert Zimmermann 30 * 31 * $Id: LoggingResultsFormatter.java 116 2008-05-02 13:43:44Z Steffen_K $ 32 */ 33 public interface LoggingResultsFormatter { 34 /** 35 * Format a comment. 36 * 37 * Comments may be issued between commands by the loggingCommandProcessor, like a new method has been entered by the test. 38 * 39 * @param loggingBean loggingBean containing the comment to be logged. 40 */ 41 void commentLogEvent(LoggingBean loggingBean); 42 43 /** 44 * Formats an selenium command. 45 * 46 * @param loggingBean containing all informations for logging a selenium command 47 */ 48 void commandLogEvent(LoggingBean loggingBean); 49 50 /** 51 * Formats an selenium command which has an boolean result. 52 * 53 * Important: At this state no information whether an false or true result was or is expected by the test using this 54 * formatter. So an false result may be "green" for the test. Therefore all log-events here are logged as green. 55 * 56 * e.g. selenium commands like isElementPresent 57 * 58 * @param loggingBean containing all informations for logging a selenium command 59 */ 60 void booleanCommandLogEvent(LoggingBean loggingBean); 61 62 /** 63 * Formats a Log Event for a complete Test Method. 64 * 65 * The Logging Bean may contain several child beans holding the information of the single selenium commands. 66 * 67 * @param loggingBean containing all informations for logging a test method and its commands 68 */ 69 void methodLogEvent(LoggingBean loggingBean); 70 71 /** 72 * Whatever the formatter wants to do before any command will be formatted. 73 * 74 * @param metricsBean metrics gathered during test-run 75 */ 76 void headerLogEvent(TestMetricsBean metricsBean); 77 78 /** 79 * Like formatHeader() but here after all commands have been formatted. 80 */ 81 void footerLogEvent(); 82 83 /** 84 * Base URI to be linked to in the result. 85 * 86 * Screenshots may be linked with an http or similar prefix to be easier accessible in whatever reporting frontend is used 87 * later 88 * 89 * @return the current base-uri for screenshots 90 */ 91 String getScreenShotBaseUri(); 92 93 /** 94 * Set a special uri for screenshots. 95 * 96 * @param screenShotBaseUri the new uri for screenshots 97 */ 98 void setScreenShotBaseUri(String screenShotBaseUri); 99 100 /** 101 * Generate an absolute filename for taking screenshots in case of an error (eg. timed out wait). 102 * 103 * @param baseName middle part of the name to be enhanced by whatever the implementation wants to 104 * @return absolute path for screenshot to be taken 105 */ 106 String generateFilenameForAutomaticScreenshot(String baseName); 107 108 /** 109 * Path to the (filesystem-)location where screenshot should be saved. Will be used by 110 * generateFilenameForAutomaticScreenshot() 111 * 112 * @return current location path 113 */ 114 String getAutomaticScreenshotPath(); 115 116 /** 117 * Path to the (filesystem-)location where screenshot should be saved. Will be used by 118 * generateFilenameForAutomaticScreenshot() 119 * 120 * @param automaticScreenshotPath location (only path) to where screenshots should be saved 121 */ 122 void setAutomaticScreenshotPath(String automaticScreenshotPath); 123 }