From 115cb81af0cfe87709f413099ddf067f0755993a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gro=C3=9Fmann?= Date: Wed, 10 Jan 2024 16:01:08 +0100 Subject: [PATCH 1/2] Update Selenium to 2.16.1 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index f57482956..2b3eb5fd5 100644 --- a/build.gradle +++ b/build.gradle @@ -20,7 +20,7 @@ ext { core = project(':core') report = project(':report-ng') - seleniumVersion = '4.14.1' + seleniumVersion = '4.16.1' // Must be the same like in Selenium 4 guavaVersion = "32.1.2-jre" From 460d95fa52c09c89ae3e5d78f70509ed4c003881 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gro=C3=9Fmann?= Date: Wed, 10 Jan 2024 17:16:51 +0100 Subject: [PATCH 2/2] Updated bidi log example --- .../selenium4/selenium4-webdriver-bidi.adoc | 31 ++++++++++++------- .../playground/SeleniumBiDiApiTests.java | 17 ++++++++++ 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/docs/src/docs/selenium4/selenium4-webdriver-bidi.adoc b/docs/src/docs/selenium4/selenium4-webdriver-bidi.adoc index 5127cd6c0..591335732 100644 --- a/docs/src/docs/selenium4/selenium4-webdriver-bidi.adoc +++ b/docs/src/docs/selenium4/selenium4-webdriver-bidi.adoc @@ -17,7 +17,7 @@ The browser console window shows different types of logging information. You hav IMPORTANT: The created consumer for all listeners will be executed in an additional thread. + If you use an `Assert` this will be no impact to the main thread. -.Example for listening to simple console logs +.Example for listening to all console logs [source, java] ---- @@ -50,27 +50,36 @@ public class WebDriverBiDiTests extends TesterraTest implements LogInspector logInspector = new LogInspector(remoteDriver); // Look for the type of log entries you want to catch - List logEntryList = new ArrayList<>(); + List logEntryList = new ArrayList<>(); logInspector.onConsoleEntry(logEntryList::add); uiElementFinder.find(By.id("consoleLog")).click(); uiElementFinder.find(By.id("consoleError")).click(); + uiElementFinder.find(By.id("jsException")).click(); + uiElementFinder.find(By.id("logWithStacktrace")).click(); + // To make sure we have at least 4 elements in our list CONTROL.retryTimes(5, () -> { - ASSERT.assertTrue(logEntryList.size() > 1); + ASSERT.assertTrue(logEntryList.size() >= 4); TimerUtils.sleepSilent(1000); }); - logEntryList.forEach(logEntry -> - log().info( - "LOG_ENTRY: {} {} {} - {}", - logEntry.getTimestamp(), - logEntry.getLevel(), - logEntry.getMethod(), - logEntry.getText()) + logEntryList.forEach(logEntry -> { + AtomicReference genericLogEntry = new AtomicReference<>(); + // 'LogEntry' is only a container for different types of logs. + logEntry.getConsoleLogEntry().ifPresent(genericLogEntry::set); + logEntry.getJavascriptLogEntry().ifPresent(genericLogEntry::set); + + log().info("LOG_ENTRY: {} {} {} {} - {}", + genericLogEntry.get().getTimestamp(), + genericLogEntry.get().getType(), + genericLogEntry.get().getLevel(), + genericLogEntry.get().getType(), + genericLogEntry.get().getText() ); + }); - ASSERT.assertEquals(logEntryList.size(), 2, "LogEntry list"); + ASSERT.assertEquals(logEntryList.size(), 4, "LogEntry list"); } } diff --git a/integration-tests/src/test/java/eu/tsystems/mms/tic/testframework/playground/SeleniumBiDiApiTests.java b/integration-tests/src/test/java/eu/tsystems/mms/tic/testframework/playground/SeleniumBiDiApiTests.java index 074faa976..0f2750ad9 100644 --- a/integration-tests/src/test/java/eu/tsystems/mms/tic/testframework/playground/SeleniumBiDiApiTests.java +++ b/integration-tests/src/test/java/eu/tsystems/mms/tic/testframework/playground/SeleniumBiDiApiTests.java @@ -32,6 +32,7 @@ import org.openqa.selenium.WebDriver; import org.openqa.selenium.bidi.LogInspector; import org.openqa.selenium.bidi.log.ConsoleLogEntry; +import org.openqa.selenium.bidi.log.GenericLogEntry; import org.openqa.selenium.bidi.log.JavascriptLogEntry; import org.openqa.selenium.bidi.log.LogEntry; import org.openqa.selenium.chrome.ChromeDriver; @@ -44,6 +45,7 @@ import java.net.MalformedURLException; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.atomic.AtomicReference; /** * Created on 2023-06-22 @@ -172,6 +174,21 @@ public void testT03_LogListener_AllLogs() throws MalformedURLException { }); ASSERT.assertEquals(logEntryList.size(), 4, "LogEntry list"); + + logEntryList.forEach(logEntry -> { + AtomicReference genericLogEntry = new AtomicReference<>(); + logEntry.getConsoleLogEntry().ifPresent(genericLogEntry::set); + logEntry.getJavascriptLogEntry().ifPresent(genericLogEntry::set); + + log().info("LOG_ENTRY: {} {} {} {} - {}", + genericLogEntry.get().getTimestamp(), + genericLogEntry.get().getType(), + genericLogEntry.get().getLevel(), + genericLogEntry.get().getType(), + genericLogEntry.get().getText() + ); + }); + }