Releases: vaadin/testbench
25.2.0
What's Changed
- fix: improve viewport resizing logic with retry mechanism by @tltv in #2170
- fix: use standard base64 encoding for data URIs in screenshot reports by @Artur- in #2169
- chore: Update version to 10.2 by @caalador in #2175
- feat: Add loadtest to testbench by @caalador in #2176
- fix: Fix TestSignalEnvironment to prevent flaky signal tests by @Artur- in #2178
- chore: enhance HarFilter and HarToK6Converter filtering by @tltv in #2177
- chore: remove unnecessary vaadin-prereleases from loadtest by @tltv in #2180
- chore: fix loadtest version by @caalador in #2179
- feat: resolve java executable by @caalador in #2181
- chore: add runLoadTests profile for load tests by @tltv in #2183
- fix: csv to handle , and " in input by @caalador in #2194
- test: Grid should be visible on page load by @caalador in #2187
- chore: move loadtest-helper content to loadtest-support by @caalador in #2188
- feat: Enable custom response checks by @caalador in #2191
- chore: log experimental warning by @caalador in #2192
- feat: Add custom thresholds by @caalador in #2190
- fix: make start-server generic by @caalador in #2185
- fix: Failing test should fail recording by @caalador in #2186
- fix: maker stacktrace readable by @caalador in #2195
- feat: Load profile definition by @caalador in #2193
- feat: add playwright record goal by @caalador in #2184
- chore: upgrade selenium version to 4.43.0 by @ZheSun88 in #2196
- feat: collect results into json by @caalador in #2197
- fix: use scan classloader to load application classes by @mcollovati in #2174
- feat: Report as html by @caalador in #2201
- test: wait for sauce labs by @caalador in #2205
- test: update response expectation by @caalador in #2211
- fix: add universal status check by @caalador in #2207
- fix: ignore browser paths by @caalador in #2212
- fix: handle hilla csrf header by @caalador in #2213
- feat: add new playwrightHelper with context by @caalador in #2214
- fix: resolve node IDs at runtime in k6 scripts by @tltv in #2216
- test: add missing vaadin-testbench-loadtest unit tests by @tltv in #2215
- feat: Enable giving checks allowed failure rate by @caalador in #2217
- fix: Update playwright exception message by @caalador in #2220
- feat: add ITs for load testing with k6 by @tltv in #2218
- test: resolve dynamic request indices by @tltv in #2222
- test: fix record-run-testbench assert by @tltv in #2223
- feat: add setupProxy method by @caalador in #2224
- chore: upgrade spring boot 4.1.0-RC1 by @ZheSun88 in #2225
- test: add Grid filter to loadtest demo by @tltv in #2226
- feat: Add warmup run by @caalador in #2228
- fix: rebuild form-encoded POST bodies from postData.params by @tltv in #2229
- fix: guard response.body in generated k6 by @tltv in #2231
- chore: update k6 warmup command by @tltv in #2234
- fix: correct utf characters in k6-summary.js by @tltv in #2235
- fix: Use same default for mojos by @caalador in #2240
- fix: anchor gridKeys regex to grid item rows in generated k6 by @tltv in #2242
- fix: stop JUnit 5 leak from junit6 modules by @mcollovati in #2244
- chore: upgrade selenium version to 4.44.0 by @ZheSun88 in #2245
- chore: upgrade license-checker to 3.0.2 by @vaadin-bot in #2251
- fix: Verify it to check content not step number by @caalador in #2257
- fix: ignore parens inside think-time sleeps by @tltv in #2258
- fix: loadtest plugin it repository by @caalador in #2256
- chore: satisfy artifact deployment metadata requirements by @mshabarov in #2259
- chore: bump project version to 25.2-SNAPSHOT by @ZheSun88 in #2260
- refactor: deprecate
$and$viewin favor offindandfindInViewby @mcollovati in #2261 - chore: upgrade selenium version to 4.45.0 by @ZheSun88 in #2262
- Replace pull_request_target with pull_request in CI workflow by @manolo in #2252
- fix: prevent StackOverflowError converting large mSync values by @tltv in #2269
- ci: run integration tests against local selenium/standalone-chrome by @Artur- in #2232
- chore: upgrade license-checker to 3.1.0 by @ZheSun88 in #2270
Full Changelog: 10.1.0...25.2.0
25.2.0-rc1
What's Changed
- chore: bump project version to 25.2-SNAPSHOT by @ZheSun88 in #2260
- refactor: deprecate
$and$viewin favor offindandfindInViewby @mcollovati in #2261 - chore: upgrade selenium version to 4.45.0 by @ZheSun88 in #2262
Full Changelog: 25.2.0-beta1...25.2.0-rc1
25.2.0-beta1
TestBench pre-release for Vaadin 25.2.
Note: Since Vaadin 25.2, we have aligned Testbench project version with Vaadin version. The APIs stay as compatible as they are in Testbench 10.2.
Full changelog: 10.1...25.2.0-beta1
🆕 Load testing for Vaadin apps
TestBench 25.2 introduces a brand-new load testing tool that turns your existing TestBench (or Playwright) E2E tests into realistic k6 load tests.
Drive your app at scale using the same user-journey code you already maintain — no separate scripting required.
How it works: the toolchain starts your app, runs your E2E test through a recording proxy, captures the browser ↔ server traffic as HAR, and converts it into a k6 script that handles Vaadin specifics (JSESSIONID, CSRF/Hilla CSRF tokens, dynamic UI/Push IDs, dynamic node IDs).
Highlights of the feature:
- Maven plugin (
testbench-converter-plugin) with k6:record, k6:convert, k6:run, plus start-server / stop-server mojos. - Recording from TestBench and Playwright E2E tests.
- Realistic user simulation — automatic, HAR-timing-aware think-time injection between page loads and interactions.
- Declarative load profiles (ramp-up / steady / ramp-down) instead of fixed virtual users counts.
- Custom thresholds (p95 / p99 / abortOnFail) and custom response checks with per-check allowed failure rate.
- Optional warm-up run before the measured load test to prime caches and JIT.
- HTML report and structured JSON results for CI dashboards.
- CSV-backed value collections for parameterized inputs (random users, IDs, etc.).
- Auto-resolution of the Java executable and the k6 binary; commercial license check.
📖 Documentation: https://vaadin.com/docs/next/flow/testing/load-testing
⏯️ Example project setup: https://github.com/vaadin/bookstore-example/tree/v25-loadtest
Other improvements since 10.1
Fixes (UI Unit testing)
- Gradle + Quarkus + multi-module: use the scan classloader to load application route classes, fixing ClassCastException when running the standard test task #2174
- Signals: stabilize TestSignalEnvironment so effect dispatch and result notifications run synchronously on the test thread with proper session-lock handling, eliminating flakiness in signal-driven UI tests #2178
Dependency upgrades
9.5.6
What's Changed
- chore: upgrade selenium version to 4.43.0 (9.5) by @ZheSun88 in #2200
- chore: upgrade selenium to 4.44.0 (9.6) (#2248) (CP: 9.5) by @vaadin-bot in #2250
Full Changelog: 9.5.5...9.5.6
10.1.2
What's Changed
- fix: use scan classloader to load application classes (#2174) (CP: 10.1) by @vaadin-bot in #2203
- chore: upgrade selenium version to 4.44.0 (#2245) (CP: 10.1) by @vaadin-bot in #2246
Full Changelog: 10.1.1...10.1.2
10.0.6
What's Changed
- chore: upgrade selenium version to 4.44.0 (#2245) (CP: 10.0) by @vaadin-bot in #2247
Full Changelog: 10.0.5...10.0.6
9.6.1
What's Changed
- chore: upgrade selenium version to 4.43.0 (9.5) (#2200) (CP: 9.6) by @vaadin-bot in #2202
- chore: upgrade selenium to 4.44.0 (9.6) by @ZheSun88 in #2248
Full Changelog: 9.6.0...9.6.1
10.2.0-alpha5
What's Changed
Load Testing Maven Plugin changes:
- feat: Add warmup run by @caalador in #2228
- fix: rebuild form-encoded POST bodies from postData.params by @tltv in #2229
- fix: guard response.body in generated k6 by @tltv in #2231
- fix: correct utf characters in k6-summary.js by @tltv in #2235
- fix: Use same default for mojos by @caalador in #2240
- fix: anchor gridKeys regex to grid item rows in generated k6 by @tltv in #2242
Full Changelog: 10.2.0-alpha4...10.2.0-alpha5
10.2.0-alpha4
What's Changed
- fix: use scan classloader to load application classes in #2174
Load Testing Maven Plugin changes:
- feat: collect results into json in #2197
- feat: Report as html in #2201
- fix: add universal status check in #2207
- fix: ignore browser paths in #2212
- fix: handle hilla csrf header in #2213
- feat: add new playwrightHelper with context in #2214
- fix: resolve node IDs at runtime in k6 scripts in #2216
- feat: Enable giving checks allowed failure rate in #2217
- fix: Update playwright exception message in #2220
- feat: add setupProxy method by in #2224
Full Changelog: 10.2.0-alpha3...10.2.0-alpha4
10.0.5
What's Changed
- chore: upgrade selenium version to 4.43.0 (10.0) by @ZheSun88 in #2199
- fix: use scan classloader to load application classes (#2174) (CP: 10.0) by @vaadin-bot in #2204
Full Changelog: 10.0.4...10.0.5