From 81ff6b616c5c1c303983aa69c875e4e82405a848 Mon Sep 17 00:00:00 2001 From: Manuel Blanco Date: Mon, 13 Oct 2025 23:26:00 +0200 Subject: [PATCH] Add integration test to retrieve and display browser version Introduce ShowBrowserVersionIntegrationTest to launch a real browser session Retrieve browser version from capabilities and print it to the console Assert that the browser version is not empty or null Implements feature to programmatically obtain browser version --- .../selenium/remote/RemoteWebDriver.java | 11 +++++++++ .../remote/RemoteWebDriverUnitTest.java | 18 ++++++++++++++ .../ShowBrowserVersionIntegrationTest.java | 24 +++++++++++++++++++ .../selenium/remote/WebDriverFixture.java | 13 ++++++++++ 4 files changed, 66 insertions(+) create mode 100644 java/test/org/openqa/selenium/remote/ShowBrowserVersionIntegrationTest.java diff --git a/java/src/org/openqa/selenium/remote/RemoteWebDriver.java b/java/src/org/openqa/selenium/remote/RemoteWebDriver.java index deca89f60595d..6b03ccd578c56 100644 --- a/java/src/org/openqa/selenium/remote/RemoteWebDriver.java +++ b/java/src/org/openqa/selenium/remote/RemoteWebDriver.java @@ -868,6 +868,17 @@ public String toString() { getClass().getSimpleName(), caps.getBrowserName(), platformName, getSessionId()); } + /** + * Returns the browser version from the capabilities. + * Compatible with Java 11 and Selenium 4. + * + * @return The browser version as a String, or empty string if not available. + */ + public String getBrowserVersion() { + Object version = getCapabilities().getCapability("browserVersion"); + return version != null ? version.toString() : ""; + } + public enum When { BEFORE, AFTER, diff --git a/java/test/org/openqa/selenium/remote/RemoteWebDriverUnitTest.java b/java/test/org/openqa/selenium/remote/RemoteWebDriverUnitTest.java index baf7143b165f3..62feec2557d4b 100644 --- a/java/test/org/openqa/selenium/remote/RemoteWebDriverUnitTest.java +++ b/java/test/org/openqa/selenium/remote/RemoteWebDriverUnitTest.java @@ -825,4 +825,22 @@ void getDownloadableFilesReturnsType() { fixture.verifyCommands(new CommandPayload(DriverCommand.GET_DOWNLOADABLE_FILES, emptyMap())); } + + /** + * Tests that getBrowserVersion() returns the correct version from capabilities. + * Ensures compatibility and correct extraction of browser version. + */ + @Test + void canGetBrowserVersionFromCapabilities() { + // Arrange: create capabilities with browserVersion + String expectedVersion = "123.45.67"; + ImmutableCapabilities capabilities = new ImmutableCapabilities("browserVersion", expectedVersion); + WebDriverFixture fixture = new WebDriverFixture(capabilities, WebDriverFixture.validSessionResponder); + + // Act: get browser version + String actualVersion = ((RemoteWebDriver) fixture.driver).getBrowserVersion(); + + // Assert: verify the version matches + assertThat(actualVersion).isEqualTo(expectedVersion); + } } diff --git a/java/test/org/openqa/selenium/remote/ShowBrowserVersionIntegrationTest.java b/java/test/org/openqa/selenium/remote/ShowBrowserVersionIntegrationTest.java new file mode 100644 index 0000000000000..18d037dcbfbb2 --- /dev/null +++ b/java/test/org/openqa/selenium/remote/ShowBrowserVersionIntegrationTest.java @@ -0,0 +1,24 @@ +package org.openqa.selenium.remote; + +import org.junit.jupiter.api.Test; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.Capabilities; +import static org.assertj.core.api.Assertions.assertThat; + +public class ShowBrowserVersionIntegrationTest { + @Test + void showBrowserVersion() { + // Start a real Chrome session + WebDriver driver = new ChromeDriver(); + try { + Capabilities caps = ((ChromeDriver) driver).getCapabilities(); + String version = caps.getBrowserVersion(); + System.out.println("Browser version: " + version); + assertThat(version).isNotEmpty(); + assertThat(version).isNotNull(); + } finally { + driver.quit(); + } + } +} diff --git a/java/test/org/openqa/selenium/remote/WebDriverFixture.java b/java/test/org/openqa/selenium/remote/WebDriverFixture.java index 0bf3c4721b088..216b7b5ebfa38 100644 --- a/java/test/org/openqa/selenium/remote/WebDriverFixture.java +++ b/java/test/org/openqa/selenium/remote/WebDriverFixture.java @@ -189,4 +189,17 @@ public static Function errorResponder(String state, Object va response.setSessionId(UUID.randomUUID().toString()); return response; }; + + public static final Function validSessionResponder = cmd -> { + if (DriverCommand.NEW_SESSION.equals(cmd.getName())) { + Response response = new Response(); + response.setState("success"); + response.setSessionId("mock-session-id"); + // Capabilities con browserVersion + response.setValue(Map.of("browserVersion", "123.45.67")); + return response; + } + // Para otros comandos, devolver null o como se requiera + return null; + }; }