Skip to content

WDIO v10 support (tracking) #297

Description

@goosewobbler

Summary

Umbrella tracking issue for everything needed to support WebdriverIO v10. This gathers the coordinated breaking changes we've been deferring "until the next major" so they ship together against the v10 floor, rather than drip-fed as ad-hoc bumps.

Blocked on: WDIO v10 being released with a documented Node floor and public API. Work can be staged on a branch beforehand, but nothing ships until v10 is out.

Versioning strategy

The release each package receives depends on where it is in its own lifecycle:

  • Post-1.0 services → major bump (breaking, aligned to v10):
    • @wdio/electron-service 10.x → 11.0.0
    • @wdio/tauri-service 1.x → 2.0.0
    • @wdio/dioxus-service 1.x → 2.0.0
  • Pre-1.0 services → minor or prerelease bump (context-dependent — no stable API to break):
    • @wdio/electrobun-service 0.2.x → minor (0.3.0)
    • @wdio/react-native-service 1.0.0-next.x → prerelease (-next.N+1)
    • @wdio/flutter-service 1.0.0-next.x → prerelease (-next.N+1)
  • Supporting @wdio/* packages (native-core, native-types, native-utils, native-cdp-bridge, native-mobile-core, native-spy) bump per releasekit rules for whatever surface actually changes (e.g. the native-types deprecation removal below is a native-types major).

Checklist

1. Align Node version support with the parent project (original scope of this issue)

Stay aligned with parent webdriverio's Node policy: when v10 formalises its Node floor, match it across all shipped engines.node, and don't drift again outside a coordinated major.

Current shipped engines.node:

  • @wdio/electron-service — >=22.12.0
  • @wdio/tauri-service — >=18.20.0 ← still on the Node-18 tier
  • @wdio/dioxus-service — >=18.20.0 ← still on the Node-18 tier
  • @wdio/electrobun-service — >=22.12.0
  • @wdio/react-native-service — >=22.12.0
  • @wdio/flutter-service — >=22.12.0

Already in place (from the earlier revert): puppeteer-core workspace override removed, @wdio/electron-service runtime deps back at latest, and a brief contributor-vs-end-user Node callout retained in CONTRIBUTING.md + docs/setup.md.

  • WDIO v10 released with a documented Node floor
  • Bump engines.node to match v10's floor across every shipped service (tauri + dioxus are the ones still on >=18.20.0; confirm the >=22.12.0 packages against v10's exact floor)
  • Going forward: track WDIO's floor in engines, only change it in a coordinated major, no runtime deps that require a newer Node than engines allows

2. Remove native-types deprecations

packages/native-types/src/electron.ts carries two public API deprecations kept for back-compat — safe to remove only in a major:

  • mock(apiName, funcName, returnValue) overload — callers move to the chained setter (await browser.electron.mock('api', 'fn')).mockReturnValue(value)
  • isMockFunction(target: string) overload (always returns false)
  • @wdio/native-types major bump; downstream services that surface these types re-released

3. Remove the executeTauriCommand deprecation

packages/tauri-service/src/commands/execute.ts — executeTauriCommand() is @deprecated Use execute() instead, but still called internally by executeTauriCommandWithTimeout / executeTauriCommands / executeTauriCommandsParallel / getTauriVersion / getAppInfo.

  • Migrate those internal callers onto execute() directly
  • Remove executeTauriCommand (and update test/commands/execute.spec.ts)
  • Ships with the @wdio/tauri-service 2.0.0 major

4. Update dependencies

  • Bump webdriverio + @wdio/* in the default catalog (pnpm-workspace.yaml, currently 9.31.x) to v10; review the next / latest catalogs
  • Review service peerDependencies on webdriverio (currently >9.0.0) — set the correct v10 range
  • Bump any runtime deps that had been pinned to hold an older Node floor, now that engines moves (see item 1)
  • Regenerate the lockfile; CI green on all platforms

5. Docs update / migration doc(s)

  • Author a v10 migration guide under docs/ (no migration docs exist yet) — Node floor change, native-types mock-API removals, executeTauriCommand removal, and per-service version jumps
  • Update README.md supported-frameworks versions, docs/setup.md, and CONTRIBUTING.md Node callouts
  • Changelogs / release notes call out the breaking changes per package

6. Chromedriver from Electron releases

WebdriverIO v10 downloads Chromedriver from the Electron release named in wdio:electronVersion (webdriverio/webdriverio#15871); #693 makes the service set it only for known Electron releases. Once the service's webdriverio peer range is v10:

  • Relax the Electron ≥ 26 guard and the hard "Could not determine the Chromium version" error in the launcher. Both exist only because Chrome for Testing has no Chromedriver before 115, and Electron releases ship their own.
  • Docs: Chromedriver Configuration → User Managed is no longer needed for older Electron versions. Point manual setups at the release's chromedriver-v<version>-<platform>-<arch>.zip instead of looking up the Chromium version on chromedriver.chromium.org.
  • webdriverio: @wdio/session's Electron target can pass wdio:electronVersion instead of browserVersion, so an Electron version the service can't map to Chromium (such as a nightly) uses that release's Chromedriver once the guard is relaxed.
  • Drop the Record<string, unknown> casts around wdio:electronVersion in launcher.ts: @wdio/types v10 declares the capability.

Per-package release tracking

  • @wdio/electron-service → 11.0.0 (major)
  • @wdio/tauri-service → 2.0.0 (major)
  • @wdio/dioxus-service → 2.0.0 (major)
  • @wdio/electrobun-service → minor (pre-1.0)
  • @wdio/react-native-service → prerelease (pre-1.0)
  • @wdio/flutter-service → prerelease (pre-1.0)
  • Supporting @wdio/* packages bumped as their surfaces require (native-types major for item 2)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions