diff --git a/java/src/org/openqa/selenium/Architecture.java b/java/src/org/openqa/selenium/Architecture.java index 35798b5ed9475..a8746ef24d7fd 100644 --- a/java/src/org/openqa/selenium/Architecture.java +++ b/java/src/org/openqa/selenium/Architecture.java @@ -142,6 +142,6 @@ public static Architecture extractFromSysProperty(String arch) { } } - throw new UnsupportedOperationException("Unknown architecture: " + arch); + throw new UnsupportedOperationException("Unknown architecture: \"" + arch + '"'); } } diff --git a/java/src/org/openqa/selenium/bidi/script/BUILD.bazel b/java/src/org/openqa/selenium/bidi/script/BUILD.bazel index d291aa616a724..4067cb74c0c58 100644 --- a/java/src/org/openqa/selenium/bidi/script/BUILD.bazel +++ b/java/src/org/openqa/selenium/bidi/script/BUILD.bazel @@ -20,5 +20,6 @@ java_library( "//java/src/org/openqa/selenium/json", "//java/src/org/openqa/selenium/remote/http", artifact("com.google.auto.service:auto-service-annotations"), + artifact("org.jspecify:jspecify"), ], ) diff --git a/java/src/org/openqa/selenium/bidi/script/PrimitiveProtocolValue.java b/java/src/org/openqa/selenium/bidi/script/PrimitiveProtocolValue.java index fb4659008097b..fdce1d18b175b 100644 --- a/java/src/org/openqa/selenium/bidi/script/PrimitiveProtocolValue.java +++ b/java/src/org/openqa/selenium/bidi/script/PrimitiveProtocolValue.java @@ -52,4 +52,9 @@ public Map toJson() { return unmodifiableMap(toReturn); } + + @Override + public String toString() { + return String.format("%s{type:%s, value:%s}", getClass().getSimpleName(), type, value); + } } diff --git a/java/src/org/openqa/selenium/bidi/script/RegExpValue.java b/java/src/org/openqa/selenium/bidi/script/RegExpValue.java index 66e9cfd4443f5..2e0af28200db8 100644 --- a/java/src/org/openqa/selenium/bidi/script/RegExpValue.java +++ b/java/src/org/openqa/selenium/bidi/script/RegExpValue.java @@ -18,19 +18,22 @@ package org.openqa.selenium.bidi.script; import java.util.Map; +import java.util.Objects; import java.util.TreeMap; +import org.jspecify.annotations.Nullable; import org.openqa.selenium.json.JsonInput; public class RegExpValue extends LocalValue { private final String pattern; - private String flags; + + @Nullable private final String flags; public RegExpValue(String pattern) { - this.pattern = pattern; + this(pattern, null); } - public RegExpValue(String pattern, String flags) { + public RegExpValue(String pattern, @Nullable String flags) { this.pattern = pattern; this.flags = flags; } @@ -78,7 +81,25 @@ public String getPattern() { return pattern; } + @Nullable public String getFlags() { return flags; } + + @Override + public boolean equals(Object object) { + if (!(object instanceof RegExpValue)) return false; + RegExpValue other = (RegExpValue) object; + return Objects.equals(pattern, other.pattern) && Objects.equals(flags, other.flags); + } + + @Override + public int hashCode() { + return Objects.hash(pattern, flags); + } + + @Override + public String toString() { + return String.format("%s{pattern:%s, flags:%s}", getClass().getSimpleName(), pattern, flags); + } } diff --git a/java/src/org/openqa/selenium/bidi/script/RemoteValue.java b/java/src/org/openqa/selenium/bidi/script/RemoteValue.java index eeab36108c1bd..ad9d258cf7694 100644 --- a/java/src/org/openqa/selenium/bidi/script/RemoteValue.java +++ b/java/src/org/openqa/selenium/bidi/script/RemoteValue.java @@ -254,4 +254,10 @@ private static Object deserializeValue(Object value, Type type) { return finalValue; } + + @Override + public String toString() { + return String.format( + "%s{type:%s, value:%s}", getClass().getSimpleName(), type, value.orElse(null)); + } } diff --git a/java/src/org/openqa/selenium/print/PageMargin.java b/java/src/org/openqa/selenium/print/PageMargin.java index cf4dc68e0ae95..6fe27e6063e5a 100644 --- a/java/src/org/openqa/selenium/print/PageMargin.java +++ b/java/src/org/openqa/selenium/print/PageMargin.java @@ -17,7 +17,6 @@ package org.openqa.selenium.print; -import java.util.HashMap; import java.util.Map; import org.jspecify.annotations.NullMarked; @@ -59,12 +58,10 @@ public double getRight() { } public Map toMap() { - final Map options = new HashMap<>(7); - options.put("top", getTop()); - options.put("bottom", getBottom()); - options.put("left", getLeft()); - options.put("right", getRight()); - - return options; + return Map.of( + "top", getTop(), + "bottom", getBottom(), + "left", getLeft(), + "right", getRight()); } } diff --git a/java/test/org/openqa/selenium/ArchitectureTest.java b/java/test/org/openqa/selenium/ArchitectureTest.java index 7bedc2caac5ec..4de22a7eb8004 100644 --- a/java/test/org/openqa/selenium/ArchitectureTest.java +++ b/java/test/org/openqa/selenium/ArchitectureTest.java @@ -121,14 +121,14 @@ void determineArchARM() { void determineArchEmpty() { assertThatExceptionOfType(UnsupportedOperationException.class) .isThrownBy(() -> Architecture.extractFromSysProperty("")) - .withMessageContaining("Unknown architecture"); + .withMessage("Unknown architecture: \"\""); } @Test void determineArchBogus() { assertThatExceptionOfType(UnsupportedOperationException.class) .isThrownBy(() -> Architecture.extractFromSysProperty("hoobaflooba")) - .withMessageContaining("Unknown architecture"); + .withMessage("Unknown architecture: \"hoobaflooba\""); } @Test @@ -139,7 +139,7 @@ void determineArchMixedCasing() { @Test void dataModelIs32Or64BitOnCurrentArchitecture() { int model = Architecture.getCurrent().getDataModel(); - assertThat(model == 32 || model == 64).isTrue(); + assertThat(model).isIn(32, 64); } @Test diff --git a/java/test/org/openqa/selenium/CookieImplementationTest.java b/java/test/org/openqa/selenium/CookieImplementationTest.java index cb1a1c1b9fbac..61080de0b83a3 100644 --- a/java/test/org/openqa/selenium/CookieImplementationTest.java +++ b/java/test/org/openqa/selenium/CookieImplementationTest.java @@ -108,8 +108,7 @@ public void testGetAllCookies() { assertCookieIsNotPresentWithName(key1); assertCookieIsNotPresentWithName(key2); - Set cookies = driver.manage().getCookies(); - int countBefore = cookies.size(); + int countBefore = driver.manage().getCookies().size(); Cookie one = new Cookie.Builder(key1, "value").build(); Cookie two = new Cookie.Builder(key2, "value").build(); @@ -118,11 +117,10 @@ public void testGetAllCookies() { driver.manage().addCookie(two); openAnotherPage(); - cookies = driver.manage().getCookies(); + Set cookies = driver.manage().getCookies(); assertThat(cookies).hasSize(countBefore + 2); - assertThat(cookies.contains(one)).isTrue(); - assertThat(cookies.contains(two)).isTrue(); + assertThat(cookies).contains(one, two); } @Test diff --git a/java/test/org/openqa/selenium/ElementAttributeTest.java b/java/test/org/openqa/selenium/ElementAttributeTest.java index 82e07b929ba8f..e03ca7d63f728 100644 --- a/java/test/org/openqa/selenium/ElementAttributeTest.java +++ b/java/test/org/openqa/selenium/ElementAttributeTest.java @@ -258,7 +258,7 @@ void testCanReturnATextApproximationOfTheStyleAttribute() { String style = driver.findElement(By.id("red-item")).getAttribute("style"); - assertThat(style.toLowerCase().contains("background-color")).isTrue(); + assertThat(style).containsIgnoringCase("background-color"); } @Test diff --git a/java/test/org/openqa/selenium/ElementDomAttributeTest.java b/java/test/org/openqa/selenium/ElementDomAttributeTest.java index bc5134ef45a86..b5f12b3334845 100644 --- a/java/test/org/openqa/selenium/ElementDomAttributeTest.java +++ b/java/test/org/openqa/selenium/ElementDomAttributeTest.java @@ -221,7 +221,7 @@ void testCanReturnATextApproximationOfTheStyleAttribute() { String style = driver.findElement(By.id("red-item")).getDomAttribute("style"); - assertThat(style.toLowerCase().contains("background-color")).isTrue(); + assertThat(style).containsIgnoringCase("background-color"); } @Test diff --git a/java/test/org/openqa/selenium/ExecutingAsyncJavascriptTest.java b/java/test/org/openqa/selenium/ExecutingAsyncJavascriptTest.java index d81496aec1865..9e8699139dc28 100644 --- a/java/test/org/openqa/selenium/ExecutingAsyncJavascriptTest.java +++ b/java/test/org/openqa/selenium/ExecutingAsyncJavascriptTest.java @@ -20,6 +20,8 @@ import static com.google.common.base.Throwables.getRootCause; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import static org.assertj.core.api.InstanceOfAssertFactories.LIST; +import static org.assertj.core.api.InstanceOfAssertFactories.type; import static org.junit.jupiter.api.Assumptions.assumeTrue; import static org.openqa.selenium.testing.drivers.Browser.CHROME; import static org.openqa.selenium.testing.drivers.Browser.EDGE; @@ -28,7 +30,6 @@ import static org.openqa.selenium.testing.drivers.Browser.SAFARI; import java.time.Duration; -import java.util.Iterator; import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -53,28 +54,25 @@ public void setUp() { @NotYetImplemented(value = FIREFOX, reason = "Default to 5s") @NotYetImplemented(value = SAFARI, reason = "Default to 5s") public void shouldSetAndGetScriptTimeout() { - Duration timeout = driver.manage().timeouts().getScriptTimeout(); - assertThat(timeout).hasMillis(30000); + assertThat(driver.manage().timeouts().getScriptTimeout()).hasSeconds(30); + driver.manage().timeouts().scriptTimeout(Duration.ofMillis(3000)); - Duration timeout2 = driver.manage().timeouts().getScriptTimeout(); - assertThat(timeout2).hasMillis(3000); + + assertThat(driver.manage().timeouts().getScriptTimeout()).hasSeconds(3); } @Test void shouldNotTimeoutIfCallbackInvokedImmediately() { driver.get(pages.ajaxyPage); - Object result = executor.executeAsyncScript("arguments[arguments.length - 1](123);"); - assertThat(result).isInstanceOf(Number.class); - assertThat(((Number) result).intValue()).isEqualTo(123); + Object result = executor.executeAsyncScript("arguments[arguments.length - 1]('123');"); + assertThat(result).isEqualTo("123"); } @Test void shouldBeAbleToReturnJavascriptPrimitivesFromAsyncScripts_NeitherNullNorUndefined() { driver.get(pages.ajaxyPage); - assertThat( - ((Number) executor.executeAsyncScript("arguments[arguments.length - 1](123);")) - .longValue()) - .isEqualTo(123); + assertThat(executor.executeAsyncScript("arguments[arguments.length - 1](123456789012345);")) + .isEqualTo(123456789012345L); assertThat(executor.executeAsyncScript("arguments[arguments.length - 1]('abc');")) .isEqualTo("abc"); assertThat((Boolean) executor.executeAsyncScript("arguments[arguments.length - 1](false);")) @@ -95,8 +93,7 @@ void shouldBeAbleToReturnAnArrayLiteralFromAnAsyncScript() { driver.get(pages.ajaxyPage); Object result = executor.executeAsyncScript("arguments[arguments.length - 1]([]);"); - assertThat(result).isNotNull().isInstanceOf(List.class); - assertThat(((List) result)).isEmpty(); + assertThat(result).asInstanceOf(LIST).isEmpty(); } @Test @@ -104,8 +101,7 @@ void shouldBeAbleToReturnAnArrayObjectFromAnAsyncScript() { driver.get(pages.ajaxyPage); Object result = executor.executeAsyncScript("arguments[arguments.length - 1](new Array());"); - assertThat(result).isNotNull().isInstanceOf(List.class); - assertThat(((List) result)).isEmpty(); + assertThat(result).asInstanceOf(LIST).isEmpty(); } @Test @@ -114,18 +110,11 @@ void shouldBeAbleToReturnArraysOfPrimitivesFromAsyncScripts() { Object result = executor.executeAsyncScript( - "arguments[arguments.length - 1]([null, 123, 'abc', true, false]);"); - - assertThat(result).isNotNull(); - assertThat(result).isInstanceOf(List.class); - - Iterator results = ((List) result).iterator(); - assertThat(results.next()).isNull(); - assertThat(((Number) results.next()).longValue()).isEqualTo(123); - assertThat(results.next()).isEqualTo("abc"); - assertThat((Boolean) results.next()).isTrue(); - assertThat((Boolean) results.next()).isFalse(); - assertThat(results.hasNext()).isFalse(); + "arguments[arguments.length - 1]([null, 123456789012345, 'abc', true, false]);"); + + assertThat(result) + .asInstanceOf(LIST) + .containsExactly(null, 123456789012345L, "abc", true, false); } @Test @@ -133,8 +122,9 @@ void shouldBeAbleToReturnWebElementsFromAsyncScripts() { driver.get(pages.ajaxyPage); Object result = executor.executeAsyncScript("arguments[arguments.length - 1](document.body);"); - assertThat(result).isInstanceOf(WebElement.class); - assertThat(((WebElement) result).getTagName()).isEqualToIgnoringCase("body"); + assertThat(result) + .asInstanceOf(type(WebElement.class)) + .satisfies(webElement -> assertThat(webElement.getTagName()).isEqualToIgnoringCase("body")); } @Test @@ -146,13 +136,21 @@ void shouldBeAbleToReturnArraysOfWebElementsFromAsyncScripts() { executor.executeAsyncScript( "arguments[arguments.length - 1]([document.body, document.body]);"); assertThat(result).isNotNull().isInstanceOf(List.class); - - List list = (List) result; - assertThat(list).hasSize(2); - assertThat(list.get(0)).isInstanceOf(WebElement.class); - assertThat(list.get(1)).isInstanceOf(WebElement.class); - assertThat(((WebElement) list.get(0)).getTagName()).isEqualToIgnoringCase("body"); - assertThat(list.get(1)).isEqualTo(list.get(0)); + assertThat(result) + .asInstanceOf(LIST) + .hasSize(2) + .satisfies( + list -> { + assertThat(list.get(0)) + .asInstanceOf(type(WebElement.class)) + .satisfies( + element -> assertThat(element.getTagName()).isEqualToIgnoringCase("body")); + assertThat(list.get(1)) + .asInstanceOf(type(WebElement.class)) + .satisfies( + element -> assertThat(element.getTagName()).isEqualToIgnoringCase("body")); + assertThat(list.get(1)).isEqualTo(list.get(0)); + }); } @Test diff --git a/java/test/org/openqa/selenium/ExecutingJavascriptTest.java b/java/test/org/openqa/selenium/ExecutingJavascriptTest.java index c6322980ea2b0..2404e8e086e20 100644 --- a/java/test/org/openqa/selenium/ExecutingJavascriptTest.java +++ b/java/test/org/openqa/selenium/ExecutingJavascriptTest.java @@ -98,8 +98,7 @@ void testShouldBeAbleToExecuteSimpleJavascriptAndReturnABoolean() { Object result = executeScript("return true;"); - assertThat(result).isInstanceOf(Boolean.class); - assertThat((Boolean) result).isTrue(); + assertThat(result).isInstanceOf(Boolean.class).isEqualTo(true); } @SuppressWarnings("unchecked") diff --git a/java/test/org/openqa/selenium/FormHandlingTest.java b/java/test/org/openqa/selenium/FormHandlingTest.java index 918c16fc2eee7..efb66413ca3a0 100644 --- a/java/test/org/openqa/selenium/FormHandlingTest.java +++ b/java/test/org/openqa/selenium/FormHandlingTest.java @@ -154,7 +154,7 @@ void testShouldBeAbleToAlterTheContentsOfAFileUploadInputElement() throws IOExce uploadElement.sendKeys(file.getAbsolutePath()); String uploadPath = uploadElement.getAttribute("value"); - assertThat(uploadPath.endsWith(file.getName())).isTrue(); + assertThat(uploadPath).endsWith(file.getName()); } @Test @@ -169,7 +169,7 @@ void testShouldBeAbleToSendKeysToAFileUploadInputElementInAnXhtmlDocument() thro uploadElement.sendKeys(file.getAbsolutePath()); String uploadPath = uploadElement.getAttribute("value"); - assertThat(uploadPath.endsWith(file.getName())).isTrue(); + assertThat(uploadPath).endsWith(file.getName()); } @Test diff --git a/java/test/org/openqa/selenium/OutputTypeTest.java b/java/test/org/openqa/selenium/OutputTypeTest.java index 56472505c0373..92c1d7218db19 100644 --- a/java/test/org/openqa/selenium/OutputTypeTest.java +++ b/java/test/org/openqa/selenium/OutputTypeTest.java @@ -45,7 +45,7 @@ void testBytes() { @Test void testFiles() { File tmpFile = OutputType.FILE.convertFromBase64Png(TEST_BASE64); - assertThat(tmpFile.exists()).isTrue(); + assertThat(tmpFile).exists(); assertThat(tmpFile.length()).isEqualTo(TEST_BYTES.length); assertThat(tmpFile.delete()).isTrue(); } diff --git a/java/test/org/openqa/selenium/PrintPageTest.java b/java/test/org/openqa/selenium/PrintPageTest.java index 2b1b5b7a5cc36..e4db436a4db48 100644 --- a/java/test/org/openqa/selenium/PrintPageTest.java +++ b/java/test/org/openqa/selenium/PrintPageTest.java @@ -46,7 +46,7 @@ public void canPrintPage() { PrintOptions printOptions = new PrintOptions(); Pdf pdf = printer.print(printOptions); - assertThat(pdf.getContent().contains(MAGIC_STRING)).isTrue(); + assertThat(pdf.getContent()).contains(MAGIC_STRING); } // TODO: Skipped for Chrome because it needs to run headless, a workaround for this is needed. @@ -57,7 +57,7 @@ public void canPrintTwoPages() { printOptions.setPageRanges("1-2"); Pdf pdf = printer.print(printOptions); - assertThat(pdf.getContent().contains(MAGIC_STRING)).isTrue(); + assertThat(pdf.getContent()).contains(MAGIC_STRING); } // TODO: Skipped for Chrome because it needs to run headless, a workaround for this is needed. @@ -72,6 +72,6 @@ public void canPrintWithValidParams() { printOptions.setPageSize(pageSize); Pdf pdf = printer.print(printOptions); - assertThat(pdf.getContent().contains(MAGIC_STRING)).isTrue(); + assertThat(pdf.getContent()).contains(MAGIC_STRING); } } diff --git a/java/test/org/openqa/selenium/TakesScreenshotTest.java b/java/test/org/openqa/selenium/TakesScreenshotTest.java index 454d6f9bbcf8f..aac0583e03522 100644 --- a/java/test/org/openqa/selenium/TakesScreenshotTest.java +++ b/java/test/org/openqa/selenium/TakesScreenshotTest.java @@ -18,7 +18,7 @@ package org.openqa.selenium; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assumptions.assumeTrue; +import static org.assertj.core.api.Assumptions.assumeThat; import static org.openqa.selenium.support.ui.ExpectedConditions.frameToBeAvailableAndSwitchToIt; import static org.openqa.selenium.support.ui.ExpectedConditions.titleIs; import static org.openqa.selenium.support.ui.ExpectedConditions.visibilityOfAllElementsLocatedBy; @@ -70,7 +70,7 @@ class TakesScreenshotTest extends JupiterTestBase { @BeforeEach public void setUp() { - assumeTrue(driver instanceof TakesScreenshot); + assumeThat(driver).isInstanceOf(TakesScreenshot.class); screenshooter = (TakesScreenshot) driver; } @@ -333,8 +333,8 @@ private Set scanActualColors(BufferedImage image, final int stepX, final int height = image.getHeight(); int width = image.getWidth(); - assertThat(width > 0).isTrue(); - assertThat(height > 0).isTrue(); + assertThat(width).isPositive(); + assertThat(height).isPositive(); Raster raster = image.getRaster(); for (int i = 0; i < width; i = i + stepX) { diff --git a/java/test/org/openqa/selenium/WebNetworkTest.java b/java/test/org/openqa/selenium/WebNetworkTest.java index 49a6c74229349..73a05f201be07 100644 --- a/java/test/org/openqa/selenium/WebNetworkTest.java +++ b/java/test/org/openqa/selenium/WebNetworkTest.java @@ -299,7 +299,7 @@ void canAddRequestHandlerToModifyBody() throws InterruptedException { driver.get(page); - assertThat(driver.getPageSource().contains("Received response for the request")).isTrue(); + assertThat(driver.getPageSource()).contains("Received response for the request"); } @Test diff --git a/java/test/org/openqa/selenium/bidi/browsingcontext/BrowsingContextInspectorTest.java b/java/test/org/openqa/selenium/bidi/browsingcontext/BrowsingContextInspectorTest.java index 1d6f6afb3bab4..2a8fd039b94db 100644 --- a/java/test/org/openqa/selenium/bidi/browsingcontext/BrowsingContextInspectorTest.java +++ b/java/test/org/openqa/selenium/bidi/browsingcontext/BrowsingContextInspectorTest.java @@ -212,7 +212,6 @@ void canListenToUserPromptClosedEvent() UserPromptClosed userPromptClosed = future.get(5, TimeUnit.SECONDS); assertThat(userPromptClosed.getBrowsingContextId()).isEqualTo(context.getId()); - assertThat(userPromptClosed.getUserText().isPresent()).isTrue(); assertThat(userPromptClosed.getUserText()).hasValue("selenium"); assertThat(userPromptClosed.getAccepted()).isTrue(); } diff --git a/java/test/org/openqa/selenium/bidi/browsingcontext/BrowsingContextTest.java b/java/test/org/openqa/selenium/bidi/browsingcontext/BrowsingContextTest.java index 0ee75e4e5eed0..1a2d92d8e178c 100644 --- a/java/test/org/openqa/selenium/bidi/browsingcontext/BrowsingContextTest.java +++ b/java/test/org/openqa/selenium/bidi/browsingcontext/BrowsingContextTest.java @@ -253,11 +253,11 @@ void canActivateABrowsingContext() { BrowsingContext window2 = new BrowsingContext(driver, WindowType.WINDOW); // We did not switch the driver, so we are running the script to check focus on 1st window - assertThat(getDocumentFocus()).isFalse(); + assertThat(isDocumentFocused()).isFalse(); window1.activate(); - assertThat(getDocumentFocus()).isTrue(); + assertThat(isDocumentFocused()).isTrue(); } // TODO: Add a test for closing the last tab once the behavior is finalized @@ -572,7 +572,7 @@ private T executeScript(String js) { return (T) ((JavascriptExecutor) driver).executeScript(js); } - private boolean getDocumentFocus() { + private boolean isDocumentFocused() { return executeScript("return document.hasFocus();"); } diff --git a/java/test/org/openqa/selenium/bidi/browsingcontext/LocateNodesTest.java b/java/test/org/openqa/selenium/bidi/browsingcontext/LocateNodesTest.java index c92026625aa90..e567a2a21ce33 100644 --- a/java/test/org/openqa/selenium/bidi/browsingcontext/LocateNodesTest.java +++ b/java/test/org/openqa/selenium/bidi/browsingcontext/LocateNodesTest.java @@ -92,11 +92,10 @@ void canLocateNodesWithCSSLocator() { RemoteValue value = elements.get(0); assertThat(value.getType()).isEqualTo("node"); - assertThat(value.getValue().isPresent()).isTrue(); + assertThat(value.getValue()).isPresent(); NodeProperties properties = (NodeProperties) value.getValue().get(); assertThat(properties.getLocalName()).hasValue("div"); - assertThat(properties.getAttributes().get()).hasSize(1); - assertThat(properties.getAttributes().get().get("class")).isEqualTo("content"); + assertThat(properties.getAttributes()).hasValue(Map.of("class", "content")); } @Test @@ -115,11 +114,10 @@ void canLocateNodesWithXPathLocator() { RemoteValue value = elements.get(0); assertThat(value.getType()).isEqualTo("node"); - assertThat(value.getValue().isPresent()).isTrue(); + assertThat(value.getValue()).isPresent(); NodeProperties properties = (NodeProperties) value.getValue().get(); assertThat(properties.getLocalName()).hasValue("div"); - assertThat(properties.getAttributes().get()).hasSize(1); - assertThat(properties.getAttributes().get().get("class")).isEqualTo("content"); + assertThat(properties.getAttributes()).hasValue(Map.of("class", "content")); } @Test @@ -139,7 +137,7 @@ void canLocateNodesWithInnerText() { RemoteValue value = elements.get(0); assertThat(value.getType()).isEqualTo("node"); - assertThat(value.getValue().isPresent()).isTrue(); + assertThat(value.getValue()).isPresent(); } @Test diff --git a/java/test/org/openqa/selenium/bidi/emulation/SetGeolocationOverrideTest.java b/java/test/org/openqa/selenium/bidi/emulation/SetGeolocationOverrideTest.java index 0b5ce769285a6..cca0cbf99f845 100644 --- a/java/test/org/openqa/selenium/bidi/emulation/SetGeolocationOverrideTest.java +++ b/java/test/org/openqa/selenium/bidi/emulation/SetGeolocationOverrideTest.java @@ -40,34 +40,36 @@ @NeedsSecureServer class SetGeolocationOverrideTest extends JupiterTestBase { - Object getBrowserGeolocation(WebDriver driver, String userContext, String origin) { + private Map getBrowserGeolocation( + WebDriver driver, String userContext, String origin) { JavascriptExecutor executor = (JavascriptExecutor) driver; Permission permission = new Permission(driver); permission.setPermission( Map.of("name", "geolocation"), PermissionState.GRANTED, origin, userContext); - return executor.executeAsyncScript( - "const callback = arguments[arguments.length - 1];\n" - + " navigator.geolocation.getCurrentPosition(\n" - + " position => {\n" - + " const coords = position.coords;\n" - + " callback({\n" - + " latitude: coords.latitude,\n" - + " longitude: coords.longitude,\n" - + " accuracy: coords.accuracy,\n" - + " altitude: coords.altitude,\n" - + " altitudeAccuracy: coords.altitudeAccuracy,\n" - + " heading: coords.heading,\n" - + " speed: coords.speed,\n" - + " timestamp: position.timestamp\n" - + " });\n" - + " },\n" - + " error => {\n" - + " callback({ error: error.message });\n" - + " },\n" - + " { enableHighAccuracy: false, timeout: 10000, maximumAge: 0 }\n" - + " );"); + return (Map) + executor.executeAsyncScript( + "const callback = arguments[arguments.length - 1];\n" + + " navigator.geolocation.getCurrentPosition(\n" + + " position => {\n" + + " const coords = position.coords;\n" + + " callback({\n" + + " latitude: coords.latitude,\n" + + " longitude: coords.longitude,\n" + + " accuracy: coords.accuracy,\n" + + " altitude: coords.altitude,\n" + + " altitudeAccuracy: coords.altitudeAccuracy,\n" + + " heading: coords.heading,\n" + + " speed: coords.speed,\n" + + " timestamp: position.timestamp\n" + + " });\n" + + " },\n" + + " error => {\n" + + " callback({ error: error.message });\n" + + " },\n" + + " { enableHighAccuracy: false, timeout: 10000, maximumAge: 0 }\n" + + " );"); } @Test @@ -188,10 +190,8 @@ void canSetGeolocationOverrideWithError() { emul.setGeolocationOverride( new SetGeolocationOverrideParameters(error).contexts(List.of(contextId))); - Object result = getBrowserGeolocation(driver, null, origin); - Map r = ((Map) result); - - assertThat(r.containsKey("error")).isTrue(); + Map result = getBrowserGeolocation(driver, null, origin); + assertThat(result).containsKey("error"); context.close(); } @@ -218,7 +218,7 @@ void canResetGeolocationOverrideWithNullCoordinates() { Object firstResult = getBrowserGeolocation(driver, null, origin); Map r1 = ((Map) firstResult); - assertThat(r1.containsKey("error")).isFalse(); + assertThat(r1).doesNotContainKey("error"); double latitude1 = ((Number) r1.get("latitude")).doubleValue(); double longitude1 = ((Number) r1.get("longitude")).doubleValue(); @@ -232,8 +232,9 @@ void canResetGeolocationOverrideWithNullCoordinates() { Object secondResult = getBrowserGeolocation(driver, null, origin); Map r2 = ((Map) secondResult); - // Error because there's no real geolocation available - assertThat(r2.containsKey("error")).isTrue(); + assertThat(r2) + .as("We expected an error because there's no real geolocation available") + .containsKey("error"); context.close(); } diff --git a/java/test/org/openqa/selenium/bidi/emulation/SetScriptingEnabledTest.java b/java/test/org/openqa/selenium/bidi/emulation/SetScriptingEnabledTest.java index a3c6440504ca8..0593fadb4e121 100644 --- a/java/test/org/openqa/selenium/bidi/emulation/SetScriptingEnabledTest.java +++ b/java/test/org/openqa/selenium/bidi/emulation/SetScriptingEnabledTest.java @@ -39,11 +39,11 @@ public class SetScriptingEnabledTest extends JupiterTestBase { - private boolean isFooInWindow(String contextId, Script script) { + private Optional getHello(String contextId, Script script) { EvaluateResult result = script.evaluateFunctionInBrowsingContext( - contextId, "'foo' in window", false, Optional.empty()); - return (Boolean) ((EvaluateResultSuccess) result).getResult().getValue().get(); + contextId, "window.hello", false, Optional.empty()); + return ((EvaluateResultSuccess) result).getResult().getValue().map(value -> (String) value); } @Test @@ -59,16 +59,18 @@ void canSetScriptingEnabledWithContexts() { emulation.setScriptingEnabled( new SetScriptingEnabledParameters(false).contexts(List.of(contextId))); - context.navigate("data:text/html,", ReadinessState.COMPLETE); + context.navigate( + "data:text/html,", ReadinessState.COMPLETE); - assertThat(isFooInWindow(contextId, script)).isFalse(); + assertThat(getHello(contextId, script)).isEmpty(); emulation.setScriptingEnabled( new SetScriptingEnabledParameters(null).contexts(List.of(contextId))); - context.navigate("data:text/html,", ReadinessState.COMPLETE); + context.navigate( + "data:text/html,", ReadinessState.COMPLETE); - assertThat(isFooInWindow(contextId, script)).isTrue(); + assertThat(getHello(contextId, script)).hasValue("World"); } @Test diff --git a/java/test/org/openqa/selenium/bidi/input/CombinedInputActionsTest.java b/java/test/org/openqa/selenium/bidi/input/CombinedInputActionsTest.java index d7c3cb64abb87..38b1e67e6b9ca 100644 --- a/java/test/org/openqa/selenium/bidi/input/CombinedInputActionsTest.java +++ b/java/test/org/openqa/selenium/bidi/input/CombinedInputActionsTest.java @@ -18,6 +18,7 @@ package org.openqa.selenium.bidi.input; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.data.Offset.offset; import static org.junit.jupiter.api.Assumptions.assumeFalse; import static org.openqa.selenium.WaitingConditions.elementValueToEqual; import static org.openqa.selenium.WaitingConditions.windowHandleCountToBe; @@ -318,14 +319,9 @@ public void testClickAfterMoveToAnElementWithAnOffsetShouldUseLastMousePosition( y = Integer.parseInt(driver.findElement(By.id("pageY")).getText()); } - assertThat(fuzzyPositionMatching(location.getX() + 20, location.getY() + 10, x, y)).isTrue(); - } - - private boolean fuzzyPositionMatching(int expectedX, int expectedY, int actualX, int actualY) { // Everything within 5 pixels range is OK - final int ALLOWED_DEVIATION = 5; - return Math.abs(expectedX - actualX) < ALLOWED_DEVIATION - && Math.abs(expectedY - actualY) < ALLOWED_DEVIATION; + assertThat(x).isCloseTo(location.getX() + 20, offset(5)); + assertThat(y).isCloseTo(location.getY() + 10, offset(5)); } /** diff --git a/java/test/org/openqa/selenium/bidi/log/LogInspectorTest.java b/java/test/org/openqa/selenium/bidi/log/LogInspectorTest.java index 671634c04ae7f..35ddedfaf8a58 100644 --- a/java/test/org/openqa/selenium/bidi/log/LogInspectorTest.java +++ b/java/test/org/openqa/selenium/bidi/log/LogInspectorTest.java @@ -53,7 +53,7 @@ void canListenToConsoleLog() throws ExecutionException, InterruptedException, Ti ConsoleLogEntry logEntry = future.get(5, TimeUnit.SECONDS); Source source = logEntry.getSource(); - assertThat(source.getBrowsingContext().isPresent()).isTrue(); + assertThat(source.getBrowsingContext()).isPresent(); assertThat(source.getRealm()).isNotNull(); assertThat(logEntry.getText()).isEqualTo("Hello, world!"); assertThat(logEntry.getArgs()).hasSize(1); @@ -115,7 +115,7 @@ void canListenToJavascriptLog() JavascriptLogEntry logEntry = future.get(5, TimeUnit.SECONDS); Source source = logEntry.getSource(); - assertThat(source.getBrowsingContext().isPresent()).isTrue(); + assertThat(source.getBrowsingContext()).isPresent(); assertThat(source.getRealm()).isNotNull(); assertThat(logEntry.getText()).isEqualTo("Error: Not working"); @@ -203,7 +203,7 @@ void canFilterLogs() throws ExecutionException, InterruptedException, TimeoutExc LogEntry logEntry = future.get(5, TimeUnit.SECONDS); - assertThat(logEntry.getConsoleLogEntry().isPresent()).isTrue(); + assertThat(logEntry.getConsoleLogEntry()).isPresent(); ConsoleLogEntry consoleLogEntry = logEntry.getConsoleLogEntry().get(); assertThat(consoleLogEntry.getText()).isEqualTo("Hello, world!"); diff --git a/java/test/org/openqa/selenium/bidi/script/CallFunctionParameterTest.java b/java/test/org/openqa/selenium/bidi/script/CallFunctionParameterTest.java index 914f76ec38e10..cf5c8e8354578 100644 --- a/java/test/org/openqa/selenium/bidi/script/CallFunctionParameterTest.java +++ b/java/test/org/openqa/selenium/bidi/script/CallFunctionParameterTest.java @@ -21,10 +21,8 @@ import static org.openqa.selenium.testing.drivers.Browser.IE; import static org.openqa.selenium.testing.drivers.Browser.SAFARI; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import org.assertj.core.api.AbstractObjectAssert; import org.junit.jupiter.api.Test; import org.openqa.selenium.By; import org.openqa.selenium.WindowType; @@ -48,8 +46,7 @@ void canCallFunctionWithDeclaration() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("number"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat((Long) successResult.getResult().getValue().get()).isEqualTo(3L); + assertThat(successResult.getResult().getValue()).hasValue(3L); } } @@ -76,8 +73,7 @@ void canEvaluateScriptWithUserActivationTrue() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("boolean"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat((Boolean) successResult.getResult().getValue().get()).isEqualTo(true); + assertThat(successResult.getResult().getValue()).hasValue(true); } } @@ -105,13 +101,13 @@ void canEvaluateScriptWithUserActivationFalse() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("boolean"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat((Boolean) successResult.getResult().getValue().get()).isEqualTo(false); + assertThat(successResult.getResult().getValue()).hasValue(false); } } @Test @NeedsFreshDriver + @SuppressWarnings("unchecked") void canCallFunctionWithArguments() { String id = driver.getWindowHandle(); try (Script script = new Script(id, driver)) { @@ -132,8 +128,12 @@ void canCallFunctionWithArguments() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("array"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat(((List) successResult.getResult().getValue().get())).hasSize(2); + assertThat(successResult.getResult().getValue()).isPresent(); + + List values = (List) successResult.getResult().getValue().get(); + assertThat(values).hasSize(2); + assertThat(values.get(0).getValue()).hasValue("ARGUMENT_STRING_VALUE"); + assertThat(values.get(1).getValue()).hasValue(42L); } } @@ -163,10 +163,10 @@ void canCallFunctionToGetIFrameBrowsingContext() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("window"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat( - ((WindowProxyProperties) successResult.getResult().getValue().get()) - .getBrowsingContext()) + assertThat(successResult.getResult().getValue()) + .containsInstanceOf(WindowProxyProperties.class) + .get() + .extracting("browsingContext") .isNotNull(); } } @@ -193,9 +193,12 @@ void canCallFunctionToGetElement() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("node"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat(((NodeProperties) successResult.getResult().getValue().get()).getNodeType()) - .isNotNull(); + assertThat(successResult.getResult().getValue()) + .containsInstanceOf(NodeProperties.class) + .get() + .extracting("nodeType") + .isNotNull() + .isInstanceOf(Long.class); } } @@ -220,9 +223,7 @@ void canCallFunctionWithAwaitPromise() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("string"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat(((String) successResult.getResult().getValue().get())) - .isEqualTo("SOME_DELAYED_RESULT"); + assertThat(successResult.getResult().getValue()).hasValue("SOME_DELAYED_RESULT"); } } @@ -272,8 +273,7 @@ void canCallFunctionWithThisParameter() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("number"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat((Long) successResult.getResult().getValue().get()).isEqualTo(42L); + assertThat(successResult.getResult().getValue()).hasValue(42L); } } @@ -292,8 +292,15 @@ void canCallFunctionWithOwnershipRoot() { assertThat(result.getRealmId()).isNotNull(); EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; - assertThat(successResult.getResult().getHandle().isPresent()).isTrue(); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); + assertThat(successResult.getResult().getHandle()).isPresent(); + AbstractObjectAssert a = + assertThat(successResult.getResult().getValue()) + .isPresent() + .containsInstanceOf(Map.class) + .get() + .extracting("a"); + a.extracting("type").hasToString("number"); + a.extracting("value").isEqualTo(Optional.of(1L)); } } @@ -312,8 +319,8 @@ void canCallFunctionWithOwnershipNone() { assertThat(result.getRealmId()).isNotNull(); EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; - assertThat(successResult.getResult().getHandle().isPresent()).isFalse(); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); + assertThat(successResult.getResult().getHandle()).isEmpty(); + assertThat(successResult.getResult().getValue()).isPresent(); } } @@ -379,8 +386,7 @@ void canCallFunctionInASandBox() { EvaluateResultSuccess resultInSandboxSuccess = (EvaluateResultSuccess) resultInSandbox; assertThat(resultInSandboxSuccess.getResult().getType()).isEqualTo("number"); - assertThat(resultInSandboxSuccess.getResult().getValue().isPresent()).isTrue(); - assertThat((Long) resultInSandboxSuccess.getResult().getValue().get()).isEqualTo(2L); + assertThat(resultInSandboxSuccess.getResult().getValue()).hasValue(2L); } } @@ -411,10 +417,9 @@ void canCallFunctionInARealm() { assertThat(firstContextResult.getResultType()).isEqualTo(EvaluateResult.Type.SUCCESS); - EvaluateResultSuccess successFirstContextresult = (EvaluateResultSuccess) firstContextResult; - assertThat(successFirstContextresult.getResult().getType()).isEqualTo("number"); - assertThat(successFirstContextresult.getResult().getValue().isPresent()).isTrue(); - assertThat((Long) successFirstContextresult.getResult().getValue().get()).isEqualTo(3L); + EvaluateResultSuccess successFirstContextResult = (EvaluateResultSuccess) firstContextResult; + assertThat(successFirstContextResult.getResult().getType()).isEqualTo("number"); + assertThat(successFirstContextResult.getResult().getValue()).hasValue(3L); EvaluateResult secondContextResult = script.callFunction( @@ -423,11 +428,10 @@ void canCallFunctionInARealm() { assertThat(secondContextResult.getResultType()).isEqualTo(EvaluateResult.Type.SUCCESS); - EvaluateResultSuccess successSecondContextresult = + EvaluateResultSuccess successSecondContextResult = (EvaluateResultSuccess) secondContextResult; - assertThat(successSecondContextresult.getResult().getType()).isEqualTo("number"); - assertThat(successSecondContextresult.getResult().getValue().isPresent()).isTrue(); - assertThat((Long) successSecondContextresult.getResult().getValue().get()).isEqualTo(5L); + assertThat(successSecondContextResult.getResult().getType()).isEqualTo("number"); + assertThat(successSecondContextResult.getResult().getValue()).hasValue(5L); } } } diff --git a/java/test/org/openqa/selenium/bidi/script/EvaluateParametersTest.java b/java/test/org/openqa/selenium/bidi/script/EvaluateParametersTest.java index 686c2be3a9257..a0a59110babbc 100644 --- a/java/test/org/openqa/selenium/bidi/script/EvaluateParametersTest.java +++ b/java/test/org/openqa/selenium/bidi/script/EvaluateParametersTest.java @@ -42,8 +42,7 @@ void canEvaluateScript() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("number"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat((Long) successResult.getResult().getValue().get()).isEqualTo(3L); + assertThat(successResult.getResult().getValue()).hasValue(3L); } } @@ -69,8 +68,7 @@ void canEvaluateScriptWithUserActivationTrue() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("boolean"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat((Boolean) successResult.getResult().getValue().get()).isEqualTo(true); + assertThat(successResult.getResult().getValue()).hasValue(true); } } @@ -97,8 +95,7 @@ void canEvaluateScriptWithUserActivationFalse() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("boolean"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat((Boolean) successResult.getResult().getValue().get()).isEqualTo(false); + assertThat(successResult.getResult().getValue()).hasValue(false); } } @@ -138,8 +135,11 @@ void canEvaluateScriptWithResulWithOwnership() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("object"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat(successResult.getResult().getHandle().isPresent()).isTrue(); + assertThat(successResult.getResult().getHandle()).isPresent(); + assertThat(successResult.getResult().getValue().get()) + .extracting("a") + .extracting("value") + .isEqualTo(Optional.of(1L)); } } @@ -178,8 +178,7 @@ void canEvaluateInASandBox() { EvaluateResultSuccess resultInSandboxSuccess = (EvaluateResultSuccess) resultInSandbox; assertThat(resultInSandboxSuccess.getResult().getType()).isEqualTo("number"); - assertThat(resultInSandboxSuccess.getResult().getValue().isPresent()).isTrue(); - assertThat((Long) resultInSandboxSuccess.getResult().getValue().get()).isEqualTo(2L); + assertThat(resultInSandboxSuccess.getResult().getValue()).hasValue(2L); } } @@ -208,8 +207,7 @@ void canEvaluateInARealm() { EvaluateResultSuccess successFirstContextResult = (EvaluateResultSuccess) firstContextResult; assertThat(successFirstContextResult.getResult().getType()).isEqualTo("number"); - assertThat(successFirstContextResult.getResult().getValue().isPresent()).isTrue(); - assertThat((Long) successFirstContextResult.getResult().getValue().get()).isEqualTo(3L); + assertThat(successFirstContextResult.getResult().getValue()).hasValue(3L); EvaluateResult secondContextResult = script.evaluateFunctionInRealm(secondTabRealmId, "window.foo", true, Optional.empty()); @@ -219,8 +217,7 @@ void canEvaluateInARealm() { EvaluateResultSuccess successSecondContextResult = (EvaluateResultSuccess) secondContextResult; assertThat(successSecondContextResult.getResult().getType()).isEqualTo("number"); - assertThat(successSecondContextResult.getResult().getValue().isPresent()).isTrue(); - assertThat((Long) successSecondContextResult.getResult().getValue().get()).isEqualTo(5L); + assertThat(successSecondContextResult.getResult().getValue()).hasValue(5L); } } } diff --git a/java/test/org/openqa/selenium/bidi/script/LocalValueTest.java b/java/test/org/openqa/selenium/bidi/script/LocalValueTest.java index 14fce31c5e47d..60d1b8495c7d8 100644 --- a/java/test/org/openqa/selenium/bidi/script/LocalValueTest.java +++ b/java/test/org/openqa/selenium/bidi/script/LocalValueTest.java @@ -121,8 +121,7 @@ void canCallFunctionWithMinusZeroArgument() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("number"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat((String) successResult.getResult().getValue().get()).isEqualTo("-0"); + assertThat(successResult.getResult().getValue()).hasValue("-0"); } @Test @@ -153,8 +152,7 @@ void canCallFunctionWithInfinityArgument() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("number"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat((String) successResult.getResult().getValue().get()).isEqualTo("Infinity"); + assertThat(successResult.getResult().getValue()).hasValue("Infinity"); } @Test @@ -186,8 +184,7 @@ void canCallFunctionWithMinusInfinityArgument() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("number"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat((String) successResult.getResult().getValue().get()).isEqualTo("-Infinity"); + assertThat(successResult.getResult().getValue()).hasValue("-Infinity"); } @Test @@ -219,7 +216,7 @@ void canCallFunctionWithNumberArgument() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("number"); assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat((double) successResult.getResult().getValue().get()).isEqualTo(1.4); + assertThat(successResult.getResult().getValue()).hasValue(1.4d); } @Test @@ -250,8 +247,7 @@ void canCallFunctionWithBooleanArgument() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("boolean"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat((boolean) successResult.getResult().getValue().get()).isEqualTo(true); + assertThat(successResult.getResult().getValue()).hasValue(true); } @Test @@ -282,11 +278,11 @@ void canCallFunctionWithBigIntArgument() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("bigint"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat((String) successResult.getResult().getValue().get()).isEqualTo("42"); + assertThat(successResult.getResult().getValue()).hasValue("42"); } @Test + @SuppressWarnings("unchecked") void canCallFunctionWithArrayArgument() { String id = driver.getWindowHandle(); Script script = new Script(id, driver); @@ -317,14 +313,16 @@ void canCallFunctionWithArrayArgument() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("array"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); + assertThat(successResult.getResult().getValue()).isPresent(); + List resultValue = (List) successResult.getResult().getValue().get(); assertThat(resultValue).hasSize(1); assertThat(resultValue.get(0).getType()).isEqualTo("string"); - assertThat((String) resultValue.get(0).getValue().get()).isEqualTo("foobar"); + assertThat(resultValue.get(0).getValue()).hasValue("foobar"); } @Test + @SuppressWarnings("unchecked") void canCallFunctionWithSetArgument() { String id = driver.getWindowHandle(); Script script = new Script(id, driver); @@ -355,11 +353,12 @@ void canCallFunctionWithSetArgument() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("set"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); + assertThat(successResult.getResult().getValue().isPresent()); + List resultValue = (List) successResult.getResult().getValue().get(); assertThat(resultValue).hasSize(1); assertThat(resultValue.get(0).getType()).isEqualTo("string"); - assertThat((String) resultValue.get(0).getValue().get()).isEqualTo("foobar"); + assertThat(resultValue.get(0).getValue()).hasValue("foobar"); } @Test @@ -391,7 +390,6 @@ void canCallFunctionWithDateArgument() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("date"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); assertThat(successResult.getResult().getValue()).hasValue("2022-05-31T13:47:29.000Z"); } @@ -427,7 +425,7 @@ void canCallFunctionWithMapArgument() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("map"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); + assertThat(successResult.getResult().getValue()).isPresent().containsInstanceOf(Map.class); Map resultValue = (Map) successResult.getResult().getValue().get(); @@ -467,7 +465,7 @@ void canCallFunctionWithObjectArgument() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("object"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); + assertThat(successResult.getResult().getValue()).isPresent().containsInstanceOf(Map.class); Map resultValue = (Map) successResult.getResult().getValue().get(); @@ -504,10 +502,7 @@ void canCallFunctionWithRegExpArgument() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("regexp"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - RegExpValue resultValue = (RegExpValue) successResult.getResult().getValue().get(); - assertThat(resultValue.getPattern()).isEqualTo("foo"); - assertThat(resultValue.getFlags()).isEqualTo("g"); + assertThat(successResult.getResult().getValue()).hasValue(new RegExpValue("foo", "g")); } @AfterEach diff --git a/java/test/org/openqa/selenium/bidi/script/ScriptCommandsTest.java b/java/test/org/openqa/selenium/bidi/script/ScriptCommandsTest.java index 258a98c59622d..354361184e692 100644 --- a/java/test/org/openqa/selenium/bidi/script/ScriptCommandsTest.java +++ b/java/test/org/openqa/selenium/bidi/script/ScriptCommandsTest.java @@ -19,6 +19,8 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import static org.assertj.core.api.InstanceOfAssertFactories.list; +import static org.assertj.core.api.InstanceOfAssertFactories.optional; import java.util.ArrayList; import java.util.HashMap; @@ -59,8 +61,7 @@ void canCallFunctionWithDeclaration() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("number"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat((Long) successResult.getResult().getValue().get()).isEqualTo(3L); + assertThat(successResult.getResult().getValue()).hasValue(3L); } @Test @@ -89,8 +90,13 @@ void canCallFunctionWithArguments() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("array"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat(((List) successResult.getResult().getValue().get())).hasSize(2); + assertThat(successResult.getResult().getValue()) + .get() + .asInstanceOf(list(RemoteValue.class)) + .hasSize(2) + .extracting("value") + .extracting("value") + .containsExactly("ARGUMENT_STRING_VALUE", 42L); } @Test @@ -120,10 +126,10 @@ void canCallFunctionToGetIFrameBrowsingContext() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("window"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat( - ((WindowProxyProperties) successResult.getResult().getValue().get()) - .getBrowsingContext()) + assertThat(successResult.getResult().getValue()) + .asInstanceOf(optional(WindowProxyProperties.class)) + .get() + .extracting("browsingContext") .isNotNull(); } @@ -152,8 +158,10 @@ void canCallFunctionToGetElement() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("node"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat(((NodeProperties) successResult.getResult().getValue().get()).getNodeType()) + assertThat(successResult.getResult().getValue()) + .asInstanceOf(optional(NodeProperties.class)) + .get() + .extracting("nodeType") .isNotNull(); } @@ -180,9 +188,7 @@ void canCallFunctionWithAwaitPromise() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("string"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat(((String) successResult.getResult().getValue().get())) - .isEqualTo("SOME_DELAYED_RESULT"); + assertThat(successResult.getResult().getValue()).hasValue("SOME_DELAYED_RESULT"); } @Test @@ -235,8 +241,7 @@ void canCallFunctionWithThisParameter() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("number"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat((Long) successResult.getResult().getValue().get()).isEqualTo(42L); + assertThat(successResult.getResult().getValue()).hasValue(42L); } @Test @@ -258,8 +263,8 @@ void canCallFunctionWithOwnershipRoot() { assertThat(result.getRealmId()).isNotNull(); EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; - assertThat(successResult.getResult().getHandle().isPresent()).isTrue(); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); + assertThat(successResult.getResult().getHandle()).isPresent(); + assertThat(successResult.getResult().getValue()).isPresent(); } @Test @@ -281,8 +286,8 @@ void canCallFunctionWithOwnershipNone() { assertThat(result.getRealmId()).isNotNull(); EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; - assertThat(successResult.getResult().getHandle().isPresent()).isFalse(); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); + assertThat(successResult.getResult().getHandle()).isEmpty(); + assertThat(successResult.getResult().getValue()).isPresent(); } @Test @@ -368,8 +373,7 @@ void canCallFunctionInASandBox() { EvaluateResultSuccess resultInSandboxSuccess = (EvaluateResultSuccess) resultInSandbox; assertThat(resultInSandboxSuccess.getResult().getType()).isEqualTo("number"); - assertThat(resultInSandboxSuccess.getResult().getValue().isPresent()).isTrue(); - assertThat((Long) resultInSandboxSuccess.getResult().getValue().get()).isEqualTo(2L); + assertThat(resultInSandboxSuccess.getResult().getValue()).hasValue(2L); } @Test @@ -411,10 +415,9 @@ void canCallFunctionInARealm() { assertThat(firstContextResult.getResultType()).isEqualTo(EvaluateResult.Type.SUCCESS); - EvaluateResultSuccess successFirstContextresult = (EvaluateResultSuccess) firstContextResult; - assertThat(successFirstContextresult.getResult().getType()).isEqualTo("number"); - assertThat(successFirstContextresult.getResult().getValue().isPresent()).isTrue(); - assertThat((Long) successFirstContextresult.getResult().getValue().get()).isEqualTo(3L); + EvaluateResultSuccess successFirstContextResult = (EvaluateResultSuccess) firstContextResult; + assertThat(successFirstContextResult.getResult().getType()).isEqualTo("number"); + assertThat(successFirstContextResult.getResult().getValue()).hasValue(3L); EvaluateResult secondContextResult = script.callFunctionInRealm( @@ -427,10 +430,9 @@ void canCallFunctionInARealm() { assertThat(secondContextResult.getResultType()).isEqualTo(EvaluateResult.Type.SUCCESS); - EvaluateResultSuccess successSecondContextresult = (EvaluateResultSuccess) secondContextResult; - assertThat(successSecondContextresult.getResult().getType()).isEqualTo("number"); - assertThat(successSecondContextresult.getResult().getValue().isPresent()).isTrue(); - assertThat((Long) successSecondContextresult.getResult().getValue().get()).isEqualTo(5L); + EvaluateResultSuccess successSecondContextResult = (EvaluateResultSuccess) secondContextResult; + assertThat(successSecondContextResult.getResult().getType()).isEqualTo("number"); + assertThat(successSecondContextResult.getResult().getValue()).hasValue(5L); } @Test @@ -447,8 +449,7 @@ void canEvaluateScript() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("number"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat((Long) successResult.getResult().getValue().get()).isEqualTo(3L); + assertThat(successResult.getResult().getValue()).hasValue(3L); } @Test @@ -486,8 +487,8 @@ void canEvaluateScriptWithResulWithOwnership() { EvaluateResultSuccess successResult = (EvaluateResultSuccess) result; assertThat(successResult.getResult().getType()).isEqualTo("object"); - assertThat(successResult.getResult().getValue().isPresent()).isTrue(); - assertThat(successResult.getResult().getHandle().isPresent()).isTrue(); + assertThat(successResult.getResult().getValue()).isPresent(); + assertThat(successResult.getResult().getHandle()).isPresent(); } @Test @@ -523,8 +524,7 @@ void canEvaluateInASandBox() { EvaluateResultSuccess resultInSandboxSuccess = (EvaluateResultSuccess) resultInSandbox; assertThat(resultInSandboxSuccess.getResult().getType()).isEqualTo("number"); - assertThat(resultInSandboxSuccess.getResult().getValue().isPresent()).isTrue(); - assertThat((Long) resultInSandboxSuccess.getResult().getValue().get()).isEqualTo(2L); + assertThat(resultInSandboxSuccess.getResult().getValue()).hasValue(2L); } @Test @@ -548,20 +548,18 @@ void canEvaluateInARealm() { assertThat(firstContextResult.getResultType()).isEqualTo(EvaluateResult.Type.SUCCESS); - EvaluateResultSuccess successFirstContextresult = (EvaluateResultSuccess) firstContextResult; - assertThat(successFirstContextresult.getResult().getType()).isEqualTo("number"); - assertThat(successFirstContextresult.getResult().getValue().isPresent()).isTrue(); - assertThat((Long) successFirstContextresult.getResult().getValue().get()).isEqualTo(3L); + EvaluateResultSuccess successFirstContextResult = (EvaluateResultSuccess) firstContextResult; + assertThat(successFirstContextResult.getResult().getType()).isEqualTo("number"); + assertThat(successFirstContextResult.getResult().getValue()).hasValue(3L); EvaluateResult secondContextResult = script.evaluateFunctionInRealm(secondTabRealmId, "window.foo", true, Optional.empty()); assertThat(secondContextResult.getResultType()).isEqualTo(EvaluateResult.Type.SUCCESS); - EvaluateResultSuccess successSecondContextresult = (EvaluateResultSuccess) secondContextResult; - assertThat(successSecondContextresult.getResult().getType()).isEqualTo("number"); - assertThat(successSecondContextresult.getResult().getValue().isPresent()).isTrue(); - assertThat((Long) successSecondContextresult.getResult().getValue().get()).isEqualTo(5L); + EvaluateResultSuccess successSecondContextResult = (EvaluateResultSuccess) secondContextResult; + assertThat(successSecondContextResult.getResult().getType()).isEqualTo("number"); + assertThat(successSecondContextResult.getResult().getValue()).hasValue(5L); } @Test @@ -578,7 +576,7 @@ void canDisownHandles() { assertThat(evaluateResult.getRealmId()).isNotNull(); EvaluateResultSuccess successEvaluateResult = (EvaluateResultSuccess) evaluateResult; - assertThat(successEvaluateResult.getResult().getHandle().isPresent()).isTrue(); + assertThat(successEvaluateResult.getResult().getHandle()).isPresent(); List arguments = new ArrayList<>(); @@ -603,7 +601,7 @@ void canDisownHandles() { script.callFunctionInBrowsingContext( id, "arg => arg.a", false, Optional.of(arguments), Optional.empty(), Optional.empty()); - assertThat(successEvaluateResult.getResult().getValue().isPresent()).isTrue(); + assertThat(successEvaluateResult.getResult().getValue()).isPresent(); List handles = new ArrayList<>(); handles.add(successEvaluateResult.getResult().getHandle().get()); @@ -635,7 +633,7 @@ void canDisownHandlesInRealm() { assertThat(evaluateResult.getRealmId()).isNotNull(); EvaluateResultSuccess successEvaluateResult = (EvaluateResultSuccess) evaluateResult; - assertThat(successEvaluateResult.getResult().getHandle().isPresent()).isTrue(); + assertThat(successEvaluateResult.getResult().getHandle()).isPresent(); List arguments = new ArrayList<>(); @@ -660,7 +658,7 @@ void canDisownHandlesInRealm() { script.callFunctionInBrowsingContext( id, "arg => arg.a", false, Optional.of(arguments), Optional.empty(), Optional.empty()); - assertThat(successEvaluateResult.getResult().getValue().isPresent()).isTrue(); + assertThat(successEvaluateResult.getResult().getValue()).isPresent(); List handles = new ArrayList<>(); handles.add(successEvaluateResult.getResult().getHandle().get()); diff --git a/java/test/org/openqa/selenium/bidi/script/ScriptEventsTest.java b/java/test/org/openqa/selenium/bidi/script/ScriptEventsTest.java index 354d7a6f510d1..6c7ed98b2fd06 100644 --- a/java/test/org/openqa/selenium/bidi/script/ScriptEventsTest.java +++ b/java/test/org/openqa/selenium/bidi/script/ScriptEventsTest.java @@ -56,10 +56,8 @@ void canListenToChannelMessage() Message message = future.get(5, TimeUnit.SECONDS); assertThat(message.getChannel()).isEqualTo("channel_name"); assertThat(message.getData().getType()).isEqualTo("string"); - assertThat(message.getData().getValue().isPresent()).isTrue(); assertThat(message.getData().getValue()).hasValue("foo"); assertThat(message.getSource().getRealm()).isNotNull(); - assertThat(message.getSource().getBrowsingContext().isPresent()).isTrue(); assertThat(message.getSource().getBrowsingContext()).hasValue(driver.getWindowHandle()); } } diff --git a/java/test/org/openqa/selenium/bidi/storage/StorageCommandsTest.java b/java/test/org/openqa/selenium/bidi/storage/StorageCommandsTest.java index 0aa67cf337d73..5bfc7aad84b87 100644 --- a/java/test/org/openqa/selenium/bidi/storage/StorageCommandsTest.java +++ b/java/test/org/openqa/selenium/bidi/storage/StorageCommandsTest.java @@ -21,7 +21,6 @@ import static org.openqa.selenium.testing.drivers.Browser.*; import java.time.Instant; -import java.util.Date; import java.util.Random; import java.util.concurrent.ThreadLocalRandom; import org.junit.jupiter.api.AfterEach; @@ -158,8 +157,7 @@ key, new BytesValue(BytesValue.Type.STRING, value), appServer.getHostName()), assertThat(result.getCookies().get(0).getValue().getValue()).isEqualTo(value); PartitionKey partitionKey = result.getPartitionKey(); - assertThat(partitionKey.getUserContext()).isNotNull(); - assertThat(partitionKey.getUserContext()).isEqualTo(userContext); + assertThat(partitionKey.getUserContext()).isNotNull().isEqualTo(userContext); driver.switchTo().window(windowHandle); @@ -257,32 +255,22 @@ public void canAddAndGetCookie() { assertThat(key.getUserContext()).isEqualTo("default"); } - @NotYetImplemented(EDGE) @Test public void canGetAllCookies() { - String key1 = generateUniqueKey(); - String key2 = generateUniqueKey(); - - assertCookieIsNotPresentWithName(key1); - assertCookieIsNotPresentWithName(key2); + addRandomCookie("there might be other cookies before this test"); GetCookiesParameters params = new GetCookiesParameters(new CookieFilter()); - GetCookiesResult result = storage.getCookies(params); - - int countBefore = result.getCookies().size(); + int countBefore = storage.getCookies(params).getCookies().size(); - Cookie one = new Cookie.Builder(key1, "value").build(); - Cookie two = new Cookie.Builder(key2, "value").build(); - - driver.manage().addCookie(one); - driver.manage().addCookie(two); + String key1 = addRandomCookie("one"); + String key2 = addRandomCookie("two"); openAnotherPage(); - result = storage.getCookies(params); + GetCookiesResult result = storage.getCookies(params); assertThat(result.getCookies()).hasSize(countBefore + 2); - assertThat(result.getCookies().get(0).getName().contains(key1)).isTrue(); - assertThat(result.getCookies().get(1).getName().contains(key2)).isTrue(); + assertThat(result.getCookies().get(countBefore).getName()).isEqualTo(key1); + assertThat(result.getCookies().get(countBefore + 1).getName()).isEqualTo(key2); } @Test @@ -414,10 +402,6 @@ private String getDocumentCookieOrNull() { } } - private Date someTimeInTheFuture() { - return new Date(System.currentTimeMillis() + 100000); - } - private void openAnotherPage() { driver.get(appServer.whereIs("simpleTest.html")); } @@ -448,4 +432,11 @@ private void addCookieOnServerSide(Cookie cookie) { } driver.get(url.toString()); } + + private String addRandomCookie(String value) { + String key = generateUniqueKey(); + assertCookieIsNotPresentWithName(key); + driver.manage().addCookie(new Cookie.Builder(key, value).build()); + return key; + } } diff --git a/java/test/org/openqa/selenium/devtools/NetworkInterceptorRestTest.java b/java/test/org/openqa/selenium/devtools/NetworkInterceptorRestTest.java index a642eadbd1946..ee5f84be68f6c 100644 --- a/java/test/org/openqa/selenium/devtools/NetworkInterceptorRestTest.java +++ b/java/test/org/openqa/selenium/devtools/NetworkInterceptorRestTest.java @@ -127,8 +127,8 @@ private void assertRequest(HttpMethod method, boolean withBody) throws Malformed js.executeAsyncScript( script, new URL(appServer.whereIs("/")).toString(), method.toString()); - assertThat(seen.get()).isTrue(); - assertThat(response.toString()).contains("Received response for " + method); + assertThat(seen).isTrue(); + assertThat(response).hasToString("Received response for " + method); } @Test diff --git a/java/test/org/openqa/selenium/devtools/NetworkInterceptorTest.java b/java/test/org/openqa/selenium/devtools/NetworkInterceptorTest.java index 58d8be03698f6..16b2ff4ec25ea 100644 --- a/java/test/org/openqa/selenium/devtools/NetworkInterceptorTest.java +++ b/java/test/org/openqa/selenium/devtools/NetworkInterceptorTest.java @@ -188,7 +188,7 @@ void shouldBeAbleToReturnAMagicResponseThatCausesTheOriginalRequestToProceed() { String source = driver.getPageSource(); - assertThat(seen.get()).isTrue(); + assertThat(seen).isTrue(); assertThat(source).contains("Hello, World!"); } diff --git a/java/test/org/openqa/selenium/firefox/FirefoxProfileTest.java b/java/test/org/openqa/selenium/firefox/FirefoxProfileTest.java index a66ddb9464a96..465e79a523af6 100644 --- a/java/test/org/openqa/selenium/firefox/FirefoxProfileTest.java +++ b/java/test/org/openqa/selenium/firefox/FirefoxProfileTest.java @@ -188,7 +188,7 @@ void shouldConvertItselfIntoAMeaningfulRepresentation() throws IOException { assertThat(prefs).exists(); try (Stream lines = Files.lines(prefs.toPath())) { - assertThat(lines.anyMatch(s -> s.contains("i.like.cheese"))).isTrue(); + assertThat(lines).anyMatch(s -> s.contains("i.like.cheese")); } FileHandler.delete(dir); @@ -247,10 +247,7 @@ void backslashedCharsArePreservedWhenConvertingToAndFromJson() throws IOExceptio private void assertPreferenceValueEquals(String key, Object value) throws Exception { List props = readGeneratedProperties(profile); - assertThat( - props.stream() - .anyMatch(line -> line.contains(key) && line.contains(", " + value + ")"))) - .isTrue(); + assertThat(props).anyMatch(line -> line.contains(key) && line.contains(", " + value + ")")); } private Preferences parseUserPrefs(FirefoxProfile profile) throws IOException { diff --git a/java/test/org/openqa/selenium/firefox/RemoteFirefoxDriverTest.java b/java/test/org/openqa/selenium/firefox/RemoteFirefoxDriverTest.java index 0b7c484461c11..31adfc111829a 100644 --- a/java/test/org/openqa/selenium/firefox/RemoteFirefoxDriverTest.java +++ b/java/test/org/openqa/selenium/firefox/RemoteFirefoxDriverTest.java @@ -47,8 +47,7 @@ public void shouldAllowRemoteWebDriverBuilderToUseHasExtensions() { @Test void shouldTakeFullPageScreenshot() { File tempFile = ((HasFullPageScreenshot) driver).getFullPageScreenshotAs(OutputType.FILE); - assertThat(tempFile.exists()).isTrue(); - assertThat(tempFile).isNotEmpty(); + assertThat(tempFile).exists().isNotEmpty(); } @Test diff --git a/java/test/org/openqa/selenium/firefox/TakesFullPageScreenshotTest.java b/java/test/org/openqa/selenium/firefox/TakesFullPageScreenshotTest.java index 8402c7a2e960b..0d406735249d2 100644 --- a/java/test/org/openqa/selenium/firefox/TakesFullPageScreenshotTest.java +++ b/java/test/org/openqa/selenium/firefox/TakesFullPageScreenshotTest.java @@ -191,8 +191,8 @@ private Set scanActualColors(BufferedImage image, final int stepX, final int height = image.getHeight(); int width = image.getWidth(); - assertThat(width > 0).isTrue(); - assertThat(height > 0).isTrue(); + assertThat(width).isGreaterThan(0); + assertThat(height).isGreaterThan(0); Raster raster = image.getRaster(); for (int i = 0; i < width; i = i + stepX) { diff --git a/java/test/org/openqa/selenium/interactions/CombinedInputActionsTest.java b/java/test/org/openqa/selenium/interactions/CombinedInputActionsTest.java index a32740f9039c2..4eaed1b1321a9 100644 --- a/java/test/org/openqa/selenium/interactions/CombinedInputActionsTest.java +++ b/java/test/org/openqa/selenium/interactions/CombinedInputActionsTest.java @@ -32,6 +32,7 @@ import static org.openqa.selenium.testing.drivers.Browser.SAFARI; import java.util.List; +import org.assertj.core.data.Offset; import org.junit.jupiter.api.Test; import org.openqa.selenium.By; import org.openqa.selenium.Dimension; @@ -290,7 +291,8 @@ public void testClickAfterMoveToAnElementWithAnOffsetShouldUseLastMousePosition( y = Integer.parseInt(driver.findElement(By.id("pageY")).getText()); } - assertThat(fuzzyPositionMatching(location.getX() + 20, location.getY() + 10, x, y)).isTrue(); + assertThat(x).isCloseTo(location.getX() + 20, Offset.offset(5)); + assertThat(y).isCloseTo(location.getY() + 10, Offset.offset(5)); } private boolean fuzzyPositionMatching(int expectedX, int expectedY, int actualX, int actualY) { diff --git a/java/test/org/openqa/selenium/io/TemporaryFilesystemTest.java b/java/test/org/openqa/selenium/io/TemporaryFilesystemTest.java index 7326c9cba7a7b..8b0cca288d3b6 100644 --- a/java/test/org/openqa/selenium/io/TemporaryFilesystemTest.java +++ b/java/test/org/openqa/selenium/io/TemporaryFilesystemTest.java @@ -132,23 +132,23 @@ void testShouldBeAbleToModifyDefaultInstance() throws IOException { // Now create a file in the default instance, which should point to the temporary // directory just specified. File createdDir = TemporaryFilesystem.getDefaultTmpFS().createTempDir("xzy", "zzyip"); - boolean isInOtherDir = createdDir.getAbsolutePath().startsWith(otherTempDirPath); - - // Cleanup - rid of the temporary directory and the directory containing it. - TemporaryFilesystem.getDefaultTmpFS().deleteTemporaryFiles(); - otherTempDir.delete(); - - // Reset to the default dir - TemporaryFilesystem.setTemporaryDirectory(baseForTest); + try { + assertThat(createdDir.getAbsolutePath()).startsWith(otherTempDirPath); + } finally { + // Cleanup - rid of the temporary directory and the directory containing it. + TemporaryFilesystem.getDefaultTmpFS().deleteTemporaryFiles(); + otherTempDir.delete(); - assertThat(isInOtherDir).isTrue(); + // Reset to the default dir + TemporaryFilesystem.setTemporaryDirectory(baseForTest); + } } private void createDummyFilesystemContent(File dir) throws IOException { - assertThat(dir.isDirectory()).isTrue(); + assertThat(dir).isDirectory(); File.createTempFile("cleanup", "file", dir); File childDir = new File(dir, "child"); - childDir.mkdir(); + assertThat(childDir.mkdir()).isTrue(); File.createTempFile("cleanup", "childFile", childDir); } } diff --git a/java/test/org/openqa/selenium/json/JsonOutputTest.java b/java/test/org/openqa/selenium/json/JsonOutputTest.java index d567e834c06e5..d2bd202681246 100644 --- a/java/test/org/openqa/selenium/json/JsonOutputTest.java +++ b/java/test/org/openqa/selenium/json/JsonOutputTest.java @@ -348,8 +348,8 @@ void convertsToJsonMethodResultToPrimitiveIfItIsNotJson() { String json = convert(new JsonAware(raw)); // The JSON spec says that we should encode the forward stroke ("solidus"). Decode the string - assertThat(json.startsWith("\"")).isTrue(); - assertThat(json.endsWith("\"")).isTrue(); + assertThat(json).startsWith("\""); + assertThat(json).endsWith("\""); json = JsonParser.parseString(json).getAsString(); assertThat(json).isEqualTo("gnu/linux"); diff --git a/java/test/org/openqa/selenium/json/JsonTest.java b/java/test/org/openqa/selenium/json/JsonTest.java index 5e6a2eca6f6f0..8ef0ed1e032cb 100644 --- a/java/test/org/openqa/selenium/json/JsonTest.java +++ b/java/test/org/openqa/selenium/json/JsonTest.java @@ -51,6 +51,7 @@ import org.openqa.selenium.remote.SessionId; @Tag("UnitTests") +@SuppressWarnings("removal") class JsonTest { @Test @@ -159,10 +160,8 @@ void canPopulateAMap() { void canPopulateAMapThatContainsNull() { String raw = "{\"foo\": null}"; - Map converted = new Json().toType(raw, Map.class); - assertThat(converted).hasSize(1); - assertThat(converted.containsKey("foo")).isTrue(); - assertThat(converted.get("foo")).isNull(); + Map converted = new Json().toType(raw, Map.class); + assertThat(converted).hasSize(1).containsEntry("foo", null); } @Test @@ -297,7 +296,6 @@ void shouldConvertObjectsInArraysToMaps() { List list = new Json().toType(rawJson, List.class); Object first = list.get(0); - assertThat(first instanceof Map).isTrue(); assertThat(first) .asInstanceOf(MAP) diff --git a/java/test/org/openqa/selenium/logging/AvailableLogsTest.java b/java/test/org/openqa/selenium/logging/AvailableLogsTest.java index ef472e9d7a4e6..c7c30f472d65a 100644 --- a/java/test/org/openqa/selenium/logging/AvailableLogsTest.java +++ b/java/test/org/openqa/selenium/logging/AvailableLogsTest.java @@ -48,9 +48,9 @@ public void quitDriver() { @Test void browserLogShouldBeEnabledByDefault() { Set logTypes = driver.manage().logs().getAvailableLogTypes(); - assertThat(logTypes.contains(LogType.BROWSER)) + assertThat(logTypes) .describedAs("Browser logs should be enabled by default") - .isTrue(); + .contains(LogType.BROWSER); } @Test @@ -58,26 +58,20 @@ void clientLogShouldBeEnabledByDefault() { // Do one action to have *something* in the client logs. driver.get(pages.formPage); Set logTypes = driver.manage().logs().getAvailableLogTypes(); - assertThat(logTypes.contains(LogType.CLIENT)) + assertThat(logTypes) .describedAs("Client logs should be enabled by default") - .isTrue(); - boolean foundExecutingStatement = false; - boolean foundExecutedStatement = false; - for (LogEntry logEntry : driver.manage().logs().get(LogType.CLIENT)) { - foundExecutingStatement |= logEntry.toString().contains("Executing: "); - foundExecutedStatement |= logEntry.toString().contains("Executed: "); - } - - assertThat(foundExecutingStatement).isTrue(); - assertThat(foundExecutedStatement).isTrue(); + .contains(LogType.CLIENT); + LogEntries clientLogs = driver.manage().logs().get(LogType.CLIENT); + assertThat(clientLogs).anyMatch(logEntry -> logEntry.toString().contains("Executing: ")); + assertThat(clientLogs).anyMatch(logEntry -> logEntry.toString().contains("Executed: ")); } @Test void driverLogShouldBeEnabledByDefault() { Set logTypes = driver.manage().logs().getAvailableLogTypes(); - assertThat(logTypes.contains(LogType.DRIVER)) + assertThat(logTypes) .describedAs("Remote driver logs should be enabled by default") - .isTrue(); + .contains(LogType.DRIVER); } @Test @@ -93,8 +87,8 @@ void serverLogShouldBeEnabledByDefaultOnRemote() { assumeTrue(Boolean.getBoolean("selenium.browser.remote")); Set logTypes = driver.manage().logs().getAvailableLogTypes(); - assertThat(logTypes.contains(LogType.SERVER)) + assertThat(logTypes) .describedAs("Server logs should be enabled by default") - .isTrue(); + .contains(LogType.SERVER); } } diff --git a/java/test/org/openqa/selenium/print/PrintOptionsTest.java b/java/test/org/openqa/selenium/print/PrintOptionsTest.java index 684ce30bcdc5d..beb0753b64eca 100644 --- a/java/test/org/openqa/selenium/print/PrintOptionsTest.java +++ b/java/test/org/openqa/selenium/print/PrintOptionsTest.java @@ -18,6 +18,7 @@ package org.openqa.selenium.print; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.InstanceOfAssertFactories.MAP; import java.util.List; import java.util.Map; @@ -54,7 +55,7 @@ void setsPageRanges() { PrintOptions printOptions = new PrintOptions(); printOptions.setPageRanges(List.of("1-2", "6-7")); - assertThat(printOptions.getPageRanges().length).isEqualTo(2); + assertThat(printOptions.getPageRanges()).containsExactly("1-2", "6-7"); } @Test @@ -65,17 +66,14 @@ void toMapContainsProperKey() { Map map = printOptions.toMap(); assertThat(map).hasSize(7); - assertThat(map.containsKey("page")).isTrue(); - assertThat(map.containsKey("orientation")).isTrue(); - assertThat(map.containsKey("scale")).isTrue(); - assertThat(map.containsKey("shrinkToFit")).isTrue(); - assertThat(map.containsKey("background")).isTrue(); - assertThat(map.containsKey("pageRanges")).isTrue(); - assertThat(map.containsKey("margin")).isTrue(); - - Map margin = (Map) map.get("margin"); - assertThat(margin).hasSize(4); - Map page = (Map) map.get("page"); - assertThat(page).hasSize(2); + assertThat(map).containsKey("page"); + assertThat(map).containsKey("orientation"); + assertThat(map).containsKey("scale"); + assertThat(map).containsKey("shrinkToFit"); + assertThat(map).containsKey("background"); + assertThat(map).containsKey("pageRanges"); + assertThat(map).containsKey("margin"); + assertThat(map.get("margin")).asInstanceOf(MAP).hasSize(4); + assertThat(map.get("page")).asInstanceOf(MAP).hasSize(2); } } diff --git a/java/test/org/openqa/selenium/remote/ErrorHandlerTest.java b/java/test/org/openqa/selenium/remote/ErrorHandlerTest.java index c4e9e18ba1db8..f8f8794d18949 100644 --- a/java/test/org/openqa/selenium/remote/ErrorHandlerTest.java +++ b/java/test/org/openqa/selenium/remote/ErrorHandlerTest.java @@ -48,6 +48,7 @@ import org.openqa.selenium.json.Json; @Tag("UnitTests") +@SuppressWarnings("removal") class ErrorHandlerTest { private ErrorHandler handler; @@ -99,7 +100,7 @@ private void assertThrowsCorrectExceptionType( int status, Class type) { assertThatExceptionOfType(RuntimeException.class) .isThrownBy(() -> handler.throwIfResponseFailed(createResponse(status), 123)) - .satisfies(e -> assertThat(type.isAssignableFrom(e.getClass())).isTrue()); + .isInstanceOf(type); } @Test diff --git a/java/test/org/openqa/selenium/remote/RemoteWebDriverBuilderTest.java b/java/test/org/openqa/selenium/remote/RemoteWebDriverBuilderTest.java index a365b9e7b9038..bb3ed48515593 100644 --- a/java/test/org/openqa/selenium/remote/RemoteWebDriverBuilderTest.java +++ b/java/test/org/openqa/selenium/remote/RemoteWebDriverBuilderTest.java @@ -119,7 +119,7 @@ void settingAGlobalCapabilityCountsAsAnOption() { }) .build(); - assertThat(match.get()).isTrue(); + assertThat(match).isTrue(); } @Test @@ -170,7 +170,7 @@ void shouldAllowMetaDataToBeSet() { }) .build(); - assertThat(seen.get()).isTrue(); + assertThat(seen).isTrue(); } @Test @@ -213,7 +213,7 @@ void shouldAllowCapabilitiesToBeSetGlobally() { }) .build(); - assertThat(seen.get()).isTrue(); + assertThat(seen).isTrue(); } @Test @@ -291,7 +291,7 @@ void oneOfWillClearOutTheCurrentlySetCapabilities() { }) .build(); - assertThat(allOk.get()).isTrue(); + assertThat(allOk).isTrue(); } @Test @@ -378,7 +378,7 @@ void commandsShouldBeSentWithW3CHeaders() { }) .build(); - assertThat(allOk.get()).isTrue(); + assertThat(allOk).isTrue(); } @Test diff --git a/java/test/org/openqa/selenium/remote/WebElementToJsonConverterTest.java b/java/test/org/openqa/selenium/remote/WebElementToJsonConverterTest.java index 5a9e1ce7e4201..46db3857168e5 100644 --- a/java/test/org/openqa/selenium/remote/WebElementToJsonConverterTest.java +++ b/java/test/org/openqa/selenium/remote/WebElementToJsonConverterTest.java @@ -20,6 +20,8 @@ import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import static org.assertj.core.api.InstanceOfAssertFactories.COLLECTION; +import static org.assertj.core.api.InstanceOfAssertFactories.MAP; import com.google.common.collect.ImmutableMap; import java.util.ArrayList; @@ -80,10 +82,7 @@ void unwrapsWrappedElements_multipleLevelsOfWrapping() { @Test void convertsSimpleCollections() { Object converted = CONVERTER.apply(asList(null, "abc", true, 123, Math.PI)); - assertThat(converted).isInstanceOf(Collection.class); - - List list = new ArrayList<>((Collection) converted); - assertContentsInOrder(list, null, "abc", true, 123, Math.PI); + assertThat(converted).asInstanceOf(COLLECTION).containsExactly(null, "abc", true, 123, Math.PI); } @Test @@ -94,14 +93,11 @@ void convertsNestedCollections_simpleValues() { Object converted = CONVERTER.apply(outerList); assertThat(converted).isInstanceOf(Collection.class); - List list = new ArrayList<>((Collection) converted); + List list = new ArrayList<>((Collection) converted); assertThat(list).hasSize(3); assertThat(list.get(0)).isEqualTo("apples"); assertThat(list.get(1)).isEqualTo("oranges"); - assertThat(list.get(2)).isInstanceOf(Collection.class); - - list = new ArrayList<>((Collection) list.get(2)); - assertContentsInOrder(list, 123, "abc"); + assertThat(list.get(2)).asInstanceOf(COLLECTION).containsExactly(123, "abc"); } @Test @@ -124,14 +120,10 @@ void requiresNestedMapsToHaveStringKeys() { void convertsASimpleMap() { Object converted = CONVERTER.apply(ImmutableMap.of("one", 1, "fruit", "apples", "honest", true)); - assertThat(converted).isInstanceOf(Map.class); - @SuppressWarnings("unchecked") - Map map = (Map) converted; - assertThat(map).hasSize(3); - assertThat(map.get("one")).isEqualTo(1); - assertThat(map.get("fruit")).isEqualTo("apples"); - assertThat(map.get("honest")).isEqualTo(true); + assertThat(converted) + .asInstanceOf(MAP) + .containsExactlyInAnyOrderEntriesOf(Map.of("one", 1, "fruit", "apples", "honest", true)); } @SuppressWarnings("unchecked") @@ -152,14 +144,10 @@ void convertsANestedMap() { Map map = (Map) converted; assertThat(map).hasSize(4); - assertThat(map.get("one")).isEqualTo(1); - assertThat(map.get("fruit")).isEqualTo("apples"); - assertThat(map.get("honest")).isEqualTo(true); - assertThat(map.get("nested")).isInstanceOf(Map.class); - - map = (Map) map.get("nested"); - assertThat(map).hasSize(1); - assertThat(map.get("bugs")).isEqualTo("bunny"); + assertThat(map).containsEntry("one", 1); + assertThat(map).containsEntry("fruit", "apples"); + assertThat(map).containsEntry("honest", true); + assertThat(map.get("nested")).asInstanceOf(MAP).hasSize(1).containsEntry("bugs", "bunny"); } @SuppressWarnings("unchecked") @@ -198,13 +186,11 @@ void convertsAMapWithAWebElement() { void convertsAnArray() { Object value1 = CONVERTER.apply(new Object[] {"abc123", true, 123, Math.PI}); - assertThat(value1).isInstanceOf(Collection.class); - assertContentsInOrder(new ArrayList<>((Collection) value1), "abc123", true, 123, Math.PI); + assertThat(value1).asInstanceOf(COLLECTION).containsExactly("abc123", true, 123, Math.PI); Object value2 = CONVERTER.apply(new int[] {123, 456, 789}); - assertThat(value2).isInstanceOf(Collection.class); - assertContentsInOrder(new ArrayList<>((Collection) value2), 123, 456, 789); + assertThat(value2).asInstanceOf(COLLECTION).containsExactly(123, 456, 789); } @Test @@ -213,18 +199,19 @@ void convertsAnArrayWithAWebElement() { element.setId("abc123"); Object value = CONVERTER.apply(new Object[] {element}); - assertContentsInOrder( - new ArrayList<>((Collection) value), - ImmutableMap.of(Dialect.W3C.getEncodedElementKey(), "abc123")); + + assertThat(value) + .asInstanceOf(COLLECTION) + .containsExactly(Map.of(Dialect.W3C.getEncodedElementKey(), "abc123")); } @Test void shouldConvertShadowRoots() { ShadowRoot context = new ShadowRoot(createIdleDriver(), "abc123"); Object value = CONVERTER.apply(new Object[] {context}); - assertContentsInOrder( - new ArrayList<>((Collection) value), - ImmutableMap.of(Dialect.W3C.getShadowRootElementKey(), "abc123")); + assertThat(value) + .asInstanceOf(COLLECTION) + .containsExactly(Map.of(Dialect.W3C.getShadowRootElementKey(), "abc123")); } private static WrappedWebElement wrapElement(WebElement element) { @@ -232,17 +219,10 @@ private static WrappedWebElement wrapElement(WebElement element) { } private static void assertIsWebElementObject(Object value, String expectedKey) { - assertThat(value).isInstanceOf(Map.class); - - Map map = (Map) value; - assertThat(map).hasSize(1); - assertThat(map.containsKey(Dialect.W3C.getEncodedElementKey())).isTrue(); - assertThat(map.get(Dialect.W3C.getEncodedElementKey())).isEqualTo(expectedKey); - } - - private static void assertContentsInOrder(List list, Object... expectedContents) { - List expected = asList(expectedContents); - assertThat(list).isEqualTo(expected); + assertThat(value) + .asInstanceOf(MAP) + .hasSize(1) + .containsEntry(Dialect.W3C.getEncodedElementKey(), expectedKey); } private static RemoteWebDriver createIdleDriver() { diff --git a/java/test/org/openqa/selenium/remote/codec/w3c/W3CHttpResponseCodecTest.java b/java/test/org/openqa/selenium/remote/codec/w3c/W3CHttpResponseCodecTest.java index b7d1e846b1674..4910791de6efe 100644 --- a/java/test/org/openqa/selenium/remote/codec/w3c/W3CHttpResponseCodecTest.java +++ b/java/test/org/openqa/selenium/remote/codec/w3c/W3CHttpResponseCodecTest.java @@ -41,6 +41,7 @@ import org.openqa.selenium.remote.http.HttpResponse; @Tag("UnitTests") +@SuppressWarnings("removal") class W3CHttpResponseCodecTest { @Test diff --git a/java/test/org/openqa/selenium/remote/http/FilterTest.java b/java/test/org/openqa/selenium/remote/http/FilterTest.java index e24732a4c400f..a92d859b353f0 100644 --- a/java/test/org/openqa/selenium/remote/http/FilterTest.java +++ b/java/test/org/openqa/selenium/remote/http/FilterTest.java @@ -21,7 +21,6 @@ import static org.openqa.selenium.remote.http.HttpMethod.GET; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; @@ -52,8 +51,8 @@ void aFilterShouldWrapAnHttpHandler() { HttpResponse res = handler.execute(new HttpRequest(GET, "/cheese")); assertThat(res).isNotNull(); - assertThat(handlerCalled.get()).isTrue(); - assertThat(filterCalled.get()).isTrue(); + assertThat(handlerCalled).isTrue(); + assertThat(filterCalled).isTrue(); } @Test @@ -144,6 +143,6 @@ void filtersShouldBeCalledInTheOrderAddedWithLastInCalledFirst() { handler.execute(new HttpRequest(GET, "/cheese")); - assertThat(ordered).isEqualTo(Arrays.asList("outer", "middle", "inner")); + assertThat(ordered).containsExactly("outer", "middle", "inner"); } } diff --git a/java/test/org/openqa/selenium/remote/http/HttpMessageTest.java b/java/test/org/openqa/selenium/remote/http/HttpMessageTest.java index f29876cc78b0c..dbb18253f1fa2 100644 --- a/java/test/org/openqa/selenium/remote/http/HttpMessageTest.java +++ b/java/test/org/openqa/selenium/remote/http/HttpMessageTest.java @@ -19,8 +19,8 @@ import static org.assertj.core.api.Assertions.assertThat; -import java.util.Arrays; import java.util.HashSet; +import java.util.List; import java.util.Set; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; @@ -31,7 +31,7 @@ class HttpMessageTest { @Test void allHeadersAreAdded() { for (HttpMessage message : - Arrays.asList(new HttpRequest(HttpMethod.GET, "/"), new HttpResponse())) { + List.of(new HttpRequest(HttpMethod.GET, "/"), new HttpResponse())) { message.addHeader("Content-Length", "1024"); message.addHeader("Content-length", "2048"); message.addHeader("content-length", "4096"); @@ -40,16 +40,16 @@ void allHeadersAreAdded() { message.getHeaderNames().forEach(headers::add); - assertThat(headers.contains("Content-Length")).isFalse(); - assertThat(headers.contains("Content-length")).isFalse(); - assertThat(headers.contains("content-length")).isTrue(); + assertThat(headers).doesNotContain("Content-Length"); + assertThat(headers).doesNotContain("Content-length"); + assertThat(headers).contains("content-length"); } } @Test void readingIsCaseInsensitive() { for (HttpMessage message : - Arrays.asList(new HttpRequest(HttpMethod.GET, "/"), new HttpResponse())) { + List.of(new HttpRequest(HttpMethod.GET, "/"), new HttpResponse())) { message.addHeader("Content-Length", "1024"); message.addHeader("Content-length", "2048"); message.addHeader("content-length", "4096"); @@ -61,7 +61,7 @@ void readingIsCaseInsensitive() { @Test void replacingIsCaseInsensitive() { for (HttpMessage message : - Arrays.asList(new HttpRequest(HttpMethod.GET, "/"), new HttpResponse())) { + List.of(new HttpRequest(HttpMethod.GET, "/"), new HttpResponse())) { message.addHeader("Content-Length", "1024"); message.addHeader("Content-length", "2048"); message.addHeader("content-length", "4096"); @@ -72,22 +72,22 @@ void replacingIsCaseInsensitive() { message.getHeaderNames().forEach(headers::add); assertThat(message.getHeader("content-length")).isEqualTo("8192"); - assertThat(headers.contains("Content-Length")).isFalse(); - assertThat(headers.contains("Content-length")).isFalse(); - assertThat(headers.contains("contenT-length")).isFalse(); - assertThat(headers.contains("content-length")).isTrue(); + assertThat(headers).doesNotContain("Content-Length"); + assertThat(headers).doesNotContain("Content-length"); + assertThat(headers).doesNotContain("contenT-length"); + assertThat(headers).contains("content-length"); } } @Test void allHeadersAreRemoved() { for (HttpMessage message : - Arrays.asList(new HttpRequest(HttpMethod.GET, "/"), new HttpResponse())) { + List.of(new HttpRequest(HttpMethod.GET, "/"), new HttpResponse())) { message.addHeader("Content-Length", "1024"); message.addHeader("Content-length", "2048"); message.addHeader("content-length", "4096"); - assertThat(message.getHeaderNames().iterator().hasNext()).isTrue(); + assertThat(message.getHeaderNames().iterator()).hasNext(); message.removeHeader("Content-Length"); diff --git a/java/test/org/openqa/selenium/remote/http/RouteTest.java b/java/test/org/openqa/selenium/remote/http/RouteTest.java index 799db1405efec..6b128d4552395 100644 --- a/java/test/org/openqa/selenium/remote/http/RouteTest.java +++ b/java/test/org/openqa/selenium/remote/http/RouteTest.java @@ -27,7 +27,6 @@ import static org.openqa.selenium.remote.http.HttpMethod.GET; import static org.openqa.selenium.remote.http.HttpMethod.POST; -import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; @@ -40,7 +39,7 @@ void shouldNotRouteUnhandledUrls() { Route.get("/hello") .to(() -> req -> new HttpResponse().setContent(utf8String("Hello, World!"))); - Assertions.assertThat(route.matches(new HttpRequest(GET, "/greeting"))).isFalse(); + assertThat(route.matches(new HttpRequest(GET, "/greeting"))).isFalse(); } @Test @@ -50,7 +49,7 @@ void shouldRouteSimplePaths() { .to(() -> req -> new HttpResponse().setContent(utf8String("Hello, World!"))); HttpRequest request = new HttpRequest(GET, "/hello"); - Assertions.assertThat(route.matches(request)).isTrue(); + assertThat(route.matches(request)).isTrue(); HttpResponse res = route.execute(request); assertThat(string(res)).isEqualTo("Hello, World!"); @@ -68,7 +67,7 @@ void shouldAllowRoutesToBeUrlTemplates() { utf8String(String.format("Hello, %s!", params.get("name"))))); HttpRequest request = new HttpRequest(POST, "/greeting/cheese"); - Assertions.assertThat(route.matches(request)).isTrue(); + assertThat(route.matches(request)).isTrue(); HttpResponse res = route.execute(request); assertThat(string(res)).isEqualTo("Hello, cheese!"); @@ -83,7 +82,7 @@ void shouldAllowRoutesToBePrefixed() { .to(() -> req -> new HttpResponse().setContent(utf8String("brie")))); HttpRequest request = new HttpRequest(GET, "/cheese/type"); - Assertions.assertThat(route.matches(request)).isTrue(); + assertThat(route.matches(request)).isTrue(); HttpResponse res = route.execute(request); assertThat(string(res)).isEqualTo("brie"); } @@ -103,12 +102,12 @@ void shouldAllowRoutesToBeNested() { .setContent(Contents.utf8String(params.get("kind")))))); HttpRequest good = new HttpRequest(GET, "/cheese/favourite/is/stilton"); - Assertions.assertThat(route.matches(good)).isTrue(); + assertThat(route.matches(good)).isTrue(); HttpResponse response = route.execute(good); assertThat(string(response)).isEqualTo("stilton"); HttpRequest bad = new HttpRequest(GET, "/cheese/favourite/not-here"); - Assertions.assertThat(route.matches(bad)).isFalse(); + assertThat(route.matches(bad)).isFalse(); } @Test @@ -123,7 +122,7 @@ void nestedRoutesShouldStripPrefixFromRequest() { new HttpResponse().setContent(Contents.utf8String(req.getUri())))); HttpRequest request = new HttpRequest(GET, "/cheese/type"); - Assertions.assertThat(route.matches(request)).isTrue(); + assertThat(route.matches(request)).isTrue(); HttpResponse res = route.execute(request); assertThat(string(res)).isEqualTo("/type"); } @@ -137,12 +136,12 @@ void itShouldBePossibleToCombineRoutes() { .to(() -> req -> new HttpResponse().setContent(utf8String("gouda")))); HttpRequest greet = new HttpRequest(GET, "/hello"); - Assertions.assertThat(route.matches(greet)).isTrue(); + assertThat(route.matches(greet)).isTrue(); HttpResponse response = route.execute(greet); assertThat(string(response)).isEqualTo("world"); HttpRequest cheese = new HttpRequest(POST, "/cheese"); - Assertions.assertThat(route.matches(cheese)).isTrue(); + assertThat(route.matches(cheese)).isTrue(); response = route.execute(cheese); assertThat(string(response)).isEqualTo("gouda"); } diff --git a/java/test/org/openqa/selenium/support/pagefactory/ByAllTest.java b/java/test/org/openqa/selenium/support/pagefactory/ByAllTest.java index 5541f67271b9a..dc1eda3c78c0d 100644 --- a/java/test/org/openqa/selenium/support/pagefactory/ByAllTest.java +++ b/java/test/org/openqa/selenium/support/pagefactory/ByAllTest.java @@ -17,18 +17,13 @@ package org.openqa.selenium.support.pagefactory; +import static java.util.Collections.emptyList; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; -import static org.mockito.Mockito.when; +import static org.mockito.Mockito.*; -import java.util.ArrayList; import java.util.List; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.openqa.selenium.By; @@ -39,12 +34,7 @@ @Tag("UnitTests") class ByAllTest { - private WebDriver driver; - - @BeforeEach - public void initDriver() { - driver = mock(WebDriver.class); - } + private final WebDriver driver = mock(); @Test void findElementZeroBy() { @@ -56,18 +46,14 @@ void findElementZeroBy() { @Test void findElementsZeroBy() { ByAll by = new ByAll(); - assertThat(by.findElements(driver).isEmpty()).isTrue(); + assertThat(by.findElements(driver)).isEmpty(); } @Test void findElementOneBy() { final WebElement elem1 = mock(WebElement.class, "webElement1"); final WebElement elem2 = mock(WebElement.class, "webElement2"); - final List elems12 = new ArrayList<>(); - elems12.add(elem1); - elems12.add(elem2); - - when(driver.findElements(By.name("cheese"))).thenReturn(elems12); + when(driver.findElements(By.name("cheese"))).thenReturn(List.of(elem1, elem2)); ByAll by = new ByAll(By.name("cheese")); assertThat(by.findElement(driver)).isEqualTo(elem1); @@ -77,21 +63,16 @@ void findElementOneBy() { void findElementsOneBy() { final WebElement elem1 = mock(WebElement.class, "webElement1"); final WebElement elem2 = mock(WebElement.class, "webElement2"); - final List elems12 = new ArrayList<>(); - elems12.add(elem1); - elems12.add(elem2); - when(driver.findElements(By.name("cheese"))).thenReturn(elems12); + when(driver.findElements(By.name("cheese"))).thenReturn(List.of(elem1, elem2)); ByAll by = new ByAll(By.name("cheese")); - assertThat(by.findElements(driver)).isEqualTo(elems12); + assertThat(by.findElements(driver)).containsExactly(elem1, elem2); } @Test void findElementOneByEmpty() { - final List elems = new ArrayList<>(); - - when(driver.findElements(By.name("cheese"))).thenReturn(elems); + when(driver.findElements(By.name("cheese"))).thenReturn(emptyList()); ByAll by = new ByAll(By.name("cheese")); assertThatExceptionOfType(NoSuchElementException.class) @@ -100,7 +81,7 @@ void findElementOneByEmpty() { @Test void findElementsOneByEmpty() { - when(driver.findElements(By.name("cheese"))).thenReturn(new ArrayList<>()); + when(driver.findElements(By.name("cheese"))).thenReturn(emptyList()); ByAll by = new ByAll(By.name("cheese")); assertThat(by.findElements(driver)).isEmpty(); @@ -112,15 +93,9 @@ void findFourElementBy() { final WebElement elem2 = mock(WebElement.class, "webElement2"); final WebElement elem3 = mock(WebElement.class, "webElement3"); final WebElement elem4 = mock(WebElement.class, "webElement4"); - final List elems12 = new ArrayList<>(); - elems12.add(elem1); - elems12.add(elem2); - final List elems34 = new ArrayList<>(); - elems34.add(elem3); - elems34.add(elem4); - when(driver.findElements(By.name("cheese"))).thenReturn(elems12); - when(driver.findElements(By.name("photo"))).thenReturn(elems34); + when(driver.findElements(By.name("cheese"))).thenReturn(List.of(elem1, elem2)); + when(driver.findElements(By.name("photo"))).thenReturn(List.of(elem3, elem4)); ByAll by = new ByAll(By.name("cheese"), By.name("photo")); assertThat(by.findElement(driver)).isEqualTo(elem1); @@ -135,15 +110,9 @@ void findFourElementByInReverseOrder() { final WebElement elem2 = mock(WebElement.class, "webElement2"); final WebElement elem3 = mock(WebElement.class, "webElement3"); final WebElement elem4 = mock(WebElement.class, "webElement4"); - final List elems12 = new ArrayList<>(); - elems12.add(elem1); - elems12.add(elem2); - final List elems34 = new ArrayList<>(); - elems34.add(elem3); - elems34.add(elem4); - when(driver.findElements(By.name("cheese"))).thenReturn(elems12); - when(driver.findElements(By.name("photo"))).thenReturn(elems34); + when(driver.findElements(By.name("cheese"))).thenReturn(List.of(elem1, elem2)); + when(driver.findElements(By.name("photo"))).thenReturn(List.of(elem3, elem4)); ByAll by = new ByAll(By.name("photo"), By.name("cheese")); assertThat(by.findElement(driver)).isEqualTo(elem3); @@ -158,21 +127,12 @@ void findFourElementsByAny() { final WebElement elem2 = mock(WebElement.class, "webElement2"); final WebElement elem3 = mock(WebElement.class, "webElement3"); final WebElement elem4 = mock(WebElement.class, "webElement4"); - final List elems12 = new ArrayList<>(); - elems12.add(elem1); - elems12.add(elem2); - final List elems34 = new ArrayList<>(); - elems34.add(elem3); - elems34.add(elem4); - final List elems1234 = new ArrayList<>(); - elems1234.addAll(elems12); - elems1234.addAll(elems34); - - when(driver.findElements(By.name("cheese"))).thenReturn(elems12); - when(driver.findElements(By.name("photo"))).thenReturn(elems34); + + when(driver.findElements(By.name("cheese"))).thenReturn(List.of(elem1, elem2)); + when(driver.findElements(By.name("photo"))).thenReturn(List.of(elem3, elem4)); ByAll by = new ByAll(By.name("cheese"), By.name("photo")); - assertThat(by.findElements(driver)).isEqualTo(elems1234); + assertThat(by.findElements(driver)).containsExactly(elem1, elem2, elem3, elem4); verify(driver, times(2)).findElements(any(By.class)); verifyNoMoreInteractions(driver); @@ -184,21 +144,12 @@ void findFourElementsByAnyInReverseOrder() { final WebElement elem2 = mock(WebElement.class, "webElement2"); final WebElement elem3 = mock(WebElement.class, "webElement3"); final WebElement elem4 = mock(WebElement.class, "webElement4"); - final List elems12 = new ArrayList<>(); - elems12.add(elem1); - elems12.add(elem2); - final List elems34 = new ArrayList<>(); - elems34.add(elem3); - elems34.add(elem4); - final List elems3412 = new ArrayList<>(); - elems3412.addAll(elems34); - elems3412.addAll(elems12); - - when(driver.findElements(By.name("cheese"))).thenReturn(elems12); - when(driver.findElements(By.name("photo"))).thenReturn(elems34); + + when(driver.findElements(By.name("cheese"))).thenReturn(List.of(elem1, elem2)); + when(driver.findElements(By.name("photo"))).thenReturn(List.of(elem3, elem4)); ByAll by = new ByAll(By.name("photo"), By.name("cheese")); - assertThat(by.findElements(driver)).isEqualTo(elems3412); + assertThat(by.findElements(driver)).containsExactly(elem3, elem4, elem1, elem2); verify(driver, times(2)).findElements(any(By.class)); verifyNoMoreInteractions(driver);