package de.asideas.crowdsource.testsupport.cucumber.hooks;
import cucumber.api.Scenario;
import de.asideas.crowdsource.testsupport.selenium.WebDriverProvider;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.logging.LogEntries;
import org.openqa.selenium.logging.LogEntry;
import org.openqa.selenium.logging.LogType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import static java.util.stream.Collectors.joining;
public class BrowserLogFetchHook {
private static final Logger LOG = LoggerFactory.getLogger(BrowserLogFetchHook.class);
@Autowired
private WebDriverProvider webDriverProvider;
@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);
}
}
}
}
}