public boolean getTestLogs(String videoFileName) throws Exception { HTMLFormatter f = new HTMLFormatter(); File logFile = new File(OUTPUT_DIR + videoFileName + ".html"); if (!logFile.exists()) { logFile.createNewFile(); } FileOutputStream fos = new FileOutputStream(logFile); PrintStream ps = new PrintStream(fos); ps.print(f.getHead(null)); ps.println(); LogEntries entries = driver.manage().logs().get(LogType.CLIENT); for(LogEntry entry : entries.getAll()) { if (entry.getMessage().contains("Executing:") || entry.getMessage().contains("Executed:")) { ps.print(f.format(entry)); ps.println(); } } ps.print(f.getTail(null)); ps.println(); ps.close(); return true; }
@Override public String getLog( DeviceWebDriver webDriver ) { try { LogEntries logEntries = webDriver.manage().logs().get( LogType.BROWSER ); if ( logEntries != null ) { StringBuilder logBuilder = new StringBuilder(); for ( LogEntry logEntry : logEntries ) logBuilder.append( dateFormat.format( new Date( logEntry.getTimestamp() ) ) ).append( ": " ).append( logEntry.getMessage() ).append( "\r\n" ); logBuilder.toString(); } return null; } catch ( Exception e ) { log.info( "Could not generate device logs" ); return null; } }
@Test public void shouldConvertLogEntries() { LogEntries logEntries = mock(LogEntries.class); when(logs.get(LogType.BROWSER)).thenReturn(logEntries); LogEntry logEntry = mock(LogEntry.class); when(logEntries.getAll()).thenReturn(asList(logEntry)); when(logEntry.getLevel()).thenReturn(Level.FINEST); when(executorOptions.getBrowserLogLevel()).thenReturn(website.automate.waml.report.io.model.LogEntry.LogLevel.DEBUG); reporter.processLogEntries(context, actionReport); verify(logEntries).getAll(); verify(actionReport).setLogEntries(logEntryListCaptor.capture()); List<website.automate.waml.report.io.model.LogEntry> logEntryList = logEntryListCaptor.getValue(); assertThat(logEntryList, hasSize(1)); }
private void logErrors(String url, LogEntries logEntries) { if (logEntries.getAll().size() == 0) { TestLogging.log("********* No Severe Error on Browser Console *********", true); } else { for (LogEntry logEntry : logEntries) { if (logEntry.getLevel().equals(Level.SEVERE)) { TestLogging.log("URL: "+url); TestLogging.logWebStep("Time stamp: " + logEntry.getTimestamp() + ", " + "Log level: " + logEntry .getLevel() + ", Log message: " + logEntry.getMessage(), true); isJSErrorFound = true; } } assert !isJSErrorFound; } }
private void logErrors(String event, WebElement element, LogEntries logEntries) { if (logEntries.getAll().size() == 0) { TestLogging.log("********* No Severe Error on Browser Console *********", true); } else { for (LogEntry logEntry : logEntries) { if (logEntry.getLevel().equals(Level.SEVERE)) { TestLogging.log("Sever Console Error on Browser "+event+" clicking " + "element: " +((HtmlElement)element).getBy()); TestLogging.logWebStep("Time stamp: " + logEntry.getTimestamp() + ", " + "Log level: " + logEntry .getLevel() + ", Log message: " + logEntry.getMessage(), true); isJSErrorFound = true; } } assert !isJSErrorFound; } }
/** * Fetches and stores available logs from the given session and driver. * * @param sessionId The id of the session. * @param driver The driver to get the logs from. * @throws IOException If there was a problem reading from file. */ @Override public synchronized void fetchAndStoreLogsFromDriver(SessionId sessionId, WebDriver driver) throws IOException { if (!perSessionDriverEntries.containsKey(sessionId)) { perSessionDriverEntries.put(sessionId, Maps.<String, LogEntries>newHashMap()); } Map<String, LogEntries> typeToEntriesMap = perSessionDriverEntries.get(sessionId); if (storeLogsOnSessionQuit) { typeToEntriesMap.put(LogType.SERVER, getSessionLog(sessionId)); Set<String> logTypeSet = driver.manage().logs().getAvailableLogTypes(); for (String logType : logTypeSet) { typeToEntriesMap.put(logType, driver.manage().logs().get(logType)); } } }
@cucumber.api.java.After public void after(Scenario result) { if (webDriverProvider.hasActiveWebDriver()) { WebDriver webDriver = webDriverProvider.provideDriver(); if (result != null) { LogEntries logs = webDriver.manage().logs().get(LogType.BROWSER); if (LOG.isInfoEnabled()) { String logOutput = logs.getAll().stream() .map(LogEntry::toString) .collect(joining("\n")); LOG.info("Browser console.log output: {}", "\n" + logOutput); } } } }
private void dumpLog() throws Exception { Logs log = driver.manage().logs(); LogEntries entries = log.get(LogType.BROWSER); // System.out.println(entries); List<LogEntry> list = entries.getAll(); boolean fail = false; for (int i = 0; i < list.size(); i++) { LogEntry e = list.get(i); System.out.println(e); if (e.getLevel().getName().equals("SEVERE") && e.getMessage().indexOf("Uncaught ") != -1 && e.getMessage().indexOf(" Error:") != -1) { System.out.println("*** Uncaught Error ***"); fail = true; } } if (fail) throw new Exception("Unhandled Exception! Check console log for details"); }
public SeleniumTestResult(WebDriver d, SeleniumTest test, Throwable cause, LoggingPreferences ___lp___) { this.status = false; this.internalTestRes = test.internalTestRs; Logs logs = d.manage().logs(); for (String s : LOG_TYPES_SET) { if(!logs.getAvailableLogTypes().contains(s))continue; LogEntries logEntries = logs.get(s); if(logEntries!=null && !logEntries.getAll().isEmpty()) { this.logs.put(s, new SerializableLogEntries(logEntries.getAll())); } } List<LogEntry> entries = new ArrayList<LogEntry>(); entries.add(new LogEntry(Level.ALL, new Date().getTime(), cause.getMessage())); entries.add(new LogEntry(Level.ALL, new Date().getTime(), ExceptionUtils.getStackTrace(cause))); this.logs.put("gatf", new SerializableLogEntries(entries)); }
@Override public void onTestFailure(ITestResult testResult) { log.debug("Test "+ testResult.getName()+" failed!!!"); try { log.debug("Collect client logs after failure of the @Test {}", testResult.getMethod()); LogEntries entries=ApplicationContextProvider.getApplicationContext().getBean(StrategyFactory.class).getControllerStrategy(SessionContext.getSession().getControllerStrategy()).logs(LogType.BROWSER); StringBuilder list=new StringBuilder(); for (LogEntry entry : entries) { list.append(entry.getMessage()).append("\n"); } ApplicationContextProvider.getApplicationContext().getBean(FilesUtils.class).createHTML("Logs for Client", list.toString(), "Logs_"+testResult.getName()); Reporter.log("<p class=\"testOutput\"><a href=\"Logs/Logs_"+testResult.getName()+".html\">Client Logs<a/></p>"); } catch(Exception ex) { log.error("Exception trying to collect client logs: {}",ex.getMessage()); } if(System.getProperty("email")!=null) { log.debug("Send email notification with failure of the @Test to address {} ", System.getProperty("email")); ApplicationContextProvider.getApplicationContext().getBean(MailUtils.class).sendMail(System.getProperty("email"),"Failure on test: "+testResult.getName(),"Exception occured is: "+testResult.getThrowable().getMessage()); } }
public void loggingWorks() { LoggingPreferences prefs = new LoggingPreferences(); prefs.enable(LogType.DRIVER, Level.INFO); DesiredCapabilities caps = JavaDriver.defaultCapabilities(); caps.setCapability(CapabilityType.LOGGING_PREFS, prefs); driver = new JavaDriver(caps, caps); LogEntries logEntries = driver.manage().logs().get(LogType.DRIVER); List<LogEntry> all = logEntries.getAll(); AssertJUnit.assertEquals(2, all.size()); AssertJUnit.assertTrue(all.get(0).getMessage().contains("A new session created. sessionID = ")); }
public void loglevelsAreRespected() { LoggingPreferences prefs = new LoggingPreferences(); prefs.enable(LogType.DRIVER, Level.WARNING); DesiredCapabilities caps = JavaDriver.defaultCapabilities(); caps.setCapability(CapabilityType.LOGGING_PREFS, prefs); driver = new JavaDriver(caps, caps); LogEntries logEntries = driver.manage().logs().get(LogType.DRIVER); List<LogEntry> all = logEntries.getAll(); AssertJUnit.assertEquals(0, all.size()); }
public void runCodeSniffer() throws IOException { String jquery_content = Jsoup.connect("http://squizlabs.github.io/HTML_CodeSniffer/build/HTMLCS.js").ignoreContentType(true).execute().body(); js.executeScript(jquery_content); js.executeScript("window.HTMLCS_RUNNER.run('WCAG2AA');"); LogEntries logs = driver.manage().logs().get("browser"); for (LogEntry entry : logs) { System.out.println(new Date(entry.getTimestamp()) + " " + entry.getLevel() + " " + entry.getMessage()); } }
private void checkForErrors(WebDriver driver) throws Exception { LogEntries logEntries; try { logEntries = driver.manage().logs().get(LogType.BROWSER); } catch (UnsupportedCommandException e) { logEntries = null; } if (logEntries != null) { if (!logEntries.getAll().isEmpty() && logEntries.getAll().get(0).getLevel() == Level.SEVERE) { shutdownCalled.getAndSet(true); throw new WebDriverException(logEntries.getAll().get(0).getMessage()); } } }
/** * New handler keeping track of log records per session. * * @param capacity The capacity * @param minimumLevel Only keep track of records whose level is equal or greater than * minimumLevel. * @param formatter Formatter to use when retrieving log messages. * @param captureLogsOnQuit Whether to enable log capture on quit. */ public DefaultPerSessionLogHandler(int capacity, Level minimumLevel, Formatter formatter, boolean captureLogsOnQuit) { this.capacity = capacity; this.formatter = formatter; this.storeLogsOnSessionQuit = captureLogsOnQuit; this.perSessionRecords = Maps.<SessionId, List<LogRecord>>newHashMap(); this.perThreadTempRecords = Maps.<ThreadKey, List<LogRecord>>newHashMap(); this.threadToSessionMap = Maps.<ThreadKey, SessionId>newHashMap(); this.sessionToThreadMap = Maps.<SessionId, ThreadKey>newHashMap(); this.logFileRepository = new SessionLogsToFileRepository(); this.perSessionDriverEntries = Maps.<SessionId, Map<String, LogEntries>>newHashMap(); }
/** * Returns the server log for the given session id. * * @param sessionId The session id. * @return The available server log entries for the session. * @throws IOException If there was a problem reading from file. */ @Override public synchronized LogEntries getSessionLog(SessionId sessionId) throws IOException { List<LogEntry> entries = Lists.<LogEntry>newLinkedList(); LogRecord[] records = records(sessionId); if (records != null) { for (LogRecord record : records) { if (record.getLevel().intValue() >= serverLogLevel.intValue()) entries.add(new LogEntry(record.getLevel(), record.getMillis(), record.getMessage())); } } return new LogEntries(entries); }
/** * Gets all logs for a session. * * @param sessionId The id of the session. * @return The logs for the session, ordered after log types in a session logs object. */ @Override public synchronized SessionLogs getAllLogsForSession(SessionId sessionId) { SessionLogs sessionLogs = new SessionLogs(); if (perSessionDriverEntries.containsKey(sessionId)) { Map<String, LogEntries> typeToEntriesMap = perSessionDriverEntries.get(sessionId); for (String logType : typeToEntriesMap.keySet()) { sessionLogs.addLog(logType, typeToEntriesMap.get(logType)); } perSessionDriverEntries.remove(sessionId); } return sessionLogs; }
@Override public LogEntries call() throws Exception { if (LogType.SERVER.equals(type)) { return LoggingManager.perSessionLogHandler().getSessionLog(getSessionId()); } else { return getDriver().manage().logs().get(type); } }
public SeleniumTestResult(WebDriver d, SeleniumTest test, LoggingPreferences ___lp___) { this.status = true; this.internalTestRes = test.internalTestRs; Logs logs = d.manage().logs(); for (String s : LOG_TYPES_SET) { if(!logs.getAvailableLogTypes().contains(s))continue; LogEntries logEntries = logs.get(s); if(logEntries!=null && !logEntries.getAll().isEmpty()) { this.logs.put(s, new SerializableLogEntries(logEntries.getAll())); } } }
public SeleniumException(WebDriver d, Throwable cause, SeleniumTest test) { super(cause); Map<String, SerializableLogEntries> lg = new HashMap<String, SerializableLogEntries>(); Logs logs = d.manage().logs(); for (String s : d.manage().logs().getAvailableLogTypes()) { LogEntries logEntries = logs.get(s); if(!logEntries.getAll().isEmpty()) { lg.put(s, new SerializableLogEntries(logEntries.getAll())); } } List<LogEntry> entries = new ArrayList<LogEntry>(); entries.add(new LogEntry(Level.ALL, new Date().getTime(), cause.getMessage())); entries.add(new LogEntry(Level.ALL, new Date().getTime(), ExceptionUtils.getStackTrace(cause))); lg.put("gatf", new SerializableLogEntries(entries)); }
@AfterMethod public void tearDown(Method m) throws IOException { LogEntries logEntries = driver.manage().logs().get("browser"); File driverLog = new File(m.getName() + ".log"); FileWriter out = new FileWriter(driverLog); for (LogEntry logEntry : logEntries.getAll()) { out.write(logEntry.toString() + "\n"); } out.close(); }
@Test public void getAvailableLogTypes() { WebDriver driver = new ChromeDriver(); driver.get("http://ticketfly.com"); Options manage = driver.manage(); Logs logs = manage.logs(); Set<String> availableLogTypes = logs.getAvailableLogTypes(); System.out.println(availableLogTypes); availableLogTypes.stream().forEach(logType -> { System.out.println("logType=" + logType); LogEntries logEntries = logs.get(logType); List<LogEntry> all = logEntries.getAll(); all.forEach(entry -> { System.out.println(entry.getLevel()); System.out.println(entry.getMessage()); System.out.println(entry.getTimestamp()); System.out.println(entry.toMap()); System.out.println(entry); }); List<LogEntry> filter = logEntries.filter(Level.SEVERE); System.out.println("After filtering"); filter.forEach(System.out::println); System.out.println("Done"); }); }
@Override public List<String> getSeleniumLog(Session session) { List<String> result = new ArrayList(); Logs logs = session.getDriver().manage().logs(); for (String logType : logs.getAvailableLogTypes()) { LogEntries logEntries = logs.get(logType); result.add("********************" + logType + "********************\n"); for (LogEntry logEntry : logEntries) { result.add(new Date(logEntry.getTimestamp()) + " : " + logEntry.getLevel() + " : " + logEntry.getMessage() + "\n"); } } return result; }
private LogEntries getBrowserLogs(WebDriver webDriver) { return webDriver.manage().logs().get(LogType.BROWSER); }
@Override public LogEntries getSessionLog(SessionId sessionId) { return new LogEntries(ImmutableList.<LogEntry>of()); }
public LogEntries getConsoleLog() { log.info("Console Log output: "); executeScript("console.log('Logging Errors');"); return getDriver().manage().logs().get(LogType.BROWSER); }
/************************************************************* ************************LOGS SECTION********************* ************************************************************* */ @Override @RetryFailure(retryCount=3) public LogEntries logs(String logtype) { return webDriver().manage().logs().get(logtype); }
@Deprecated @Override public LogEntries logs(String logtype) { throw new RuntimeException(String.format("Method %s not implemented yet",new Object(){}.getClass().getEnclosingMethod().getName())); }
@Override public LogEntries get(String logType) { ensureWebDriver(); return delegate.manage().logs().get(logType); }
/** * Get logs (client,server,performance....etc.) * @param logtype * @return LogEntries the log entries */ LogEntries logs(String logtype);
public abstract LogEntries getSessionLog(SessionId sessionId) throws IOException;