Skip to content

feat(webdriverio): support WebdriverIO v10 - #396

Merged
gregberge merged 1 commit into
mainfrom
feat/webdriverio-10
Oct 7, 2026
Merged

gregberge merged 1 commit into
mainfrom
feat/webdriverio-10

Conversation

@gregberge

Copy link
Copy Markdown
Member

Adds ^10 to the webdriverio peer range.

WebdriverIO 10.0.0 shipped on 2026-10-05. npm 11 currently refuses to install @argos-ci/webdriverio@0.8.11 next to it:

npm error ERESOLVE unable to resolve dependency tree
npm error peer webdriverio@"^6 || ^7 || ^8 || ^9" from @argos-ci/webdriverio@0.8.11

A tarball packed from this branch installs cleanly next to webdriverio@10.0.0.

Changes

  • Peer range. ^6 || ^7 || ^8 || ^9 || ^10. The older majors stay: nothing in v10 forces dropping one, and this PR does not change SDK code.
  • Dev dependencies. webdriverio, @wdio/cli, @wdio/globals, @wdio/local-runner, @wdio/mocha-framework, @wdio/spec-reporter and @wdio/types go from 9.32 to 10.0.0, so the CI e2e job now runs on v10.
  • Lockfile. The churn is the v10 dependency tree: Mocha 12, @wdio/display-server replacing @wdio/xvfb, new driver majors, and the proxy-agent stack dropped. The only importer that changes is packages/webdriverio.

There is no changeset because this repo releases with Lerna from conventional commits, so the feat(webdriverio) commit produces the minor bump.

WebdriverIO 10 against what the SDK uses

Sources: the v10 migration guide, the v10.0.0 release notes, and the published 9.32.0 and 10.0.0 packages.

The SDK only calls browser.saveScreenshot(path) and post-processes the returned buffer with sharp to draw masks. It does not call browser.execute, resize the window or viewport, or inject the DOM stabilization helpers that the other SDKs use. So the v10 changes in those areas do not affect it: execute now awaits async functions, executeAsync is removed, and emulate moves to BiDi.

The SDK relies on In WebdriverIO 10
saveScreenshot(path) writes the PNG and resolves to a Buffer Unchanged. It still returns Promise<Buffer<ArrayBuffer>> with the same write-then-return code. The only addition is a branch for calls made on a frame browsing context.
What gets captured Unchanged. v9 already captured over BiDi (browsingContext.captureScreenshot, origin: "viewport").
The global WebdriverIO.Browser type in the public signature Still declared globally by webdriverio.
The CJS entry (dist/index.cjs dynamic-imports the ESM build) Does not depend on WebdriverIO. require("webdriverio") also still works in v10.
e2e config: Options.Testrunner, Options.RunnerStart["capabilities"], Mocha and spec reporter, browserVersion: "stable" Unchanged. tsc passes against the v10 types, and Chrome for Testing is still provisioned automatically.
Node.js v10 requires ≥22.19.0 (v9 required ≥18.20.0). The SDK's engines stay >=22.0.0, and the CI e2e job runs on lts/*.

Verification

Check WebdriverIO 9.32.0 WebdriverIO 10.0.0
e2e, 3 specs, Chrome 155 ✅ ✅
Screenshots simple, masks and fullpath (756×413) baseline ✅ byte-identical to 9.32.0
tsc on the SDK, specs and wdio.conf.ts ✅ ✅
turbo run test check-types lint on all packages, commitlint, prettier ✅
npm install next to webdriverio@10.0.0 ❌ ERESOLVE (published 0.8.11) ✅ (packed tarball)

Review notes

  • WebdriverIO 10 pulls in a pre-release of its own. @wdio/globals, @wdio/runner and @wdio/local-runner 10.0.0 require expect-webdriverio ^8.0.0-alpha.3, and there is no stable 8 yet: latest is 7.0.1, which peers on webdriverio 9. npm and pnpm install the alpha without warnings. This only concerns WebdriverIO's test runner, not the SDK.
  • In v10, browser.url() returns a browsing context instead of undefined for the e2e's file:// URL. The specs ignore the return value.
  • Users on Node 22.0 to 22.18 can keep using the SDK with WebdriverIO 9 or earlier. WebdriverIO 10 itself needs 22.19.
  • The docs still list "WebdriverIO 6, 7, 8, or 9" in argos-ci/docs docs/sdks-reference/webdriverio.md.

🤖 Generated with Claude Code

Add `^10` to the `webdriverio` peer range. Without it, npm refuses to
install the SDK next to WebdriverIO 10 (ERESOLVE on
`peer webdriverio@"^6 || ^7 || ^8 || ^9"`) and pnpm and Yarn warn.

No code change is needed. `saveScreenshot` still writes the file and
resolves to a `Buffer`, and it already captured over WebDriver BiDi in
v9. The global `WebdriverIO.Browser` type and the `@wdio/types` options
used by the e2e config are unchanged. The e2e screenshots are
byte-identical between 9.32.0 and 10.0.0.

Bump webdriverio and the @wdio/* dev dependencies to 10.0.0 so CI runs
the e2e suite against v10.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 7, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
argos-js-sdk-reference Ready Ready Preview Oct 7, 2026 9:37am UTC

Request Review

@gregberge
gregberge merged commit a570882 into main Oct 7, 2026
78 of 79 checks passed
@gregberge
gregberge deleted the feat/webdriverio-10 branch October 7, 2026 10:22

This branch was successfully deployed

1 active deployment
Preview — 2e422ab3 Deployed Oct 7, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants