From 71ebdd997d413a735af5992c61fbc6949f39978f Mon Sep 17 00:00:00 2001 From: Mohammad Saddam Hossain Date: Sat, 19 Sep 2026 09:23:49 +0530 Subject: [PATCH] release: bump version to 3.4.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Minor bump — new public API since 3.3.0: Locator.rows() header-keyed table extraction (#54). Also ships the bootstrap-failure-cause fix (#45), the Selenium Java 4.40.0 -> 4.49.0 upgrade (CDP v144 -> v153 migration), and quickstart doc fixes (#40, #44). Updates all in-repo version references per CLAUDE.md's Version Bumps table (pom.xml, README.md, docs-site getting-started/junit5/index.js, docs-site migration guide) and adds CHANGELOG.md + docs-site/docs/changelog.md entries for the release. Verified: mvn clean test — 508/508 passing. Co-Authored-By: Claude Sonnet 5 --- CHANGELOG.md | 7 +++++++ README.md | 6 +++--- docs-site/docs/changelog.md | 14 ++++++++++++++ docs-site/docs/getting-started.md | 6 +++--- docs-site/docs/junit5.md | 2 +- docs-site/docs/migration/from-selenium-testng.md | 2 +- docs-site/src/pages/index.js | 2 +- pom.xml | 2 +- 8 files changed, 31 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 553f21d..3fd34b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/). --- +### v3.4.0 — 2026-09-19 + +- **`Locator.rows()`** — resolves a locator to a `` and returns its data rows as header-keyed maps (`List>`), one map per row, keyed by column header. Headers are taken from the first `` row with `` anywhere with ``'s `
` cells, falling back to the first `
` cells, then the first `
` cells; whichever row supplies headers is never returned as data. Short rows are padded with `""`, extra cells are dropped, and ``-only rows (group headings) are skipped. Contributed by @timothytkim. (#54) +- **Bootstrap failures now expose their root cause** — when framework initialization throws, `SuiteExecutionListener` now logs the full cause chain (`Caused by: ...`, walked to the root) to `System.err` before rethrowing, so the actual failure reason is visible in normal Maven/TestNG/Surefire output instead of being buried one level down in the wrapping `IllegalStateException`. (Fixes #45) +- **Selenium Java bumped 4.40.0 → 4.49.0** (9 releases). This is a behavior-preserving internal upgrade: `NetworkMock` and `DeviceEmulator` are repointed from the now-removed CDP `devtools.v144` module to `devtools.v153` (the newer of the two bundled with 4.49.0), and two new trailing `Optional.empty()` arguments were added to `Emulation.setDeviceMetricsOverride()` calls to match v153's changed signature, preserving the existing defaults. Verified with the full 508-test suite. +- **Docs** — the README and getting-started quickstarts now show the locator API (`$(...)`) instead of `getDriver()` for the first example, and the getting-started example is runnable as written. (#40, #44) + ### v3.3.0 — 2026-08-15 - **`execution.parallel` now validates against TestNG's own parallel modes, not a hand-written allowlist that had drifted from them** — `tests` and `instances` are legitimate TestNG modes that flow straight through to `XmlSuite.setParallel()` and work exactly like `methods`/`classes` downstream, but Selenium Boot's bootstrap validator rejected them anyway, and did so with a "Parallel execution configuration missing" message — telling users their config was absent when it was present but simply not on the list. Validation now delegates to TestNG's `XmlSuite.ParallelMode` enum directly, so anything TestNG accepts, Selenium Boot accepts, and an unrecognised value's error message names both the rejected value and the full valid set instead of going stale again. (Fixes #35) diff --git a/README.md b/README.md index e9708e2..31920ec 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Three files. Copy them as-is and `mvn test` goes green against a real Chrome. io.github.seleniumboot selenium-boot - 3.3.0 + 3.4.0 @@ -205,7 +205,7 @@ Add to your `pom.xml`: io.github.seleniumboot selenium-boot - 3.3.0 + 3.4.0 ``` @@ -786,7 +786,7 @@ ci: ## Project Status -**Current release: v3.3.0** — `execution.parallel` is now validated against TestNG's own parallel modes, so `tests` and `instances` are accepted alongside `none`, `methods`, and `classes`. +**Current release: v3.4.0** — new header-keyed table extraction (`Locator.rows()`), bootstrap failures now log their full root-cause chain, and Selenium Java is bumped to 4.49.0. See the full version history in **[CHANGELOG.md](CHANGELOG.md)**. diff --git a/docs-site/docs/changelog.md b/docs-site/docs/changelog.md index d0e3d29..5a0c162 100644 --- a/docs-site/docs/changelog.md +++ b/docs-site/docs/changelog.md @@ -11,6 +11,20 @@ All notable changes to Selenium Boot are documented here. --- +## [3.4.0] — 2026-09-19 + +### Added +- **`Locator.rows()`** — resolves a locator to a `` and returns its data rows as header-keyed maps (`List>`), one map per row, keyed by column header. Headers come from the first `` row with `` anywhere with ``'s `
` cells, falling back to the first `
` cells, then the first `
` cells; whichever row supplies headers is never returned as data. Short rows are padded with `""`, extra cells are dropped, and ``-only rows (group headings) are skipped. Contributed by [@timothytkim](https://github.com/timothytkim). (#54) + +### Fixed +- **Bootstrap failures now expose their root cause** — when framework initialization throws, the full cause chain is now logged to `System.err` (walked down to the root) before the suite aborts, so the actual failure reason shows up in normal Maven/TestNG/Surefire output instead of being hidden behind the generic "failed to initialize" wrapper message. (Fixes #45) + +### Changed +- **Selenium Java 4.40.0 → 4.49.0** (9 releases) — behavior-preserving upgrade. `NetworkMock` and `DeviceEmulator` are repointed from the removed CDP `devtools.v144` module to `devtools.v153`, and two new trailing `Optional.empty()` arguments were added to `Emulation.setDeviceMetricsOverride()` calls to match v153's changed signature, preserving existing defaults. Verified with the full 508-test suite. +- **Docs** — quickstart examples in the README and getting-started guide now lead with the locator API (`$(...)`) instead of `getDriver()`, and the getting-started example runs as written. + +--- + ## [3.3.0] — 2026-08-15 ### Fixed diff --git a/docs-site/docs/getting-started.md b/docs-site/docs/getting-started.md index 88ba791..478203c 100644 --- a/docs-site/docs/getting-started.md +++ b/docs-site/docs/getting-started.md @@ -35,7 +35,7 @@ No WebDriver binaries required — Selenium Manager handles browser driver downl io.github.seleniumboot selenium-boot - 3.3.0 + 3.4.0 ``` @@ -44,7 +44,7 @@ No WebDriver binaries required — Selenium Manager handles browser driver downl ```groovy title="build.gradle" dependencies { - testImplementation 'io.github.seleniumboot:selenium-boot:3.3.0' + testImplementation 'io.github.seleniumboot:selenium-boot:3.4.0' } test { @@ -58,7 +58,7 @@ test { ```kotlin title="build.gradle.kts" dependencies { - testImplementation("io.github.seleniumboot:selenium-boot:3.3.0") + testImplementation("io.github.seleniumboot:selenium-boot:3.4.0") } tasks.test { diff --git a/docs-site/docs/junit5.md b/docs-site/docs/junit5.md index f67877b..20e58f4 100644 --- a/docs-site/docs/junit5.md +++ b/docs-site/docs/junit5.md @@ -17,7 +17,7 @@ Selenium Boot supports both **TestNG** (built-in) and **JUnit 5** (opt-in). The io.github.seleniumboot selenium-boot - 3.3.0 + 3.4.0 diff --git a/docs-site/docs/migration/from-selenium-testng.md b/docs-site/docs/migration/from-selenium-testng.md index 998ac9f..e6b4c33 100644 --- a/docs-site/docs/migration/from-selenium-testng.md +++ b/docs-site/docs/migration/from-selenium-testng.md @@ -26,7 +26,7 @@ Remove your Selenium, WebDriverManager, and reporting dependencies and add one: io.github.seleniumboot selenium-boot - 3.3.0 + 3.4.0 ``` diff --git a/docs-site/src/pages/index.js b/docs-site/src/pages/index.js index e043d83..3826ff8 100644 --- a/docs-site/src/pages/index.js +++ b/docs-site/src/pages/index.js @@ -241,7 +241,7 @@ export default function Home() { code={` io.github.seleniumboot selenium-boot - 3.3.0 + 3.4.0 `} /> diff --git a/pom.xml b/pom.xml index 3d23c84..76252e6 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ io.github.seleniumboot selenium-boot - 3.3.0 + 3.4.0 jar Selenium Boot