What changed in webdriverio from 8 to 9
14 releases numbered after v8.48.3 up to and including v9.31.5, stable releases only. v8.48.3 and v9.31.5 are the newest stable releases of 8 and 9 we track; this page follows them as new ones ship.
- 1 removes or deprecates something
66 changes across 14 releases
Added 10
- Review Multi-remote select implementations and remove filter
- Beta ElementArray under feature flag for multiRemote.$$() returning MultiRemoteElement[]
- Support for global errors and global attachments in wdio-allure-reporter
- Enhance multi-remote instance/element support with select & filter methods
- Add title path to wdio-allure-reporter
- Support multi-element $$() in Expect
- Support TypeScript files in CLI REPL
- Support one-to-many Test-Case-ID tagging in browserstack-service
- Migrate create-wdio to @wdio/electron-service and add Tauri service
- Add bidi network data
Changed 6
- Install @serenity-js/html-reporter instead of @senity-js/serenity-bdd in create-wdio
- Improve wdio-browserstack-service reloadsession finished metadata handling
- Honor the skipped status in wdio-browserstack-service and wdio-types
- Omit unset accessibility config in browserstack-service
- Update gRPC message limit in WDIO-v9 to 20 MB
- Redact username and accesskey in BrowserStack service
Fixed 48
- Handle BiDi no such node errors as stale
- Require all classic cookie filter attributes
- Track document element per context in webdriverio
- Serialize IPv6 BiDi WebSocket candidates correctly in webdriver
- Fix typing for expect-wdio/api
- Retry spec files when session creation fails in wdio-local-runner
- Record matching mock responses even when not blocked
- Add .cts to supported file extensions in wdio-config
- Keep an undefined element that passes filter in wdio-utils
- Respect WEBDRIVER_CACHE_DIR during driver setup
- Retry requests aborted by connectionRetryTimeout
- Reset current context when browsing context is destroyed
- Scroll by deltaX/deltaY in scrollIntoView wheel action
- Guard ShadowRootManager preload script against partial-Bidi remotes
- Compose element command overrides
- Don't collapse Windows paths to drive letter in Allure reporter toPackageLabel
- Make WebDriver Bidi response timeout configurable
- Guard Object.keys call on stringified request body in webdriver
- Report scenarios as testcases with cucumber Opts.scenarioLevelReporter in wdio-junit-reporter
- Update es-lint-plugin globals peer dependencies
- Pin fast-xml-parser to 5.2.5 on the AWS SDK path to fix docs deploy
- Update CDDL and regenerate to fix null literal
- Stop unrelated shadow roots leaking into scoped element lookups
- Bump geckodriver to 6.1.1 to fix geckoDriverVersion CLI leak
- Attach suite-level before/after all hook steps to every test in allure-reporter
- Report mocha hooks in the CLI/testhub flow for browserstack-service
- Coerce stringified boolean accessibility options in browserstack-service
- Finalize orphaned test runs on interrupted exit in browserstack-service
- Route WDIO CLI-flow App Automate sessions to app-accessibility
- Skip a11y scan for BiDi window/context commands in browserstack-service
- Ship a11y Browser type augmentations in wdio-browserstack-service
- Patch minimatch instances missed by prior override
- Upgrade yauzl to 3.4, fixing node hanging zipping issues
- Skip isConnected check for non-shadow element scope in BiDi
- Make `waitForResponse` wait for networkCollector's response
- Use supported EdgeDriver CDN in wdio-utils
- Logger not CommonJS compliant
- Resolve etxtbsy issue (file busy error) at spawn in wdio-browserstack-service
- Fix cddl generation
- Skip desktop browser download when androidPackage is set
- Call afterSession hook on session init failure and guard worker IPC against kill race
- Prevent shadow root memory leak in SPA navigation
- Fix shadow element stale
- Fix Allure reporter historyId to use capability key instead of cid
- Fix disableElementImplicitWait not working when defined too early
- Fix startup failure in appium-service caused by Appium stderr log output
- Fix TypeScript 7 compatibility in wdio-globals
- Revert queryAppState protocol rename and remove mobile command wrapper
Removed 1
- Remove @wdio/browserstack-service from this repository
Security 1
- Fixed vulnerabilities
One release in the range carries no categorized changes yet: v9.31.1. Their original notes, where the vendor published any, are below.
Original release notes, newest first
The list above is our reading of these notes; the originals from webdriverio are here, one fold per release.
v9.31.5
v9.31.5 (2026-08-29)
:rocket: New Feature
wdio-utils,webdriverio- #15538 feat: UNSTABLE Review Multi-remote
selectimplementations and remove filter (@dprevost-LMI)
- #15538 feat: UNSTABLE Review Multi-remote
:bug: Bug Fix
wdio-utils,webdriverio- #15538 feat: UNSTABLE Review Multi-remote
selectimplementations and remove filter (@dprevost-LMI)
- #15538 feat: UNSTABLE Review Multi-remote
webdriverio
:memo: Documentation
Committers: 3
- David Prevost (@dprevost-LMI)
- Fnine59 (@Fnine59)
- Martsin Lazouski (@ML642)
v9.31.4
v9.31.4 (2026-08-27)
:rocket: New Feature
webdriverio- #15532 feat: Beta ElementArray under feature flag for
multiRemote.$$()e.g. MultiRemoteElement[] (@dprevost-LMI)
- #15532 feat: Beta ElementArray under feature flag for
wdio-allure-reporter
:bug: Bug Fix
webdriveriowebdriver
:memo: Documentation
webdriverio- #15531 docs(webdriverio): document the $$ async iterator methods (@devangpratap)
Committers: 5
- Alex (@todti)
- David Prevost (@dprevost-LMI)
- Martsin Lazouski (@ML642)
- @Badisi
- @devangpratap
v9.31.3
v9.31.3 (2026-08-25)
:bug: Bug Fix
eslint-plugin-wdio,wdio-browser-runner,wdio-globals,wdio-jasmine-framework,wdio-local-runner,wdio-runner,wdio-webdriver-mock-service- #15518 fix: typing for
expect-wdio/api(@dprevost-LMI)
- #15518 fix: typing for
wdio-local-runner,wdio-runner- #15513 fix(@wdio/local-runner): retry spec files when session creation fails (@lorenaskosinskas)
:memo: Documentation
- Other
- #15524 docs(website): added Serenity/JS HTML Reporter (@jan-molak)
- #15526 docs(devtools): document the Python adapter as language tabs on the S… (@vishnuv688)
- #15520 doc: A11y doc update (@vishnuv688)
webdriverio- #15510 docs(sponsor): add Momentic as Premium sponsor (@christian-bromann)
:house: Internal
- #15517 fix(docs): unbreak non-English docs builds after flowchart component removal (@AutomatedTester)
Committers: 6
- Christian Bromann (@christian-bromann)
- David Burns (@AutomatedTester)
- David Prevost (@dprevost-LMI)
- Jan Molak (@jan-molak)
- Lorenas (@lorenaskosinskas)
- Vishnu Vardhan (@vishnuv688)
v9.31.2
v9.31.2 (2026-08-21)
:rocket: New Feature
wdio-types,wdio-utils,webdriverio- #15459 feat: UNSTABLE Enhance multi-remote instance/element support with
select&filter(@dprevost-LMI)
- #15459 feat: UNSTABLE Enhance multi-remote instance/element support with
wdio-allure-reporter- #15514 Add title path (@formaceft-93)
:bug: Bug Fix
webdriveriowdio-config- #15511 fix: add .cts to supported file extensions (@mauriciolauffer)
:nail_care: Polish
create-wdio- #15515 fix(create-wdio): install @serenity-js/html-reporter instead of @senity-js/serenity-bdd (@jan-molak)
Committers: 5
- David Prevost (@dprevost-LMI)
- Dmitrii (@formaceft-93)
- Jan Molak (@jan-molak)
- Mauricio Lauffer (@mauriciolauffer)
- @Badisi
v9.31.1
No updates!
v9.31.0
⚠️ Partially failed release. Please use v9.31.1 instead.
v9.31.0 (2026-08-18)
:rocket: New Feature
eslint-plugin-wdio,wdio-browser-runner,wdio-globals,wdio-jasmine-framework,wdio-local-runner,wdio-runner- #15471 feat: Expect's multi-element
$$()support (@dprevost-LMI)
- #15471 feat: Expect's multi-element
:bug: Bug Fix
wdio-utils- #15480 fix(@wdio/utils): keep an undefined element that passes filter (@luantaraschi)
wdio-utils,webdriverwebdriverwdio-cliwdio-browser-runner,webdriveriowebdriveriowdio-utils,webdriverio- #15493 fix(wdio-utils): compose element command overrides (@KuznetsovRoman)
wdio-allure-reporter- #15502 fix(allure-reporter): don't collapse Windows paths to drive letter in toPackageLabel (@mccmrunal)
- Other
- #15463 Fix/win pnpm spawn enoent (@mccmrunal)
:memo: Documentation
- Other
- #15492 docs(website): publish a machine-readable surface and un-hide the flowcharts (@AutomatedTester)
- #15489 doc: A11y documentation update (@vishnuv688)
webdriverio- #15490 docs: make generated API command pages machine-readable (@AutomatedTester)
- #15491 docs: fix API doc generator output for machine extraction (@AutomatedTester)
wdio-appium-service- #15501 docs(appium-service): document appiumStartTimeout option (@wswebcreation)
:house: Internal
- #15503 ci: Force
'no-sandbox'on macOS fixingFailed to create a sessionfor Chromiun (@dprevost-LMI) - #15484 ci: fix alpine e2e issue by freezing pnpm to 10 (@dprevost-LMI)
- #15463 Fix/win pnpm spawn enoent (@mccmrunal)
Committers: 13
- Brian Birtles (@birtles)
- David Burns (@AutomatedTester)
- David Prevost (@dprevost-LMI)
- Dimitar Mihaylov (@mitk0936)
- Luan Taraschi (@luantaraschi)
- MRUNAL CHAUDHARI (@mccmrunal)
- Navin Chandra (@navin772)
- Roman Kuznetsov (@KuznetsovRoman)
- Shixi Li (@shixi-li)
- Swastik Baranwal (@Delta456)
- Vishnu Vardhan (@vishnuv688)
- Wim Selles (@wswebcreation)
- @Badisi
v9.30.1
v9.30.1 (2026-08-03)
:bug: Bug Fix
wdio-browser-runner,wdio-types,webdriver- #15461 fix(webdriver): make WebDriver Bidi response timeout configurable (@mccmrunal)
webdriver- Other
- #15455 Fix/deps security overrides (@mccmrunal)
- #15453 Fix/deps security overrides (@mccmrunal)
wdio-junit-reporter- #15452 fix(wdio-junit-reporter): report scenarios as testcases with cucumber Opts.scenarioLevelReporter (@mccmrunal)
eslint-plugin-wdio- #15441 fix: Update es-lint-plugin globals peer deps (@dprevost-LMI)
:memo: Documentation
- #15369 Added trace player devtools doc for webpage (@vishnuv688)
:house: Internal
- Other
- #15448 chore(deps): bump preact from 10.26.9 to 10.29.8 (@dependabot[bot])
- #15447 chore(deps): bump minimatch from 10.1.1 to 10.2.5 (@dependabot[bot])
- #15451 fix(deps): pin fast-xml-parser to 5.2.5 on the AWS SDK path to fix docs deploy (@AutomatedTester)
wdio-browserstack-service- #15404 chore(@wdio/browserstack-service): remove service from this repository (@christian-bromann)
Committers: 7
- Christian Bromann (@christian-bromann)
- David Burns (@AutomatedTester)
- David Prevost (@dprevost-LMI)
- MRUNAL CHAUDHARI (@mccmrunal)
- Michael Naumov (@mnaoumov)
- Mykyta Chursin (@unickq)
- Vishnu Vardhan (@vishnuv688)
v9.30.0
v9.30.0 (2026-07-21)
:eyeglasses: Spec Compliancy
wdio-protocols,webdriver- #15370 fix: update CDDL and regenerate to fix null litteral (@dprevost-LMI)
:bug: Bug Fix
webdriverio- #15400 fix(webdriverio): stop unrelated shadow roots leaking into scoped element lookups (@mccmrunal)
wdio-browser-runner,wdio-utils- #15399 fix(deps): bump geckodriver to 6.1.1 to fix geckoDriverVersion CLI leak (@mccmrunal)
wdio-allure-reporter- #15390 PR: Bug Fix 🐛fix(allure-reporter): attach suite-level before/after all hook steps to every test (@mccmrunal)
wdio-browserstack-service- #15376 fix(browserstack-service): report mocha hooks in the CLI/testhub flow [SDK-6809] (@pranay-v29)
- #15381 fix(browserstack-service): coerce stringified boolean accessibility options (@xxshubhamxx)
- #15382 fix(browserstack-service): finalize orphaned test runs on interrupted exit (SDK-4671) (@xxshubhamxx)
- #15383 fix(a11y): route WDIO CLI-flow App Automate sessions to app-accessibility (SDK-3813) (@xxshubhamxx)
- #15380 fix(browserstack-service): skip a11y scan for BiDi window/context commands (SDK-5047) (@xxshubhamxx)
- #15379 fix(wdio-browserstack-service): ship a11y Browser type augmentations (@harshit-browserstack)
wdio-protocols,webdriver- #15370 fix: update CDDL and regenerate to fix null litteral (@dprevost-LMI)
:house: Internal
wdio-config- #15398 fix(deps): patch minimatch instances missed by prior override (@mccmrunal)
- Other
- #15396 Mrunal/vulnerabilities fixes (@mccmrunal)
wdio-browserstack-service,webdriver- #15393 chore: Fixed vulnerabilities (@mccmrunal)
- #15358 fix: Upgrade yauzl to 3.4, fixing node hanging zipping issues
Committers: 6
- David Prevost (@dprevost-LMI)
- MRUNAL CHAUDHARI (@mccmrunal)
- Pranay Varma (@pranay-v29)
- Shubham Garg (@xxshubhamxx)
- Wim Selles (@wswebcreation)
- @harshit-browserstack
v9.29.1
v9.29.1 (2026-06-26)
:rocket: New Feature
wdio-browserstack-service
:bug: Bug Fix
wdio-logger- #15354 fix: Force logger build by adjusting security doc on pattern masking (@dprevost-LMI)
webdriverio- #15353 fix(webdriverio): skip isConnected check for non-shadow element scope in BiDi (@mccmrunal)
:memo: Documentation
wdio-logger- #15354 fix: Force logger build by adjusting security doc on pattern masking (@dprevost-LMI)
- Other
Committers: 5
- Anish Kumar Sinha (@anish353)
- David Prevost (@dprevost-LMI)
- MRUNAL CHAUDHARI (@mccmrunal)
- Shubham Garg (@xxshubhamxx)
- Vince Graics (@Winify)
v9.29.0
v9.29.0 (2026-06-18)
:bug: Bug Fix
webdriverio- #15293 fix: make
waitForResponsewait for networkCollector's response (@dprevost-LMI)
- #15293 fix: make
wdio-utils- #15305 fix(wdio-utils): use supported EdgeDriver CDN (@cyphercodes)
:nail_care: Polish
wdio-browserstack-service- #15316 Fix/wdio reloadsession finishedmetadata (@shivamku-BS)
:house: Internal
- #15320 ci: fix ubuntu e2e failures (@dprevost-LMI)
Committers: 6
- David Prevost (@dprevost-LMI)
- MRUNAL CHAUDHARI (@mccmrunal)
- Rayan Salhab (@cyphercodes)
- Shivam Kumar (@shivamku-BS)
- Vince Graics (@Winify)
- Vishnu Vardhan (@vishnuv688)
v9.28.0
v9.28.0 (2026-06-10)
:bug: Bug Fix
- #15291 fix: logger not cjs compliant (@dprevost-LMI)
:house: Internal
- Other
- #15292 ci: Fix unzip hangs issue with node 24.16 (@dprevost-LMI)
wdio-browserstack-service,wdio-protocols,webdriver- #15283 fix: main pipeline failures & browserStack
config.accessibility& more (@dprevost-LMI)
- #15283 fix: main pipeline failures & browserStack
Committers: 9
- Aakash Hotchandani (@AakashHotchandani)
- David Prevost (@dprevost-LMI)
- JinHyuk Sung (@sjh9714)
- Kamalpreet Kaur (@kamal-kaur04)
- MRUNAL CHAUDHARI (@mccmrunal)
- Noritaka Kobayashi (@noritaka1166)
- Vishnu Vardhan (@vishnuv688)
- Wim Selles (@wswebcreation)
- @harshit-browserstack
v9.27.2
v9.27.2 (2026-05-26)
:rocket: New Feature
create-wdio,wdio-xvfb- #15235 feat(create-wdio): migrate to @wdio/electron-service and add Tauri service (@goosewobbler)
:bug: Bug Fix
wdio-browserstack-service- #15246 fix: resolve etxtbsy issue(file busy error) at spawn (@shivamku-BS)
:nail_care: Polish
wdio-browserstack-service,wdio-types- #15232 Honouring the skipped status (@Bhargavi-BS)
wdio-browserstack-service- #15215 fix(browserstack-service): omit unset accessibility config (@kbrooks)
- #15201 Update gRPC message limit in WDIO-v9 to 20 MB (@xxshubhamxx)
:memo: Documentation
- #15255 Selenium devtools doc (@vishnuv688)
Committers: 11
- Christian Bromann (@christian-bromann)
- Kamalpreet Kaur (@kamal-kaur04)
- Kyle Brooks (@kbrooks)
- MRUNAL CHAUDHARI (@mccmrunal)
- Shivam Kumar (@shivamku-BS)
- Shubham Garg (@xxshubhamxx)
- Vishnu Vardhan (@vishnuv688)
- Wim Selles (@wswebcreation)
- YASH JAIN (@osho-20)
- @goosewobbler
- bhargavi vaidya (@Bhargavi-BS)
v9.27.1
v9.27.1 (2026-04-30)
:eyeglasses: Spec Compliancy
wdio-protocols,wdio-types,webdriver,webdriverio- #15158 fix: cddl generation (@dprevost-LMI)
:rocket: New Feature
wdio-protocols,wdio-types,webdriverio- #15153 feat: Add bidi network data (@dprevost-LMI)
:bug: Bug Fix
wdio-types,wdio-utils- #15204 fix(utils): skip desktop browser download when androidPackage is set (@mccmrunal)
wdio-local-runner,wdio-runner- #15193 fix: call afterSession hook on session init failure and guard worker IPC against kill race (@mccmrunal)
webdriveriowdio-allure-reporterwdio-protocols,wdio-types,webdriverio- #15153 feat: Add bidi network data (@dprevost-LMI)
wdio-runner- #15186 fix:
disableElementImplicitWaitnot working when defined too early (@dprevost-LMI)
- #15186 fix:
wdio-protocols,wdio-types,webdriver,webdriverio- #15158 fix: cddl generation (@dprevost-LMI)
:nail_care: Polish
wdio-browserstack-service- #15206 V9 username accesskey redaction (@minavkaria-bs)
wdio-protocols,wdio-types,webdriver,webdriverio- #15158 fix: cddl generation (@dprevost-LMI)
:memo: Documentation
wdio-protocols,wdio-types,webdriver,webdriverio- #15158 fix: cddl generation (@dprevost-LMI)
:house: Internal
wdio-protocols,wdio-types,webdriver,webdriverio- #15158 fix: cddl generation (@dprevost-LMI)
webdriverio- #15173 ci: enable vitest typecheck tests (@dprevost-LMI)
Committers: 9
- #QualityWithMillan (@eaccmk)
- Alex (@todti)
- David Prevost (@dprevost-LMI)
- Fabien CELLIER (@lacell75)
- MRUNAL CHAUDHARI (@mccmrunal)
- Vishnu Vardhan (@vishnuv688)
- YASH JAIN (@osho-20)
- @Badisi
- @minavkaria-bs
v9.27.0
v9.27.0 (2026-03-23)
:bug: Bug Fix
wdio-appium-service- #15155 fix(appium-service): fix startup failure caused by Appium stderr log output (@wswebcreation)
wdio-globalswdio-protocols,webdriverio- #15159 fix(webdriverio): revert queryAppState protocol rename and remove mobile command wrapper (@wswebcreation)
Committers: 2
- Michael Scrivo (@mscrivo)
- Wim Selles (@wswebcreation)