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.

66 changes across 14 releases

Added 10

v9.31.5

  • Review Multi-remote select implementations and remove filter

v9.31.4

  • Beta ElementArray under feature flag for multiRemote.$$() returning MultiRemoteElement[]
  • Support for global errors and global attachments in wdio-allure-reporter

v9.31.2

  • Enhance multi-remote instance/element support with select & filter methods
  • Add title path to wdio-allure-reporter

v9.31.0

  • Support multi-element $$() in Expect
  • Support TypeScript files in CLI REPL

v9.29.1

  • Support one-to-many Test-Case-ID tagging in browserstack-service

v9.27.2

  • Migrate create-wdio to @wdio/electron-service and add Tauri service

v9.27.1

  • Add bidi network data
Changed 6

v9.31.2

  • Install @serenity-js/html-reporter instead of @senity-js/serenity-bdd in create-wdio

v9.29.0

  • Improve wdio-browserstack-service reloadsession finished metadata handling

v9.27.2

  • 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

v9.27.1

  • Redact username and accesskey in BrowserStack service
Fixed 48

v9.31.5

  • Handle BiDi no such node errors as stale
  • Require all classic cookie filter attributes

v9.31.4

  • Track document element per context in webdriverio
  • Serialize IPv6 BiDi WebSocket candidates correctly in webdriver

v9.31.3

  • Fix typing for expect-wdio/api
  • Retry spec files when session creation fails in wdio-local-runner

v9.31.2

  • Record matching mock responses even when not blocked
  • Add .cts to supported file extensions in wdio-config

v9.31.0

  • 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

v9.30.1

  • 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

v9.30.0

  • 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

v9.29.1

  • Skip isConnected check for non-shadow element scope in BiDi

v9.29.0

  • Make `waitForResponse` wait for networkCollector's response
  • Use supported EdgeDriver CDN in wdio-utils

v9.28.0

  • Logger not CommonJS compliant

v9.27.2

  • Resolve etxtbsy issue (file busy error) at spawn in wdio-browserstack-service

v9.27.1

  • 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

v9.27.0

  • 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

v9.30.1

  • Remove @wdio/browserstack-service from this repository
Security 1

v9.30.0

  • 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 select implementations and remove filter (@dprevost-LMI)
:bug: Bug Fix
  • wdio-utils, webdriverio
    • #15538 feat: UNSTABLE Review Multi-remote select implementations and remove filter (@dprevost-LMI)
  • webdriverio
    • #15535 fix(webdriverio): handle BiDi no such node errors as stale (@Fnine59)
    • #15537 fix(webdriverio): require all classic cookie filter attributes (@ML642)
:memo: Documentation
  • wdio-protocols, webdriverio
Committers: 3

View originalPermalink

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)
  • wdio-allure-reporter
    • #15278 feat(wdio-allure-reporter): add support for global errors and global attachments (@todti)
:bug: Bug Fix
  • webdriverio
    • #15478 fix(webdriverio): track document element per context (@Badisi)
  • webdriver
    • #15516 fix(webdriver): serialize IPv6 BiDi WebSocket candidates correctly (@ML642)
:memo: Documentation
Committers: 5

View originalPermalink

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
  • wdio-local-runner, wdio-runner
:memo: Documentation
:house: Internal
Committers: 6

View originalPermalink

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)
  • wdio-allure-reporter
:bug: Bug Fix
  • webdriverio
    • #15479 fix(webdriverio): record matching mock responses even when not blocked (@Badisi)
  • wdio-config
:nail_care: Polish
  • create-wdio
    • #15515 fix(create-wdio): install @serenity-js/html-reporter instead of @senity-js/serenity-bdd (@jan-molak)
Committers: 5

View originalPermalink

v9.31.1
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
:bug: Bug Fix
  • wdio-utils
  • wdio-utils, webdriver
  • webdriver
    • #15504 fix(webdriver): retry requests aborted by connectionRetryTimeout (@birtles)
  • wdio-cli
  • wdio-browser-runner, webdriverio
  • webdriverio
    • #15477 fix(webdriverio): reset current context when browsing context is destroyed (@Badisi)
    • #15473 fix(webdriverio): scroll by deltaX/deltaY in scrollIntoView wheel action (@wswebcreation)
    • #15350 fix(webdriverio): guard ShadowRootManager preload script against partial-Bidi remotes (@navin772)
  • wdio-utils, webdriverio
  • wdio-allure-reporter
    • #15502 fix(allure-reporter): don't collapse Windows paths to drive letter in toPackageLabel (@mccmrunal)
  • Other
:memo: Documentation
:house: Internal
Committers: 13

View originalPermalink

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
    • #15221 fix(webdriver): guard Object.keys call on stringified request body (@mnaoumov)
  • Other
  • wdio-junit-reporter
    • #15452 fix(wdio-junit-reporter): report scenarios as testcases with cucumber Opts.scenarioLevelReporter (@mccmrunal)
  • eslint-plugin-wdio
:memo: Documentation
:house: Internal
Committers: 7

View originalPermalink

v9.30.0
v9.30.0 (2026-07-21)
:eyeglasses: Spec Compliancy
  • wdio-protocols, webdriver
: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
:house: Internal
  • wdio-config
    • #15398 fix(deps): patch minimatch instances missed by prior override (@mccmrunal)
  • Other
  • wdio-browserstack-service, webdriver
    • #15393 chore: Fixed vulnerabilities (@mccmrunal)
    • #15358 fix: Upgrade yauzl to 3.4, fixing node hanging zipping issues
Committers: 6

View originalPermalink

v9.29.1
v9.29.1 (2026-06-26)
:rocket: New Feature
  • wdio-browserstack-service
    • #15335 feat(browserstack-service): one-to-many Test-Case-ID tagging (setCust… (@anish353)
:bug: Bug Fix
  • wdio-logger
  • webdriverio
    • #15353 fix(webdriverio): skip isConnected check for non-shadow element scope in BiDi (@mccmrunal)
:memo: Documentation
  • wdio-logger
  • Other
    • #15341 docs(tracing): Add blog post for Tracing Mode in devtools service (@Winify)
Committers: 5

View originalPermalink

v9.29.0
v9.29.0 (2026-06-18)
:bug: Bug Fix
:nail_care: Polish
:house: Internal
Committers: 6

View originalPermalink

v9.28.0
v9.28.0 (2026-06-10)
:bug: Bug Fix
:house: Internal
  • Other
  • wdio-browserstack-service, wdio-protocols, webdriver
    • #15283 fix: main pipeline failures & browserStack config.accessibility & more (@dprevost-LMI)
Committers: 9

View originalPermalink

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
:nail_care: Polish
  • wdio-browserstack-service, wdio-types
  • wdio-browserstack-service
:memo: Documentation
Committers: 11

View originalPermalink

v9.27.1
v9.27.1 (2026-04-30)
:eyeglasses: Spec Compliancy
  • wdio-protocols, wdio-types, webdriver, webdriverio
:rocket: New Feature
: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)
  • webdriverio
  • wdio-allure-reporter
    • #15112 Fix Allure reporter historyId — use capability key instead of cid (@todti)
  • wdio-protocols, wdio-types, webdriverio
  • wdio-runner
  • wdio-protocols, wdio-types, webdriver, webdriverio
:nail_care: Polish
:memo: Documentation
  • wdio-protocols, wdio-types, webdriver, webdriverio
:house: Internal
Committers: 9

View originalPermalink

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-globals
  • wdio-protocols, webdriverio
    • #15159 fix(webdriverio): revert queryAppState protocol rename and remove mobile command wrapper (@wswebcreation)
Committers: 2

View originalPermalink