npm webdriverio 10.1.0
v10.1.0

2 hours ago

v10.1.0 (2026-10-18)

πŸ’₯ Breaking Change

  • eslint-plugin-wdio, wdio-browser-runner, wdio-globals, wdio-jasmine-framework, wdio-local-runner, wdio-runner, wdio-session

πŸš€ New Feature

  • wdio-cucumber-framework, wdio-mocha-framework, wdio-reporter, wdio-runner, wdio-types, wdio-utils, wdio-webdriver-mock-service, webdriver, webdriverio
    • #16058 feat(parallel): Parallel it() execution via BiDi browsing contexts (@Winify)

πŸ› Bug Fix

  • webdriverio
    • #16133 fix(webdriverio): give the page its scroll events before a click in Safari on iOS (@plum117)
    • #16126 fix(webdriverio): run a command again with the new element id after a stale element (@plum117)
    • #16082 fix(webdriverio): emulate a device when Chrome says viewport meta is not implemented (@plum117)
    • #16077 fix(webdriverio): wait once for an element that the page removed (revert #15627) (@plum117)
    • #16066 fix(webdriverio): a stale list item whose index is gone is not found, like $() (@plum117)
    • #16067 fix(webdriverio): pass element arguments of execute() in BiDi as in Classic (@plum117)
    • #16064 fix(webdriverio): send the screenshot events of WebDriver BiDi screenshots to the reporters (@plum117)
    • #16059 fix(webdriverio): find a re-rendered element again in the BiDi checks of isDisplayed, isFocused and isStable (@plum117)
    • #16061 fix(webdriverio): catch a failed tree request in the context event handlers (@plum117)
    • #16057 fix(webdriverio): type at() and slice() of a $$() list before it is awaited (@plum117)
    • #16055 fix(webdriverio): name the custom strategy in the messages of a custom$ element (@plum117)
    • #16049 fix(webdriverio): give the page its scroll events before a click (@plum117)
    • #16050 fix(webdriverio): use the not found item of $$()[index] once the list reaches the index (@plum117)
    • #16044 fix(webdriverio): give a not found item per instance for a multi-remote index that the list never reaches (@plum117)
    • #16043 fix(webdriverio): give a not found element for a custom$$ index that the list never reaches (@plum117)
    • #16041 fix(webdriverio): give a not found element for a $$() index that the list never reaches (@plum117)
    • #16033 fix(webdriverio): scroll the element into view before a click with options (@plum117)
    • #16026 fix(webdriverio): find elements in declarative shadow roots (@plum117)
    • #16019 fix(webdriverio): use the window handle as the BiDi context on Appium web contexts (@plum117)
    • #15999 fix(webdriverio): ElementArray.at() without Array.prototype.at in the browser (@plum117)
  • wdio-cli
    • #16080 fix(@wdio/cli): keep spec file URLs intact in the run summary (@yasenltd)
  • wdio-utils
    • #16114 fix(@wdio/utils): import plugins specified as file:// URLs (@NUAAwqy)
    • #16008 fix(@wdio/utils): use an installed browser when only its archive cleanup fails (@plum117)
    • #16023 fix(@wdio/utils): install browsers and Chromedriver atomically, download once when processes set them up together (@plum117)
    • #16013 fix(@wdio/utils): warn when a browser download ignores the proxy, explain a missing unzip (@plum117)
  • wdio-mocha-framework, wdio-utils
    • #16124 fix(@wdio/utils): name the WebdriverIO attempt in a Mocha timeout error (@plum117)
    • #16032 fix(@wdio/utils): follow the Mocha timeout and let Mocha wait for after hooks (@plum117)
  • wdio-cucumber-framework
    • #16118 fix(@wdio/cucumber-framework): keep the feature uid as the parent of a scenario in a random order (@plum117)
    • #16068 fix(@wdio/cucumber-framework): report every scenario of grouped specs in a random order (@plum117)
    • #16063 fix(@wdio/cucumber-framework): keep the scenario title at the end of a scenario-level test (@plum117)
  • create-wdio, wdio-types, wdio-utils, webdriverio
    • #16096 fix(webdriverio): run the command hooks once for each element command (@plum117)
  • wdio-utils, webdriverio
    • #16056 fix(@wdio/utils): don't wrap event handler functions as commands (@Winify)
    • #16070 fix(@wdio/utils, webdriverio): give each list item its own element commands (@plum117)
    • #16053 fix(@wdio/utils): give the not found item for an index of an async $$ overwrite or a custom $$ command (@plum117)
  • wdio-cucumber-framework, wdio-reporter
    • #16069 fix(@wdio/cucumber-framework, @wdio/reporter): keep the undefined suffix and the duration of a pending step (@plum117)
  • webdriver, webdriverio
    • #16065 fix(webdriver, webdriverio): catch the commands of event listeners when the session ends (@plum117)
    • #16031 fix(webdriverio): apply the script timeout to execute in WebDriver BiDi sessions (@plum117)
  • webdriver
    • #16054 fix(webdriver): reject pending BiDi commands when the connection closes (@plum117)
    • #16007 fix(webdriver): keep the worker log open after deleteSession (@plum117)
    • #15996 fix(webdriver): set the default of the bidiResponseTimeout option (@plum117)
  • wdio-browser-runner, wdio-runner
    • #16040 fix(@wdio/runner): let Mocha report browser errors that happen during the tests (@plum117)
  • wdio-runner, wdio-webdriver-mock-service, webdriver
    • #16039 fix(@wdio/runner): end the worker with reports when the session is already gone (@plum117)
  • wdio-appium-service
    • #16021 fix(@wdio/appium-service): clear NODE_OPTIONS for the Appium version check (@MannXo)
  • wdio-session
    • #16025 fix(@wdio/session): accept only expect-webdriverio 8 as the optional peer (@plum117)
  • wdio-runner, wdio-utils, webdriverio
    • #16009 fix(@wdio/utils): keep the worker log file when enableFileLogging runs again (@plum117)
  • wdio-browser-runner, wdio-utils
    • #16015 fix(@wdio/utils): use geckodriver 8, edgedriver 8 and safaridriver 3 (@plum117)
  • create-wdio
    • #15997 fix(create-wdio): use the select prompt instead of the removed list alias (@plum117)
  • wdio-types, webdriver
    • #15987 feat(webdriver): add the bidiConnectTimeout option (@plum117)
  • wdio-jasmine-framework
    • #15982 fix(@wdio/jasmine-framework): type expect.extend() on the global expect (@plum117)

πŸ’… Polish

  • wdio-utils, wdio-webdriver-mock-service, webdriverio
    • #16090 perf(@wdio/utils, webdriverio): let the items of an element list share their commands (@plum117)
  • wdio-session

πŸ“ Documentation

  • wdio-cucumber-framework, wdio-mocha-framework, webdriverio
  • Other
  • webdriverio
    • #16034 docs(webdriverio): say that a mock with the same definition replaces the first one (@plum117)

🏠 Internal

  • Other
  • wdio-lighthouse-service
    • #16087 chore(deps): bump the patch-deps-updates-main group across 1 directory with 16 updates (@dependabot[bot])
  • webdriverio
    • #16083 test(webdriverio): make the waitForEnabled test of a removed element stable (@plum117)
    • #15986 fix(webdriverio): derive fake-timers types from install() (@plum117)
  • wdio-utils
    • #16052 test(@wdio/utils): make 2 atomicInstall tests independent of the speed of the machine (@plum117)
  • wdio-ai-service
    • #16022 test(e2e): keep the AI suite logs and log what the effect recorder counts (@plum117)
  • create-wdio, wdio-ai-service, wdio-browser-runner, wdio-cli, wdio-concise-reporter, wdio-config, wdio-cucumber-framework, wdio-dot-reporter, wdio-local-runner, wdio-logger, wdio-reporter, wdio-spec-reporter, webdriver, webdriverio
    • #16012 chore(deps): bump the major-deps-updates-main group across 1 directory with 25 updates (@dependabot[bot])
  • wdio-appium-service
    • #16014 chore(deps): bump the patch-deps-updates-main group across 1 directory with 5 updates (@dependabot[bot])
  • create-wdio, wdio-cli
    • #15998 chore: replace the deprecated read-pkg-up with read-package-up (@plum117)

Committers: 6

Don't miss a new webdriverio release

NewReleases is sending notifications on new releases.