diff --git a/Package.swift b/Package.swift new file mode 100644 index 000000000..18aa15bfb --- /dev/null +++ b/Package.swift @@ -0,0 +1,91 @@ +// swift-tools-version: 5.9 +import PackageDescription + +let package = Package( + name: "WebDriverAgent", + defaultLocalization: "en", + platforms: [ + .iOS(.v12) + ], + products: [ + // Expose the Obj-C library as a SwiftPM product so it can be imported from Swift. + .library(name: "WebDriverAgentLib", targets: ["WebDriverAgentLib"]) + ], + targets: [ + // ---- Vendor: CocoaAsyncSocket ---- + .target( + name: "CocoaAsyncSocket", + path: "WebDriverAgentLib/Vendor/CocoaAsyncSocket", + publicHeadersPath: "." + ), + + // ---- Vendor: CocoaHTTPServer ---- + .target( + name: "CocoaHTTPServer", + dependencies: ["CocoaAsyncSocket"], + path: "WebDriverAgentLib/Vendor/CocoaHTTPServer", + publicHeadersPath: ".", + cSettings: [ + .headerSearchPath("Categories"), + .headerSearchPath("Responses") + ] + ), + + // ---- Vendor: RoutingHTTPServer ---- + .target( + name: "RoutingHTTPServer", + dependencies: ["CocoaHTTPServer"], + path: "WebDriverAgentLib/Vendor/RoutingHTTPServer", + publicHeadersPath: ".", + cSettings: [ + // Need CocoaHTTPServer headers in include path for quote-style imports + .headerSearchPath("../CocoaHTTPServer"), + .headerSearchPath("../CocoaHTTPServer/Responses"), + .headerSearchPath("../CocoaHTTPServer/Categories") + ] + ), + + // ---- Main library ---- + .target( + name: "WebDriverAgentLib", + dependencies: [ + "RoutingHTTPServer" + ], + path: "WebDriverAgentLib", + exclude: [ + "Vendor" // compiled in dedicated targets above + ], + publicHeadersPath: "include", + cSettings: [ + .headerSearchPath(".."), + .headerSearchPath("include"), + .headerSearchPath("Routing"), + .headerSearchPath("Utilities"), + .headerSearchPath("Utilities/LRUCache"), + .headerSearchPath("Categories"), + .headerSearchPath("Commands"), + .headerSearchPath("include/WebDriverAgentLib"), + .headerSearchPath("../PrivateHeaders/XCTest"), + .headerSearchPath("../PrivateHeaders/MobileCoreServices"), + .headerSearchPath("../PrivateHeaders/AccessibilityUtilities"), + .headerSearchPath("../PrivateHeaders/TextInput"), + .headerSearchPath("../PrivateHeaders/UIKitCore"), + ], + linkerSettings: [ + // Link against XCTest and system UIKit/Foundation frameworks that + // are referenced across the Objective-C implementation files. + .linkedFramework("XCTest"), + .linkedFramework("UIKit"), + .linkedFramework("Foundation"), + .linkedFramework("MobileCoreServices"), + .linkedFramework("UniformTypeIdentifiers") + ] + ), + // Unit-test target (optional – keeps parity with the original project). + .testTarget( + name: "WebDriverAgentLibTests", + dependencies: ["WebDriverAgentLib"], + path: "WebDriverAgentTests" + ) + ] +) diff --git a/WebDriverAgent.xcodeproj/project.pbxproj b/WebDriverAgent.xcodeproj/project.pbxproj index ac007fd26..59d25de16 100644 --- a/WebDriverAgent.xcodeproj/project.pbxproj +++ b/WebDriverAgent.xcodeproj/project.pbxproj @@ -21,12 +21,12 @@ 13DE7A4A287C4005003243C6 /* FBXCDeviceEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 13DE7A47287C4005003243C6 /* FBXCDeviceEvent.h */; }; 13DE7A4B287C4005003243C6 /* FBXCDeviceEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 13DE7A48287C4005003243C6 /* FBXCDeviceEvent.m */; }; 13DE7A4C287C4005003243C6 /* FBXCDeviceEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 13DE7A48287C4005003243C6 /* FBXCDeviceEvent.m */; }; - 13DE7A4F287C46BB003243C6 /* FBXCElementSnapshot.h in Headers */ = {isa = PBXBuildFile; fileRef = 13DE7A4D287C46BB003243C6 /* FBXCElementSnapshot.h */; }; - 13DE7A50287C46BB003243C6 /* FBXCElementSnapshot.h in Headers */ = {isa = PBXBuildFile; fileRef = 13DE7A4D287C46BB003243C6 /* FBXCElementSnapshot.h */; }; + 13DE7A4F287C46BB003243C6 /* FBXCElementSnapshot.h in Headers */ = {isa = PBXBuildFile; fileRef = 13DE7A4D287C46BB003243C6 /* FBXCElementSnapshot.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 13DE7A50287C46BB003243C6 /* FBXCElementSnapshot.h in Headers */ = {isa = PBXBuildFile; fileRef = 13DE7A4D287C46BB003243C6 /* FBXCElementSnapshot.h */; settings = {ATTRIBUTES = (Public, ); }; }; 13DE7A51287C46BB003243C6 /* FBXCElementSnapshot.m in Sources */ = {isa = PBXBuildFile; fileRef = 13DE7A4E287C46BB003243C6 /* FBXCElementSnapshot.m */; }; 13DE7A52287C46BB003243C6 /* FBXCElementSnapshot.m in Sources */ = {isa = PBXBuildFile; fileRef = 13DE7A4E287C46BB003243C6 /* FBXCElementSnapshot.m */; }; - 13DE7A55287CA1EC003243C6 /* FBXCElementSnapshotWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 13DE7A53287CA1EC003243C6 /* FBXCElementSnapshotWrapper.h */; }; - 13DE7A56287CA1EC003243C6 /* FBXCElementSnapshotWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 13DE7A53287CA1EC003243C6 /* FBXCElementSnapshotWrapper.h */; }; + 13DE7A55287CA1EC003243C6 /* FBXCElementSnapshotWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 13DE7A53287CA1EC003243C6 /* FBXCElementSnapshotWrapper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 13DE7A56287CA1EC003243C6 /* FBXCElementSnapshotWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 13DE7A53287CA1EC003243C6 /* FBXCElementSnapshotWrapper.h */; settings = {ATTRIBUTES = (Public, ); }; }; 13DE7A57287CA1EC003243C6 /* FBXCElementSnapshotWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 13DE7A54287CA1EC003243C6 /* FBXCElementSnapshotWrapper.m */; }; 13DE7A58287CA1EC003243C6 /* FBXCElementSnapshotWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 13DE7A54287CA1EC003243C6 /* FBXCElementSnapshotWrapper.m */; }; 13DE7A5B287CA444003243C6 /* FBXCElementSnapshotWrapper+Helpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 13DE7A59287CA444003243C6 /* FBXCElementSnapshotWrapper+Helpers.h */; }; @@ -2300,6 +2300,8 @@ 641EE6392240C5CA00173FCB /* FBRouteRequest.h in Headers */, 648C10AC22AAAD9C00B81B9A /* UIKeyboardImpl.h in Headers */, 718226CD2587443700661B83 /* GCDAsyncSocket.h in Headers */, + 13DE7A50287C46BB003243C6 /* FBXCElementSnapshot.h in Headers */, + 13DE7A56287CA1EC003243C6 /* FBXCElementSnapshotWrapper.h in Headers */, 71F3E7D525417FF400E0C22B /* FBSettings.h in Headers */, 641EE63A2240C5CA00173FCB /* XCTest.h in Headers */, 641EE63B2240C5CA00173FCB /* FBAlertsMonitor.h in Headers */, @@ -2348,7 +2350,6 @@ 641EE6632240C5CA00173FCB /* FBUnknownCommands.h in Headers */, 641EE7062240CDCF00173FCB /* XCUIElement+FBTVFocuse.h in Headers */, 71822738258744B800661B83 /* HTTPConnection.h in Headers */, - 13DE7A56287CA1EC003243C6 /* FBXCElementSnapshotWrapper.h in Headers */, 641EE6642240C5CA00173FCB /* NSPredicate+FBFormat.h in Headers */, 641EE6652240C5CA00173FCB /* UILongPressGestureRecognizer-RecordingAdditions.h in Headers */, 641EE6662240C5CA00173FCB /* XCTestCase.h in Headers */, @@ -2510,7 +2511,6 @@ 641EE6E72240C5CA00173FCB /* XCUIElement+FBFind.h in Headers */, 641EE6E82240C5CA00173FCB /* XCTestManager_ManagerInterface-Protocol.h in Headers */, 641EE6E92240C5CA00173FCB /* FBFailureProofTestCase.h in Headers */, - 13DE7A50287C46BB003243C6 /* FBXCElementSnapshot.h in Headers */, 641EE6EA2240C5CA00173FCB /* XCTTestRunSessionDelegate-Protocol.h in Headers */, 641EE6EB2240C5CA00173FCB /* XCTestCaseSuite.h in Headers */, 641EE6EC2240C5CA00173FCB /* _XCInternalTestRun.h in Headers */, @@ -2581,6 +2581,7 @@ EE35AD721E3B77D600A02D78 /* XCUIElementHitPointCoordinate.h in Headers */, EE35AD3F1E3B77D600A02D78 /* XCTDarwinNotificationExpectation.h in Headers */, EE35AD5F1E3B77D600A02D78 /* XCTRunnerAutomationSession.h in Headers */, + 13DE7A4F287C46BB003243C6 /* FBXCElementSnapshot.h in Headers */, 71C9EAAC25E8415A00470CD8 /* FBScreenshot.h in Headers */, EE35AD371E3B77D600A02D78 /* XCSourceCodeTreeNodeEnumerator.h in Headers */, EE158AB01CBD456F00A3E3F0 /* XCUIElement+FBIsVisible.h in Headers */, @@ -2678,7 +2679,6 @@ EE158AB81CBD456F00A3E3F0 /* FBAlertViewCommands.h in Headers */, EE35AD651E3B77D600A02D78 /* XCTWaiter.h in Headers */, EE35AD681E3B77D600A02D78 /* XCTWaiterManagement-Protocol.h in Headers */, - 13DE7A4F287C46BB003243C6 /* FBXCElementSnapshot.h in Headers */, EE35AD451E3B77D600A02D78 /* XCTestContext.h in Headers */, EE35AD661E3B77D600A02D78 /* XCTWaiterDelegate-Protocol.h in Headers */, EE35AD0E1E3B77D600A02D78 /* _XCTestExpectationImplementation.h in Headers */, diff --git a/WebDriverAgentLib/Categories/XCUIElement+FBAccessibility.h b/WebDriverAgentLib/Categories/XCUIElement+FBAccessibility.h index 2af37a8d5..5833b5e66 100644 --- a/WebDriverAgentLib/Categories/XCUIElement+FBAccessibility.h +++ b/WebDriverAgentLib/Categories/XCUIElement+FBAccessibility.h @@ -8,7 +8,7 @@ */ #import -#import "FBXCElementSnapshotWrapper.h" +#import NS_ASSUME_NONNULL_BEGIN diff --git a/WebDriverAgentLib/Categories/XCUIElement+FBIsVisible.h b/WebDriverAgentLib/Categories/XCUIElement+FBIsVisible.h index 2acc56511..ac079367d 100644 --- a/WebDriverAgentLib/Categories/XCUIElement+FBIsVisible.h +++ b/WebDriverAgentLib/Categories/XCUIElement+FBIsVisible.h @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -#import "FBXCElementSnapshotWrapper.h" +#import NS_ASSUME_NONNULL_BEGIN diff --git a/WebDriverAgentLib/Categories/XCUIElement+FBUtilities.h b/WebDriverAgentLib/Categories/XCUIElement+FBUtilities.h index c5d4bd7f6..64a499110 100644 --- a/WebDriverAgentLib/Categories/XCUIElement+FBUtilities.h +++ b/WebDriverAgentLib/Categories/XCUIElement+FBUtilities.h @@ -9,7 +9,7 @@ #import #import -#import "FBXCElementSnapshot.h" +#import NS_ASSUME_NONNULL_BEGIN diff --git a/WebDriverAgentLib/Categories/XCUIElement+FBWebDriverAttributes.h b/WebDriverAgentLib/Categories/XCUIElement+FBWebDriverAttributes.h index fdeedaf91..a721c2a15 100644 --- a/WebDriverAgentLib/Categories/XCUIElement+FBWebDriverAttributes.h +++ b/WebDriverAgentLib/Categories/XCUIElement+FBWebDriverAttributes.h @@ -9,7 +9,7 @@ #import #import -#import "FBXCElementSnapshotWrapper.h" +#import NS_ASSUME_NONNULL_BEGIN diff --git a/WebDriverAgentLib/Utilities/FBXPath.h b/WebDriverAgentLib/Utilities/FBXPath.h index 50c851978..59c48e586 100644 --- a/WebDriverAgentLib/Utilities/FBXPath.h +++ b/WebDriverAgentLib/Utilities/FBXPath.h @@ -9,7 +9,7 @@ #import #import -#import "FBXCElementSnapshot.h" +#import #ifdef __clang__ #pragma clang diagnostic push diff --git a/WebDriverAgentLib/WebDriverAgentLib.h b/WebDriverAgentLib/WebDriverAgentLib.h index f14994b86..06be5cd07 100644 --- a/WebDriverAgentLib/WebDriverAgentLib.h +++ b/WebDriverAgentLib/WebDriverAgentLib.h @@ -15,6 +15,7 @@ FOUNDATION_EXPORT double WebDriverAgentLib_VersionNumber; //! Project version string for WebDriverAgentLib_. FOUNDATION_EXPORT const unsigned char WebDriverAgentLib_VersionString[]; +#import #import #import #import @@ -38,9 +39,17 @@ FOUNDATION_EXPORT const unsigned char WebDriverAgentLib_VersionString[]; #import #import #import +#import +#import +#import +#import +#import +#import +#import #import #import #import +#import #import #import #import diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/CDStructures.h b/WebDriverAgentLib/include/WebDriverAgentLib/CDStructures.h new file mode 120000 index 000000000..472715e10 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/CDStructures.h @@ -0,0 +1 @@ +../../../PrivateHeaders/XCTest/CDStructures.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBAlert.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBAlert.h new file mode 120000 index 000000000..ee9de5254 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBAlert.h @@ -0,0 +1 @@ +../../FBAlert.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBCommandHandler.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBCommandHandler.h new file mode 120000 index 000000000..a0b753c9a --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBCommandHandler.h @@ -0,0 +1 @@ +../../Routing/FBCommandHandler.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBCommandStatus.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBCommandStatus.h new file mode 120000 index 000000000..368c8c4f8 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBCommandStatus.h @@ -0,0 +1 @@ +../../Routing/FBCommandStatus.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBConfiguration.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBConfiguration.h new file mode 120000 index 000000000..052fb53f8 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBConfiguration.h @@ -0,0 +1 @@ +../../Utilities/FBConfiguration.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBDebugLogDelegateDecorator.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBDebugLogDelegateDecorator.h new file mode 120000 index 000000000..d0b977e5d --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBDebugLogDelegateDecorator.h @@ -0,0 +1 @@ +../../Utilities/FBDebugLogDelegateDecorator.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBElement.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBElement.h new file mode 120000 index 000000000..ce26e1d54 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBElement.h @@ -0,0 +1 @@ +../../Routing/FBElement.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBElementCache.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBElementCache.h new file mode 120000 index 000000000..a8771464e --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBElementCache.h @@ -0,0 +1 @@ +../../Routing/FBElementCache.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBElementTypeTransformer.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBElementTypeTransformer.h new file mode 120000 index 000000000..cc086de73 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBElementTypeTransformer.h @@ -0,0 +1 @@ +../../Utilities/FBElementTypeTransformer.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBErrorBuilder.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBErrorBuilder.h new file mode 120000 index 000000000..d60b1a0c0 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBErrorBuilder.h @@ -0,0 +1 @@ +../../Utilities/FBErrorBuilder.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBExceptionHandler.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBExceptionHandler.h new file mode 120000 index 000000000..7db7056ad --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBExceptionHandler.h @@ -0,0 +1 @@ +../../Routing/FBExceptionHandler.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBFailureProofTestCase.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBFailureProofTestCase.h new file mode 120000 index 000000000..b3e0a98cf --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBFailureProofTestCase.h @@ -0,0 +1 @@ +../../Utilities/FBFailureProofTestCase.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBHTTPStatusCodes.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBHTTPStatusCodes.h new file mode 120000 index 000000000..cde182008 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBHTTPStatusCodes.h @@ -0,0 +1 @@ +../../Routing/FBHTTPStatusCodes.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBKeyboard.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBKeyboard.h new file mode 120000 index 000000000..9ba05b57a --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBKeyboard.h @@ -0,0 +1 @@ +../../Utilities/FBKeyboard.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBLogger.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBLogger.h new file mode 120000 index 000000000..9d658f70b --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBLogger.h @@ -0,0 +1 @@ +../../Utilities/FBLogger.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBMacros.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBMacros.h new file mode 120000 index 000000000..a3fd887ff --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBMacros.h @@ -0,0 +1 @@ +../../Utilities/FBMacros.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBResponseJSONPayload.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBResponseJSONPayload.h new file mode 120000 index 000000000..f6e941822 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBResponseJSONPayload.h @@ -0,0 +1 @@ +../../Routing/FBResponseJSONPayload.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBResponsePayload.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBResponsePayload.h new file mode 120000 index 000000000..dd65ff4d7 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBResponsePayload.h @@ -0,0 +1 @@ +../../Routing/FBResponsePayload.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBRoute.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBRoute.h new file mode 120000 index 000000000..e0d1033e6 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBRoute.h @@ -0,0 +1 @@ +../../Routing/FBRoute.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBRouteRequest.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBRouteRequest.h new file mode 120000 index 000000000..622eb890b --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBRouteRequest.h @@ -0,0 +1 @@ +../../Routing/FBRouteRequest.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBRunLoopSpinner.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBRunLoopSpinner.h new file mode 120000 index 000000000..d33a94132 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBRunLoopSpinner.h @@ -0,0 +1 @@ +../../Utilities/FBRunLoopSpinner.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBRuntimeUtils.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBRuntimeUtils.h new file mode 120000 index 000000000..89f1b09c9 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBRuntimeUtils.h @@ -0,0 +1 @@ +../../Utilities/FBRuntimeUtils.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBSession.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBSession.h new file mode 120000 index 000000000..0b6260903 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBSession.h @@ -0,0 +1 @@ +../../Routing/FBSession.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBWebServer.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBWebServer.h new file mode 120000 index 000000000..e35ed4fe3 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBWebServer.h @@ -0,0 +1 @@ +../../Routing/FBWebServer.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBXCElementSnapshot.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBXCElementSnapshot.h new file mode 120000 index 000000000..d1e3e2e3d --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBXCElementSnapshot.h @@ -0,0 +1 @@ +../../Routing/FBXCElementSnapshot.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBXCElementSnapshotWrapper.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBXCElementSnapshotWrapper.h new file mode 120000 index 000000000..86839c737 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBXCElementSnapshotWrapper.h @@ -0,0 +1 @@ +../../Routing/FBXCElementSnapshotWrapper.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/FBXPath.h b/WebDriverAgentLib/include/WebDriverAgentLib/FBXPath.h new file mode 120000 index 000000000..c6d93de5f --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/FBXPath.h @@ -0,0 +1 @@ +../../Utilities/FBXPath.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/WebDriverAgentLib.h b/WebDriverAgentLib/include/WebDriverAgentLib/WebDriverAgentLib.h new file mode 120000 index 000000000..ddbf0d77f --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/WebDriverAgentLib.h @@ -0,0 +1 @@ +../../WebDriverAgentLib.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/XCDebugLogDelegate-Protocol.h b/WebDriverAgentLib/include/WebDriverAgentLib/XCDebugLogDelegate-Protocol.h new file mode 120000 index 000000000..922b9b8cd --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/XCDebugLogDelegate-Protocol.h @@ -0,0 +1 @@ +../../../PrivateHeaders/XCTest/XCDebugLogDelegate-Protocol.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/XCTIssue+FBPatcher.h b/WebDriverAgentLib/include/WebDriverAgentLib/XCTIssue+FBPatcher.h new file mode 120000 index 000000000..38c1f3b16 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/XCTIssue+FBPatcher.h @@ -0,0 +1 @@ +../../Categories/XCTIssue+FBPatcher.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/XCTestCase.h b/WebDriverAgentLib/include/WebDriverAgentLib/XCTestCase.h new file mode 120000 index 000000000..b58ccc867 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/XCTestCase.h @@ -0,0 +1 @@ +../../../PrivateHeaders/XCTest/XCTestCase.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/XCUIApplication+FBHelpers.h b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIApplication+FBHelpers.h new file mode 120000 index 000000000..26af3c19f --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIApplication+FBHelpers.h @@ -0,0 +1 @@ +../../Categories/XCUIApplication+FBHelpers.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/XCUIDevice+FBHelpers.h b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIDevice+FBHelpers.h new file mode 120000 index 000000000..50a6b7820 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIDevice+FBHelpers.h @@ -0,0 +1 @@ +../../Categories/XCUIDevice+FBHelpers.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/XCUIDevice+FBRotation.h b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIDevice+FBRotation.h new file mode 120000 index 000000000..a897c6491 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIDevice+FBRotation.h @@ -0,0 +1 @@ +../../Categories/XCUIDevice+FBRotation.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBAccessibility.h b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBAccessibility.h new file mode 120000 index 000000000..c442e358f --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBAccessibility.h @@ -0,0 +1 @@ +../../Categories/XCUIElement+FBAccessibility.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBFind.h b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBFind.h new file mode 120000 index 000000000..969533bdc --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBFind.h @@ -0,0 +1 @@ +../../Categories/XCUIElement+FBFind.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBForceTouch.h b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBForceTouch.h new file mode 120000 index 000000000..112b8246d --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBForceTouch.h @@ -0,0 +1 @@ +../../Categories/XCUIElement+FBForceTouch.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBIsVisible.h b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBIsVisible.h new file mode 120000 index 000000000..34c997989 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBIsVisible.h @@ -0,0 +1 @@ +../../Categories/XCUIElement+FBIsVisible.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBScrolling.h b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBScrolling.h new file mode 120000 index 000000000..679ddc999 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBScrolling.h @@ -0,0 +1 @@ +../../Categories/XCUIElement+FBScrolling.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBUtilities.h b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBUtilities.h new file mode 120000 index 000000000..690540eca --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBUtilities.h @@ -0,0 +1 @@ +../../Categories/XCUIElement+FBUtilities.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBWebDriverAttributes.h b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBWebDriverAttributes.h new file mode 120000 index 000000000..af760f94b --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement+FBWebDriverAttributes.h @@ -0,0 +1 @@ +../../Categories/XCUIElement+FBWebDriverAttributes.h \ No newline at end of file diff --git a/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement.h b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement.h new file mode 120000 index 000000000..ee575ffe7 --- /dev/null +++ b/WebDriverAgentLib/include/WebDriverAgentLib/XCUIElement.h @@ -0,0 +1 @@ +../../../PrivateHeaders/XCTest/XCUIElement.h \ No newline at end of file diff --git a/headers.sh b/headers.sh new file mode 100755 index 000000000..60b4d7062 --- /dev/null +++ b/headers.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +# sync-public-headers.sh +# +# 1. Scans all .h/.m/.mm files under WebDriverAgentLib/ for +# #import statements. +# 2. Resolves each header's actual location (either in WebDriverAgentLib/* +# or PrivateHeaders/*). +# 3. Creates/updates a symlink inside WebDriverAgentLib/include/ +# so the header is exported by SwiftPM. +# +# ./sync-public-headers.sh +# +# Run this from the repository root. Re-run whenever you add or move headers. + +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "$0")" && pwd)" +WDA_DIR="$ROOT_DIR/WebDriverAgentLib" +INCLUDE_DIR="$WDA_DIR/include" + +mkdir -p "$INCLUDE_DIR" + +echo "Generating symlinks in ${INCLUDE_DIR#$ROOT_DIR/}" +echo + +# 1. collect unique imports (portable, no mapfile) +IMPORTS=$(find "$WDA_DIR" -type f \( -name '*.h' -o -name '*.m' -o -name '*.mm' \) -print0 | + xargs -0 grep -h -o '#import ]*>' | + sed 's/^#import[[:space:]]*//' | + sort -u) + +# 2. process each import +while IFS= read -r import; do + header=${import#} + + # where is the real file? + real_path=$(find \ + "$WDA_DIR" \ + "$ROOT_DIR/PrivateHeaders" \ + -type f -name "$header" | head -n 1 || true) + + if [[ -z $real_path ]]; then + echo "⚠️ $header … NOT FOUND" + continue + fi + + link="$INCLUDE_DIR/WebDriverAgentLib/$header" + mkdir -p "$(dirname "$link")" + + # portable relative path for the symlink + rel_dest=$(python3 -c "import os,sys,os.path; print(os.path.relpath(sys.argv[2], sys.argv[1]))" "$(dirname "$link")" "$real_path") + printf 'Creating symlink %s → %s\n' "${link#$ROOT_DIR/}" "$rel_dest" + + ln -sf "$rel_dest" "$link" +done <<< "$IMPORTS"