You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by bo...@apache.org on 2021/01/11 21:09:40 UTC

[myfaces-tobago] 08/11: better logging for test results

This is an automated email from the ASF dual-hosted git repository.

bommel pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git

commit a4cba74acf621b6dfe95772e3bce3118accff818
Author: Henning Nöth <hn...@apache.org>
AuthorDate: Thu Dec 24 00:03:22 2020 +0100

    better logging for test results
---
 .../tobago/example/demo/integration/BasicTest.java | 16 +++++-----
 .../example/demo/integration/FrontendBase.java     | 37 +++++++++++++++++++---
 .../example/demo/integration/FrontendTest.java     | 12 +++----
 3 files changed, 46 insertions(+), 19 deletions(-)

diff --git a/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/integration/BasicTest.java b/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/integration/BasicTest.java
index 60c72ad..19ae800 100644
--- a/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/integration/BasicTest.java
+++ b/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/integration/BasicTest.java
@@ -73,7 +73,7 @@ class BasicTest extends FrontendBase {
     WebDriver webDriver = getWebDriver(host, getFirefoxPort());
     webDriver.get(url);
 
-    List<WebElement> results = getJasmineResults(webDriver);
+    List<WebElement> results = getJasmineResults(webDriver, url);
     Assertions.assertTrue(results.size() > 0, "no results detected");
     for (WebElement result : results) {
       if ("has no exception".equals(result.getAttribute("title"))) {
@@ -97,7 +97,7 @@ class BasicTest extends FrontendBase {
     WebDriver webDriver = getWebDriver(host, getFirefoxPort());
     webDriver.get(url);
 
-    List<WebElement> results = getJasmineResults(webDriver);
+    List<WebElement> results = getJasmineResults(webDriver, url);
     Assertions.assertTrue(results.size() > 0, "no results detected");
     for (WebElement result : results) {
       if ("has no 404".equals(result.getAttribute("title"))) {
@@ -119,19 +119,19 @@ class BasicTest extends FrontendBase {
     final String timeLeft = getTimeLeft(startTime, testSize, testNumber);
     final String host = InetAddress.getLocalHost().getHostAddress();
     final int tomcatPort = getTomcatPort();
+    final String pageUrl = "http://" + host + ":" + tomcatPort + "/" + path;
 
-    LOG.info("(" + testNumber + "/" + testSize + " | time left: " + timeLeft + ")"
-        + " - url: http://" + host + ":" + tomcatPort + "/" + path);
+    LOG.info("(" + testNumber + "/" + testSize + " | time left: " + timeLeft + ") - url: " + pageUrl);
 
     final String base = path.substring(0, path.length() - 6);
-    final String url = "http://" + host + ":" + tomcatPort + "/test.xhtml?base="
+    final String testUrl = "http://" + host + ":" + tomcatPort + "/test.xhtml?base="
         + URLEncoder.encode(base, "UTF-8") + "&basicTest=true";
 
     WebDriver webDriver = getWebDriver(host, getFirefoxPort());
-    webDriver.get(url);
+    webDriver.get(testUrl);
 
-    List<WebElement> results = getJasmineResults(webDriver);
-    parseJasmineResults(results);
+    List<WebElement> results = getJasmineResults(webDriver, pageUrl);
+    parseJasmineResults(results, pageUrl);
   }
 
   private static Stream<Arguments> basicTestProvider() throws IOException {
diff --git a/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/integration/FrontendBase.java b/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/integration/FrontendBase.java
index 77dacd8..999bdd9 100644
--- a/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/integration/FrontendBase.java
+++ b/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/integration/FrontendBase.java
@@ -24,16 +24,20 @@ import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Assertions;
 import org.openqa.selenium.By;
 import org.openqa.selenium.NoSuchElementException;
+import org.openqa.selenium.TimeoutException;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.firefox.FirefoxOptions;
 import org.openqa.selenium.remote.RemoteWebDriver;
 import org.openqa.selenium.support.ui.FluentWait;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.testcontainers.containers.GenericContainer;
 import org.testcontainers.junit.jupiter.Container;
 import org.testcontainers.utility.DockerImageName;
 
 import java.io.IOException;
+import java.lang.invoke.MethodHandles;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.nio.file.Files;
@@ -46,6 +50,8 @@ import java.util.stream.Collectors;
 
 abstract class FrontendBase {
 
+  private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
   @SuppressWarnings("rawtypes") // this is how to use testcontainers
   @Container
   private static final GenericContainer SELENIUM_FIREFOX =
@@ -85,20 +91,41 @@ abstract class FrontendBase {
     return firefoxDriver;
   }
 
-  List<WebElement> getJasmineResults(WebDriver webDriver) {
+  List<WebElement> getJasmineResults(WebDriver webDriver, String url) {
     final FluentWait<WebDriver> fluentWait = new FluentWait<>(webDriver)
         .withTimeout(Duration.ofSeconds(60))
         .pollingEvery(Duration.ofSeconds(1))
         .ignoring(NoSuchElementException.class);
-    fluentWait.until(driver -> driver.findElement(By.className("jasmine-overall-result")));
+    try {
+      fluentWait.until(driver -> driver.findElement(By.className("jasmine-overall-result")));
+    } catch (TimeoutException e) {
+      Assertions.fail(url + " timeout");
+    }
 
     return webDriver.findElements(By.cssSelector(".jasmine-symbol-summary li"));
   }
 
-  void parseJasmineResults(List<WebElement> results) {
-    Assertions.assertTrue(results.size() > 0, "no results detected");
+  void parseJasmineResults(List<WebElement> results, String url) {
+    Assertions.assertTrue(results.size() > 0, url + " no results detected");
+
+    StringBuilder stringBuilder = new StringBuilder();
+    stringBuilder.append("\n");
+    stringBuilder.append(url);
+    for (WebElement result : results) {
+      stringBuilder.append("\n");
+      if ("jasmine-passed".equals(result.getAttribute("class"))) {
+        stringBuilder.append("✅ passed");
+      } else {
+        stringBuilder.append("❌ failed");
+      }
+      stringBuilder.append(": ");
+      stringBuilder.append(result.getAttribute("title"));
+    }
+    LOG.info(stringBuilder.toString());
+
     for (WebElement result : results) {
-      Assertions.assertEquals("jasmine-passed", result.getAttribute("class"), result.getAttribute("title"));
+      Assertions.assertEquals("jasmine-passed", result.getAttribute("class"),
+          url + " " + result.getAttribute("title"));
     }
   }
 
diff --git a/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/integration/FrontendTest.java b/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/integration/FrontendTest.java
index 96ae25c..e314b32 100644
--- a/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/integration/FrontendTest.java
+++ b/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/integration/FrontendTest.java
@@ -64,18 +64,18 @@ class FrontendTest extends FrontendBase {
     final String timeLeft = getTimeLeft(FrontendTest.startTime, testSize, testNumber);
     final String host = InetAddress.getLocalHost().getHostAddress();
     final int tomcatPort = getTomcatPort();
+    final String pageUrl = "http://" + host + ":" + tomcatPort + "/" + path;
 
-    LOG.info("(" + testNumber + "/" + testSize + " | time left: " + timeLeft + ")"
-        + " - url: http://" + host + ":" + tomcatPort + "/" + path);
+    LOG.info("(" + testNumber + "/" + testSize + " | time left: " + timeLeft + ") - url: " + pageUrl);
 
     final String base = path.substring(0, path.length() - 6);
-    final String url = "http://" + host + ":" + tomcatPort + "/test.xhtml?base=" + URLEncoder.encode(base, "UTF-8");
+    final String testUrl = "http://" + host + ":" + tomcatPort + "/test.xhtml?base=" + URLEncoder.encode(base, "UTF-8");
 
     WebDriver webDriver = getWebDriver(host, getFirefoxPort());
-    webDriver.get(url);
+    webDriver.get(testUrl);
 
-    List<WebElement> results = getJasmineResults(webDriver);
-    parseJasmineResults(results);
+    List<WebElement> results = getJasmineResults(webDriver, pageUrl);
+    parseJasmineResults(results, pageUrl);
   }
 
   private static Stream<Arguments> standardTestProvider() throws IOException {