Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 `<table>` and returns its data rows as header-keyed maps (`List<Map<String, String>>`), one map per row, keyed by column header. Headers are taken from the first `<thead>` row with `<th>` cells, falling back to the first `<tr>` anywhere with `<th>` cells, then the first `<tr>`'s `<td>` cells; whichever row supplies headers is never returned as data. Short rows are padded with `""`, extra cells are dropped, and `<th>`-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)
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Three files. Copy them as-is and `mvn test` goes green against a real Chrome.
<dependency>
<groupId>io.github.seleniumboot</groupId>
<artifactId>selenium-boot</artifactId>
<version>3.3.0</version>
<version>3.4.0</version>
</dependency>
</dependencies>

Expand Down Expand Up @@ -205,7 +205,7 @@ Add to your `pom.xml`:
<dependency>
<groupId>io.github.seleniumboot</groupId>
<artifactId>selenium-boot</artifactId>
<version>3.3.0</version>
<version>3.4.0</version>
</dependency>
```

Expand Down Expand Up @@ -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)**.

Expand Down
14 changes: 14 additions & 0 deletions docs-site/docs/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 `<table>` and returns its data rows as header-keyed maps (`List<Map<String, String>>`), one map per row, keyed by column header. Headers come from the first `<thead>` row with `<th>` cells, falling back to the first `<tr>` anywhere with `<th>` cells, then the first `<tr>`'s `<td>` cells; whichever row supplies headers is never returned as data. Short rows are padded with `""`, extra cells are dropped, and `<th>`-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
Expand Down
6 changes: 3 additions & 3 deletions docs-site/docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ No WebDriver binaries required — Selenium Manager handles browser driver downl
<dependency>
<groupId>io.github.seleniumboot</groupId>
<artifactId>selenium-boot</artifactId>
<version>3.3.0</version>
<version>3.4.0</version>
</dependency>
```

Expand All @@ -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 {
Expand All @@ -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 {
Expand Down
2 changes: 1 addition & 1 deletion docs-site/docs/junit5.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Selenium Boot supports both **TestNG** (built-in) and **JUnit 5** (opt-in). The
<dependency>
<groupId>io.github.seleniumboot</groupId>
<artifactId>selenium-boot</artifactId>
<version>3.3.0</version>
<version>3.4.0</version>
</dependency>

<dependency>
Expand Down
2 changes: 1 addition & 1 deletion docs-site/docs/migration/from-selenium-testng.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Remove your Selenium, WebDriverManager, and reporting dependencies and add one:
<dependency>
<groupId>io.github.seleniumboot</groupId>
<artifactId>selenium-boot</artifactId>
<version>3.3.0</version>
<version>3.4.0</version>
</dependency>
```

Expand Down
2 changes: 1 addition & 1 deletion docs-site/src/pages/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ export default function Home() {
code={`<dependency>
<groupId>io.github.seleniumboot</groupId>
<artifactId>selenium-boot</artifactId>
<version>3.3.0</version>
<version>3.4.0</version>
</dependency>`}
/>
</div>
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>io.github.seleniumboot</groupId>
<artifactId>selenium-boot</artifactId>
<version>3.3.0</version>
<version>3.4.0</version>
<packaging>jar</packaging>

<name>Selenium Boot</name>
Expand Down
Loading