@devicelab/maestro-runner-darwin-arm64 1.1.29 → 1.1.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +15 -4
  2. package/bin/maestro-runner +0 -0
  3. package/drivers/android/devicelab-android-driver-test.apk +0 -0
  4. package/drivers/android/devicelab-android-driver.apk +0 -0
  5. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/ATTRIBUTION.md +16 -0
  6. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Lifecycle.swift +33 -0
  7. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Snapshot.swift +195 -88
  8. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests.swift +3 -0
  9. package/drivers/ios/WebDriverAgent/CHANGELOG.md +202 -0
  10. package/drivers/ios/WebDriverAgent/README.md +18 -9
  11. package/drivers/ios/WebDriverAgent/Scripts/ci/build-real.sh +6 -10
  12. package/drivers/ios/WebDriverAgent/Scripts/fetch-prebuilt-wda.mjs +3 -2
  13. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/project.pbxproj +119 -0
  14. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCAXClient_iOS+FBSnapshotReqParams.m +8 -0
  15. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBHelpers.h +3 -0
  16. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBHelpers.m +30 -1
  17. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBTouchAction.h +53 -0
  18. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBTouchAction.m +124 -0
  19. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBHelpers.h +6 -0
  20. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBHelpers.m +100 -23
  21. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBHinge.h +41 -0
  22. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBHinge.m +215 -0
  23. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBRotation.m +8 -3
  24. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBFind.m +20 -7
  25. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBScrolling.m +110 -50
  26. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBTyping.h +7 -0
  27. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBTyping.m +20 -0
  28. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBUtilities.m +14 -11
  29. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBCustomCommands.m +86 -10
  30. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBElementCommands.m +57 -7
  31. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBSessionCommands.m +3 -2
  32. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Info.plist +2 -2
  33. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBHTTPServer.m +39 -16
  34. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBScreenRecordingRequest.m +7 -2
  35. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBSession.h +22 -0
  36. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBSession.m +78 -12
  37. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBTCPSocket.h +5 -1
  38. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBTCPSocket.m +10 -1
  39. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBWebServer.m +4 -1
  40. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBActiveAppDetectionPoint.h +2 -2
  41. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBActiveAppDetectionPoint.m +20 -0
  42. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBConfiguration.h +8 -0
  43. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBConfiguration.m +2 -0
  44. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBHIDOperations.h +41 -0
  45. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBHIDOperations.m +244 -0
  46. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBImageProcessor.m +3 -1
  47. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMathUtils.h +11 -0
  48. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMathUtils.m +38 -0
  49. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMjpegServer.m +5 -3
  50. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBScreen.h +17 -0
  51. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBScreen.m +76 -1
  52. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBScreenshot.h +2 -2
  53. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBScreenshot.m +6 -2
  54. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBSettings.h +2 -0
  55. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBSettings.m +2 -0
  56. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBSettingsHandler.m +48 -0
  57. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBW3CActionsSynthesizer.m +121 -13
  58. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXPath.m +181 -128
  59. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/LRUCache/LRUCache.m +8 -5
  60. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/LRUCache/LRUCacheNode.h +1 -1
  61. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/WebDriverAgentLib.h +1 -0
  62. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/COORDINATE_PROBE.md +3 -1
  63. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBCoordinateProbeViewController.m +18 -0
  64. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/SceneDelegate.m +33 -0
  65. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/ViewController.m +26 -7
  66. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBConfigurationTests.m +52 -0
  67. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBDisplayGestureTests.m +541 -0
  68. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBElementSwipingTests.m +95 -0
  69. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBImageProcessorTests.m +34 -0
  70. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBScreenTests.m +392 -0
  71. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBSessionIntegrationTests.m +97 -0
  72. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBTypingTest.m +33 -0
  73. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBW3CTouchActionsIntegrationTests.m +126 -0
  74. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIApplicationHelperTests.m +111 -0
  75. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIDeviceHelperTests.m +97 -0
  76. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIDeviceRotationTests.m +53 -0
  77. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIElementFBFindTests.m +113 -0
  78. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_tvOS/FBTVFocusIntegrationTests.m +21 -0
  79. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDAAppLifecycleIntegrationTests.swift +12 -0
  80. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBCustomCommandsTests.m +61 -0
  81. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBElementUtilitiesTests.m +40 -0
  82. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBHTTPServerSessionTests.m +22 -4
  83. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBHTTPServerTests.m +199 -5
  84. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBLRUCacheTests.m +34 -0
  85. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBMathUtilsTests.m +45 -0
  86. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBSessionTests.m +201 -0
  87. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBXPathTests.m +101 -0
  88. package/drivers/ios/WebDriverAgent/docs/hinge-angle.md +54 -0
  89. package/drivers/ios/WebDriverAgent/docs/multiple-displays.md +168 -0
  90. package/drivers/ios/WebDriverAgent/lib/webdriveragent.ts +1 -2
  91. package/drivers/ios/WebDriverAgent/lib/xcodebuild.ts +58 -10
  92. package/drivers/ios/WebDriverAgent/package.json +8 -15
  93. package/drivers/ios/WebDriverAgent/test/functional/helpers/display-settings.ts +49 -0
  94. package/drivers/ios/WebDriverAgent/test/functional/helpers/simulator.ts +7 -7
  95. package/drivers/ios/WebDriverAgent/test/functional/webdriveragent-e2e.spec.ts +4 -0
  96. package/drivers/ios/WebDriverAgent/test/unit/xcodebuild.spec.ts +230 -0
  97. package/drivers/ios/WebDriverAgent/tsconfig.json +2 -1
  98. package/drivers/ios/devicelab-ios-agent/README.md +12 -0
  99. package/drivers/ios/devicelab-ios-agent/device/DevicelabIOSAgent.app/DevicelabIOSAgent +0 -0
  100. package/drivers/ios/devicelab-ios-agent/device/DevicelabIOSAgentUITests-Runner.app/PlugIns/DevicelabIOSAgentUITests.xctest/DevicelabIOSAgentUITests +0 -0
  101. package/drivers/ios/devicelab-ios-agent/device/manifest.json +3 -3
  102. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgent.app/DevicelabIOSAgent +0 -0
  103. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/PlugIns/DevicelabIOSAgentUITests.xctest/DevicelabIOSAgentUITests +0 -0
  104. package/drivers/ios/devicelab-ios-agent/simulator/manifest.json +3 -3
  105. package/package.json +1 -1
  106. package/drivers/ios/WebDriverAgent/.editorconfig +0 -11
  107. package/drivers/ios/WebDriverAgent/.github/ISSUE_TEMPLATE.md +0 -4
  108. package/drivers/ios/WebDriverAgent/.github/actions/xcode-setup/action.yml +0 -32
  109. package/drivers/ios/WebDriverAgent/.github/dependabot.yml +0 -22
  110. package/drivers/ios/WebDriverAgent/.github/workflows/functional-test.yml +0 -103
  111. package/drivers/ios/WebDriverAgent/.github/workflows/pr-title.yml +0 -10
  112. package/drivers/ios/WebDriverAgent/.github/workflows/publish.js.yml +0 -112
  113. package/drivers/ios/WebDriverAgent/.github/workflows/unit-test.yml +0 -32
  114. package/drivers/ios/WebDriverAgent/.github/workflows/wda-package.yml +0 -114
  115. package/drivers/ios/WebDriverAgent/.github/workflows/wda-tests.yml +0 -246
  116. package/drivers/ios/WebDriverAgent/oxfmt.config.mjs +0 -6
  117. package/drivers/ios/WebDriverAgent/oxlint.config.mjs +0 -6
  118. package/drivers/ios/WebDriverAgent/release.config.mjs +0 -14
@@ -245,6 +245,7 @@
245
245
  57C72DA18039FED310967F8F /* XCTSourceCodeLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 81BB54ECBFB5B7B680BB5D4F /* XCTSourceCodeLocation.h */; };
246
246
  57EAF450031647694B6491F8 /* FBConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = EE9B76A21CF7A43900275851 /* FBConfiguration.m */; };
247
247
  583AD004FF71CAA305E6DEAF /* XCUIDevice+FBHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = AD6C26971CF2481700F8B5FF /* XCUIDevice+FBHelpers.m */; };
248
+ 0460879AD6034130AE0A3DEC /* XCUIDevice+FBHinge.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C8E6FD103A84C908F5746EA /* XCUIDevice+FBHinge.m */; };
248
249
  587AA46196BC2C46555C8E44 /* XCUIButtonConsole.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E09842154A44874C4E9CA01 /* XCUIButtonConsole.h */; settings = {ATTRIBUTES = (Public, ); }; };
249
250
  588F51093FD2A5597366C282 /* XCUIElementEventTarget-Protocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DC62BF635704E9C72AF533E /* XCUIElementEventTarget-Protocol.h */; };
250
251
  5967912A40E807CDBE87E4B2 /* XCTReportingSessionIssueReporter-Protocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 525D62A58488A52AA1BFE94A /* XCTReportingSessionIssueReporter-Protocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -327,6 +328,7 @@
327
328
  641EE60A2240C5CA00173FCB /* FBLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = EE9B76A41CF7A43900275851 /* FBLogger.m */; };
328
329
  641EE60B2240C5CA00173FCB /* FBCustomCommands.m in Sources */ = {isa = PBXBuildFile; fileRef = EE9AB7531CAEDF0C008C271F /* FBCustomCommands.m */; };
329
330
  641EE60C2240C5CA00173FCB /* XCUIDevice+FBHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = AD6C26971CF2481700F8B5FF /* XCUIDevice+FBHelpers.m */; };
331
+ 181F0DBB6D28418680D52128 /* XCUIDevice+FBHinge.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C8E6FD103A84C908F5746EA /* XCUIDevice+FBHinge.m */; };
330
332
  641EE60D2240C5CA00173FCB /* XCTestPrivateSymbols.m in Sources */ = {isa = PBXBuildFile; fileRef = EE6B64FC1D0F86EF00E85F5D /* XCTestPrivateSymbols.m */; };
331
333
  641EE60E2240C5CA00173FCB /* XCUIElement+FBTyping.m in Sources */ = {isa = PBXBuildFile; fileRef = AD76723C1D6B7CC000610457 /* XCUIElement+FBTyping.m */; };
332
334
  641EE60F2240C5CA00173FCB /* XCUIElement+FBAccessibility.m in Sources */ = {isa = PBXBuildFile; fileRef = EE9AB7461CAEDF0C008C271F /* XCUIElement+FBAccessibility.m */; };
@@ -348,6 +350,7 @@
348
350
  641EE6232240C5CA00173FCB /* FBScreen.m in Sources */ = {isa = PBXBuildFile; fileRef = 715AFAC01FFA29180053896D /* FBScreen.m */; };
349
351
  641EE6242240C5CA00173FCB /* FBXCTestDaemonsProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = EE35AD7A1E3B80C000A02D78 /* FBXCTestDaemonsProxy.m */; };
350
352
  641EE6262240C5CA00173FCB /* FBMathUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = EE1888391DA661C400307AA8 /* FBMathUtils.m */; };
353
+ A8FC9D445C9947988C80AFC9 /* FBHIDOperations.m in Sources */ = {isa = PBXBuildFile; fileRef = 3975477AB6C14ABDBBDE3EAD /* FBHIDOperations.m */; };
351
354
  641EE6272240C5CA00173FCB /* FBXCAXClientProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7157B290221DADD2001C348C /* FBXCAXClientProxy.m */; };
352
355
  641EE6312240C5CA00173FCB /* XCUIElement+FBWebDriverAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = EEE376471D59FAE900ED88DD /* XCUIElement+FBWebDriverAttributes.h */; settings = {ATTRIBUTES = (Public, ); }; };
353
356
  641EE6322240C5CA00173FCB /* FBScreen.h in Headers */ = {isa = PBXBuildFile; fileRef = 715AFABF1FFA29180053896D /* FBScreen.h */; };
@@ -387,6 +390,7 @@
387
390
  641EE66A2240C5CA00173FCB /* NSExpression+FBFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 71555A3B1DEC460A007D4A8B /* NSExpression+FBFormat.h */; };
388
391
  641EE66E2240C5CA00173FCB /* XCUIApplication+FBAlert.h in Headers */ = {isa = PBXBuildFile; fileRef = 719CD8FA2126C88B00C7D0C2 /* XCUIApplication+FBAlert.h */; };
389
392
  641EE6702240C5CA00173FCB /* FBMathUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = EE1888381DA661C400307AA8 /* FBMathUtils.h */; settings = {ATTRIBUTES = (Public, ); }; };
393
+ EB4835874F7A441B92844DDC /* FBHIDOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = AF9468F16B934D6DB950E4BF /* FBHIDOperations.h */; settings = {ATTRIBUTES = (Public, ); }; };
390
394
  641EE6722240C5CA00173FCB /* FBElementUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 713C6DCD1DDC772A00285B92 /* FBElementUtils.h */; };
391
395
  641EE6732240C5CA00173FCB /* FBDebugCommands.h in Headers */ = {isa = PBXBuildFile; fileRef = EE9AB7541CAEDF0C008C271F /* FBDebugCommands.h */; };
392
396
  641EE6752240C5CA00173FCB /* XCUICoordinate.h in Headers */ = {isa = PBXBuildFile; fileRef = EE35ACFC1E3B77D600A02D78 /* XCUICoordinate.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -433,6 +437,7 @@
433
437
  641EE6BF2240C5CA00173FCB /* FBKeyboard.h in Headers */ = {isa = PBXBuildFile; fileRef = EE3A18641CDE734B00DE4205 /* FBKeyboard.h */; settings = {ATTRIBUTES = (Public, ); }; };
434
438
  641EE6C02240C5CA00173FCB /* XCUIApplication+FBHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = AD6C269A1CF2494200F8B5FF /* XCUIApplication+FBHelpers.h */; settings = {ATTRIBUTES = (Public, ); }; };
435
439
  641EE6C22240C5CA00173FCB /* XCUIDevice+FBHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = AD6C26961CF2481700F8B5FF /* XCUIDevice+FBHelpers.h */; settings = {ATTRIBUTES = (Public, ); }; };
440
+ 95EF6989BCBE4C548C26B140 /* XCUIDevice+FBHinge.h in Headers */ = {isa = PBXBuildFile; fileRef = E7536267DE094076A4EEE1D7 /* XCUIDevice+FBHinge.h */; settings = {ATTRIBUTES = (Public, ); }; };
436
441
  641EE6C32240C5CA00173FCB /* FBClassChainQueryParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 71A7EAF71E224648001DA4F2 /* FBClassChainQueryParser.h */; };
437
442
  641EE6C42240C5CA00173FCB /* FBMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = EE9B76A51CF7A43900275851 /* FBMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };
438
443
  641EE6C52240C5CA00173FCB /* XCTestExpectationDelegate-Protocol.h in Headers */ = {isa = PBXBuildFile; fileRef = EE35ACD91E3B77D600A02D78 /* XCTestExpectationDelegate-Protocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -584,6 +589,7 @@
584
589
  715AFAC11FFA29180053896D /* FBScreen.h in Headers */ = {isa = PBXBuildFile; fileRef = 715AFABF1FFA29180053896D /* FBScreen.h */; };
585
590
  715AFAC21FFA29180053896D /* FBScreen.m in Sources */ = {isa = PBXBuildFile; fileRef = 715AFAC01FFA29180053896D /* FBScreen.m */; };
586
591
  715AFAC41FFA2AAF0053896D /* FBScreenTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 715AFAC31FFA2AAF0053896D /* FBScreenTests.m */; };
592
+ 8EB95DF348A9438BBEAB4501 /* FBDisplayGestureTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EB95DF348A9438BBEAB4502 /* FBDisplayGestureTests.m */; };
587
593
  715D554B2229891B00524509 /* FBExceptionHandlerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 715D554A2229891B00524509 /* FBExceptionHandlerTests.m */; };
588
594
  715D5773224DE02E00DA2D99 /* libxml2.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 716C9345224D540C004B8542 /* libxml2.tbd */; };
589
595
  715D5774224DE05400DA2D99 /* libxml2.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 716C9345224D540C004B8542 /* libxml2.tbd */; };
@@ -887,7 +893,9 @@
887
893
  AD6C26941CF2379700F8B5FF /* FBAlert.h in Headers */ = {isa = PBXBuildFile; fileRef = AD6C26921CF2379700F8B5FF /* FBAlert.h */; settings = {ATTRIBUTES = (Public, ); }; };
888
894
  AD6C26951CF2379700F8B5FF /* FBAlert.m in Sources */ = {isa = PBXBuildFile; fileRef = AD6C26931CF2379700F8B5FF /* FBAlert.m */; };
889
895
  AD6C26981CF2481700F8B5FF /* XCUIDevice+FBHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = AD6C26961CF2481700F8B5FF /* XCUIDevice+FBHelpers.h */; settings = {ATTRIBUTES = (Public, ); }; };
896
+ 210AB789D14D40308B764DD0 /* XCUIDevice+FBHinge.h in Headers */ = {isa = PBXBuildFile; fileRef = E7536267DE094076A4EEE1D7 /* XCUIDevice+FBHinge.h */; settings = {ATTRIBUTES = (Public, ); }; };
890
897
  AD6C26991CF2481700F8B5FF /* XCUIDevice+FBHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = AD6C26971CF2481700F8B5FF /* XCUIDevice+FBHelpers.m */; };
898
+ 25C9BDFC65564D78A70231B4 /* XCUIDevice+FBHinge.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C8E6FD103A84C908F5746EA /* XCUIDevice+FBHinge.m */; };
891
899
  AD6C269C1CF2494200F8B5FF /* XCUIApplication+FBHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = AD6C269A1CF2494200F8B5FF /* XCUIApplication+FBHelpers.h */; settings = {ATTRIBUTES = (Public, ); }; };
892
900
  AD6C269D1CF2494200F8B5FF /* XCUIApplication+FBHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = AD6C269B1CF2494200F8B5FF /* XCUIApplication+FBHelpers.m */; };
893
901
  AD764F10E2F00090AEB802F2 /* XCUIElement+FBIsVisible.m in Sources */ = {isa = PBXBuildFile; fileRef = EE9AB7481CAEDF0C008C271F /* XCUIElement+FBIsVisible.m */; };
@@ -950,6 +958,7 @@
950
958
  C47007FD2047EBF580060870 /* XCTMessagingChannel_RunnerToDaemon-Protocol.h in Headers */ = {isa = PBXBuildFile; fileRef = A2793FE9DE63C687BB6E2D37 /* XCTMessagingChannel_RunnerToDaemon-Protocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
951
959
  C4AECD675B9F43748D8091A3 /* XCTMessagingRole_SignpostRequesting-Protocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E2F683D8A6C6EAAEC8B080A /* XCTMessagingRole_SignpostRequesting-Protocol.h */; };
952
960
  C4E500AC8CD81B4FE3A75EAE /* FBMathUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = EE1888391DA661C400307AA8 /* FBMathUtils.m */; };
961
+ 193C31F37F354FF490DC9A85 /* FBHIDOperations.m in Sources */ = {isa = PBXBuildFile; fileRef = 3975477AB6C14ABDBBDE3EAD /* FBHIDOperations.m */; };
953
962
  C4FA6AE56892A53972967885 /* XCUIElementTypeQueryProvider_Private-Protocol.h in Headers */ = {isa = PBXBuildFile; fileRef = AF208CBAC82CDFF8B6F88867 /* XCUIElementTypeQueryProvider_Private-Protocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
954
963
  C5C5311BCBCCE031B27BA46D /* XCUIInterruptionMonitoring-Protocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 44019CB45CF491B5FDAB8213 /* XCUIInterruptionMonitoring-Protocol.h */; };
955
964
  C6ADE8E69FBFD7A0B63ECA06 /* FBCommandStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 71B155DB230711E900646AFB /* FBCommandStatus.m */; };
@@ -987,6 +996,7 @@
987
996
  D1172A7F53F89B78D8324A13 /* RouteRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 374BB11AE4E4243BCA444CF8 /* RouteRequest.m */; };
988
997
  D1212325FDE77754EE503755 /* FBRouteRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = EE9AB7881CAEDF0C008C271F /* FBRouteRequest.m */; };
989
998
  D142183578036F5FD5B9880B /* XCUIDevice+FBHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = AD6C26961CF2481700F8B5FF /* XCUIDevice+FBHelpers.h */; };
999
+ 2E71304F39B64EDC98EE3974 /* XCUIDevice+FBHinge.h in Headers */ = {isa = PBXBuildFile; fileRef = E7536267DE094076A4EEE1D7 /* XCUIDevice+FBHinge.h */; };
990
1000
  D14718959F7D46949859EEE6 /* FBDebugLogDelegateDecorator.m in Sources */ = {isa = PBXBuildFile; fileRef = EE7E27191D06C69F001BEC7B /* FBDebugLogDelegateDecorator.m */; };
991
1001
  D1DE06DF54156F744E364B5F /* FBDebugLogDelegateDecorator.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7E27181D06C69F001BEC7B /* FBDebugLogDelegateDecorator.h */; };
992
1002
  D203F622C7C0D968F3BD2AAF /* XCUIPlatformApplicationServicesProviding-Protocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BA71BCF1FDA482419CA8596 /* XCUIPlatformApplicationServicesProviding-Protocol.h */; };
@@ -1042,6 +1052,7 @@
1042
1052
  E62AED48CAE64088C1E7498B /* XCUIElement+FBPickerWheel.h in Headers */ = {isa = PBXBuildFile; fileRef = 7136A4771E8918E60024FC3D /* XCUIElement+FBPickerWheel.h */; };
1043
1053
  E66195839119DC5A8BB7A5D9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD1ABD1093739852B52C472B /* Foundation.framework */; };
1044
1054
  E6B214145FE46BBFD824FAE7 /* FBMathUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = EE1888381DA661C400307AA8 /* FBMathUtils.h */; };
1055
+ 97DFB93D8EDD45E9BC475564 /* FBHIDOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = AF9468F16B934D6DB950E4BF /* FBHIDOperations.h */; };
1045
1056
  E78F581F8E7530B24AC31A8B /* XCTMessagingRole_UIAutomation-Protocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 92182E4007B37665AB8CD88E /* XCTMessagingRole_UIAutomation-Protocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
1046
1057
  E82332D32C4E06280CBE3F4C /* FBResponseJSONPayloadTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F5C37472190A686297D3534 /* FBResponseJSONPayloadTests.m */; };
1047
1058
  E8E894CD81C41AC4467A4F4C /* XCTCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = DB5400B170F08C71779CCD0E /* XCTCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -1120,7 +1131,9 @@
1120
1131
  EE158B5A1CBD462100A3E3F0 /* WebDriverAgentLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EE158A991CBD452B00A3E3F0 /* WebDriverAgentLib.framework */; };
1121
1132
  EE158B5F1CBD47A000A3E3F0 /* WebDriverAgentLib.h in Headers */ = {isa = PBXBuildFile; fileRef = EE158B5E1CBD47A000A3E3F0 /* WebDriverAgentLib.h */; settings = {ATTRIBUTES = (Public, ); }; };
1122
1133
  EE18883A1DA661C400307AA8 /* FBMathUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = EE1888381DA661C400307AA8 /* FBMathUtils.h */; settings = {ATTRIBUTES = (Public, ); }; };
1134
+ BD3FD3FCF7D74D3DAC313415 /* FBHIDOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = AF9468F16B934D6DB950E4BF /* FBHIDOperations.h */; settings = {ATTRIBUTES = (Public, ); }; };
1123
1135
  EE18883B1DA661C400307AA8 /* FBMathUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = EE1888391DA661C400307AA8 /* FBMathUtils.m */; };
1136
+ 9279EE2CB3EA412A8850B615 /* FBHIDOperations.m in Sources */ = {isa = PBXBuildFile; fileRef = 3975477AB6C14ABDBBDE3EAD /* FBHIDOperations.m */; };
1124
1137
  EE18883D1DA663EB00307AA8 /* FBMathUtilsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EE18883C1DA663EB00307AA8 /* FBMathUtilsTests.m */; };
1125
1138
  EE1E06DA1D1808C2007CF043 /* FBIntegrationTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = EE1E06D91D1808C2007CF043 /* FBIntegrationTestCase.m */; };
1126
1139
  EE1E06E71D182E95007CF043 /* FBAlertViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EE1E06E61D182E95007CF043 /* FBAlertViewController.m */; };
@@ -1274,6 +1287,16 @@
1274
1287
  C15E49E6B6924191BAAD9FDF /* FBIntegrationAppTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 27B518E261C14E29B943AB9B /* FBIntegrationAppTests.m */; };
1275
1288
  81E462B8A75F497CBFC6FD8B /* TouchableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 315A15002518CB8700A3A064 /* TouchableView.m */; };
1276
1289
  B6DE70BFF27148BDAC72F80C /* TouchSpotView.m in Sources */ = {isa = PBXBuildFile; fileRef = 315A15062518CC2800A3A064 /* TouchSpotView.m */; };
1290
+ 737628A3FBFE97F1E490070D /* lib_TestingInterop.dylib in Embed XCTest dependencies */ = {isa = PBXBuildFile; fileRef = 69DCC1A35D6E7F76ED7E5064 /* lib_TestingInterop.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
1291
+ DE9AE04111F7F86087B429BB /* _Testing_Foundation.framework in Embed XCTest dependencies */ = {isa = PBXBuildFile; fileRef = 80FF013023DA790D7335C7E4 /* _Testing_Foundation.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
1292
+ E8F2269044A980BC2C5A79CD /* XCTest.framework in Embed XCTest dependencies */ = {isa = PBXBuildFile; fileRef = A3940554008696B8F883806E /* XCTest.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
1293
+ 2EC0107C59E570B838807043 /* XCTestCore.framework in Embed XCTest dependencies */ = {isa = PBXBuildFile; fileRef = F3A56B29D99E7213B521EA3B /* XCTestCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
1294
+ 878EDD87BBEFA84E79CFF2E9 /* XCUIAutomation.framework in Embed XCTest dependencies */ = {isa = PBXBuildFile; fileRef = 890A5CECE84C593C258538D5 /* XCUIAutomation.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
1295
+ 5FDA742E4C50A1CB00426C30 /* XCTAutomationSupport.framework in Embed XCTest dependencies */ = {isa = PBXBuildFile; fileRef = 1978D67BE43DBBE644BC060F /* XCTAutomationSupport.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
1296
+ 7BF14D2961A17874A9D98D23 /* Testing.framework in Embed XCTest dependencies */ = {isa = PBXBuildFile; fileRef = 383EDCC8A7DB02466080DD07 /* Testing.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
1297
+ 77D6E2ADDCA4B3699EC5D998 /* ResultDataPublisher.framework in Embed XCTest dependencies */ = {isa = PBXBuildFile; fileRef = 4A87FE3382A533B8DEB7058B /* ResultDataPublisher.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
1298
+ 31DD0D697B49CF2268088116 /* XCTestSupport.framework in Embed XCTest dependencies */ = {isa = PBXBuildFile; fileRef = 68610745541FC52D7D4871B9 /* XCTestSupport.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
1299
+ F90EE9F08FCA503CB848FFA9 /* libXCTestSwiftSupport.dylib in Embed XCTest dependencies */ = {isa = PBXBuildFile; fileRef = 74FB18A20255DDF3F2C5FD18 /* libXCTestSwiftSupport.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
1277
1300
  /* End PBXBuildFile section */
1278
1301
 
1279
1302
  /* Begin PBXContainerItemProxy section */
@@ -1418,6 +1441,26 @@
1418
1441
  name = "Copy frameworks";
1419
1442
  runOnlyForDeploymentPostprocessing = 0;
1420
1443
  };
1444
+ D6286A89102F10539DCB20F0 /* Embed XCTest dependencies */ = {
1445
+ isa = PBXCopyFilesBuildPhase;
1446
+ buildActionMask = 2147483647;
1447
+ dstPath = "$(BUILT_PRODUCTS_DIR)/$(PRODUCT_NAME)-Runner.app/Frameworks";
1448
+ dstSubfolderSpec = 0;
1449
+ files = (
1450
+ 737628A3FBFE97F1E490070D /* lib_TestingInterop.dylib in Embed XCTest dependencies */,
1451
+ DE9AE04111F7F86087B429BB /* _Testing_Foundation.framework in Embed XCTest dependencies */,
1452
+ E8F2269044A980BC2C5A79CD /* XCTest.framework in Embed XCTest dependencies */,
1453
+ 2EC0107C59E570B838807043 /* XCTestCore.framework in Embed XCTest dependencies */,
1454
+ 878EDD87BBEFA84E79CFF2E9 /* XCUIAutomation.framework in Embed XCTest dependencies */,
1455
+ 5FDA742E4C50A1CB00426C30 /* XCTAutomationSupport.framework in Embed XCTest dependencies */,
1456
+ 7BF14D2961A17874A9D98D23 /* Testing.framework in Embed XCTest dependencies */,
1457
+ 77D6E2ADDCA4B3699EC5D998 /* ResultDataPublisher.framework in Embed XCTest dependencies */,
1458
+ 31DD0D697B49CF2268088116 /* XCTestSupport.framework in Embed XCTest dependencies */,
1459
+ F90EE9F08FCA503CB848FFA9 /* libXCTestSwiftSupport.dylib in Embed XCTest dependencies */,
1460
+ );
1461
+ name = "Embed XCTest dependencies";
1462
+ runOnlyForDeploymentPostprocessing = 0;
1463
+ };
1421
1464
  /* End PBXCopyFilesBuildPhase section */
1422
1465
 
1423
1466
  /* Begin PBXFileReference section */
@@ -1591,6 +1634,7 @@
1591
1634
  715AFABF1FFA29180053896D /* FBScreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBScreen.h; sourceTree = "<group>"; };
1592
1635
  715AFAC01FFA29180053896D /* FBScreen.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FBScreen.m; sourceTree = "<group>"; };
1593
1636
  715AFAC31FFA2AAF0053896D /* FBScreenTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FBScreenTests.m; sourceTree = "<group>"; };
1637
+ 8EB95DF348A9438BBEAB4502 /* FBDisplayGestureTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FBDisplayGestureTests.m; sourceTree = "<group>"; };
1594
1638
  715D554A2229891B00524509 /* FBExceptionHandlerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FBExceptionHandlerTests.m; sourceTree = "<group>"; };
1595
1639
  71649EC82518C19C0087F212 /* IOSTestSettings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = IOSTestSettings.xcconfig; sourceTree = "<group>"; };
1596
1640
  716C9342224D53A1004B8542 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/AppleTVOS.platform/Developer/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
@@ -1730,7 +1774,9 @@
1730
1774
  AD6C26921CF2379700F8B5FF /* FBAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FBAlert.h; path = WebDriverAgentLib/FBAlert.h; sourceTree = SOURCE_ROOT; };
1731
1775
  AD6C26931CF2379700F8B5FF /* FBAlert.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = FBAlert.m; path = WebDriverAgentLib/FBAlert.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
1732
1776
  AD6C26961CF2481700F8B5FF /* XCUIDevice+FBHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "XCUIDevice+FBHelpers.h"; sourceTree = "<group>"; };
1777
+ E7536267DE094076A4EEE1D7 /* XCUIDevice+FBHinge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "XCUIDevice+FBHinge.h"; sourceTree = "<group>"; };
1733
1778
  AD6C26971CF2481700F8B5FF /* XCUIDevice+FBHelpers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "XCUIDevice+FBHelpers.m"; sourceTree = "<group>"; };
1779
+ 8C8E6FD103A84C908F5746EA /* XCUIDevice+FBHinge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "XCUIDevice+FBHinge.m"; sourceTree = "<group>"; };
1734
1780
  AD6C269A1CF2494200F8B5FF /* XCUIApplication+FBHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "XCUIApplication+FBHelpers.h"; sourceTree = "<group>"; };
1735
1781
  AD6C269B1CF2494200F8B5FF /* XCUIApplication+FBHelpers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "XCUIApplication+FBHelpers.m"; sourceTree = "<group>"; };
1736
1782
  AD76723B1D6B7CC000610457 /* XCUIElement+FBTyping.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "XCUIElement+FBTyping.h"; sourceTree = "<group>"; };
@@ -1792,7 +1838,9 @@
1792
1838
  EE158B5D1CBD479000A3E3F0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = WebDriverAgentLib/Info.plist; sourceTree = SOURCE_ROOT; };
1793
1839
  EE158B5E1CBD47A000A3E3F0 /* WebDriverAgentLib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebDriverAgentLib.h; path = WebDriverAgentLib/WebDriverAgentLib.h; sourceTree = SOURCE_ROOT; };
1794
1840
  EE1888381DA661C400307AA8 /* FBMathUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBMathUtils.h; sourceTree = "<group>"; };
1841
+ AF9468F16B934D6DB950E4BF /* FBHIDOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBHIDOperations.h; sourceTree = "<group>"; };
1795
1842
  EE1888391DA661C400307AA8 /* FBMathUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBMathUtils.m; sourceTree = "<group>"; };
1843
+ 3975477AB6C14ABDBBDE3EAD /* FBHIDOperations.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBHIDOperations.m; sourceTree = "<group>"; };
1796
1844
  EE18883C1DA663EB00307AA8 /* FBMathUtilsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBMathUtilsTests.m; sourceTree = "<group>"; };
1797
1845
  EE1E06D91D1808C2007CF043 /* FBIntegrationTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBIntegrationTestCase.m; sourceTree = "<group>"; };
1798
1846
  EE1E06DB1D18090F007CF043 /* FBIntegrationTestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBIntegrationTestCase.h; sourceTree = "<group>"; };
@@ -1968,6 +2016,16 @@
1968
2016
  FF8E3B470FC9639D5F18E2EA /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
1969
2017
  1D04760558C64B8EB69380E0 /* FBTouchableViewTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FBTouchableViewTests.m; sourceTree = "<group>"; };
1970
2018
  27B518E261C14E29B943AB9B /* FBIntegrationAppTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FBIntegrationAppTests.m; sourceTree = "<group>"; };
2019
+ 69DCC1A35D6E7F76ED7E5064 /* lib_TestingInterop.dylib */ = {isa = PBXFileReference; lastKnownFileType = compiled.mach-o.dylib; name = lib_TestingInterop.dylib; path = Developer/usr/lib/lib_TestingInterop.dylib; sourceTree = PLATFORM_DIR; };
2020
+ 80FF013023DA790D7335C7E4 /* _Testing_Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = _Testing_Foundation.framework; path = Developer/Library/Frameworks/_Testing_Foundation.framework; sourceTree = PLATFORM_DIR; };
2021
+ A3940554008696B8F883806E /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Developer/Library/Frameworks/XCTest.framework; sourceTree = PLATFORM_DIR; };
2022
+ F3A56B29D99E7213B521EA3B /* XCTestCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTestCore.framework; path = Developer/Library/PrivateFrameworks/XCTestCore.framework; sourceTree = PLATFORM_DIR; };
2023
+ 890A5CECE84C593C258538D5 /* XCUIAutomation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCUIAutomation.framework; path = Developer/Library/Frameworks/XCUIAutomation.framework; sourceTree = PLATFORM_DIR; };
2024
+ 1978D67BE43DBBE644BC060F /* XCTAutomationSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTAutomationSupport.framework; path = Developer/Library/PrivateFrameworks/XCTAutomationSupport.framework; sourceTree = PLATFORM_DIR; };
2025
+ 383EDCC8A7DB02466080DD07 /* Testing.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Testing.framework; path = Developer/Library/Frameworks/Testing.framework; sourceTree = PLATFORM_DIR; };
2026
+ 4A87FE3382A533B8DEB7058B /* ResultDataPublisher.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ResultDataPublisher.framework; path = Developer/Library/PrivateFrameworks/ResultDataPublisher.framework; sourceTree = PLATFORM_DIR; };
2027
+ 68610745541FC52D7D4871B9 /* XCTestSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTestSupport.framework; path = Developer/Library/PrivateFrameworks/XCTestSupport.framework; sourceTree = PLATFORM_DIR; };
2028
+ 74FB18A20255DDF3F2C5FD18 /* libXCTestSwiftSupport.dylib */ = {isa = PBXFileReference; lastKnownFileType = compiled.mach-o.dylib; name = libXCTestSwiftSupport.dylib; path = Developer/usr/lib/libXCTestSwiftSupport.dylib; sourceTree = PLATFORM_DIR; };
1971
2029
  /* End PBXFileReference section */
1972
2030
 
1973
2031
  /* Begin PBXFrameworksBuildPhase section */
@@ -2203,6 +2261,7 @@
2203
2261
  716C9341224D5369004B8542 /* iOS */ = {
2204
2262
  isa = PBXGroup;
2205
2263
  children = (
2264
+ EAC44F487A3346C1B07E2994 /* Simulator XCTest dependencies */,
2206
2265
  7155B423224D5B980042A993 /* XCTest.framework */,
2207
2266
  716C9344224D53FC004B8542 /* XCTAutomationSupport.framework */,
2208
2267
  716C9343224D53DF004B8542 /* libAccessibility.tbd */,
@@ -2374,7 +2433,9 @@
2374
2433
  EEDFE11F1D9C06F800E6FFE5 /* XCUIDevice+FBHealthCheck.h */,
2375
2434
  EEDFE1201D9C06F800E6FFE5 /* XCUIDevice+FBHealthCheck.m */,
2376
2435
  AD6C26961CF2481700F8B5FF /* XCUIDevice+FBHelpers.h */,
2436
+ E7536267DE094076A4EEE1D7 /* XCUIDevice+FBHinge.h */,
2377
2437
  AD6C26971CF2481700F8B5FF /* XCUIDevice+FBHelpers.m */,
2438
+ 8C8E6FD103A84C908F5746EA /* XCUIDevice+FBHinge.m */,
2378
2439
  A1B2C3D41F001A00A1B0001 /* XCUIDevice+FBVoiceOver.h */,
2379
2440
  A1B2C3D41F001A00A1B0002 /* XCUIDevice+FBVoiceOver.m */,
2380
2441
  EEE3763D1D59F81400ED88DD /* XCUIDevice+FBRotation.h */,
@@ -2556,7 +2617,9 @@
2556
2617
  EE9B76A41CF7A43900275851 /* FBLogger.m */,
2557
2618
  EE9B76A51CF7A43900275851 /* FBMacros.h */,
2558
2619
  EE1888381DA661C400307AA8 /* FBMathUtils.h */,
2620
+ AF9468F16B934D6DB950E4BF /* FBHIDOperations.h */,
2559
2621
  EE1888391DA661C400307AA8 /* FBMathUtils.m */,
2622
+ 3975477AB6C14ABDBBDE3EAD /* FBHIDOperations.m */,
2560
2623
  7155D701211DCEF400166C20 /* FBMjpegServer.h */,
2561
2624
  7155D702211DCEF400166C20 /* FBMjpegServer.m */,
2562
2625
  719DCF132601EAFB000E765F /* FBNotificationsHelper.h */,
@@ -2653,6 +2716,7 @@
2653
2716
  7119E1EB1E891F8600D0B125 /* FBPickerWheelSelectTests.m */,
2654
2717
  71ACF5B7242F2FDC00F0AAD4 /* FBSafariAlertTests.m */,
2655
2718
  715AFAC31FFA2AAF0053896D /* FBScreenTests.m */,
2719
+ 8EB95DF348A9438BBEAB4502 /* FBDisplayGestureTests.m */,
2656
2720
  EE55B3261D1D54CF003AAAEC /* FBScrollingTests.m */,
2657
2721
  7152EB2F1F41F9960047EEFF /* FBSessionIntegrationTests.m */,
2658
2722
  EE26409A1D0EB5E8009BE6B0 /* FBTapTest.m */,
@@ -2965,6 +3029,23 @@
2965
3029
  path = IntegrationApp_tvOS;
2966
3030
  sourceTree = "<group>";
2967
3031
  };
3032
+ EAC44F487A3346C1B07E2994 /* Simulator XCTest dependencies */ = {
3033
+ isa = PBXGroup;
3034
+ children = (
3035
+ 69DCC1A35D6E7F76ED7E5064 /* lib_TestingInterop.dylib */,
3036
+ 80FF013023DA790D7335C7E4 /* _Testing_Foundation.framework */,
3037
+ A3940554008696B8F883806E /* XCTest.framework */,
3038
+ F3A56B29D99E7213B521EA3B /* XCTestCore.framework */,
3039
+ 890A5CECE84C593C258538D5 /* XCUIAutomation.framework */,
3040
+ 1978D67BE43DBBE644BC060F /* XCTAutomationSupport.framework */,
3041
+ 383EDCC8A7DB02466080DD07 /* Testing.framework */,
3042
+ 4A87FE3382A533B8DEB7058B /* ResultDataPublisher.framework */,
3043
+ 68610745541FC52D7D4871B9 /* XCTestSupport.framework */,
3044
+ 74FB18A20255DDF3F2C5FD18 /* libXCTestSwiftSupport.dylib */,
3045
+ );
3046
+ name = "Simulator XCTest dependencies";
3047
+ sourceTree = "<group>";
3048
+ };
2968
3049
  /* End PBXGroup section */
2969
3050
 
2970
3051
  /* Begin PBXHeadersBuildPhase section */
@@ -3056,6 +3137,7 @@
3056
3137
  641EE66E2240C5CA00173FCB /* XCUIApplication+FBAlert.h in Headers */,
3057
3138
  716C9E0127315EFF005AD475 /* XCUIApplication+FBUIInterruptions.h in Headers */,
3058
3139
  641EE6702240C5CA00173FCB /* FBMathUtils.h in Headers */,
3140
+ EB4835874F7A441B92844DDC /* FBHIDOperations.h in Headers */,
3059
3141
  641EE6722240C5CA00173FCB /* FBElementUtils.h in Headers */,
3060
3142
  641EE6732240C5CA00173FCB /* FBDebugCommands.h in Headers */,
3061
3143
  641EE6752240C5CA00173FCB /* XCUICoordinate.h in Headers */,
@@ -3120,6 +3202,7 @@
3120
3202
  641EE6C02240C5CA00173FCB /* XCUIApplication+FBHelpers.h in Headers */,
3121
3203
  714EAA0E2673FDFE005C5B47 /* FBCapabilities.h in Headers */,
3122
3204
  641EE6C22240C5CA00173FCB /* XCUIDevice+FBHelpers.h in Headers */,
3205
+ 95EF6989BCBE4C548C26B140 /* XCUIDevice+FBHinge.h in Headers */,
3123
3206
  71D3B3D6267FC7260076473D /* XCUIElement+FBResolve.h in Headers */,
3124
3207
  641EE6C32240C5CA00173FCB /* FBClassChainQueryParser.h in Headers */,
3125
3208
  641EE6C42240C5CA00173FCB /* FBMacros.h in Headers */,
@@ -3367,6 +3450,7 @@
3367
3450
  95A597B8CC694006DDE49999 /* XCUIApplication+FBAlert.h in Headers */,
3368
3451
  ED342D194B20A206864675B2 /* XCUIApplication+FBUIInterruptions.h in Headers */,
3369
3452
  E6B214145FE46BBFD824FAE7 /* FBMathUtils.h in Headers */,
3453
+ 97DFB93D8EDD45E9BC475564 /* FBHIDOperations.h in Headers */,
3370
3454
  6786D4B257269918E591AC66 /* FBElementUtils.h in Headers */,
3371
3455
  51FFE79AF3A5FADFFAB287BC /* FBDebugCommands.h in Headers */,
3372
3456
  6D311C0CB39981D7211B5576 /* XCUICoordinate.h in Headers */,
@@ -3431,6 +3515,7 @@
3431
3515
  81231F08969740B0C8C67A30 /* XCUIApplication+FBHelpers.h in Headers */,
3432
3516
  9AA0E22033281B4EAA78BC51 /* FBCapabilities.h in Headers */,
3433
3517
  D142183578036F5FD5B9880B /* XCUIDevice+FBHelpers.h in Headers */,
3518
+ 2E71304F39B64EDC98EE3974 /* XCUIDevice+FBHinge.h in Headers */,
3434
3519
  09D97BD46764FD8149747723 /* XCUIElement+FBResolve.h in Headers */,
3435
3520
  6BF3F57247F59B81B8BCEE7B /* FBClassChainQueryParser.h in Headers */,
3436
3521
  8AAA33A5B1943B667B0DB05E /* FBMacros.h in Headers */,
@@ -3634,6 +3719,7 @@
3634
3719
  71D3B3D5267FC7260076473D /* XCUIElement+FBResolve.h in Headers */,
3635
3720
  719CD8FC2126C88B00C7D0C2 /* XCUIApplication+FBAlert.h in Headers */,
3636
3721
  EE18883A1DA661C400307AA8 /* FBMathUtils.h in Headers */,
3722
+ BD3FD3FCF7D74D3DAC313415 /* FBHIDOperations.h in Headers */,
3637
3723
  13DE7A49287C4005003243C6 /* FBXCDeviceEvent.h in Headers */,
3638
3724
  71B155DA23070ECF00646AFB /* FBHTTPStatusCodes.h in Headers */,
3639
3725
  713C6DCF1DDC772A00285B92 /* FBElementUtils.h in Headers */,
@@ -3698,6 +3784,7 @@
3698
3784
  AD6C269C1CF2494200F8B5FF /* XCUIApplication+FBHelpers.h in Headers */,
3699
3785
  714D88CC2733FB970074A925 /* FBXMLGenerationOptions.h in Headers */,
3700
3786
  AD6C26981CF2481700F8B5FF /* XCUIDevice+FBHelpers.h in Headers */,
3787
+ 210AB789D14D40308B764DD0 /* XCUIDevice+FBHinge.h in Headers */,
3701
3788
  71A7EAF91E224648001DA4F2 /* FBClassChainQueryParser.h in Headers */,
3702
3789
  EE9B76AA1CF7A43900275851 /* FBMacros.h in Headers */,
3703
3790
  C8FB547922D4C1FC00B69954 /* FBUnattachedAppLauncher.h in Headers */,
@@ -4144,6 +4231,7 @@
4144
4231
  EEF988271C486603005CA669 /* Frameworks */,
4145
4232
  EEF988281C486603005CA669 /* Resources */,
4146
4233
  EE93CFF41CCA501300708122 /* Copy frameworks */,
4234
+ D6286A89102F10539DCB20F0 /* Embed XCTest dependencies */,
4147
4235
  015926D657880CF9D0F58092 /* Headers */,
4148
4236
  );
4149
4237
  buildRules = (
@@ -4454,6 +4542,7 @@
4454
4542
  641EE60B2240C5CA00173FCB /* FBCustomCommands.m in Sources */,
4455
4543
  71BB58E42B9631F100CB9BFE /* FBScreenRecordingPromise.m in Sources */,
4456
4544
  641EE60C2240C5CA00173FCB /* XCUIDevice+FBHelpers.m in Sources */,
4545
+ 181F0DBB6D28418680D52128 /* XCUIDevice+FBHinge.m in Sources */,
4457
4546
  641EE60D2240C5CA00173FCB /* XCTestPrivateSymbols.m in Sources */,
4458
4547
  641EE60E2240C5CA00173FCB /* XCUIElement+FBTyping.m in Sources */,
4459
4548
  641EE60F2240C5CA00173FCB /* XCUIElement+FBAccessibility.m in Sources */,
@@ -4489,6 +4578,7 @@
4489
4578
  641EE6242240C5CA00173FCB /* FBXCTestDaemonsProxy.m in Sources */,
4490
4579
  13DE7A58287CA1EC003243C6 /* FBXCElementSnapshotWrapper.m in Sources */,
4491
4580
  641EE6262240C5CA00173FCB /* FBMathUtils.m in Sources */,
4581
+ A8FC9D445C9947988C80AFC9 /* FBHIDOperations.m in Sources */,
4492
4582
  641EE6272240C5CA00173FCB /* FBXCAXClientProxy.m in Sources */,
4493
4583
  43DE58587952717F4DEE228E /* FBHTTPServer.m in Sources */,
4494
4584
  667705A8195BF7B0D48180B3 /* RouteRequest.m in Sources */,
@@ -4609,6 +4699,7 @@
4609
4699
  EDC993E0858F89F73D8E9DF8 /* FBCustomCommands.m in Sources */,
4610
4700
  45033CF6BD35C16E34BF76CC /* FBScreenRecordingPromise.m in Sources */,
4611
4701
  583AD004FF71CAA305E6DEAF /* XCUIDevice+FBHelpers.m in Sources */,
4702
+ 0460879AD6034130AE0A3DEC /* XCUIDevice+FBHinge.m in Sources */,
4612
4703
  192CACF49EC3825BA6D2EF4F /* XCTestPrivateSymbols.m in Sources */,
4613
4704
  53E0F0F38E7847065810FF41 /* XCUIElement+FBTyping.m in Sources */,
4614
4705
  A5353D849D394BC630839E59 /* XCUIElement+FBAccessibility.m in Sources */,
@@ -4644,6 +4735,7 @@
4644
4735
  92DC81D2F6E58386AC592482 /* FBXCTestDaemonsProxy.m in Sources */,
4645
4736
  4819BEAC415E02570C0FA074 /* FBXCElementSnapshotWrapper.m in Sources */,
4646
4737
  C4E500AC8CD81B4FE3A75EAE /* FBMathUtils.m in Sources */,
4738
+ 193C31F37F354FF490DC9A85 /* FBHIDOperations.m in Sources */,
4647
4739
  D062CA5914608761FE002799 /* FBXCAXClientProxy.m in Sources */,
4648
4740
  46C54343FB83AD3AFC6CFCD4 /* FBTCPSocket.m in Sources */,
4649
4741
  AA11BB22CC33DD44EE55FF02 /* FBMjpegServer.m in Sources */,
@@ -4728,6 +4820,7 @@
4728
4820
  EE9B76A91CF7A43900275851 /* FBLogger.m in Sources */,
4729
4821
  EE158ABB1CBD456F00A3E3F0 /* FBCustomCommands.m in Sources */,
4730
4822
  AD6C26991CF2481700F8B5FF /* XCUIDevice+FBHelpers.m in Sources */,
4823
+ 25C9BDFC65564D78A70231B4 /* XCUIDevice+FBHinge.m in Sources */,
4731
4824
  716C9E0227315EFF005AD475 /* XCUIApplication+FBUIInterruptions.m in Sources */,
4732
4825
  EE6B64FE1D0F86EF00E85F5D /* XCTestPrivateSymbols.m in Sources */,
4733
4826
  AD76723E1D6B7CC000610457 /* XCUIElement+FBTyping.m in Sources */,
@@ -4767,6 +4860,7 @@
4767
4860
  71B155DC230711E900646AFB /* FBCommandStatus.m in Sources */,
4768
4861
  EE35AD7C1E3B80C000A02D78 /* FBXCTestDaemonsProxy.m in Sources */,
4769
4862
  EE18883B1DA661C400307AA8 /* FBMathUtils.m in Sources */,
4863
+ 9279EE2CB3EA412A8850B615 /* FBHIDOperations.m in Sources */,
4770
4864
  7157B292221DADD2001C348C /* FBXCAXClientProxy.m in Sources */,
4771
4865
  35924251B4B5D0A486A6A0BB /* FBHTTPServer.m in Sources */,
4772
4866
  7072174F17BA109C6AB2859F /* RouteRequest.m in Sources */,
@@ -4786,6 +4880,7 @@
4786
4880
  719CD8FF2126C90200C7D0C2 /* FBAutoAlertsHandlerTests.m in Sources */,
4787
4881
  EE2202131ECC612200A29571 /* FBIntegrationTestCase.m in Sources */,
4788
4882
  715AFAC41FFA2AAF0053896D /* FBScreenTests.m in Sources */,
4883
+ 8EB95DF348A9438BBEAB4501 /* FBDisplayGestureTests.m in Sources */,
4789
4884
  71BB58EC2B96328700CB9BFE /* FBScreenRecordingRequest.m in Sources */,
4790
4885
  EE22021E1ECC618900A29571 /* FBTapTest.m in Sources */,
4791
4886
  71930C472066434000D3AFEC /* FBPasteboardTests.m in Sources */,
@@ -6145,6 +6240,18 @@
6145
6240
  isa = XCBuildConfiguration;
6146
6241
  baseConfigurationReference = EEE5CABF1C80361500CBBDD9 /* IOSSettings.xcconfig */;
6147
6242
  buildSettings = {
6243
+ "EXCLUDED_SOURCE_FILE_NAMES[sdk=iphonesimulator*]" = "$(inherited) $(WDA_XCTEST_EXCLUDED_$(XCODE_VERSION_MAJOR)) $(WDA_XCTEST_EXCLUDED_MINOR_$(XCODE_VERSION_MINOR))";
6244
+ "EXCLUDED_SOURCE_FILE_NAMES[sdk=iphoneos*]" = "$(inherited) $(WDA_XCTEST_EXCLUDED_1600)";
6245
+ /* Reuse Xcode 26 framework embedding; add only its missing dependencies. */
6246
+ WDA_XCTEST_EXCLUDED_2600 = "XCTest.framework XCTestCore.framework XCUIAutomation.framework XCTAutomationSupport.framework Testing.framework ResultDataPublisher.framework XCTestSupport.framework libXCTestSwiftSupport.dylib";
6247
+ /* Xcode 16 does not need the additional Swift Testing dependencies. */
6248
+ WDA_XCTEST_EXCLUDED_1600 = "$(WDA_XCTEST_EXCLUDED_2600) lib_TestingInterop.dylib _Testing_Foundation.framework";
6249
+ /* Xcode 26.0-26.3 do not ship lib_TestingInterop.dylib, so there is nothing to embed. */
6250
+ WDA_XCTEST_EXCLUDED_MINOR_2600 = lib_TestingInterop.dylib;
6251
+ WDA_XCTEST_EXCLUDED_MINOR_2610 = lib_TestingInterop.dylib;
6252
+ WDA_XCTEST_EXCLUDED_MINOR_2620 = lib_TestingInterop.dylib;
6253
+ WDA_XCTEST_EXCLUDED_MINOR_2630 = lib_TestingInterop.dylib;
6254
+
6148
6255
  ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
6149
6256
  CLANG_STATIC_ANALYZER_MODE = deep;
6150
6257
  DEBUG_INFORMATION_FORMAT = dwarf;
@@ -6199,6 +6306,18 @@
6199
6306
  isa = XCBuildConfiguration;
6200
6307
  baseConfigurationReference = EEE5CABF1C80361500CBBDD9 /* IOSSettings.xcconfig */;
6201
6308
  buildSettings = {
6309
+ "EXCLUDED_SOURCE_FILE_NAMES[sdk=iphonesimulator*]" = "$(inherited) $(WDA_XCTEST_EXCLUDED_$(XCODE_VERSION_MAJOR)) $(WDA_XCTEST_EXCLUDED_MINOR_$(XCODE_VERSION_MINOR))";
6310
+ "EXCLUDED_SOURCE_FILE_NAMES[sdk=iphoneos*]" = "$(inherited) $(WDA_XCTEST_EXCLUDED_1600)";
6311
+ /* Reuse Xcode 26 framework embedding; add only its missing dependencies. */
6312
+ WDA_XCTEST_EXCLUDED_2600 = "XCTest.framework XCTestCore.framework XCUIAutomation.framework XCTAutomationSupport.framework Testing.framework ResultDataPublisher.framework XCTestSupport.framework libXCTestSwiftSupport.dylib";
6313
+ /* Xcode 16 does not need the additional Swift Testing dependencies. */
6314
+ WDA_XCTEST_EXCLUDED_1600 = "$(WDA_XCTEST_EXCLUDED_2600) lib_TestingInterop.dylib _Testing_Foundation.framework";
6315
+ /* Xcode 26.0-26.3 do not ship lib_TestingInterop.dylib, so there is nothing to embed. */
6316
+ WDA_XCTEST_EXCLUDED_MINOR_2600 = lib_TestingInterop.dylib;
6317
+ WDA_XCTEST_EXCLUDED_MINOR_2610 = lib_TestingInterop.dylib;
6318
+ WDA_XCTEST_EXCLUDED_MINOR_2620 = lib_TestingInterop.dylib;
6319
+ WDA_XCTEST_EXCLUDED_MINOR_2630 = lib_TestingInterop.dylib;
6320
+
6202
6321
  ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
6203
6322
  CLANG_STATIC_ANALYZER_MODE = deep;
6204
6323
  ENABLE_TESTING_SEARCH_PATHS = YES;
@@ -109,6 +109,14 @@ static id swizzledRequestSnapshotForElement(id self, SEL _cmd, id element, id at
109
109
  return original_requestSnapshotForElement(self, _cmd, element, attributes, parameters, error);
110
110
  }
111
111
 
112
+ // Remote WKWebView elements belong to a WebKit service, not the host app.
113
+ // Sending the idle-check AX action to WebContent can crash it (#1290).
114
+ // Read process metadata only: resolving UI attributes here can reenter
115
+ // snapshotting. Leave these services on the original snapshot path.
116
+ if ([application.bundleID hasPrefix:@"com.apple.WebKit."]) {
117
+ return original_requestSnapshotForElement(self, _cmd, element, attributes, parameters, error);
118
+ }
119
+
112
120
  NSNumber *pidKey = @(pid);
113
121
  @synchronized (unresponsiveApplicationPidsLock) {
114
122
  NSDate *markedUnresponsiveAt = unresponsiveApplicationPids[pidKey];
@@ -18,6 +18,9 @@ NS_ASSUME_NONNULL_BEGIN
18
18
 
19
19
  @interface XCUIApplication (FBHelpers)
20
20
 
21
+ /** Activates the application and waits for the system transition when resuming on iOS. */
22
+ - (void)fb_activate;
23
+
21
24
  /**
22
25
  Deactivates application for given time
23
26
 
@@ -120,6 +120,10 @@ NSDictionary<NSString *, NSString *> *customExclusionAttributesMap(void) {
120
120
  return result;
121
121
  }
122
122
 
123
+ @interface XCUIApplication (FBActivationPrivate)
124
+ - (void)fb_activateWaitingForSystemTransition:(BOOL)shouldWait;
125
+ @end
126
+
123
127
  @implementation XCUIApplication (FBHelpers)
124
128
 
125
129
  - (BOOL)fb_waitForAppElement:(NSTimeInterval)timeout
@@ -172,13 +176,38 @@ NSDictionary<NSString *, NSString *> *customExclusionAttributesMap(void) {
172
176
  return [self fb_appsInfoWithAxElements:[FBXCAXClientProxy.sharedClient activeApplications]];
173
177
  }
174
178
 
179
+ - (void)fb_activate
180
+ {
181
+ BOOL shouldWaitForSystemTransition = NO;
182
+ #if !TARGET_OS_TV && !TARGET_OS_WATCH
183
+ XCUIApplicationState previousState = self.state;
184
+ shouldWaitForSystemTransition = previousState == XCUIApplicationStateRunningBackground
185
+ || previousState == XCUIApplicationStateRunningBackgroundSuspended;
186
+ #endif
187
+ [self fb_activateWaitingForSystemTransition:shouldWaitForSystemTransition];
188
+ }
189
+
190
+ - (void)fb_activateWaitingForSystemTransition:(BOOL)shouldWait
191
+ {
192
+ [self activate];
193
+ #if !TARGET_OS_TV && !TARGET_OS_WATCH
194
+ if (shouldWait) {
195
+ // App quiescence alone can miss the system resume transition.
196
+ // https://github.com/appium/appium/issues/22857
197
+ [XCUIApplication.fb_systemApplication fb_waitUntilStableWithTimeout:
198
+ FBConfiguration.sharedInstance.animationCoolOffTimeout];
199
+ }
200
+ #endif
201
+ }
202
+
175
203
  - (BOOL)fb_deactivateWithDuration:(NSTimeInterval)duration error:(NSError **)error
176
204
  {
177
205
  if(![[XCUIDevice sharedDevice] fb_goToHomescreenWithError:error]) {
178
206
  return NO;
179
207
  }
180
208
  [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:MAX(duration, .0)]];
181
- [self activate];
209
+ // A zero-duration background transition may still report the app as foreground.
210
+ [self fb_activateWaitingForSystemTransition:YES];
182
211
  return YES;
183
212
  }
184
213
 
@@ -10,6 +10,8 @@
10
10
  #import <XCTest/XCTest.h>
11
11
  #import "FBElementCache.h"
12
12
 
13
+ @class XCSynthesizedEventRecord;
14
+
13
15
  NS_ASSUME_NONNULL_BEGIN
14
16
 
15
17
  @interface XCUIApplication (FBTouchAction)
@@ -24,6 +26,57 @@ NS_ASSUME_NONNULL_BEGIN
24
26
  */
25
27
  - (BOOL)fb_performW3CActions:(NSArray *)actions elementCache:(nullable FBElementCache *)elementCache error:(NSError * _Nullable*)error;
26
28
 
29
+ /**
30
+ Presses at startCoordinate, drags to endCoordinate and holds there, producing the same touch event
31
+ path as -[XCUICoordinate pressForDuration:thenDragToCoordinate:withVelocity:thenHoldForDuration:].
32
+
33
+ Unlike that XCTest method, both screen points are resolved exactly once, up front, and validated
34
+ before anything is sent; the resulting event is then synthesized directly, without XCTest's
35
+ dispatch-time re-snapshot and quiescence wait of the application. XCTest resolves the points
36
+ inside that dispatch, so an application that is busy (e.g. right after an app switch) makes it
37
+ hang and then assert on an infinite point instead of failing cleanly.
38
+ See https://github.com/appium/WebDriverAgent/issues/1056
39
+
40
+ @param startCoordinate The coordinate to press at
41
+ @param pressDuration How long to hold still at startCoordinate before dragging, in seconds (>= 0)
42
+ @param endCoordinate The coordinate to drag to
43
+ @param velocity Drag velocity in points per second, or one of the XCUIGestureVelocity constants
44
+ @param holdDuration How long to hold still at endCoordinate before lifting, in seconds (>= 0)
45
+ @param error If there is an error, upon return contains an NSError object that describes the problem
46
+ @return YES if the gesture has been successfully performed
47
+ @throws FBInvalidArgumentException if a duration or the velocity is out of range
48
+ */
49
+ - (BOOL)fb_pressAtCoordinate:(XCUICoordinate *)startCoordinate
50
+ forDuration:(NSTimeInterval)pressDuration
51
+ thenDragToCoordinate:(XCUICoordinate *)endCoordinate
52
+ withVelocity:(XCUIGestureVelocity)velocity
53
+ thenHoldForDuration:(NSTimeInterval)holdDuration
54
+ error:(NSError * _Nullable*)error;
55
+
56
+ #if !TARGET_OS_TV && !TARGET_OS_WATCH
57
+ /**
58
+ Builds the synthesized event used by
59
+ -fb_pressAtCoordinate:forDuration:thenDragToCoordinate:withVelocity:thenHoldForDuration:error:
60
+ from already resolved screen points. Exposed for testing.
61
+
62
+ @param startPoint The screen point to press at
63
+ @param pressDuration How long to hold still at startPoint before dragging, in seconds
64
+ @param endPoint The screen point to drag to
65
+ @param pointsPerSecond The drag speed
66
+ @param holdDuration How long to hold still at endPoint before lifting, in seconds
67
+ @param displayID The display to send the gesture to (0 is the main display)
68
+ @param interfaceOrientation The interface orientation the points are expressed in
69
+ @return The event record, ready to be synthesized
70
+ */
71
+ + (XCSynthesizedEventRecord *)fb_pressDragEventFromPoint:(CGPoint)startPoint
72
+ forDuration:(NSTimeInterval)pressDuration
73
+ toPoint:(CGPoint)endPoint
74
+ pointsPerSecond:(CGFloat)pointsPerSecond
75
+ thenHoldForDuration:(NSTimeInterval)holdDuration
76
+ displayID:(long long)displayID
77
+ interfaceOrientation:(UIInterfaceOrientation)interfaceOrientation;
78
+ #endif
79
+
27
80
  @end
28
81
 
29
82
  NS_ASSUME_NONNULL_END