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 {