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: 6 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/).

### Unreleased

- **`open()` names `execution.baseUrl` when the site can't be reached** — a DNS or connection failure now reads `Could not reach <url> (ERR_NAME_NOT_RESOLVED) — check execution.baseUrl in selenium-boot.yml …` (the driver's error stays as the cause) instead of a bare `net::ERR_NAME_NOT_RESOLVED`. Applies to `BaseTest`, `BaseJUnit5Test`, `BaseCucumberSteps` and `BaseConditions`. Also fixes `BaseJUnit5Test.open()` with no `execution.baseUrl` failing with a bare driver error instead of naming the missing key.
---

### v3.6.0 — 2026-09-27

- **`WaitEngine.waitForNetworkIdle()` / `waitForResponse(urlPattern)`** — waits until no network request has been in flight for a quiet period (default 500ms, or a custom `Duration`), or until a response whose URL matches a glob pattern (same syntax as `NetworkMock.stub`) is observed, returning its HTTP status code. Both are bounded by the configured explicit timeout. Works on Chrome/Edge (via CDP) and any BiDi-capable browser such as Firefox; throws `UnsupportedOperationException` on others. Firefox sessions now request a BiDi connection by default (`webSocketUrl` capability) so this works with no extra configuration — an explicit value in the user's own `browser.capabilities` still wins.
- **`open()` names `execution.baseUrl` when the site can't be reached** — a DNS or connection failure now reads `Could not reach <url> (ERR_NAME_NOT_RESOLVED) — check execution.baseUrl in selenium-boot.yml …` (the driver's error stays as the cause) instead of a bare `net::ERR_NAME_NOT_RESOLVED`. Applies to `BaseTest`, `BaseJUnit5Test`, `BaseCucumberSteps` and `BaseConditions`. Also fixes `BaseJUnit5Test.open()` with no `execution.baseUrl` failing with a bare driver error instead of naming the missing key. (#84)
- **Gradle projects now get their reports under `build/`** (#81) — the base directory is decided from `build.gradle` / `build.gradle.kts` (a `pom.xml` wins if both exist) instead of "does `target/` exist", which other components had already created. Flakiness report, healed locators, traces, recordings, Allure results, screenshots and JUnit XML all follow it; `-Dseleniumboot.reports.dir` still overrides.
- **Docs: the Gradle `systemProperties System.properties` snippet is replaced** (#82) — copying every JVM property broke test runs when the test JVM differs from Gradle's. It now forwards only `browser` and `env`.

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.5.0</version>
<version>3.6.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.5.0</version>
<version>3.6.0</version>
</dependency>
```

Expand Down Expand Up @@ -787,7 +787,7 @@ ci:

## Project Status

**Current release: v3.5.0** — zero-config first run (`selenium-boot.yml` is now optional), terminal `Locator` actions that wait and re-resolve stale elements, and JUnit 6 support.
**Current release: v3.6.0** — `waitForNetworkIdle()` / `waitForResponse()` (CDP + BiDi), zero-config first run, terminal `Locator` actions that wait and re-resolve stale elements, and JUnit 6 support.

See the full version history in **[CHANGELOG.md](CHANGELOG.md)**.

Expand Down
9 changes: 9 additions & 0 deletions docs-site/docs/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,15 @@ All notable changes to Selenium Boot are documented here.

---

## [3.6.0] — 2026-09-27

- **`WaitEngine.waitForNetworkIdle()` / `waitForResponse(urlPattern)`** — waits until no network request has been in flight for a quiet period (default 500ms, or a custom `Duration`), or until a response whose URL matches a glob pattern (same syntax as `NetworkMock.stub`) is observed, returning its HTTP status code. Both are bounded by the configured explicit timeout. Works on Chrome/Edge (via CDP) and any BiDi-capable browser such as Firefox; throws `UnsupportedOperationException` on others. Firefox sessions now request a BiDi connection by default (`webSocketUrl` capability) so this works with no extra configuration — an explicit value in the user's own `browser.capabilities` still wins.
- **`open()` names `execution.baseUrl` when the site can't be reached** — a DNS or connection failure now reads `Could not reach <url> (ERR_NAME_NOT_RESOLVED) — check execution.baseUrl in selenium-boot.yml …` (the driver's error stays as the cause) instead of a bare `net::ERR_NAME_NOT_RESOLVED`. Applies to `BaseTest`, `BaseJUnit5Test`, `BaseCucumberSteps` and `BaseConditions`. Also fixes `BaseJUnit5Test.open()` with no `execution.baseUrl` failing with a bare driver error instead of naming the missing key. (#84)
- **Gradle projects now get their reports under `build/`** (#81) — the base directory is decided from `build.gradle` / `build.gradle.kts` (a `pom.xml` wins if both exist) instead of "does `target/` exist", which other components had already created. Flakiness report, healed locators, traces, recordings, Allure results, screenshots and JUnit XML all follow it; `-Dseleniumboot.reports.dir` still overrides.
- **Docs: the Gradle `systemProperties System.properties` snippet is replaced** (#82) — copying every JVM property broke test runs when the test JVM differs from Gradle's. It now forwards only `browser` and `env`.

---

## [3.5.0] — 2026-09-24

- **Zero-config first run: `selenium-boot.yml` is now optional** — with no default `selenium-boot.yml` in the working directory or on the classpath, the framework runs on built-in defaults (`browser.name: chrome`, `execution.mode: local`, `timeouts.explicit: 10`, `timeouts.pageLoad: 30`) and prints one `[Selenium Boot] No selenium-boot.yml found — running with built-in defaults ...` notice line. Fields a file omits (and an empty file) fall back to the same defaults; `browser.name` is only defaulted when `browser.matrix` is not set, and `SeleniumBootDefaults` overrides still take precedence over the built-ins. Nothing that was an error before stops being one: a requested profile (`-Dselenium.boot.profile`) or explicit path (`-Dselenium.boot.config`) whose file is missing still throws, so a typo never silently runs on defaults, and present-but-invalid values (an unknown `execution.mode`, a negative timeout) still fail validation. Adds `ConfigurationLoader.load(File, ClassLoader)` (working directory and classpath supplied, for tests). (#66)
Expand Down
2 changes: 1 addition & 1 deletion docs-site/docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ config, a page object and passing tests, ready for `mvn test`.
<dependency>
<groupId>io.github.seleniumboot</groupId>
<artifactId>selenium-boot</artifactId>
<version>3.5.0</version>
<version>3.6.0</version>
</dependency>
```

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.5.0</version>
<version>3.6.0</version>
</dependency>

<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.5.0</version>
<version>3.6.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.5.0</version>
<version>3.6.0</version>
<packaging>jar</packaging>

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