feat!: target Appium 4 beta - #1104
Merged
Merged
Conversation
Adds workflow_dispatch inputs (dry_run, dist_tag) to the release workflow so a manual run can opt this branch into semantic-release's beta prerelease channel, mirroring appium-xcuitest-driver's beta pipeline. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Targets the recently released Appium 4 beta (4.0.0-beta.2). Bumps the appium peer dependency and lockstep @appium/* packages (support, oxc-config, semantic-release-config, tsconfig, types) to their Appium 4 beta releases, and updates driver code for the resulting API removals/changes. - @appium/types drops its `Location` interface (along with the legacy getGeoLocation/setGeoLocation JSONWP surface it backed); replaced with a local `GeoLocation` interface in lib/commands/types.ts - @appium/support is now published as pure ESM: its `tempDir`/`util` sub-namespaces (unlike `fs`, which stays a plain object) are real ES module namespace objects and can no longer be stubbed in place with sinon. test/unit/commands/file-actions.spec.ts now swaps `tempDir.path`/ `util.toInMemoryBase64` via node:test's `t.mock.module()` (the pattern already used elsewhere in this suite for ESM modules), re-importing file-actions.js fresh per test so it resolves the mocked module graph - AndroidDriver doesn't override driverData/createSession/reset/timeouts, so none of those Appium 3-to-4 BaseDriver removals needed driver-side changes BREAKING CHANGE: requires Appium >=4.0.0-beta.0 and drops Node 20 support (minimum is now ^22.22.2 || ^24.15.0 || >=26.0.0), matching Appium 4's own minimum supported Node engine. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… export
@appium/support's namespace object carries a `default` key alongside its
named exports; spreading it into t.mock.module()'s namedExports triggers a
Node 22 bug ("Unexpected token 'default'") when file-actions.js is
re-imported, fixed by Node 24.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
eglitise
approved these changes
Sep 30, 2026
github-actions Bot
pushed a commit
that referenced
this pull request
Sep 30, 2026
## [15.0.0-beta.1](v14.2.2...v15.0.0-beta.1) (2026-09-30) ### ⚠ BREAKING CHANGES * requires Appium >=4.0.0-beta.0 and drops Node 20 support (minimum is now ^22.22.2 || ^24.15.0 || >=26.0.0), matching Appium 4's own minimum supported Node engine. ### Features * target Appium 4 beta ([#1104](#1104)) ([fcc3cb1](fcc3cb1))
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Targets the recently released Appium 4 beta (4.0.0-beta.2). Bumps the appium
peer dependency and lockstep @appium/* packages (support, oxc-config,
semantic-release-config, tsconfig, types) to their Appium 4 beta releases,
and updates driver code for the resulting API removals/changes.
Locationinterface (along with the legacygetGeoLocation/setGeoLocation JSONWP surface it backed); replaced with a
local
GeoLocationinterface in lib/commands/types.tstempDir/utilsub-namespaces (unlike
fs, which stays a plain object) are real ES modulenamespace objects and can no longer be stubbed in place with sinon.
test/unit/commands/file-actions.spec.ts now swaps
tempDir.path/util.toInMemoryBase64via node:test'st.mock.module()(the patternalready used elsewhere in this suite for ESM modules), re-importing
file-actions.js fresh per test so it resolves the mocked module graph
none of those Appium 3-to-4 BaseDriver removals needed driver-side changes
BREAKING CHANGE: requires Appium >=4.0.0-beta.0 and drops Node 20 support
(minimum is now ^22.22.2 || ^24.15.0 || >=26.0.0), matching Appium 4's own
minimum supported Node engine.