feat: Add watchOS support to the TS driver, functional tests, and release pipeline - #1217
Open
mykola-mokhnach wants to merge 1 commit into
Open
feat: Add watchOS support to the TS driver, functional tests, and release pipeline#1217mykola-mokhnach wants to merge 1 commit into
mykola-mokhnach wants to merge 1 commit into
Conversation
…ease pipeline Wires watchOS through the Node/TypeScript layer (scheme/SDK selection, xctestrun naming, a clear error for unsupported real-device watchOS requests), rewrites the functional test suite to assume an already-booted/settled simulator and cover both the source-build and prebuilt-binary WDA startup paths, adds watchOS entries to the simulator-binary prebuild workflows, and adopts futureware-tech/simulator-action for simulator boot with a ported CPU-settle stability check. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
KazuCocoa
approved these changes
Aug 20, 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.
Summary
Wires watchOS all the way through the Node/TypeScript driver, the functional test suite, and the release pipeline, building on the native watchOS support and CI (#1209, #1215, #1216) landed earlier.
Changes
TS driver (
lib/)isWatchOS, three-way (iOS/tvOS/watchOS) scheme, SDK, and deployment-target selection inxcodebuild.ts, a generalizedbundleWDASim, and simulator-only xctestrun naming for watchOS.WebDriverAgentconstruction time — watchOS is simulator-only, there's no real-device WDA distribution/testing story for it.Functional tests
getTargetDevice()(test/functional/helpers/simulator.ts): in CI, requiresSIMULATOR_UDID(fails loudly if unset — CI must never boot its own simulator here); locally, boots the existing device matchingDEVICE_NAMEif needed, and lists available simulators if none match. Never creates a new device.PLATFORM_NAME/PLATFORM_VERSION/DEVICE_NAME(test/functional/desired.ts) are now mandatory env vars, no guessed defaults.usePrebuiltWDA), both driven by real positive-path checks —GET /status, session-lessGET /source, and session-scopedGET /session/:id/sourcevia a real WDA-issued session (thesessionIdpassed tolaunch()is Appium-side only and never reaches WDA).afterEachalways callsagent.quit(), so a failed assertion can't leave a leftover WDA process/port for the next test.CI
functional-test.yml: adoptsfutureware-tech/simulator-action@v5(matching appium-xcuitest-driver's current setup, including the Xcode 27 → DeviceHub.app fix) instead of hand-rolledxcrun simctlscripting, plus two new watchOS matrix rows (Min/Max Xcode, matchingwda-tests.yml's existing pairing).Scripts/ci/wait-for-simulator-idle.mjs(new): polls the simulator's process-tree CPU usage and waits for it to settle before tests run, ported from appium-xcuitest-driver's stability fix — takes the simulator UDID directly fromsimulator-action's output.publish.js.yml/wda-package.yml: watchOS simulator (arm64 + x86_64) build entries, mirroring the existing tvOS entries. No real-device entry.Tooling
npm run bundle:watchadded alongsidebundle:ios/bundle:tv.Notes
publish.js.yml'sreleasejob only runs ifbuild-wdasucceeds for every matrix entry, so a broken watchOS build would now also block iOS/tvOS releases — the same coupling that already exists for tvOS today, just extended to a third platform.