diff --git a/CHANGELOG.md b/CHANGELOG.md index c5863b8..89f22ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/). --- -### Unreleased +### v3.10.0 — 2026-11-04 + +- **HTML report: print stylesheet for "Save as PDF"** — printing the report now produces a clean document: UI chrome is hidden, all sections print instead of only the active tab, collapsed groups and failed-test details (error and full stack trace) are expanded, the light palette is used even in dark mode, and your on-screen filters are restored afterwards. (#221, #236) + +- **HTML report: execution timeline** — the dashboard now shows a Gantt-style timeline of when each test started and ended, built from the new per-test `startedAtMs` export. (#201) + +- **HTML report: results by tag** — a tag breakdown from TestNG groups, Cucumber tags and JUnit 5 tags, with click-to-filter in the Test Cases tab. (#167, #189) + +- **HTML report: refreshed theme and restructured markup** — the report's CSS, JavaScript and HTML partials are now separate files and the theme is aligned across tabs. (#192, #193, #194) + +- **Tracing: failure traces recorded by default in CI** — when `tracing.enabled` is not set, failed-test traces are recorded in CI and stay off locally. An explicit `true`/`false` still wins. (#198) + +- **Selenium Java 4.51.0 → 4.52.0** — internal upgrade. 4.52.0 no longer ships the CDP `devtools.v153` module, so `NetworkMock`, `DeviceEmulator` and the network trackers now use `devtools.v154`. No API change. (#238) - **HTML report: status and tag filter persistence** — the active status filter (All, Passed, Failed, Skipped, Flaky) and tag filter in the Test Cases tab are now persisted across page reloads and reopens using `localStorage` (`sb-status-filter` and `sb-tag-filter`). Storage reads and writes are safely guarded against restricted environments (private browsing, disabled storage, quota limits); if a previously stored tag is not present in the current report, it is gracefully ignored without restricting rows, and restoring filters preserves the default Dashboard tab view. (#215) diff --git a/README.md b/README.md index accd42f..b439536 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Three files. Copy them as-is and `mvn test` goes green against a real Chrome. io.github.seleniumboot selenium-boot - 3.9.0 + 3.10.0 @@ -286,7 +286,7 @@ Grab the jar from the [latest release](https://github.com/seleniumboot/selenium- ## Project Status -**Current release: v3.9.0** — failure intelligence (triage and suggested actions, AI provider choice, run summary), trend charts, Cucumber on the JUnit Platform, and more `Locator` actions. +**Current release: v3.10.0** — report timeline, results by tag, print-to-PDF stylesheet and a refreshed theme, LambdaTest and Firefox network mocking, richer traces, and Selenium 4.52.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 1b41e2c..eba27ec 100644 --- a/docs-site/docs/changelog.md +++ b/docs-site/docs/changelog.md @@ -9,7 +9,25 @@ sidebar_position: 99 All notable changes to Selenium Boot are documented here. -## [Unreleased] +## [3.10.0] — 2026-11-04 + +- **HTML report: print stylesheet for "Save as PDF"** — printing the report now produces a clean document: UI chrome is hidden, all sections print instead of only the active tab, collapsed groups and failed-test details (error and full stack trace) are expanded, the light palette is used even in dark mode, and your on-screen filters are restored afterwards. (#221, #236) + +- **HTML report: execution timeline** — the dashboard now shows a Gantt-style timeline of when each test started and ended, built from the new per-test `startedAtMs` export. (#201) + +- **HTML report: results by tag** — a tag breakdown from TestNG groups, Cucumber tags and JUnit 5 tags, with click-to-filter in the Test Cases tab. (#167, #189) + +- **HTML report: refreshed theme and restructured markup** — the report's CSS, JavaScript and HTML partials are now separate files and the theme is aligned across tabs. (#192, #193, #194) + +- **Tracing: failure traces recorded by default in CI** — when `tracing.enabled` is not set, failed-test traces are recorded in CI and stay off locally. An explicit `true`/`false` still wins. (#198) + +- **Selenium Java 4.51.0 → 4.52.0** — internal upgrade. 4.52.0 no longer ships the CDP `devtools.v153` module, so `NetworkMock`, `DeviceEmulator` and the network trackers now use `devtools.v154`. No API change. (#238) + +- **HTML report: status and tag filter persistence** — the active status filter (All, Passed, Failed, Skipped, Flaky) and tag filter in the Test Cases tab are now persisted across page reloads and reopens using `localStorage` (`sb-status-filter` and `sb-tag-filter`). Storage reads and writes are safely guarded against restricted environments (private browsing, disabled storage, quota limits); if a previously stored tag is not present in the current report, it is gracefully ignored without restricting rows, and restoring filters preserves the default Dashboard tab view. (#215) + +- **HTML report: "Copy failure details" button** — failed tests with an error now have a button in the expanded detail row (and on the Failures tab) that copies the test id, error message and stack trace to the clipboard, with brief "Copied" feedback. Falls back to `execCommand('copy')` when `navigator.clipboard` is unavailable (e.g. some `file://` setups). (#216) + +- **Fix: `@PreCondition` session restore on a fresh browser** — the cached cookies and localStorage were silently dropped when the next test started on `about:blank`, so only the first test per thread was logged in. Restore now navigates to the origin the session was captured on first. - **LambdaTest cloud provider** — `execution.mode: lambdatest` now creates W3C `LT:Options` sessions, supports environment-based credentials and capability diff --git a/docs-site/docs/cucumber.md b/docs-site/docs/cucumber.md index 0829359..e539671 100644 --- a/docs-site/docs/cucumber.md +++ b/docs-site/docs/cucumber.md @@ -21,7 +21,7 @@ Add Cucumber to your project alongside Selenium Boot. io.github.seleniumboot selenium-boot - 3.9.0 + 3.10.0 @@ -52,7 +52,7 @@ Add Cucumber to your project alongside Selenium Boot. io.github.seleniumboot selenium-boot - 3.9.0 + 3.10.0 diff --git a/docs-site/docs/getting-started.md b/docs-site/docs/getting-started.md index 3ffb073..a31e56c 100644 --- a/docs-site/docs/getting-started.md +++ b/docs-site/docs/getting-started.md @@ -41,7 +41,7 @@ config, a page object and passing tests, ready for `mvn test`. io.github.seleniumboot selenium-boot - 3.9.0 + 3.10.0 ``` @@ -50,7 +50,7 @@ config, a page object and passing tests, ready for `mvn test`. ```groovy title="build.gradle" dependencies { - testImplementation 'io.github.seleniumboot:selenium-boot:3.9.0' + testImplementation 'io.github.seleniumboot:selenium-boot:3.10.0' } test { @@ -64,7 +64,7 @@ test { ```kotlin title="build.gradle.kts" dependencies { - testImplementation("io.github.seleniumboot:selenium-boot:3.9.0") + testImplementation("io.github.seleniumboot:selenium-boot:3.10.0") } tasks.test { diff --git a/docs-site/docs/gradle.md b/docs-site/docs/gradle.md index 64c4b77..db73a79 100644 --- a/docs-site/docs/gradle.md +++ b/docs-site/docs/gradle.md @@ -29,7 +29,7 @@ repositories { } dependencies { - testImplementation 'io.github.seleniumboot:selenium-boot:3.9.0' + testImplementation 'io.github.seleniumboot:selenium-boot:3.10.0' } ``` @@ -46,7 +46,7 @@ repositories { } dependencies { - testImplementation("io.github.seleniumboot:selenium-boot:3.9.0") + testImplementation("io.github.seleniumboot:selenium-boot:3.10.0") } ``` @@ -114,7 +114,7 @@ If you're using `BaseJUnit5Test` or `@EnableSeleniumBoot`: ```groovy title="build.gradle" dependencies { - testImplementation 'io.github.seleniumboot:selenium-boot:3.9.0' + testImplementation 'io.github.seleniumboot:selenium-boot:3.10.0' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.2' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.2' } @@ -130,7 +130,7 @@ test { ```kotlin title="build.gradle.kts" dependencies { - testImplementation("io.github.seleniumboot:selenium-boot:3.9.0") + testImplementation("io.github.seleniumboot:selenium-boot:3.10.0") testImplementation("org.junit.jupiter:junit-jupiter-api:5.10.2") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.2") } @@ -278,7 +278,7 @@ repositories { } dependencies { - testImplementation 'io.github.seleniumboot:selenium-boot:3.9.0' + testImplementation 'io.github.seleniumboot:selenium-boot:3.10.0' } test { diff --git a/docs-site/docs/junit5.md b/docs-site/docs/junit5.md index 6bd4e4a..bae60c5 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.9.0 + 3.10.0 diff --git a/docs-site/docs/migration/from-selenium-testng.md b/docs-site/docs/migration/from-selenium-testng.md index ea5c1ff..1ab3792 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.9.0 + 3.10.0 ``` diff --git a/docs-site/src/pages/index.js b/docs-site/src/pages/index.js index 6fc283a..b691b86 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.9.0 + 3.10.0 `} /> diff --git a/pom.xml b/pom.xml index 51f5a94..4a7f683 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ io.github.seleniumboot selenium-boot - 3.9.0 + 3.10.0 jar Selenium Boot