Why v6
In v5, each test page had to post its progress and results back to the runner — requiring extra server plumbing, browser-security relaxations (--unsecure), and options like --localhost. v6 flips this: the runner injects a lightweight agent into each page and pulls the state out by polling it directly. The page no longer reaches back to the runner, which removes a lot of old machinery and unlocks the improvements below.
Highlights
-
Faster, more reliable at scale — a single browser instance hosts all parallel pages, with quicker page bootstrap and native caching of UI5 resources across pages.
-
Driver and browser are now separate options — --driver selects the automation engine (puppeteer, playwright, webdriverio, selenium-webdriver); --browser selects the actual browser (chrome, chromium, firefox, webkit, …).
-
Standard report format — reports now follow the Common Test Report Format (CTRF); junit.xml is generated by default alongside report.json and report.html.
-
Live trace visualization — the dynamic HTML progress page is replaced by real-time traces via --log.
-
Uncaught errors fail the page — a page that throws is no longer reported green, surfacing real defects immediately.
AI-assisted migration
A built-in MCP server exposes the live documentation — including the full migration guide — to any MCP-compatible AI client:
bashnpx ui5-test-runner@6 --mcp
Point your assistant at it and have it migrate your config option by option, working from an authoritative, up-to-date source rather than guessing. It's documentation-only (it answers questions; it doesn't run or control tests).
Breaking changes
v6 requires Node.js 24. Several options were renamed, replaced, or removed (coverage and screenshots are now off by default; --libs → --lib; browser flags reworked; --localhost, --capabilities, report generators and others removed).
See the full migration guide for an option-by-option breakdown.
5.14.2 (2026-10-07)
5.14.2 (2026-10-07)
Bug Fixes
- use extend(details) in QUnit.begin to restore QUnit 3 compatibility (#195) (d88093e)
5.14.1 (2026-09-18)
5.14.1 (2026-09-18)
Bug Fixes
- ensures temp filename contains only alphanumerical chars (#191) (9dd9124)
5.14.0 (2026-08-19)
5.14.0 (2026-08-19)
Bug Fixes
- deps: update dependencies (9bf9d3c)
Features
- adjust test (aea4d18)
- allow emulating devices with puppeteer (a97eac7)
6.0.0-beta.5 (2026-06-05)
Features
- new options to handle NPM package installation (d1c5f54)
- npm: working on dynamic installation (8c544a4)
6.0.0-beta.4 (2026-06-01)
Bug Fixes
- adjust cli command detection (7c544d8)
5.13.1 (2026-04-04)
5.13.1 (2026-04-04)
Bug Fixes
- pass environment variables to start command #171 (04444fe)
5.13.0 (2026-01-03)
5.13.0 (2026-01-03)
Bug Fixes
Features
- add json report generator to create json format report (9ef9f2c)
5.12.0 (2025-12-04)
5.12.0 (2025-12-04)
Bug Fixes
--if option should be evaluated even for --capabilities (2132f07)
--if must be allowed for capabilities to enable e2e tests filtering (#163) (f7fd2ef)
- unref start process to unblock the runner (#157) (28ccb1b)
Features
- enables generic library mapping (#163) (0a0a263) : use
--libs *=webapp/resources to map resources/ sub folder
5.11.2 (2025-11-30)
5.11.2 (2025-11-30)
Bug Fixes
- make sure UI5 mapping is used as expected, log version (e3a7105)
5.11.1 (2025-11-21)
5.11.1 (2025-11-21)
Bug Fixes
- use proper concatenation to build final URL (#160) (f70782a)
5.11.0 (2025-11-17)
5.11.0 (2025-11-17)
Bug Fixes
-
add unsecure for ui5 remote tests because of local-network-access-check (43cd0ea) and (ffc48d8)
-
adjust selenium's chrome configuration, add unsecure (5a6021d)
-
handling of browserArgs in a config file (af260f0)
-
implements a failover if not able to kill processes (#157) (6f53cf2)
-
improve test compatibility (windows) and stability (wait for process.exit call) (60d6d1e)
Features
5.10.1 (2025-10-07)
5.10.1 (2025-10-07)
Bug Fixes
- compatibility with ESM projects (#156) (52afe42)
- implement unsecure option for playwright (2bad4f0)
5.10.0 (2025-09-29)
5.10.0 (2025-09-29)
Bug Fixes
- report: absolute / relative path switch (8502d60)
- cors: allows sap-passport (7a72cbc)
- probe: avoids infinite loop with
--deep-probe when no testPageUrls is being extracted (1adf1a3)
- job: default label if not set (d102491)
- e2e: fix report evaluation, checks that it really loads (8a8645b)
- main: improve error reporting on startup (8218cbb)
- leak: improve handle documentation (0aa02d8)
- start: improve start command termination (cf8400e)
- qunit: limit the scope of QUnit hooks to the main window (9e4dc47)
Features
- add hidden option to monitor handles (wip) (721db3e)
- adds a setting for parallel probing (6c42260)
- adjust jest2qunit wrapper (d5c6958)
- compress report (0d78426)
- deep probe (9f53c50)
- detect and report on child process errors (ef19237)
- dump logo and os infos (c1149ef)
- experimental: --qunit-batch-size (715b48a)
- experimental: fast qunit-hooks (46152dd)
- improve documentation of errors (2d6ab66)
- jest2qunit: script to adapt Jest tests to QUnit (dfa1fd2)
- prefer
fetch if available over XMLHttpRequest (0f980e8)
- show Node.js version in the output (e3bd375)
5.9.1 (2025-07-31)
5.9.1 (2025-07-31)
Bug Fixes
- includes values for options to avoid --no-screenshot generating --screenshot (8013bd4)
5.9.0 (2025-07-24)
5.9.0 (2025-07-24)
Bug Fixes
- detect and filter out empty browser arguments (1bd8573)
Features
- introduce "Empty browser argument filtered out" warning (ffbfe60)
- keep track of command line arguments and config file content (c47676e)
5.8.1 (2025-06-23)
5.8.1 (2025-06-23)
Bug Fixes
- bump REserve to 2.3.3 to limit listeners on requests' sockets (a0b3513)
5.8.0 (2025-06-20)
5.8.0 (2025-06-20)
Bug Fixes
- improve detection on non TTY console (4defaa8)
Features
- new --ci option to force output to non interactive (6167abf)
5.7.4 (2025-06-16)
5.7.4 (2025-06-16)
Bug Fixes
- secure generation of junit-xml-report (18bf3b6)
5.7.3 (2025-06-15)
5.7.3 (2025-06-15)
Bug Fixes
- forcibly close REserve and wait for handles to be released (182027d)
5.7.2 (2025-06-08)
5.7.2 (2025-06-08)
Bug Fixes
- add traces during report generation (7bc620e)
- asynchronous check for latest version no more impacting startup time, also check ui5-test-runner itself (a0622a8)
- capabilities: handle case where parent window is "simulated" (happy-dom) (0d59df1)
- capabilities: proper logging of errors (0d67ae0)
- detect leaking TLS sockets that prevents runner termination (7c9a868)
- handle new punyexpr export format (#136) (f839d4d)
- increase default end timeout (1280e81)
- jsdom: also handles jsdomError (d2dd09e)
- jsdom: restores jsdom compatibility (#137) (fe753cd)
5.7.1 (2025-05-21)
5.7.1 (2025-05-21)
Bug Fixes
5.7.0 (2025-04-18)
5.7.0 (2025-04-18)
Bug Fixes
- add missing mapping for log levels (597367b)
- undefined is converted to a unicode character to avoid failure (f6b0427)
Features
- enables the override of localhost hostname #131 (7c0dfad)
5.6.3 (2025-04-18)
5.6.3 (2025-04-18)
Bug Fixes
5.6.2 (2025-03-24)
5.6.2 (2025-03-24)
Bug Fixes
- ensure libs internal redirection url is absolute (4c4ce0f)
5.6.1 (2025-03-20)
5.6.1 (2025-03-20)
Bug Fixes
5.6.0 (2025-03-18)
5.6.0 (2025-03-18)
Features
5.5.2 (2025-03-16)
5.5.2 (2025-03-16)
Bug Fixes
- fails the main command when a batch item fails (#127) (740ded0)
- handle windows case for node command (8d77276)
- timeout makes the test fails even if the page did not start (#111) (6043841)
5.5.1 (2025-03-13)
5.5.1 (2025-03-13)
Bug Fixes
5.5.0 (2025-03-08)
What's Changed
- Improved documentation
--screenshot-on-failure to prevent screenshot when a failure happens
- Introducing Batch mode
--url may use port 0: it is replaced with the runner inner server port
--config parameter to load a configuration file
--end parameter to execute a script after the tests
--start-wait-url and --start-wait-method available in all modes
- Implementing
JUNIT_XML_REPORT_FILENAME (#121)
--watch-folder to watch any folder during legacy or remote mode (#119)
- Fix
--language browser option (#122)
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/5.4.3...5.5.0
5.4.3 (2025-01-28)
What's Changed
- Adjust coding related to incident #116
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/5.4.2...5.4.3
5.4.2 (2025-01-24)
What's Changed
- Reenable screenshot for
webdriverio (see #117)
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/5.4.1...5.4.2
5.4.1 (2025-01-24)
What's Changed
- fix regression in configuration file reading (see #116)
- disable screenshot for
webdriverio (see #117)
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/5.4.0...5.4.1
5.4.0 (2025-01-20)
What's Changed
Note
this should not be a breaking change
-
Fix the deserialization of configuration files (which generates extra parameters), see #109
-
New feature : --start command for remote mode to remove the need of start-server-and-test when running tests that depend on an external command, see #112
-
Improve command line usage documentation
New Contributors
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/5.3.7...5.4.0
5.3.7 (2024-12-01)
What's Changed
- Fix the asynchronous handling of qunit-hooks (#107)
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/5.3.6...5.3.7
5.3.6 (2024-11-21)
What's Changed
- Fix the
junit-xml-report script to support logs without messages
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/5.3.5...5.3.6
5.3.5 (2024-11-15)
What's Changed
- Fix typo issue when detecting pages with no tests
- Improve validation of path to remove trailing path separator (required for
reserve file handler)
- Includes Node 22 in the test grid
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/5.3.4...5.3.5
5.3.4 (2024-09-17)
What's Changed
- Fix issue with XmlHttpRequest object override by Sinon.js (#101)
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/5.3.3...5.4.4
5.3.3 (2024-09-03)
What's Changed
- Adjust
libs mapping to fit REserve expectations (#99)
- Add verbose traces to debug
libs mapping
- Disable coverage collection if coverage is not enabled
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/5.3.2...5.3.3
5.3.2 (2024-08-20)
What's Changed
- Remove
content-length header sent by the client (#98)
- Disable @ui5/cli@4 tests on node < 20 (E2E tests)
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/5.3.1...5.3.2
5.3.1 (2024-07-04)
What's Changed
- Fix
--split-opa for QUnit v1 (#96)
- Adds E2E tests timeout (#97)
- Assess legacy mode without scripts (E2E tests)
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/5.3.0...5.3.1
5.3.0 (2024-06-28)
What's Changed
- Safer detection of UI5 objects to reduce the job description (#92)
- Solve an exception with inbuilt server (#94)
- Better handling of QUnit preconfig (#95)
- Handling of
nyc@17
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/5.2.0...5.3.0
5.2.0 (2024-06-10)
What's Changed
- Unified options between browsers instantiation commands
- Enable extra options for chrome browsers
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/5.1.0...5.2.0
5.1.0 (2024-06-07)
What's Changed
- Documentation improvement (lib parameter, aggregated coverage)
- Migration to REserve 2
- Normalize merged coverage JSON (using absolute path)
- Improve
jsdom integration
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/5.0.0...5.1.0
5.0.0 (2024-04-27)
What's Changed
- Support of
webdriver.io browser automation through the $/webdriver.io.js instantiation command
- Support of Business Application Studio
- Extract all files coverage when
nyc.json's all is set (set by default) :
- A scanner is required for
remote mode
$/scan-ui5.js is provided for @ui5/cli
- Fix coverage extraction for TypeScript projects (served by
@ui5/cli, see the documentation)
- Fix #87 :
--serve-only combined with --coverage breaks file server
- Fix #88 : Generated junit XML report currently missing required property 'classname' for each testcase
- Fix
$/selenium-webdriver.js instantiation command to hide firefox browser
- Improve tests coverage by implementing most common end-to-end scenarios
- Document warnings that appear during execution
Breaking change
Because of the way coverage is calculated when nyc.json's all is set, this version may induce a significant drop in coverage.
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/4.5.1...5.0.0
4.5.1 (2024-04-16)
What's Changed
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/4.5.0...4.5.1
4.5.0 (2024-04-13)
What's Changed
- Add
--split-opa to automatically split OPA journeys
- Add time information in the junit xml report
- fix issue with qunit-hook : page url is now grabbed from topmost window
selenium-webdriver
- fix chrome binary option
- reduce traces for chrome
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/4.4.0...4.5.0
4.4.0 (2024-03-17)
What's Changed
- Add
--offline to limit network usage (demos)
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/4.3.2...4.4.0
4.3.2 (2024-03-16)
What's Changed
- Fix test page URLs by removing the # part
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/4.3.1...4.3.2
4.3.1 (2024-03-08)
What's Changed
- Fix output when using
--serve-only
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/4.3.0...4.3.1
4.3.0 (2024-03-07)
What's Changed
- New option
--preload to preload UI5 libraries in legacy mode
- Fix output to avoid flickering
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/4.2.1...4.3.0
4.2.1 (2024-02-27)
What's Changed
- New option
--page-close-timeout to adds a small delay before closing the browser on done callback (some QUnit tests are loaded asynchronously and triggers testStart right after). Defaulted to 250ms
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/4.2.0...4.2.1
4.2.0 (2024-02-26)
What's Changed
- New option
--alternate-npm-path
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/4.1.1...4.2.0
4.1.1 (2024-02-24)
What's Changed
- Fixed an issue with UI5 object deserialization
- Prevent error cascading on QUnit hooks
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/4.1.0...4.1.1
4.1.0 (2024-02-19)
What's Changed
- Improve handling of loose qunit (when started before the tests are loaded)
- Progress monitoring now reconnects when the server becomes available
- Scripts are injected through SAPUI5 resources and through browser evaluation (when UI5 resources are using CDN)
- Regular updates are generated in non interactive output (CI/CD)
- Map local sources for remote coverage if found below
webapp
- Document how to demo main features
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/4.0.0...4.1.0
4.0.0 (2024-02-08)
What's Changed
New Contributors
Breaking Change
- Dropping support of Node.js 16
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/3.3.5...4.0.0
3.3.5 (2023-10-08)
What's Changed
- Fix : playwright
--visible option now working
- Feature : supports QUnit tests starting before the tests are declared (can be blocked with
--qunit-strict)
- Fix : repair code coverage when combining
--url and legacy mode
- Tests : JS and TS samples are now tested to ensure nothing gets broken
- Documentation : various improvements
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/3.3.4...3.3.5
3.3.4 (2023-10-02)
What's Changed
- Fix : checking files locally before downloading them for code coverage #64
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/3.3.3...3.3.4
3.3.3 (2023-09-28)
What's Changed
- Feature : improve documentation and coverage proxy feature
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/3.3.2...3.3.3
3.3.2 (2023-09-25)
What's Changed
- Fix: timed out page are reported as errors
- Fix #61 : text report width adjusted to console width
- Fix #62 : text report generation error
- Feature : include coverage report in text output, also check for coverage percentage
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/3.3.1...3.3.2
3.3.1 (2023-09-22)
What's Changed
- Disables
puppeteer screenshot for Node.js version 16, see puppeteer issue
- Fix #60 : UI5 mapping is disabled only if
no-ui5 is used
- Improve experimental coverage feature to prevent crash when instrumenting files in parallel
- Fix unhandled file content to display the originating page
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/3.3.0...3.3.1
3.3.0 (2023-09-21)
What's Changed
- documentation: using mkdocs by @marianfoo in https://github.com/ArnaudBuchholz/ui5-test-runner/pull/54
- fix: playwright initialization (#57)
- feature: ability to extract coverage in URL mode improved (#56)
- feature: reports show the test type (unit or OPA)
- feature: text report provides failure details (#53)
New Contributors
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/3.2.0...3.3.0
3.2.0 (2023-06-06)
- Adds playwright support, including video recording and HAR generation
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/3.1.1...3.2.0
3.1.1 (2023-06-01)
- Associates URL to folder name in the output
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/3.1.0...3.1.1
3.1.0 (2023-05-30)
- Adds a link to download
ui5-test-runner-job.json from the report
- Enables code coverage with
--url (code must first be instrumented with nyc)
- Extract some settings from
nyc.json
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/3.0.0...3.1.0
3.0.0-2 (2023-05-08)
2.0.5 (2023-04-14)
- Fix #45 : nyc issue
- Fix #46 : screenshots are taken in case of test failure even if
--no-screenshot is used. Now this screenshot appears in the report
- Fix #47 : when the report is embedded in an iFrame through
srcdoc, navigation was not working
- Improve time logging in the output
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/2.0.4...2.0.5
2.0.4 (2023-04-05)
- Improve external packages detection (for instance: puppeteer) by using
require before trying to load from the local or global npm path
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/2.0.3...2.0.4
2.0.3 (2023-03-30)
- Fix
junit-xml-report generation for failures without source
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/2.0.2...2.0.3
2.0.2 (2023-03-28)
- Fix #43 Report not generated
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/2.0.1...2.0.2
2.0.1 (2023-03-23)
- Fix #42: Change precedence of mappings to override default ones
- Improve job serialization (RegEx were missing)
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/2.0.0...2.0.1
2.0.0 (2023-03-06)
Breaking change
Version 2.0.0 does not work like 1.x.y, see documentation
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/1.1.5...2.0.0
1.1.5 (2022-10-26)
Dropping support of Node 12.x
- Latest version of puppeteer does not support it anymore
What's Changed
New Contributors
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/1.1.4...1.1.5
1.1.4 (2022-04-17)
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/1.1.3...1.1.4
1.1.3 (2021-11-24)
What's Changed
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/1.1.2...1.1.3
1.1.2 (2021-10-27)
What's Changed
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/1.1.1-fix...1.1.2
1.1.1-fix (2021-10-26)
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/1.1.0...1.1.1-fix
1.1.0 (2021-10-26)
What's Changed
Full Changelog: https://github.com/ArnaudBuchholz/ui5-test-runner/compare/1.0.7...1.1.0
1.0.7 (2021-09-05)
- Better handling of browser failure (
browserRetry)
- Preloading of
ui5-test-runner.json
- Introduces
-- to pass parameters to the browser instantiation command
- Fix #17
1.0.6 (2021-08-24)
1.0.5 (2021-08-24)
1.0.4 (2021-07-16)
1.0.3 (2021-07-03)
1.0.2 (2021-06-29)
- Fix keepAlive mode
- Node 16.x support
1.0.0 (2021-06-01)