Skip to content

WebDriverAgentLib target still references deprecated "iOS Development" signing identity, breaks CODE_SIGN_IDENTITY override on Xcode 26 / iOS 26 #1145

@ZvnQiy

Description

@ZvnQiy

Summary

When building WDA against an iOS 26.4.2 real device on Xcode 26, even when
xcodebuild is invoked with a correct command-line override
CODE_SIGN_IDENTITY=Apple Development, xcodebuild errors out with:

error: No signing certificate "iOS Development" found: No "iOS Development" signing certificate matching team ID "<TEAM_ID>" with a private key was found. (in target 'WebDriverAgentLib' from project 'WebDriverAgent')

The WebDriverAgentLib target in WebDriverAgent.xcodeproj still references
the long-deprecated "iOS Development" identity name at the target level
(not as "$(CODE_SIGN_IDENTITY)" or "Apple Development"). Apple renamed
this signing identity to "Apple Development" years ago and the keychain
on a fresh Mac with a current Apple Developer enrollment only has the
"Apple Development" form. Command-line CODE_SIGN_IDENTITY=Apple Development
correctly overrides the project's other targets, but WebDriverAgentLib's
target-level setting takes precedence and fails the build.

Related: appium/appium-remote-debugger#497 (separate
upstream gap, iOS 26 inspector protocol).


Environment

Component Version
appium-webdriveragent (from xcuitest@11.7.1's nested deps) 13.x
Xcode 26 (SDK iphoneos26.5)
macOS host Apple Silicon, current 2026-05 release
Device iPhone14,7
Device iOS 26.4.2 (build 23E261)
xcodebuild driver appium-xcuitest-driver 11.7.1

Keychain identity confirmed:

$ security find-identity -v -p codesigning
1) <hash> "Apple Development: <user>@example.com (<TEAM_ID>)"

No "iOS Development" identity exists, and Apple has not issued new "iOS
Development" certificates for years.


Steps to Reproduce

  1. Fresh Mac with Xcode 26 and a valid current "Apple Development" signing
    identity in the keychain.
  2. Run xcodebuild against appium-webdriveragent/WebDriverAgent.xcodeproj
    on an iOS 26.4.2 real device, supplying CODE_SIGN_IDENTITY=Apple Development
    on the command line (this is what appium-xcuitest-driver 11.7.1 does
    when given appium:xcodeSigningId: 'Apple Development'):
xcodebuild build-for-testing test-without-building \
  -project .../appium-webdriveragent/WebDriverAgent.xcodeproj \
  -scheme WebDriverAgentRunner \
  -derivedDataPath ... \
  -destination id=<UDID> \
  IPHONEOS_DEPLOYMENT_TARGET=26.0 \
  DEVELOPMENT_TEAM=<TEAM_ID> \
  "CODE_SIGN_IDENTITY=Apple Development" \
  -allowProvisioningUpdates

(-allowProvisioningUpdates is added here in case the
xcuitest-side gap on this flag is separately fixed; the underlying
WebDriverAgentLib-target issue still surfaces independent of that.)


Expected Behavior

The command-line CODE_SIGN_IDENTITY=Apple Development override applies to
all targets (Lib + Runner). Build proceeds without the "iOS Development"
identity error.


Actual Behavior

WebDriverAgentLib target's project-level signing identity setting is
iOS Development, which the command-line override does not propagate to.
xcodebuild then looks for an "iOS Development" certificate that does not
exist and fails:

[Xcode] /.../WebDriverAgent.xcodeproj: error: No signing certificate
        "iOS Development" found: No "iOS Development" signing certificate
        matching team ID "<TEAM_ID>" with a private key was found.
        (in target 'WebDriverAgentLib' from project 'WebDriverAgent')
[Xcode] ** TEST BUILD FAILED **
[Xcode] xcodebuild exited with code '65'

This error is independent of the WebDriverAgentRunner target's signing setup,
which xcuitest's xcodeOrgId + xcodeSigningId capabilities (correctly)
override.


Proposed Fix

Update WebDriverAgent.xcodeproj/project.pbxproj so that the
WebDriverAgentLib target's signing identity uses the variable form so
it inherits from the command-line override:

CODE_SIGN_IDENTITY = "$(CODE_SIGN_IDENTITY)";

(or simply update it to "Apple Development" if the variable form turns out
problematic; both are forward-compatible with Apple's current and future
identity naming).

This single change unblocks all command-line-driven WDA builds on machines
that only have the modern "Apple Development" identity (which is now every
new Mac with an Apple Developer enrollment).


Workaround in the Meantime

Open WebDriverAgent.xcodeproj in Xcode (e.g. via
appium driver run xcuitest open-wda), select the WebDriverAgentLib
target → Signing & Capabilities → manually set signing identity to "Apple
Development" or enable Automatic signing. Commit / preserve the change
locally so subsequent npm install / driver-update flows don't overwrite
it.

Note: this workaround is fragile — any reinstall of appium-xcuitest-driver
overwrites the local change because the nested appium-webdriveragent is
shipped as a transitive dep with the original xcodeproj.


Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions