Skip to content

fix: Update PrivateHeaders/XCTest to modern Xcode private API surface - #1202

Open
mykola-mokhnach wants to merge 5 commits into
masterfrom
headers
Open

fix: Update PrivateHeaders/XCTest to modern Xcode private API surface#1202
mykola-mokhnach wants to merge 5 commits into
masterfrom
headers

Conversation

@mykola-mokhnach

Copy link
Copy Markdown

Summary

The vendored XCTest private headers in PrivateHeaders/XCTest were last fully regenerated around Xcode 8.3 (2017) and had drifted significantly from Apple's current SDK, which now splits private XCTest internals across XCUIAutomation/XCTestCore/XCTAutomationSupport frameworks instead of one flat XCTest.framework. This PR refreshes the header set for both iOS and tvOS and fixes the fallout across WebDriverAgentLib.

  • PrivateHeaders/XCTest refresh — vendors only the transitive closure of headers WDA actually needs (22 directly-imported headers + dependencies), cleaned up for compilation: duplicate property/method declarations, inline-redefined CGRect/CGPoint/CGSize/CGVector structs colliding with CoreGraphics, missing forward declarations, circular superclass #includes. For classes/protocols that are now genuine public Apple API (XCUIElement, XCUIApplication, XCTestCase, etc.), imports the real public header and extends it with a private category containing only the delta members, instead of a full standalone redeclaration — avoids conflicting with the real system module when both get loaded in the same translation unit.
  • Consumer code updatesXCEventGenerator is gone upstream (event synthesis now goes through XCUIDevice.eventSynthesizer); XCTestManager_ManagerInterface is renamed to XCTMessagingChannel_RunnerToDaemon; the protocol-version handshake in FBXCodeCompatibility.m now reads XCTRunnerDaemonSession.remoteInterfaceCapabilities, falling back to the legacy selector on older daemons; plus a handful of headers that used to be pulled in transitively through the old flat header set now need explicit #imports.
  • Xcode 27 beta compatibility fixes, found by running the unit/integration suites against the new headers on both iOS 17.5 and 27.0 simulators:
    • -[XCUIHitPointResult hittable] crashed with unrecognized-selector at runtime — the header dump tool dropped the getter=isHittable annotation the real class actually uses. Same defect fixed for 5 other BOOL properties across the header set.
    • fb_nativeScrollToVisibleWithError: called a selector Xcode 27 beta moved off XCUIElement onto a new XCUIElementBaseEventTarget wrapper (obtained via +forElement:) and renamed by adding "AX". Falls back to the direct legacy selector on older Xcode/testmanagerd.
    • fb_lockScreen:'s IOHID Power-button workaround (added for real devices in fix: lock screen via IOHID Power press on iOS 27 #1171, where pressLockButton stopped locking on iOS 27) breaks locking on iOS 27 simulators specifically — pressLockButton itself still works fine there. Scoped the IOHID path to real devices only.

mykola-mokhnach and others added 3 commits August 6, 2026 22:28
Refresh the vendored XCTest private headers (last fully regenerated ~2017)
from a current Xcode 26.6 header dump, for both iOS and tvOS. Apple has since
split private XCTest internals across XCUIAutomation/XCTestCore/
XCTAutomationSupport frameworks with real cross-header dependencies, so the
old flat class-dump-per-file layout no longer applies.

- Vendor only what WDA actually needs: the transitive closure of the 22
  headers WDA imports, cleaned up for compilation (duplicate property/method
  declarations, inline-redefined CGRect/CGPoint/CGSize/CGVector structs
  colliding with CoreGraphics, missing forward declarations, circular
  superclass #includes).
- For classes/protocols that are now genuine public Apple API (XCUIElement,
  XCUIApplication, XCTestCase, etc.), import the real public header and
  extend it with a private category containing only the delta members,
  instead of a full standalone redeclaration, to avoid conflicting with the
  real system module.
- XCEventGenerator is gone upstream; event synthesis now goes through
  XCUIDevice.eventSynthesizer. XCTestManager_ManagerInterface is renamed to
  XCTMessagingChannel_RunnerToDaemon. Port the protocol-version handshake to
  read XCTRunnerDaemonSession.remoteInterfaceCapabilities, falling back to
  the legacy selector on older daemons.
- Sync project.pbxproj header membership for WebDriverAgentLib and
  WebDriverAgentLib_tvOS to match the new file set.

Verified WebDriverAgentLib(_tvOS) and WebDriverAgentRunner(_tvOS) build
cleanly, and a live simulator run confirmed /status, session creation,
element queries, and event synthesis (coordinate tap) all work.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Companion commit to c79ef4d (the header refresh) — includes the consumer
code changes that update call sites for the renamed/restructured private
API, plus fixes found by running the unit/integration test suites against
the new headers on iOS 17.5 and 27.0 simulators:

- Retype daemonProxy/testRunnerProxy from XCTestManager_ManagerInterface to
  XCTMessagingChannel_RunnerToDaemon; port FBTestmanagerdVersion() to read
  XCTRunnerDaemonSession.remoteInterfaceCapabilities with a legacy fallback.
- Drop the XCEventGenerator import/typedef usage (class removed upstream);
  event synthesis already goes through XCUIDevice.eventSynthesizer.
- Add missing #imports for headers that used to be pulled in transitively
  through the old flat header set (XCTIssue, XCTSourceCodeContext/Location,
  XCTElementSetTransformer-Protocol, XCPointerEventPath).
- Fix XCUIHitPointResult.hittable: the ipsw dump dropped the
  'getter=isHittable' annotation the real class actually uses, causing
  -[XCUIHitPointResult hittable] to crash with unrecognized-selector at
  runtime; same defect fixed for 5 other BOOL properties across the header
  set (XCUISiriService, XCUIElement, XCTFuture, XCUIApplicationProcess,
  XCTRuntimeIssueDetectionPolicy, XCTMemoryChecker) that ipsw dumped the
  same way.
- Fix fb_nativeScrollToVisibleWithError: for Xcode 27 beta, which moved
  -_hitPointByAttemptingToScrollToVisibleSnapshot:error: off XCUIElement
  entirely, onto a new XCUIElementBaseEventTarget wrapper obtained via
  +forElement:, renamed to add "AX". Falls back to the direct legacy
  selector on older Xcode/testmanagerd where XCUIElement still implements
  it directly. Verified against the original headers that this was not
  a pre-existing failure — confirmed via ipsw-dumped binary symbol names.

Verified: WebDriverAgentLib(_tvOS)/WebDriverAgentRunner(_tvOS) build clean;
UnitTests pass 127/127 on both iOS 17.5 and 27.0 simulators; IntegrationTests_1
passes on both (excluding testNotificationAlert, which requires a simulator
reset to pass and is unrelated to this change).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…iOS version

PR #1171 switched fb_lockScreen: to a direct IOHID Power-button press on
iOS 27+ because testmanagerd on real devices never fires the
ButtonEventsCompleted confirmation for pressLockButton anymore, causing
POST /wda/lock to time out.

That fix broke locking on iOS 27 simulators: the IOHID path times out there
too (same ButtonEventsCompleted wait), even though pressLockButton itself
still works fine and locks the simulator correctly on iOS 27. Verified by
toggling the branch directly and running testLockUnlockScreen against a
live iOS 27.0 simulator.

Scope the IOHID workaround to real devices only; simulators keep using
pressLockButton on all iOS versions.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Refreshes the vendored XCTest private headers to match modern Xcode’s split private framework surface (XCUIAutomation/XCTestCore/XCTAutomationSupport), and updates WebDriverAgentLib call sites to the new daemon/proxy and UIAutomation APIs (including Xcode 27 beta behavioral changes).

Changes:

  • Replaces legacy XCTestManager_ManagerInterface usage with XCTMessagingChannel_RunnerToDaemon and updates event synthesis to use XCUIDevice.eventSynthesizer.
  • Updates compatibility logic to use modern remoteInterfaceCapabilities negotiation (with a legacy protocol-version fallback).
  • Regenerates/curates PrivateHeaders/XCTest to a modern, compile-clean subset; removes obsolete dumped headers.

Reviewed changes

Copilot reviewed 226 out of 227 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
WebDriverAgentLib/Utilities/FBXCTestDaemonsProxy.m Updates daemon proxy protocol type and event synthesis callback typing.
WebDriverAgentLib/Utilities/FBXCTestDaemonsProxy.h Renames forward-declared daemon protocol type.
WebDriverAgentLib/Utilities/FBXCodeCompatibility.m Updates testmanagerd “version” negotiation to capabilities with legacy fallback.
WebDriverAgentLib/Utilities/FBScreenshot.m Migrates to XCTMessagingChannel_RunnerToDaemon proxy protocol.
WebDriverAgentLib/Utilities/FBFailureProofTestCase.m Adds modern XCTestCore imports used by failure reporting.
WebDriverAgentLib/Utilities/FBBaseActionsSynthesizer.h Adds pointer-event path header needed by modern synthesis APIs.
WebDriverAgentLib/Utilities/FBActiveAppDetectionPoint.m Migrates to XCTMessagingChannel_RunnerToDaemon proxy protocol.
WebDriverAgentLib/Routing/FBXCElementSnapshot.h Tightens snapshot filter block typing.
WebDriverAgentLib/Categories/XCUIElementQuery+FBHelpers.m Adds missing protocol import for modern query transformer surface.
WebDriverAgentLib/Categories/XCUIElement+FBScrolling.m Adds Xcode 27 hit-point scrolling path via XCUIElementBaseEventTarget with fallback.
WebDriverAgentLib/Categories/XCUIDevice+FBHelpers.m Scopes iOS 27 IOHID lock workaround away from simulators.
WebDriverAgentLib/Categories/XCUIApplicationProcess+FBQuiescence.m Imports updated private timeout symbols for quiescence control.
WebDriverAgentLib/Categories/XCUIApplication+FBTouchAction.m Removes obsolete XCEventGenerator dependency.
WebDriverAgentLib/Categories/XCUIApplication+FBHelpers.m Migrates to XCTMessagingChannel_RunnerToDaemon proxy protocol.
PrivateHeaders/XCTest/XCUIXcodeApplicationManaging-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUISystem.h Adds regenerated modern private category header.
PrivateHeaders/XCTest/XCUISiriService.h Adds regenerated modern private category header.
PrivateHeaders/XCTest/XCUIScreenDataSource-Protocol.h Updates regenerated screen data source protocol surface.
PrivateHeaders/XCTest/XCUIResetAuthorizationStatusOfProtectedResourcesInterface-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIRemoteSiriInterface-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIRemoteDeviceRunner-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIRemoteAccessibilityInterface-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIRecorderUtilities.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCUIRecorderTimingMessage.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCUIRecorderNodeFinderMatch.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCUIPlatformApplicationServicesProviding-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUILocation.h Adds regenerated modern private category header.
PrivateHeaders/XCTest/XCUIKnobControl.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCUIIssueDiagnosticsProviding-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIInterruptionMonitoring-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIHitPointResult.h Updates regenerated hit-point result API surface.
PrivateHeaders/XCTest/XCUIEventRecording-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIElementTypeQueryProvider_Private-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIElementHitPointCoordinate.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCUIElementEventTarget-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIElementAttributesPrivate-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIElementAsynchronousHandlerWrapper.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCUIDeviceEventAndStateInterface-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIDeviceDelayedAttachmentTransferSupportInterface-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIDeviceAutomationModeInterface-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIButtonConsole.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCUIAXNotificationHandling-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIApplicationRegistry.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCUIApplicationProcessTracker-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIApplicationProcessManaging-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIApplicationProcessDelegate-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIApplicationPlatformServicesProviderDelegate-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIApplicationOpenRequest.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCUIApplicationMonitor-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIApplicationManaging-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIApplicationImplReporter-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIApplicationAutomationSessionProviding-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIAlertMonitoring-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCUIAccessibilityInterface-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCTWaiterWait.h Adds regenerated modern private waiter helper.
PrivateHeaders/XCTest/XCTWaiterManager.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTWaiterManager-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCTWaiterManagement-Protocol.h Updates regenerated waiter management protocol surface.
PrivateHeaders/XCTest/XCTWaiterDelegatePrivate-Protocol.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTWaiterDelegate-Protocol.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTUIApplicationMonitor-Protocol.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTTestSelection.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCTTestRunSessionDelegate-Protocol.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTTestRunSession.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTTestIdentifierSet.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCTTagSelection.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCTSourceCodeLocation.h Adds regenerated modern private category header.
PrivateHeaders/XCTest/XCTSourceCodeContext.h Adds regenerated modern private category header.
PrivateHeaders/XCTest/XCTSkippedTestContext.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCTSignpostListener-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCTScreenCapturePolicy.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCTRuntimeIssueDetectionPolicy.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCTRuntimeDiagnosticsPolicy.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCTRunnerIDESessionDelegate-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCTRunnerDaemonSessionUIAutomationDelegate-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCTRunnerAutomationSession.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTRunnerAutomationSession-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCTReportingSessionTestReporter.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCTReportingSessionTestContainer-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCTReportingSessionIssueReporter-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCTReportingSessionConfiguration-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCTReportingSession.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCTRepetitionPolicy.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCTRemoteSignpostListenerProxy-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCTPromise.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCTNSPredicateExpectationObject-Protocol.h Updates regenerated predicate expectation object protocol.
PrivateHeaders/XCTest/XCTNSPredicateExpectation.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTNSNotificationExpectation.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTMetricDiagnosticHelper.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCTMetric.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTMessagingRole_UserPresence-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_UIAutomationRunnerEventReporting-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_UIAutomation-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_TestReporting-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_TestExecution-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_TelemetrySending-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_SystemConfiguration-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_SiriAutomation-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_SignpostRequesting-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_SelfDiagnosisIssueReporting-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_ScreenRecording-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_ProtectedResourceAuthorization-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_ProcessMonitoring-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_PerformanceMeasurementReporting-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_MemoryTesting-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_HIDEventRecording-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_ForcePressureSupportQuerying-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_EventSynthesis-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_DebugLogging-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_BundleRequesting-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_AttachmentFutureResultStatusUpdating-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingRole_ActivityReporting-Protocol.h Adds regenerated modern private messaging role protocol.
PrivateHeaders/XCTest/XCTMessagingChannel_RunnerToIDE-Protocol.h Adds regenerated modern private messaging channel protocol.
PrivateHeaders/XCTest/XCTMessagingChannel_RunnerToDaemon-Protocol.h Adds regenerated modern private messaging channel protocol.
PrivateHeaders/XCTest/XCTMessagingChannel_IDEToRunner-Protocol.h Adds regenerated modern private messaging channel protocol.
PrivateHeaders/XCTest/XCTMemoryCheckerDelegate-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCTMemoryChecker.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCTMeasureOptions.h Adds regenerated modern private category header.
PrivateHeaders/XCTest/XCTMacCatalystStatusProviding-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCTKVOExpectation.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTIssueHandling-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCTIssue.h Adds regenerated modern private category header.
PrivateHeaders/XCTest/XCTHarnessEventReporting-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCTFuture.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCTExpectedFailureContextManager.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCTestWaiter.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTestSuiteRun.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTestSuite.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTestRun.h Updates regenerated modern private category surface.
PrivateHeaders/XCTest/XCTestProbe.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTestObserver.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTestObservation-Protocol.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTestMisuseObserver.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTestManager_TestsInterface-Protocol.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTestManager_IDEInterface-Protocol.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTestLog.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTestExpectationWaiter.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTestExpectationDelegate-Protocol.h Updates regenerated expectation delegate protocol surface.
PrivateHeaders/XCTest/XCTestExpectation.h Updates regenerated expectation private category surface.
PrivateHeaders/XCTest/XCTestDriverInterface-Protocol.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTestContextScope.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTestContext.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTestCastMethodNamesUIAutomationDelegate-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCTestCaseUIAutomationDelegate-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCTestCaseSuite.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTestCaseRun.h Updates regenerated modern private category surface.
PrivateHeaders/XCTest/XCTestCaseDiscoveryUIAutomationDelegate-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCTest.h Updates regenerated modern private category surface.
PrivateHeaders/XCTest/XCTElementSnapshotProvider-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCTElementSnapshotAttributeDataSource-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCTElementSetTransformer-Protocol.h Updates regenerated element-set transformer protocol surface.
PrivateHeaders/XCTest/XCTDarwinNotificationExpectation.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTCapabilitiesProviding-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/XCTCapabilities.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCTAXClient-Protocol.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTAutomationTarget-Protocol.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTAttachmentManager.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCTAsyncActivity.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTAsyncActivity-Protocol.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCTAggregateSuiteRunStatistics.h Adds regenerated modern private class header.
PrivateHeaders/XCTest/XCSynthesizedEventRecord.h Updates regenerated modern synthesized event record surface.
PrivateHeaders/XCTest/XCSymbolicatorHolder.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCSymbolicationRecord.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCSourceCodeTreeNodeEnumerator.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCSourceCodeRecording.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCKeyMappingPath.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCKeyboardLayout.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCKeyboardInputSolver.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCDeviceEvent.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCDebugLogDelegate-Protocol.h Updates regenerated debug log delegate protocol surface.
PrivateHeaders/XCTest/XCApplicationQuery.h Updates regenerated application query surface.
PrivateHeaders/XCTest/XCApplicationMonitor.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCApplicationMonitor_iOS.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/XCActivityRecord.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/UITapGestureRecognizer-RecordingAdditions.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/UISwipeGestureRecognizer-RecordingAdditions.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/UIPinchGestureRecognizer-RecordingAdditions.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/UIPanGestureRecognizer-RecordingAdditions.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/UILongPressGestureRecognizer-RecordingAdditions.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/UIGestureRecognizer-RecordingAdditions.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/NSValue-XCTestAdditions.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/NSString-XCTAdditions.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/NSMutableCopying-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/NSFastEnumeration-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/CDStructures.h Replaces legacy class-dump typedefs with needed private timeout symbols.
PrivateHeaders/XCTest/_XCTWaiterImpl.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/_XCTNSPredicateExpectationImplementation.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/_XCTNSNotificationExpectationImplementation.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/_XCTMessaging_VoidProtocol-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/_XCTestSuiteImplementation.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/_XCTestObservationPrivate-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/_XCTestObservationInternal-Protocol.h Adds regenerated modern private protocol header.
PrivateHeaders/XCTest/_XCTestObservationCenterImplementation.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/_XCTestImplementation.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/_XCTestExpectationImplementation.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/_XCTestCaseInterruptionException.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/_XCTDarwinNotificationExpectationImplementation.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/_XCKVOExpectationImplementation.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/_XCInternalTestRun.h Removes obsolete dumped header no longer needed.
PrivateHeaders/XCTest/_TtC10XCTestCore19XCTReportingContext.h Adds regenerated Swift-overlay type header used by XCT reporting session.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +116 to 119
void (^handlerBlock)(XCSynthesizedEventRecord *, NSError *) = ^(XCSynthesizedEventRecord *innerRecord, NSError *invokeError) {
errorHandler(invokeError);
};
[[XCUIDevice.sharedDevice eventSynthesizer] synthesizeEvent:record completion:(id)^(BOOL result, NSError *invokeError) {

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am ok with that

…e 15.4 compat

XCUIAutomation.framework isn't importable on older Xcode (e.g. 15.4 in CI),
where these classes still live under the XCTest umbrella. #import <XCTest/X.h>
resolves to the real declaration on old Xcode and to Apple's forwarding shim
on new Xcode, so it works on both.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 231 out of 232 changed files in this pull request and generated no new comments.

Suppressed comments (2)

WebDriverAgentLib/Utilities/FBXCodeCompatibility.m:83

  • In the legacy handshake path, testmanagerdVersion is passed into _XCT_exchangeProtocolVersion:reply: before it is assigned, so the outgoing version will be 0 (the default for a static). This is inconsistent with the modern path’s 0xFFFF “newest/full-featured” sentinel and may cause incorrect negotiation on older daemons.
    WebDriverAgentLib/Utilities/FBXCTestDaemonsProxy.m:97
  • NSAssert is being called with an extra varargs argument (proxy) but the format string has no placeholders. This typically triggers -Wformat-extra-args and can fail builds if warnings are treated as errors. If the intent is to include the proxy in the assertion message, add a format placeholder (and use nil for Objective-C objects).

@KazuCocoa

Copy link
Copy Markdown
Member

(I'd like to run quick check on real devices as well, so the test will be late)

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.

3 participants