Rebase QA Wolf customizations onto upstream WebDriverAgent v15.0.0 (GEN-2002)#17
Open
Elton Carreiro (EltonCarreiro) wants to merge 56 commits into
Open
Rebase QA Wolf customizations onto upstream WebDriverAgent v15.0.0 (GEN-2002)#17Elton Carreiro (EltonCarreiro) wants to merge 56 commits into
Elton Carreiro (EltonCarreiro) wants to merge 56 commits into
Conversation
Bumps [nick-fields/retry](https://github.com/nick-fields/retry) from 3 to 4. - [Release notes](https://github.com/nick-fields/retry/releases) - [Commits](nick-fields/retry@v3...v4) --- updated-dependencies: - dependency-name: nick-fields/retry dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## [11.4.2](appium/WebDriverAgent@v11.4.1...v11.4.2) (2026-04-12) ### Bug Fixes * Avoid keeping strong reference to self instance in delegates ([appium#1123](appium#1123)) ([dd15f48](appium@dd15f48))
* chore(deps-dev): bump typescript from 5.9.3 to 6.0.2 Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.9.3 to 6.0.2. - [Release notes](https://github.com/microsoft/TypeScript/releases) - [Commits](microsoft/TypeScript@v5.9.3...v6.0.2) --- updated-dependencies: - dependency-name: typescript dependency-version: 6.0.2 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * moar * format --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mykola Mokhnach <mokhnach@gmail.com>
## [11.4.3](appium/WebDriverAgent@v11.4.2...v11.4.3) (2026-04-12) ### Miscellaneous Chores * **deps-dev:** bump typescript from 5.9.3 to 6.0.2 ([appium#1121](appium#1121)) ([046b080](appium@046b080))
…ppium#1124) BREAKING CHANGE: remove idb from AppleDevice; clients must stop passing device.idb. BREAKING CHANGE: remove includeNonModalElements WDA setting; clients must stop sending this setting in /settings. BREAKING CHANGE: remove shouldUseTestManagerForVisibilityDetection capability; clients must stop sending this desired capability.
## [12.0.0](appium/WebDriverAgent@v11.4.3...v12.0.0) (2026-04-14) ### ⚠ BREAKING CHANGES * remove idb from AppleDevice; clients must stop passing device.idb. * remove includeNonModalElements WDA setting; clients must stop sending this setting in /settings. * remove shouldUseTestManagerForVisibilityDetection capability; clients must stop sending this desired capability. ### Code Refactoring * remove deprecated WDA settings/capabilities and idb typing ([appium#1124](appium#1124)) ([5072e25](appium@5072e25))
Signed-off-by: Muvaffak Onus <me@muvaf.com>
## [12.1.0](appium/WebDriverAgent@v12.0.0...v12.1.0) (2026-04-24) ### Features * **client:** add ability to set headers on requests ([appium#1127](appium#1127)) ([a8889cd](appium@a8889cd))
## [12.1.1](appium/WebDriverAgent@v12.1.0...v12.1.1) (2026-04-27) ### Miscellaneous Chores * **compile:** fix compilation ([appium#1129](appium#1129)) ([76d59e8](appium@76d59e8))
## [12.2.0](appium/WebDriverAgent@v12.1.1...v12.2.0) (2026-04-29) ### Features * Ditch bluebird and lodash ([appium#1130](appium#1130)) ([8899895](appium@8899895))
Bumps [sinon](https://github.com/sinonjs/sinon) from 21.1.2 to 22.0.0. - [Release notes](https://github.com/sinonjs/sinon/releases) - [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md) - [Commits](sinonjs/sinon@v21.1.2...v22.0.0) --- updated-dependencies: - dependency-name: sinon dependency-version: 22.0.0 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## [12.2.1](appium/WebDriverAgent@v12.2.0...v12.2.1) (2026-05-06) ### Miscellaneous Chores * **deps-dev:** bump sinon from 21.1.2 to 22.0.0 ([appium#1133](appium#1133)) ([11c579b](appium@11c579b))
## [12.2.2](appium/WebDriverAgent@v12.2.1...v12.2.2) (2026-05-08) ### Bug Fixes * linter ([appium#1134](appium#1134)) ([2bd1816](appium@2bd1816))
* ci: add not about Xcode versions Added comments regarding Xcode version compatibility and simulator availability. * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
BREAKING CHANGE: quitAndUninstall() removed — use quit() only. App uninstall is out of scope for this module. BREAKING CHANGE: uninstall() removed — WDA must not be uninstalled from this package; callers (e.g. xcuitest-driver) should own that if needed. BREAKING CHANGE: setupCaching() no longer uninstalls WDA — on bundle-id or version mismatch it logs and skips caching instead of removing apps from the device. Also, it now returns the cached url on success. BREAKING CHANGE: appium-ios-device dependency removed — preinstalled WDA on real devices always launches via devicectl (no iOS < 17 Xctest fallback).
## [13.0.0](appium/WebDriverAgent@v12.2.2...v13.0.0) (2026-05-17) ### ⚠ BREAKING CHANGES * quitAndUninstall() removed — use quit() only. App uninstall is out of scope for this module. * uninstall() removed — WDA must not be uninstalled from this package; callers (e.g. xcuitest-driver) should own that if needed. * setupCaching() no longer uninstalls WDA — on bundle-id or version mismatch it logs and skips caching instead of removing apps from the device. Also, it now returns the cached url on success. * appium-ios-device dependency removed — preinstalled WDA on real devices always launches via devicectl (no iOS < 17 Xctest fallback). ### Features * Drop legacy APIs ([appium#1137](appium#1137)) ([8995d24](appium@8995d24))
## [13.1.0](appium/WebDriverAgent@v13.0.0...v13.1.0) (2026-05-21) ### Features * add app icon to WebDriverAgentRunner ([appium#1138](appium#1138)) ([fe8adc8](appium@fe8adc8)) * Add helper method to fetch build settings ([appium#1139](appium#1139)) ([56b5f38](appium@56b5f38))
appium#1138 added Scripts/embed-runner-icon.sh and wired it as a WebDriverAgentRunner build post-action, but the package.json `files` allowlist only ships `Scripts/build.sh` and `Scripts/*.mjs`. The new script matches neither pattern, so it is excluded from the published npm tarball. As a result, builds from the published appium-webdriveragent package run the scheme post-action against a missing script: the Appium app icon is never embedded into Runner.app, and WebDriverAgentRunner installs on the home screen with a blank/white icon. Add an explicit `Scripts/embed-runner-icon.sh` entry to `files` so the script ships in the package.
## [13.1.1](appium/WebDriverAgent@v13.1.0...v13.1.1) (2026-05-22) ### Bug Fixes * ship Scripts/embed-runner-icon.sh in the npm package ([appium#1141](appium#1141)) ([17ac1c1](appium@17ac1c1)), closes [appium#1138](appium#1138)
## [13.1.2](appium/WebDriverAgent@v13.1.1...v13.1.2) (2026-05-23) ### Bug Fixes * Address compilation warnings ([appium#1143](appium#1143)) ([f1f9976](appium@f1f9976))
## [13.1.3](appium/WebDriverAgent@v13.1.2...v13.1.3) (2026-05-24) ### Bug Fixes * Scheme for derived data path retrieval ([appium#1142](appium#1142)) ([9ada5f6](appium@9ada5f6))
## [13.2.4](appium/WebDriverAgent@v13.2.3...v13.2.4) (2026-06-08) ### Bug Fixes * update WebDriverAgentRunner app icon ([appium#1151](appium#1151)) ([eea2229](appium@eea2229))
* feat: expose native isAccessibilityElement * refactor: rename nativeAccessible to nativeAccessibilityElement Address review feedback to use the full word for clarity: - protocol property wdNativeAccessible -> wdNativeAccessibilityElement - JSON key isNativeAccessible -> isNativeAccessibilityElement - XML attribute nativeAccessible -> nativeAccessibilityElement - setting includeNativeAccessibleInPageSource -> includeNativeAccessibilityElementInPageSource Co-authored-by: Cursor <cursoragent@cursor.com> * Unify JSON attribute key prefixing * Remove empty-key guard from FBJsonPrefixedAttributeKey --------- Co-authored-by: Cursor <cursoragent@cursor.com>
## [13.3.0](appium/WebDriverAgent@v13.2.4...v13.3.0) (2026-06-09) ### Features * Expose native isAccessibilityElement ([appium#1146](appium#1146)) ([e615621](appium@e615621))
BREAKING CHANGE: bump the deployment target to 15
## [14.0.0](appium/WebDriverAgent@v13.3.0...v14.0.0) (2026-06-09) ### ⚠ BREAKING CHANGES * bump the deployment target to 15 ### Features * bump the deployment target to 15 ([appium#1152](appium#1152)) ([74498f7](appium@74498f7))
## [14.1.0](appium/WebDriverAgent@v14.0.0...v14.1.0) (2026-06-10) ### Features * Add VoiceOver automation support ([appium#1153](appium#1153)) ([6b3631a](appium@6b3631a))
…ethods (appium#1154) * chore: address runtime version rather than Xcode for selector based methods * revert unnecessary change
## [14.1.1](appium/WebDriverAgent@v14.1.0...v14.1.1) (2026-06-10) ### Miscellaneous Chores * address runtime version rather than Xcode for selector based methods ([appium#1154](appium#1154)) ([6618b0b](appium@6618b0b))
## [14.2.0](appium/WebDriverAgent@v14.1.1...v14.2.0) (2026-06-18) ### Features * Limit the maximum request body size ([appium#1158](appium#1158)) ([9ea244b](appium@9ea244b))
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 25.9.4 to 26.0.0. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-version: 26.0.0 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## [14.2.1](appium/WebDriverAgent@v14.2.0...v14.2.1) (2026-06-19) ### Miscellaneous Chores * **deps-dev:** bump @types/node from 25.9.4 to 26.0.0 ([appium#1159](appium#1159)) ([93d7043](appium@93d7043))
BREAKING CHANGE: AppleDevice is now abstract and only contains udid; it no longer exposes simctl or devicectl. BREAKING CHANGE: Preinstalled WDA launch/terminate no longer falls back to package-owned simctl or devicectl behavior. Callers must provide hostOps.simulator or hostOps.realDevicePreinstalled for those flows.
## [15.0.0](appium/WebDriverAgent@v14.2.1...v15.0.0) (2026-06-22) ### ⚠ BREAKING CHANGES * AppleDevice is now abstract and only contains udid; it no longer exposes simctl or devicectl. * Preinstalled WDA launch/terminate no longer falls back to package-owned simctl or devicectl behavior. Callers must provide hostOps.simulator or hostOps.realDevicePreinstalled for those flows. ### Features * Abstract out platform-specific actions ([appium#1160](appium#1160)) ([890d32b](appium@890d32b))
…EN-2002) Replays the QA Wolf fork's customizations (previously based on upstream v11.4.1) on top of upstream appium/WebDriverAgent v15.0.0. Conflict resolutions: - FBSessionCommands.m: v15 extracted settings get/set into the new FBSettingsHandler. Took v15's version and re-applied our `preWarmPageSource` setting in FBSettingsHandler's set/get maps. - FBXPath.m/.h: kept our "attribute @interface decls moved to the header" change; ported v15's new FBNativeAccessibilityElementAttribute interface into FBXPath.h so v15's @implementation still resolves. - Regenerated SPM public-header symlinks via headers.sh: adds v15's XCUIDevice+FBVoiceOver.h; preserves the deliberately-exposed XCUIElement+FBCustomActions.h. package.json inherits upstream's 15.0.0 (we never pinned a fork version). Verification: standalone `xcodebuild -scheme WebDriverAgentLib` framework build fails identically on both this branch and the current production v11 fork (pre-existing: the framework build does not honor the fork's publicHeadersPath header exposure) -- i.e. no regression from the rebase. The authoritative compile gate is the ios-agent SPM integration build. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
||
| @return Alert element instance if the prompt is present, otherwise nil | ||
| */ | ||
| + (nullable XCUIElement *)fb_limitedAccessPromptAlertElement; |
There was a problem hiding this comment.
This is a new feature. WDA now has custom code to handle the limited access prompts (iOS 18+)
| * LICENSE file in the root directory of this source tree. | ||
| */ | ||
|
|
||
| #import <XCTest/XCTest.h> |
There was a problem hiding this comment.
VoiceOver support
Comment on lines
+85
to
+94
| [[FBRoute POST:@"/wda/voiceOver/enable"] respondWithTarget:self action:@selector(handleVoiceOverEnable:)], | ||
| [[FBRoute POST:@"/wda/voiceOver/enable"].withoutSession respondWithTarget:self action:@selector(handleVoiceOverEnable:)], | ||
| [[FBRoute POST:@"/wda/voiceOver/disable"] respondWithTarget:self action:@selector(handleVoiceOverDisable:)], | ||
| [[FBRoute POST:@"/wda/voiceOver/disable"].withoutSession respondWithTarget:self action:@selector(handleVoiceOverDisable:)], | ||
| [[FBRoute GET:@"/wda/voiceOver/enabled"] respondWithTarget:self action:@selector(handleVoiceOverEnabled:)], | ||
| [[FBRoute GET:@"/wda/voiceOver/enabled"].withoutSession respondWithTarget:self action:@selector(handleVoiceOverEnabled:)], | ||
| [[FBRoute POST:@"/wda/voiceOver/move"] respondWithTarget:self action:@selector(handleVoiceOverMove:)], | ||
| [[FBRoute POST:@"/wda/voiceOver/move"].withoutSession respondWithTarget:self action:@selector(handleVoiceOverMove:)], | ||
| [[FBRoute GET:@"/wda/voiceOver/currentSpeech"] respondWithTarget:self action:@selector(handleVoiceOverCurrentSpeech:)], | ||
| [[FBRoute GET:@"/wda/voiceOver/currentSpeech"].withoutSession respondWithTarget:self action:@selector(handleVoiceOverCurrentSpeech:)], |
There was a problem hiding this comment.
New VoiceOver endpoints
| NSString* const FB_SETTING_AUTO_CLICK_ALERT_SELECTOR = @"autoClickAlertSelector"; | ||
| NSString* const FB_SETTING_INCLUDE_HITTABLE_IN_PAGE_SOURCE = @"includeHittableInPageSource"; | ||
| NSString* const FB_SETTING_INCLUDE_NATIVE_FRAME_IN_PAGE_SOURCE = @"includeNativeFrameInPageSource"; | ||
| NSString* const FB_SETTING_INCLUDE_NATIVE_ACCESSIBILITY_ELEMENT_IN_PAGE_SOURCE = @"includeNativeAccessibilityElementInPageSource"; |
There was a problem hiding this comment.
New settings. We can now have access to native accessibility information in the page source.
This can slow down the page source process but return more accurate results.
master (v11.4.1 + QA Wolf patches) is fully superseded by this branch (v15.0.0 + the same patches re-applied). Recorded via `-s ours` so PR #17 becomes mergeable without dragging v11-base content back in. bad42ba stays an ancestor (first parent), so the ios-agent SPM pin remains valid. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Erkan Erol (erkanerol)
approved these changes
Jun 26, 2026
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.
Overview
Rebases the QA Wolf WebDriverAgent fork's customizations (previously based on upstream v11.4.1) onto upstream appium/WebDriverAgent v15.0.0 (latest tag). Part of GEN-2002 / the "Migrate to Appium v3" project.
The branch is
v15.0.0+ a single squashed commit containing only our customizations (theWebDriverAgentLib/QAWolf/dir, our edits to a handful of upstream files, and the SPM scaffolding). Keeping the fork a clean delta on top of upstream makes the next rebase trivial.Conflict resolutions (only 2 files conflicted)
FBSessionCommands.m— v15 extracted settings get/set into a newFBSettingsHandler. Took v15's version and re-applied ourpreWarmPageSourcesetting inFBSettingsHandler's set/get block-maps.FBXPath.m/FBXPath.h— kept our "attribute@interfacedecls moved to the header" change; ported v15's newFBNativeAccessibilityElementAttributeinterface intoFBXPath.hso v15's@implementationresolves.Everything else auto-merged: the
FBResponseJSONPayload.dictionaryre-exposure, theFBRouteRequestsession constructor, the exposedFB*Commandshandler headers,FBConfiguration/FBSettingsvisibility-cache settings, and the umbrella header.Headers / version
headers.sh: added v15'sXCUIDevice+FBVoiceOver.h; preserved the deliberately-exposedXCUIElement+FBCustomActions.h.package.jsoninherits upstream's15.0.0(we never pinned a fork version).Verification
Standalone
xcodebuild -scheme WebDriverAgentLibframework build fails identically on this branch and on the current production v11 fork (same errors) — a pre-existing limitation where the standalone framework build doesn't honor the fork'spublicHeadersPathexposure of our added public headers. So the rebase introduces no regression. The authoritative compile gate is the ios-agent SPM integration build, which compiles WolfDriver against this fork.Consumed by
ios-agent pins this fork via SPM. A follow-up ios-agent PR will bump the
project.pbxproj/Package.resolvedrevision to this branch's head commit.🤖 Generated with Claude Code