@Override public void onStart(ITestContext context) { CommonUtils.createDirectory(screenDirPath); imageCounter = 0; DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date date = new Date(); StringBuilder builder = new StringBuilder(); builder.append( "<html><style>" + "table {margin:0 auto;}td:first-child {width:200px;}td:nth-child(2) {width:660px;}td:nth-child(3) " + "{width:100px;}tr.success{color:black;background-color:#CCFFCC;}" + "tr.warning{color:black;background-color:#FEE01E;}" + "tr.error{color:black;background-color:#FFCCCC;}" + "tr.step{color:white;background:grey}" + "</style><head><meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">" + "<style>td { border-top: 1px solid grey; } </style></head><body>" + "<script type=\"text/javascript\" src=\"http://code.jquery.com/jquery-1.8.2.min.js\"></script>" + "<p>Date: " + DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZZ") .print(DateTime.now(DateTimeZone.UTC)) + "</p>" + "<p>Polish Time: " + DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss ZZ") .print( DateTime.now() .withZone(DateTimeZone.forTimeZone(TimeZone.getTimeZone("Europe/Warsaw")))) + "</p>" + "<p>Browser: " + Configuration.getBrowser() + "</p>" + "<p>OS: " + System.getProperty("os.name") + "</p>" + "<p>Testing environment: " + new UrlBuilder().getUrlForWiki(Configuration.getWikiName()) + "</p>" + "<p>Testing environment: " + Configuration.getEnv() + "</p>" + "<p>Tested version: " + "TO DO: GET WIKI VERSION HERE" + "</p>" + "<div id='toc'></div>"); CommonUtils.appendTextToFile(logPath, builder.toString()); appendShowHideButtons(); try { FileInputStream input = new FileInputStream("./src/test/resources/script.txt"); String content = IOUtils.toString(input); CommonUtils.appendTextToFile(logPath, content); } catch (IOException e) { System.out.println("no script.txt file available"); } }
@Override public void onTestStart(ITestResult result) { logsResults.clear(); StringBuilder builder = new StringBuilder(); String testName = result.getName().toString(); String className = result.getTestClass().getName().toString(); Method testMethod = result.getMethod().getConstructorOrMethod().getMethod(); builder.append("<table>" + "<h1>Class: <em>" + className + "." + testName + " </em></h1>"); if (testMethod.isAnnotationPresent(RelatedIssue.class)) { String issueID = testMethod.getAnnotation(RelatedIssue.class).issueID(); String jiraUrl = jiraPath + issueID; builder.append( "<tr class=\"step\"><td>Known failure</td><td><h1><em>" + testName + " - " + "<a href=\"" + jiraUrl + "\">" + issueID + "</a> " + testMethod.getAnnotation(RelatedIssue.class).comment() + "</em></h1></td><td> <br/> </td></tr>"); } else { builder.append( "<tr class=\"step\"><td> </td><td><h1><em>" + testName + "</em></h1></td><td> <br/> </td></tr>"); } CommonUtils.appendTextToFile(logPath, builder.toString()); System.out.println(className + " " + testName); }
private static void log(String command, String description, boolean success, boolean ifLowLevel) { logsResults.add(success); String escapedDescription = escapeHtml(description); String className = success ? "success" : "error"; StringBuilder builder = new StringBuilder(); if (ifLowLevel) { builder.append( "<tr class=\"" + className + " lowLevelAction" + "\"><td>" + command + "</td><td>" + escapedDescription + "</td><td> <br/> </td></tr>"); } else { builder.append( "<tr class=\"" + className + "\"><td>" + command + "</td><td>" + escapedDescription + "</td><td> <br/> </td></tr>"); } CommonUtils.appendTextToFile(logPath, builder.toString()); logJSError(NewDriverProvider.getWebDriver()); }
private void appendShowHideButtons() { String hideButton = "<button id=\"hideLowLevel\">hide low level actions</button>"; String showButton = "<button id=\"showLowLevel\">show low level actions</button>"; StringBuilder builder = new StringBuilder(); builder.append(hideButton); builder.append(showButton); CommonUtils.appendTextToFile(logPath, builder.toString()); }
@Override public void afterChangeValueOf(WebElement element, WebDriver driver) { StringBuilder builder = new StringBuilder(); builder.append( "<tr class=\"success lowLevelAction\"><td>ChangeValueOfField</td><td>" + lastFindBy + "</td><td> <br/> </td></tr>"); CommonUtils.appendTextToFile(logPath, builder.toString()); }
@Override public void beforeNavigateTo(String url, WebDriver driver) { StringBuilder builder = new StringBuilder(); builder.append( "<tr class=\"success\"><td>Navigate to</td><td>" + url + "</td><td> <br/> </td></tr>"); CommonUtils.appendTextToFile(logPath, builder.toString()); logJSError(driver); }
@Override public void onTestSuccess(ITestResult result) { StringBuilder builder = new StringBuilder(); builder.append( "<tr class=\"step\">" + "<td> </td><td>STOP LOGGING METHOD " + "<div style=\"text-align:center\">" + "<a href=\"#toc\" style=\"color:blue\">" + "<b>BACK TO MENU</b></a></div> </td><td> <br/> </td></tr>" + "</table>"); CommonUtils.appendTextToFile(logPath, builder.toString()); }
public static void log(String command, String description, boolean success, WebDriver driver) { logsResults.add(success); imageCounter += 1; new Shooter().savePageScreenshot(screenPath + imageCounter, driver); CommonUtils.appendTextToFile(screenPath + imageCounter + ".html", getPageSource(driver)); String className = success ? "success" : "error"; StringBuilder builder = new StringBuilder(); builder.append( "<tr class=\"" + className + "\"><td>" + command + "</td><td>" + description + "</td><td> <br/><a href='screenshots/screenshot" + imageCounter + ".png'>Screenshot</a><br/><a href='screenshots/screenshot" + imageCounter + ".html'>HTML Source</a></td></tr>"); CommonUtils.appendTextToFile(logPath, builder.toString()); logJSError(driver); }
@Override public void onTestFailure(ITestResult result) { driver = NewDriverProvider.getWebDriver(); if (driver == null) { driver = NewDriverProvider.getWebDriver(); } imageCounter += 1; if ("true".equals(Configuration.getLogEnabled())) { try { new Shooter().savePageScreenshot(screenPath + imageCounter, driver); CommonUtils.appendTextToFile(screenPath + imageCounter + ".html", getPageSource(driver)); } catch (Exception e) { log( "onException", "driver has no ability to catch screenshot or html source - driver may died", false); } String exception = escapeHtml( result.getThrowable().toString() + "\n" + ExceptionUtils.getStackTrace(result.getThrowable())); StringBuilder builder = new StringBuilder(); builder.append( "<tr class=\"error\"><td>error</td><td><pre>" + exception + "</pre></td><td> <br/><a href='screenshots/screenshot" + imageCounter + ".png'>Screenshot</a><br/><a href='screenshots/screenshot" + imageCounter + ".html'>HTML Source</a></td></tr>"); CommonUtils.appendTextToFile(logPath, builder.toString()); logJSError(driver); onTestSuccess(result); } }
private static void logJSError(WebDriver driver) { if ("true".equals(Configuration.getJSErrorsEnabled())) { JavascriptExecutor js = (JavascriptExecutor) driver; List<String> error = (ArrayList<String>) js.executeScript("return window.JSErrorCollector_errors.pump()"); if (!error.isEmpty()) { StringBuilder builder = new StringBuilder(); builder.append( "<tr class=\"error\"><td>click</td><td>" + error + "</td><td> <br/> </td></tr>"); CommonUtils.appendTextToFile(logPath, builder.toString()); } } }
public static void logImage(String command, String imageAsBase64, boolean success) { imageAsBase64 = "<img src=\"data:image/png;base64," + imageAsBase64 + "\">"; String className = success ? "success" : "error"; CommonUtils.appendTextToFile( logPath, ("<tr class=\"" + className + "\"><td>" + command + "</td><td>" + imageAsBase64 + "</td><td> <br/> </td></tr>")); }
/** This method will log warning to log file (line in yellow color) */ public static void logWarning(String command, String description) { StringBuilder builder = new StringBuilder() .append( "<tr class=\"warning\">" + "<td>" + command + "</td>" + "<td>" + description + "</td>" + "<td> <br/> </td></tr>"); CommonUtils.appendTextToFile(logPath, builder.toString()); }
@Override public void afterNavigateTo(String url, WebDriver driver) { StringBuilder builder = new StringBuilder(); if (!AlertHandler.isAlertPresent(driver)) { if (url.equals(driver.getCurrentUrl())) { builder.append( "<tr class=\"success\"><td>Url after navigation</td><td>" + driver.getCurrentUrl() + "</td><td> <br/> </td></tr>"); CommonUtils.appendTextToFile(logPath, builder.toString()); } else { if (driver.getCurrentUrl().contains("data:text/html,chromewebdata ")) { driver.get(url); } logWarning("Url after navigation", driver.getCurrentUrl()); } } else { logWarning("Url after navigation", "Unable to check URL after navigation - alert present"); } logJSError(driver); }
@Override public void onFinish(ITestContext context) { CommonUtils.appendTextToFile(logPath, "</body></html>"); }