fix: Update PrivateHeaders/XCTest to modern Xcode private API surface - #1202
fix: Update PrivateHeaders/XCTest to modern Xcode private API surface#1202mykola-mokhnach wants to merge 5 commits into
Conversation
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>
There was a problem hiding this comment.
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_ManagerInterfaceusage withXCTMessagingChannel_RunnerToDaemonand updates event synthesis to useXCUIDevice.eventSynthesizer. - Updates compatibility logic to use modern
remoteInterfaceCapabilitiesnegotiation (with a legacy protocol-version fallback). - Regenerates/curates
PrivateHeaders/XCTestto 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.
| void (^handlerBlock)(XCSynthesizedEventRecord *, NSError *) = ^(XCSynthesizedEventRecord *innerRecord, NSError *invokeError) { | ||
| errorHandler(invokeError); | ||
| }; | ||
| [[XCUIDevice.sharedDevice eventSynthesizer] synthesizeEvent:record completion:(id)^(BOOL result, NSError *invokeError) { |
…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.
There was a problem hiding this comment.
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,
testmanagerdVersionis passed into_XCT_exchangeProtocolVersion:reply:before it is assigned, so the outgoing version will be0(the default for a static). This is inconsistent with the modern path’s0xFFFF“newest/full-featured” sentinel and may cause incorrect negotiation on older daemons.
WebDriverAgentLib/Utilities/FBXCTestDaemonsProxy.m:97 NSAssertis being called with an extra varargs argument (proxy) but the format string has no placeholders. This typically triggers-Wformat-extra-argsand 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 usenilfor Objective-C objects).
|
(I'd like to run quick check on real devices as well, so the test will be late) |
Summary
The vendored XCTest private headers in
PrivateHeaders/XCTestwere last fully regenerated around Xcode 8.3 (2017) and had drifted significantly from Apple's current SDK, which now splits private XCTest internals acrossXCUIAutomation/XCTestCore/XCTAutomationSupportframeworks instead of one flatXCTest.framework. This PR refreshes the header set for both iOS and tvOS and fixes the fallout acrossWebDriverAgentLib.PrivateHeaders/XCTestrefresh — vendors only the transitive closure of headers WDA actually needs (22 directly-imported headers + dependencies), cleaned up for compilation: duplicate property/method declarations, inline-redefinedCGRect/CGPoint/CGSize/CGVectorstructs 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.XCEventGeneratoris gone upstream (event synthesis now goes throughXCUIDevice.eventSynthesizer);XCTestManager_ManagerInterfaceis renamed toXCTMessagingChannel_RunnerToDaemon; the protocol-version handshake inFBXCodeCompatibility.mnow readsXCTRunnerDaemonSession.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.-[XCUIHitPointResult hittable]crashed with unrecognized-selector at runtime — the header dump tool dropped thegetter=isHittableannotation the real class actually uses. Same defect fixed for 5 otherBOOLproperties across the header set.fb_nativeScrollToVisibleWithError:called a selector Xcode 27 beta moved offXCUIElementonto a newXCUIElementBaseEventTargetwrapper (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, wherepressLockButtonstopped locking on iOS 27) breaks locking on iOS 27 simulators specifically —pressLockButtonitself still works fine there. Scoped the IOHID path to real devices only.