Selenium 4's selenium-os module (org.openqa.selenium.os.CommandLine, used by
DriverService.start() to launch the driver binary) depends on Apache Commons
Exec 1.3. Selenium 3's fat client-combined jar bundled it; the modular
Selenium 4 needs it as a separate transitive. Its absence caused a runtime
NoClassDefFoundError: org/apache/commons/exec/ExecuteWatchdog on the first
driver session start. Added commons-exec-1.3.jar (the version pinned by
selenium-os 4.13.0) to lib/ and wired it into Bundle-ClassPath, build.properties
and .classpath. Not re-exported, as only selenium-os references it internally.
Assisted-By: Claude (claude-4.8-opus)
The Selenium 4 wrapper rewrite dropped the com.google.common.base and
com.google.common.collect exports that the Selenium 3 bundle provided. The
test bundle uses Guava directly (Objects, Function, ImmutableList) via
Require-Bundle, so Tycho's PDE compiler rejected those references with
"Access restriction: ... is not API". Plain javac did not catch this because
it ignores OSGi Export-Package/Require-Bundle API boundaries. Re-exporting the
two packages restores API access, matching the Selenium 3 behavior.
Assisted-By: Claude (claude-4.8-opus)
Selenium 3.x only speaks the legacy JSON Wire Protocol, which forces us to
pin old browser versions. Selenium 4 brings the W3C WebDriver protocol.
Since the reactor still runs on Java 8 and Selenium 4.14+ requires Java 11,
4.13.0 is the migration target: the last Java-8-compatible release.
org.openqa.selenium.osgi wrapper bundle:
- Drop the Selenium-3 client-combined fat jar and its transitives.
- Add the 12 Selenium 4.13.0 modules + selenium-chromium-driver and the
required transitive runtime deps (Netty async HTTP client, OpenTelemetry).
- Keep the legacy org.json jar (still consumed by the test bundle and
previously re-exported here); DevTools/CDP jars intentionally omitted
(the suite uses no CDP).
- Re-scope Export-Package to the 4.13.0 package layout; keep
Bundle-RequiredExecutionEnvironment JavaSE-1.8. Bump bundle to 4.13.0
and mirror the jar list in .classpath, build.properties and pom.xml.
com.sap.sailing.selenium.test source fixes:
- WebDriverWait(WebDriver, long) -> WebDriverWait(WebDriver, java.time.Duration).
- org.openqa.selenium.internal.WrapsElement -> org.openqa.selenium.WrapsElement.
- ElementNotSelectableException (removed) -> ElementNotInteractableException.
- Bump wrapper-bundle dependency to 4.13.0.
The full test bundle compiles cleanly against the new wrapper on Java 8.
Assisted-By: Claude (claude-4.8-opus)
according to https://bugs.eclipse.org/bugs/show_bug.cgi?id=544977#c21 the
scenario of using the ManifestBuilder without setting the PluginNature is
not a supported scenario. Besides, it doesn't help to get rid of the new
Eclipse warning regarding non-exported packages.
This reverts commit 063484e29f.
ssh://armin@sapsailing.com/home/trac/git into racecommittee_integrated
Conflicts:
java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java