From 7bee6c7e1f2f69a03206e31a1a3a5a613ba501ca Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 27 Jul 2026 17:02:10 +0000 Subject: [PATCH] Upgrade selenium-java 4.15.0 -> 4.46.0 (highest 4.x on Java 11) Override the Spring Boot 2.6.3 managed selenium.version (3.141.59) so the selenium modules resolve at 4.46.0 instead of splitting the classpath, and migrate the removed WebDriverWait(WebDriver, long) overload to Duration. --- .agents/skills/java-engineering-excellence/SKILL.md | 2 +- build.gradle | 6 +++++- src/test/java/io/spring/selenium/pages/BasePage.java | 5 +++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.agents/skills/java-engineering-excellence/SKILL.md b/.agents/skills/java-engineering-excellence/SKILL.md index 677cfe0bf..a37d10ee2 100644 --- a/.agents/skills/java-engineering-excellence/SKILL.md +++ b/.agents/skills/java-engineering-excellence/SKILL.md @@ -88,7 +88,7 @@ ts-java-spring-boot-realworld/ | `io.rest-assured:spring-mock-mvc` (test) | 4.5.1 | 5.4.x | | `com.diffplug.spotless` | 6.2.1 | 6.25.x | | `org.flywaydb:flyway-core` | (managed) | 10.x (Boot 3.5 managed) | -| Selenium (test) | 4.15.0 | 4.20.x | +| Selenium (test) | 4.46.0 (`ext['selenium.version']` overrides the Boot BOM's 3.141.59) | 4.46.x | ## General Approach: Java 11 → 21 / Spring Boot 2.x → 3.x Upgrades diff --git a/build.gradle b/build.gradle index 03c56f755..e087cd2ec 100644 --- a/build.gradle +++ b/build.gradle @@ -55,6 +55,10 @@ configurations { } } +// The Spring Boot 2.6.3 BOM manages org.seleniumhq.selenium at 3.141.59, which would drag +// selenium-java's own modules back to 3.x and split the classpath. +ext['selenium.version'] = '4.46.0' + dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' @@ -82,7 +86,7 @@ dependencies { testImplementation 'org.mockito:mockito-inline:4.0.0' // Selenium E2E testing - testImplementation 'org.seleniumhq.selenium:selenium-java:4.15.0' + testImplementation 'org.seleniumhq.selenium:selenium-java:4.46.0' testImplementation 'io.github.bonigarcia:webdrivermanager:5.6.2' testImplementation 'org.testng:testng:7.8.0' testImplementation 'com.aventstack:extentreports:5.1.1' diff --git a/src/test/java/io/spring/selenium/pages/BasePage.java b/src/test/java/io/spring/selenium/pages/BasePage.java index 425f696ef..208313e40 100644 --- a/src/test/java/io/spring/selenium/pages/BasePage.java +++ b/src/test/java/io/spring/selenium/pages/BasePage.java @@ -1,5 +1,6 @@ package io.spring.selenium.pages; +import java.time.Duration; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.PageFactory; @@ -11,11 +12,11 @@ public abstract class BasePage { protected WebDriver driver; protected WebDriverWait wait; - protected static final long DEFAULT_TIMEOUT_SECONDS = 10; + protected static final Duration DEFAULT_TIMEOUT = Duration.ofSeconds(10); public BasePage(WebDriver driver) { this.driver = driver; - this.wait = new WebDriverWait(driver, DEFAULT_TIMEOUT_SECONDS); + this.wait = new WebDriverWait(driver, DEFAULT_TIMEOUT); PageFactory.initElements(driver, this); }