@devicelab/maestro-runner-darwin-x64 1.1.25
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.
- package/LICENSE +191 -0
- package/README.md +166 -0
- package/THIRD_PARTY_LICENSES +186 -0
- package/bin/maestro-runner +0 -0
- package/drivers/android/appium-uiautomator2-server-debug-androidTest.apk +0 -0
- package/drivers/android/appium-uiautomator2-server-v9.11.1.apk +0 -0
- package/drivers/android/devicelab-android-driver-test.apk +0 -0
- package/drivers/android/devicelab-android-driver.apk +0 -0
- package/drivers/android/settings_apk-debug.apk +0 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunner/App.swift +11 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunner.xcodeproj/project.pbxproj +523 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/ATTRIBUTION.md +73 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/Bridging-Header.h +4 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/PixelDiff.swift +72 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/PrivateHeaders/XCTest/XCPointerEventPath.h +43 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/PrivateHeaders/XCTest/XCSynthesizedEventRecord.h +32 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/PrivateHeaders/XCTest/XCUIApplication+ActiveApp.h +23 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/PrivateHeaders/XCTest/XCUIDevice.h +30 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerObjCExceptionCatcher.h +11 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerObjCExceptionCatcher.m +16 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Alert.swift +155 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+CommandExecution.swift +961 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Environment.swift +37 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Interaction.swift +1864 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Lifecycle.swift +351 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Media.swift +81 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Models.swift +258 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+ScreenRecorder.swift +279 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Snapshot.swift +703 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+SystemModal.swift +230 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Transport.swift +137 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+TvRemote.swift +185 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests.swift +197 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/SnapshotParams.h +28 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/SnapshotParams.m +49 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/SyntheticTyping.h +17 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/SyntheticTyping.m +86 -0
- package/drivers/ios/DevicelabIOSRunner/PROTOCOL.md +258 -0
- package/drivers/ios/DevicelabIOSRunner/README.md +38 -0
- package/drivers/ios/DevicelabIOSRunner/project.yml +49 -0
- package/drivers/ios/WebDriverAgent/.github/ISSUE_TEMPLATE.md +4 -0
- package/drivers/ios/WebDriverAgent/.github/actions/xcode-setup/action.yml +32 -0
- package/drivers/ios/WebDriverAgent/.github/dependabot.yml +22 -0
- package/drivers/ios/WebDriverAgent/.github/workflows/functional-test.yml +62 -0
- package/drivers/ios/WebDriverAgent/.github/workflows/pr-title.yml +10 -0
- package/drivers/ios/WebDriverAgent/.github/workflows/publish.js.yml +105 -0
- package/drivers/ios/WebDriverAgent/.github/workflows/unit-test.yml +30 -0
- package/drivers/ios/WebDriverAgent/.github/workflows/wda-package.yml +107 -0
- package/drivers/ios/WebDriverAgent/.github/workflows/wda-tests.yml +221 -0
- package/drivers/ios/WebDriverAgent/.mocharc.js +4 -0
- package/drivers/ios/WebDriverAgent/.releaserc +45 -0
- package/drivers/ios/WebDriverAgent/CHANGELOG.md +1547 -0
- package/drivers/ios/WebDriverAgent/CONTRIBUTING.md +35 -0
- package/drivers/ios/WebDriverAgent/Configurations/IOSSettings.xcconfig +31 -0
- package/drivers/ios/WebDriverAgent/Configurations/IOSTestSettings.xcconfig +1 -0
- package/drivers/ios/WebDriverAgent/Configurations/TVOSSettings.xcconfig +31 -0
- package/drivers/ios/WebDriverAgent/Configurations/TVOSTestSettings.xcconfig +1 -0
- package/drivers/ios/WebDriverAgent/Fastlane/Fastfile +13 -0
- package/drivers/ios/WebDriverAgent/Gemfile +3 -0
- package/drivers/ios/WebDriverAgent/LICENSE +30 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/AccessibilityUtilities/AXSettings.h +15 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/MobileCoreServices/LSApplicationWorkspace.h +127 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/TextInput/TIPreferencesController.h +45 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/UIKitCore/UIKeyboardImpl.h +27 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/CDStructures.h +28 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/NSString-XCTAdditions.h +11 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/NSValue-XCTestAdditions.h +11 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UIGestureRecognizer-RecordingAdditions.h +11 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UILongPressGestureRecognizer-RecordingAdditions.h +11 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UIPanGestureRecognizer-RecordingAdditions.h +11 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UIPinchGestureRecognizer-RecordingAdditions.h +11 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UISwipeGestureRecognizer-RecordingAdditions.h +11 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UITapGestureRecognizer-RecordingAdditions.h +11 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCAXClient_iOS.h +55 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCActivityRecord.h +39 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCApplicationMonitor.h +44 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCApplicationMonitor_iOS.h +18 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCApplicationQuery.h +23 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCDebugLogDelegate-Protocol.h +11 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCDeviceEvent.h +27 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCEventGenerator.h +73 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCKeyMappingPath.h +36 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCKeyboardInputSolver.h +41 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCKeyboardKeyMap.h +101 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCKeyboardLayout.h +35 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCPointerEvent.h +30 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCPointerEventPath.h +43 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSourceCodeRecording.h +42 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSourceCodeTreeNode.h +84 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSourceCodeTreeNodeEnumerator.h +18 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSymbolicationRecord.h +29 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSymbolicatorHolder.h +14 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSynthesizedEventRecord.h +32 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTAXClient-Protocol.h +14 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTAsyncActivity-Protocol.h +16 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTAsyncActivity.h +23 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTAutomationTarget-Protocol.h +12 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTDarwinNotificationExpectation.h +23 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTElementSetTransformer-Protocol.h +18 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTKVOExpectation.h +28 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMetric.h +29 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTNSNotificationExpectation.h +27 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTNSPredicateExpectation.h +24 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTNSPredicateExpectationObject-Protocol.h +15 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRunnerAutomationSession.h +21 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRunnerDaemonSession.h +98 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRunnerIDESession.h +65 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTTestRunSession.h +25 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTTestRunSessionDelegate-Protocol.h +17 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTUIApplicationMonitor-Protocol.h +17 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiter.h +55 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiterDelegate-Protocol.h +16 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiterDelegatePrivate-Protocol.h +12 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiterManagement-Protocol.h +13 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiterManager.h +28 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTest.h +34 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestCase.h +102 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestCaseRun.h +18 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestCaseSuite.h +19 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestConfiguration.h +66 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestContext.h +26 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestContextScope.h +19 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestDriver.h +38 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestDriverInterface-Protocol.h +14 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestExpectation.h +39 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestExpectationDelegate-Protocol.h +14 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestExpectationWaiter.h +17 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestLog.h +32 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestManager_IDEInterface-Protocol.h +36 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestManager_ManagerInterface-Protocol.h +54 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestManager_TestsInterface-Protocol.h +12 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestMisuseObserver.h +37 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestObservation-Protocol.h +20 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestObservationCenter.h +36 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestObserver.h +20 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestProbe.h +13 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestRun.h +39 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestSuite.h +48 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestSuiteRun.h +28 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestWaiter.h +14 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplication.h +60 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationImpl.h +38 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationProcess.h +85 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUICoordinate.h +44 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIDevice.h +30 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElement.h +74 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElementAsynchronousHandlerWrapper.h +19 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElementHitPointCoordinate.h +24 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElementQuery.h +70 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIHitPointResult.h +20 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRecorderNodeFinder.h +65 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRecorderNodeFinderMatch.h +25 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRecorderTimingMessage.h +20 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRecorderUtilities.h +45 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIScreen.h +27 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIScreenDataSource-Protocol.h +19 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCInternalTestRun.h +43 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCKVOExpectationImplementation.h +32 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTDarwinNotificationExpectationImplementation.h +27 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTNSNotificationExpectationImplementation.h +30 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTNSPredicateExpectationImplementation.h +29 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTWaiterImpl.h +41 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestCaseImplementation.h +70 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestCaseInterruptionException.h +13 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestExpectationImplementation.h +40 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestImplementation.h +14 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestObservationCenterImplementation.h +19 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestSuiteImplementation.h +23 -0
- package/drivers/ios/WebDriverAgent/README.md +56 -0
- package/drivers/ios/WebDriverAgent/Scripts/build-webdriveragent.mjs +85 -0
- package/drivers/ios/WebDriverAgent/Scripts/build.sh +124 -0
- package/drivers/ios/WebDriverAgent/Scripts/ci/build-real.sh +24 -0
- package/drivers/ios/WebDriverAgent/Scripts/ci/build-sim.sh +15 -0
- package/drivers/ios/WebDriverAgent/Scripts/fetch-prebuilt-wda.mjs +69 -0
- package/drivers/ios/WebDriverAgent/Scripts/update-wda-version.mjs +42 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/project.pbxproj +4547 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationApp.xcscheme +87 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationTests_1.xcscheme +86 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationTests_2.xcscheme +86 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationTests_3.xcscheme +86 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentLib.xcscheme +125 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentLib_tvOS.xcscheme +95 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentRunner-nodebug.xcscheme +87 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentRunner.xcscheme +114 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentRunner_tvOS.xcscheme +123 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/FBXCElementSnapshotWrapper+Helpers.h +100 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/FBXCElementSnapshotWrapper+Helpers.m +192 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/NSDictionary+FBUtf8SafeDictionary.h +39 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/NSDictionary+FBUtf8SafeDictionary.m +87 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/NSExpression+FBFormat.h +29 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/NSExpression+FBFormat.m +34 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/NSString+FBVisualLength.h +18 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/NSString+FBVisualLength.m +18 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/NSString+FBXMLSafeString.h +27 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/NSString+FBXMLSafeString.m +30 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCAXClient_iOS+FBSnapshotReqParams.h +25 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCAXClient_iOS+FBSnapshotReqParams.m +82 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCTIssue+FBPatcher.h +17 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCTIssue+FBPatcher.m +35 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBAlert.h +23 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBAlert.m +109 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBFocused.h +23 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBHelpers.h +171 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBHelpers.m +645 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBQuiescence.h +24 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBQuiescence.m +28 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBTouchAction.h +29 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBTouchAction.m +75 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBUIInterruptions.h +22 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBUIInterruptions.m +31 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplicationProcess+FBQuiescence.h +27 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplicationProcess+FBQuiescence.m +118 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBHealthCheck.h +30 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBHealthCheck.m +47 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBHelpers.h +193 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBHelpers.m +388 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBRotation.h +38 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBRotation.m +68 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBAccessibility.h +29 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBAccessibility.m +50 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBCaching.h +19 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBCaching.m +36 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBClassChain.h +57 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBClassChain.m +98 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBCustomActions.h +27 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBCustomActions.m +127 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBFind.h +75 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBFind.m +133 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBForceTouch.h +38 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBForceTouch.m +52 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBIsVisible.h +28 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBIsVisible.m +78 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBMinMax.h +33 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBMinMax.m +75 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBPickerWheel.h +45 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBPickerWheel.m +58 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBResolve.h +37 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBResolve.m +51 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBScrolling.h +98 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBScrolling.m +342 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBSwiping.h +38 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBSwiping.m +56 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBTVFocuse.h +35 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBTVFocuse.m +71 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBTyping.h +64 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBTyping.m +199 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBUID.h +42 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBUID.m +85 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBUtilities.h +106 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBUtilities.m +170 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBVisibleFrame.h +35 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBVisibleFrame.m +52 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBWebDriverAttributes.h +32 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBWebDriverAttributes.m +294 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElementQuery+FBHelpers.h +28 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElementQuery+FBHelpers.m +46 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBAlertViewCommands.h +19 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBAlertViewCommands.m +130 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBCustomCommands.h +19 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBCustomCommands.m +633 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBDebugCommands.h +19 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBDebugCommands.m +81 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBElementCommands.h +19 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBElementCommands.m +705 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBFindElementCommands.h +18 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBFindElementCommands.m +186 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBOrientationCommands.h +19 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBOrientationCommands.m +185 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBScreenshotCommands.h +19 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBScreenshotCommands.m +40 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBSessionCommands.h +19 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBSessionCommands.m +594 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBTouchActionCommands.h +19 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBTouchActionCommands.m +41 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBTouchIDCommands.h +19 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBTouchIDCommands.m +30 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBUnknownCommands.h +19 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBUnknownCommands.m +39 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBVideoCommands.h +19 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBVideoCommands.m +84 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/FBAlert.h +91 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/FBAlert.m +274 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Info.plist +26 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBCommandHandler.h +38 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBCommandStatus.h +80 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBCommandStatus.m +279 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBElement.h +95 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBElementCache.h +61 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBElementCache.m +100 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBElementUtils.h +76 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBElementUtils.m +153 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBExceptionHandler.h +29 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBExceptionHandler.m +58 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBExceptions.h +60 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBExceptions.m +24 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBHTTPStatusCodes.h +581 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBResponseJSONPayload.h +29 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBResponseJSONPayload.m +59 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBResponsePayload.h +74 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBResponsePayload.m +148 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBRoute.h +77 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBRoute.m +174 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBRouteRequest-Private.h +20 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBRouteRequest.h +39 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBRouteRequest.m +32 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBScreenRecordingContainer.h +56 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBScreenRecordingContainer.m +72 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBScreenRecordingPromise.h +29 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBScreenRecordingPromise.m +31 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBScreenRecordingRequest.h +39 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBScreenRecordingRequest.m +94 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBSession-Private.h +26 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBSession.h +141 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBSession.m +295 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBTCPSocket.h +65 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBTCPSocket.m +85 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBWebServer.h +52 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBWebServer.m +248 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBXCAccessibilityElement.h +34 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBXCAccessibilityElement.m +17 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBXCDeviceEvent.h +34 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBXCDeviceEvent.m +42 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBXCElementSnapshot.h +82 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBXCElementSnapshot.m +9 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBXCElementSnapshotWrapper.h +29 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBXCElementSnapshotWrapper.m +114 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBAccessibilityTraits.h +20 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBAccessibilityTraits.m +61 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBActiveAppDetectionPoint.h +56 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBActiveAppDetectionPoint.m +87 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBAlertsMonitor.h +51 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBAlertsMonitor.m +94 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBBaseActionsSynthesizer.h +131 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBBaseActionsSynthesizer.m +165 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBCapabilities.h +45 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBCapabilities.m +25 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBClassChainQueryParser.h +99 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBClassChainQueryParser.m +666 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBConfiguration.h +403 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBConfiguration.m +711 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBDebugLogDelegateDecorator.h +26 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBDebugLogDelegateDecorator.m +49 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBElementHelpers.h +29 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBElementHelpers.m +21 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBElementTypeTransformer.h +45 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBElementTypeTransformer.m +149 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBErrorBuilder.h +64 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBErrorBuilder.m +75 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBFailureProofTestCase.h +19 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBFailureProofTestCase.m +68 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBImageProcessor.h +55 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBImageProcessor.m +170 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBImageUtils.h +25 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBImageUtils.m +80 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBKeyboard.h +37 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBKeyboard.m +123 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBLogger.h +32 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBLogger.m +47 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMacros.h +57 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMathUtils.h +36 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMathUtils.m +63 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMjpegServer.h +24 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMjpegServer.m +151 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBNotificationsHelper.h +37 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBNotificationsHelper.m +29 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBPasteboard.h +40 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBPasteboard.m +172 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBProtocolHelpers.h +46 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBProtocolHelpers.m +144 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBReflectionUtils.h +23 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBReflectionUtils.m +31 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBRunLoopSpinner.h +77 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBRunLoopSpinner.m +94 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBRuntimeUtils.h +79 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBRuntimeUtils.m +112 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBScreen.h +22 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBScreen.m +21 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBScreenshot.h +44 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBScreenshot.m +227 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBSettings.h +48 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBSettings.m +42 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBTVNavigationTracker-Private.h +27 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBTVNavigationTracker.h +52 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBTVNavigationTracker.m +142 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBUnattachedAppLauncher.h +26 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBUnattachedAppLauncher.m +21 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBW3CActionsHelpers.h +42 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBW3CActionsHelpers.m +119 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBW3CActionsSynthesizer.h +19 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBW3CActionsSynthesizer.m +885 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBWebServerParams.h +22 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBWebServerParams.m +23 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCAXClientProxy.h +49 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCAXClientProxy.m +119 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCTestDaemonsProxy.h +45 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCTestDaemonsProxy.m +359 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCodeCompatibility.h +80 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCodeCompatibility.m +99 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXMLGenerationOptions.h +45 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXMLGenerationOptions.m +25 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXPath-Private.h +56 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXPath.h +59 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXPath.m +979 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/LRUCache/LRUCache.h +66 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/LRUCache/LRUCache.m +146 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/LRUCache/LRUCacheNode.h +43 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/LRUCache/LRUCacheNode.m +51 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/NSPredicate+FBFormat.h +42 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/NSPredicate+FBFormat.m +69 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/XCTestPrivateSymbols.h +78 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/XCTestPrivateSymbols.m +107 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/XCUIApplicationProcessDelay.h +37 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/XCUIApplicationProcessDelay.m +83 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncSocket.h +1220 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncSocket.m +8812 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncUdpSocket.h +1036 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncUdpSocket.m +5868 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Categories/DDNumber.h +12 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Categories/DDNumber.m +88 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Categories/DDRange.h +56 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Categories/DDRange.m +106 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPConnection.h +107 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPConnection.m +2238 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPLogging.h +122 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPMessage.h +53 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPMessage.m +357 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPResponse.h +149 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPServer.h +126 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPServer.m +372 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/LICENSE +18 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Responses/HTTPDataResponse.h +13 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Responses/HTTPDataResponse.m +83 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Responses/HTTPErrorResponse.h +9 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Responses/HTTPErrorResponse.m +40 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/HTTPResponseProxy.h +13 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/HTTPResponseProxy.m +84 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/LICENSE +19 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/Route.h +18 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/Route.m +11 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RouteRequest.h +16 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RouteRequest.m +50 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RouteResponse.h +20 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RouteResponse.m +66 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingConnection.h +5 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingConnection.m +142 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingHTTPServer.h +55 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingHTTPServer.m +303 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/WebDriverAgentLib.h +59 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentRunner/Info.plist +30 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentRunner/UITestingUITests.m +58 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/AppDelegate.h +14 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/AppDelegate.m +38 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBAlertViewController.h +14 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBAlertViewController.m +82 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBNavigationController.h +12 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBNavigationController.m +25 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBScrollViewController.h +13 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBScrollViewController.m +39 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBTableDataSource.h +16 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBTableDataSource.m +35 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/SceneDelegate.h +20 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/SceneDelegate.m +48 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/TouchSpotView.h +17 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/TouchSpotView.m +28 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/TouchViewController.h +23 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/TouchViewController.m +29 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/TouchableView.h +29 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/TouchableView.m +108 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/ViewController.h +12 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/ViewController.m +88 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Info.plist +71 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Resources/Base.lproj/Main.storyboard +620 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/main.m +15 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBAlertTests.m +194 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBAutoAlertsHandlerTests.m +73 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBConfigurationTests.m +38 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBElementAttributeTests.m +264 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBElementSwipingTests.m +127 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBElementVisibilityTests.m +73 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBFailureProofTestCaseTests.m +41 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBForceTouchTests.m +85 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBImageProcessorTests.m +82 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBIntegrationTestCase.h +76 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBIntegrationTestCase.m +140 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBKeyboardTests.m +61 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBPasteboardTests.m +91 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBPickerWheelSelectTests.m +55 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBSafariAlertTests.m +73 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBScreenTests.m +31 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBScrollingTests.m +126 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBSessionIntegrationTests.m +131 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBTapTest.m +103 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBTestMacros.h +33 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBTypingTest.m +68 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBVideoRecordingTests.m +64 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBW3CMultiTouchActionsIntegrationTests.m +124 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBW3CTouchActionsIntegrationTests.m +491 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBW3CTypeActionsTests.m +184 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBXPathIntegrationTests.m +157 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/Info.plist +24 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCElementSnapshotHelperTests.m +211 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCElementSnapshotHitPointTests.m +30 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIApplicationHelperTests.m +162 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIDeviceHealthCheckTests.m +27 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIDeviceHelperTests.m +220 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIDeviceRotationTests.m +84 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIElementAttributesTests.m +248 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIElementFBFindTests.m +472 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIElementHelperIntegrationTests.m +51 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/Doubles/XCElementSnapshotDouble.h +16 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/Doubles/XCElementSnapshotDouble.m +110 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/Doubles/XCUIApplicationDouble.h +17 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/Doubles/XCUIApplicationDouble.m +66 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/Doubles/XCUIElementDouble.h +51 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/Doubles/XCUIElementDouble.m +104 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBClassChainTests.m +313 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBConfigurationTests.m +60 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBElementCacheTests.m +124 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBElementTypeTransformerTests.m +45 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBElementUtilitiesTests.m +36 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBErrorBuilderTests.m +61 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBExceptionHandlerTests.m +59 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBLRUCacheTests.m +127 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBMathUtilsTests.m +113 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBProtocolHelpersTests.m +81 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBRouteTests.m +129 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBRunLoopSpinnerTests.m +98 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBRuntimeUtilsTests.m +45 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBSDKVersionTests.m +66 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBSessionTests.m +67 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBXMLSafeStringTests.m +35 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBXPathTests.m +155 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/Info.plist +24 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/NSDictionaryFBUtf8SafeTests.m +34 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/NSExpressionFBFormatTests.m +60 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/NSPredicateFBFormatTests.m +72 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/XCUIElementHelpersTests.m +50 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/Doubles/XCUIElementDouble.h +46 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/Doubles/XCUIElementDouble.m +80 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/FBTVNavigationTrackerTests.m +86 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/Info.plist +24 -0
- package/drivers/ios/WebDriverAgent/eslint.config.mjs +13 -0
- package/drivers/ios/WebDriverAgent/index.ts +7 -0
- package/drivers/ios/WebDriverAgent/lib/check-dependencies.ts +34 -0
- package/drivers/ios/WebDriverAgent/lib/constants.ts +18 -0
- package/drivers/ios/WebDriverAgent/lib/logger.ts +3 -0
- package/drivers/ios/WebDriverAgent/lib/no-session-proxy.ts +25 -0
- package/drivers/ios/WebDriverAgent/lib/types.ts +139 -0
- package/drivers/ios/WebDriverAgent/lib/utils.ts +342 -0
- package/drivers/ios/WebDriverAgent/lib/webdriveragent.ts +715 -0
- package/drivers/ios/WebDriverAgent/lib/xcodebuild.ts +488 -0
- package/drivers/ios/WebDriverAgent/package.json +102 -0
- package/drivers/ios/WebDriverAgent/test/functional/desired.ts +7 -0
- package/drivers/ios/WebDriverAgent/test/functional/helpers/simulator.ts +34 -0
- package/drivers/ios/WebDriverAgent/test/functional/webdriveragent-e2e-specs.ts +119 -0
- package/drivers/ios/WebDriverAgent/test/unit/utils-specs.ts +157 -0
- package/drivers/ios/WebDriverAgent/test/unit/webdriveragent-specs.ts +446 -0
- package/drivers/ios/WebDriverAgent/tsconfig.json +16 -0
- package/package.json +16 -0
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
import XCTest
|
|
2
|
+
#if canImport(AppKit)
|
|
3
|
+
import AppKit
|
|
4
|
+
#endif
|
|
5
|
+
|
|
6
|
+
func runnerPngData(for image: RunnerImage) -> Data? {
|
|
7
|
+
#if canImport(UIKit)
|
|
8
|
+
return image.pngData()
|
|
9
|
+
#elseif canImport(AppKit)
|
|
10
|
+
guard let cgImage = runnerCGImage(from: image) else { return nil }
|
|
11
|
+
let bitmap = NSBitmapImageRep(cgImage: cgImage)
|
|
12
|
+
return bitmap.representation(using: .png, properties: [:])
|
|
13
|
+
#endif
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
func runnerCGImage(from image: RunnerImage) -> CGImage? {
|
|
17
|
+
#if canImport(UIKit)
|
|
18
|
+
return image.cgImage
|
|
19
|
+
#elseif canImport(AppKit)
|
|
20
|
+
return image.cgImage(forProposedRect: nil, context: nil, hints: nil)
|
|
21
|
+
#endif
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
extension RunnerTests {
|
|
25
|
+
// MARK: - Recording
|
|
26
|
+
|
|
27
|
+
func captureRunnerFrame() -> RunnerImage? {
|
|
28
|
+
var image: RunnerImage?
|
|
29
|
+
let capture = {
|
|
30
|
+
let screenshot = XCUIScreen.main.screenshot()
|
|
31
|
+
image = screenshot.image
|
|
32
|
+
}
|
|
33
|
+
if Thread.isMainThread {
|
|
34
|
+
capture()
|
|
35
|
+
} else {
|
|
36
|
+
DispatchQueue.main.sync(execute: capture)
|
|
37
|
+
}
|
|
38
|
+
return image
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
func screenshotRoot(app: XCUIApplication) -> XCUIElement {
|
|
42
|
+
#if os(macOS)
|
|
43
|
+
let windows = app.windows.allElementsBoundByIndex
|
|
44
|
+
if let window = windows.first(where: { $0.exists && !$0.frame.isNull && !$0.frame.isEmpty }) {
|
|
45
|
+
return window
|
|
46
|
+
}
|
|
47
|
+
#endif
|
|
48
|
+
return app
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
func stopRecordingIfNeeded() {
|
|
52
|
+
guard let recorder = activeRecording else { return }
|
|
53
|
+
do {
|
|
54
|
+
try recorder.stop()
|
|
55
|
+
} catch {
|
|
56
|
+
NSLog("AGENT_DEVICE_RUNNER_RECORD_STOP_FAILED=%@", String(describing: error))
|
|
57
|
+
}
|
|
58
|
+
activeRecording = nil
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
func resolveRecordingOutPath(_ requestedOutPath: String) -> String {
|
|
62
|
+
#if os(macOS)
|
|
63
|
+
if requestedOutPath.hasPrefix("/") {
|
|
64
|
+
return requestedOutPath
|
|
65
|
+
}
|
|
66
|
+
#endif
|
|
67
|
+
let fileName = URL(fileURLWithPath: requestedOutPath).lastPathComponent
|
|
68
|
+
let fallbackName = "agent-device-recording-\(Int(Date().timeIntervalSince1970 * 1000)).mp4"
|
|
69
|
+
let safeFileName = fileName.isEmpty ? fallbackName : fileName
|
|
70
|
+
return (NSTemporaryDirectory() as NSString).appendingPathComponent(safeFileName)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// MARK: - Target Activation
|
|
74
|
+
|
|
75
|
+
/// The application that is actually on screen, resolved through the
|
|
76
|
+
/// same private accessibility surface WebDriverAgent uses: active
|
|
77
|
+
/// applications carry PIDs, and XCUIApplication can be built from a
|
|
78
|
+
/// PID. Returns nil when the private interface is unavailable so
|
|
79
|
+
/// callers fall back to the placeholder host app.
|
|
80
|
+
func frontmostApplication() -> XCUIApplication? {
|
|
81
|
+
guard let interface = XCUIDevice.shared.value(forKey: "accessibilityInterface") as? NSObject else {
|
|
82
|
+
NSLog("AGENT_DEVICE_RUNNER_FRONTMOST_MISS step=interface")
|
|
83
|
+
return nil
|
|
84
|
+
}
|
|
85
|
+
guard interface.responds(to: NSSelectorFromString("activeApplications")) else {
|
|
86
|
+
NSLog("AGENT_DEVICE_RUNNER_FRONTMOST_MISS step=responds class=%@", NSStringFromClass(type(of: interface)))
|
|
87
|
+
return nil
|
|
88
|
+
}
|
|
89
|
+
guard let raw = interface.perform(NSSelectorFromString("activeApplications"))?.takeUnretainedValue() else {
|
|
90
|
+
NSLog("AGENT_DEVICE_RUNNER_FRONTMOST_MISS step=perform")
|
|
91
|
+
return nil
|
|
92
|
+
}
|
|
93
|
+
guard let elements = raw as? [XCAccessibilityElement], let frontmost = elements.first else {
|
|
94
|
+
NSLog("AGENT_DEVICE_RUNNER_FRONTMOST_MISS step=cast raw=%@", String(describing: raw))
|
|
95
|
+
return nil
|
|
96
|
+
}
|
|
97
|
+
let pid = frontmost.processIdentifier
|
|
98
|
+
guard pid > 0 else {
|
|
99
|
+
NSLog("AGENT_DEVICE_RUNNER_FRONTMOST_MISS step=pid")
|
|
100
|
+
return nil
|
|
101
|
+
}
|
|
102
|
+
guard let bundleId = Self.bundleID(forPID: pid) else {
|
|
103
|
+
NSLog("AGENT_DEVICE_RUNNER_FRONTMOST_MISS step=bundleID pid=%d", pid)
|
|
104
|
+
return nil
|
|
105
|
+
}
|
|
106
|
+
NSLog("AGENT_DEVICE_RUNNER_FRONTMOST_TARGET pid=%d bundle=%@", pid, bundleId)
|
|
107
|
+
return XCUIApplication(bundleIdentifier: bundleId)
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/// Resolves a simulator process to its app bundle identifier: the
|
|
111
|
+
/// process's executable lives inside its .app bundle on the host
|
|
112
|
+
/// filesystem, and Info.plist names the identifier.
|
|
113
|
+
static func bundleID(forPID pid: pid_t) -> String? {
|
|
114
|
+
var buf = [CChar](repeating: 0, count: 4096)
|
|
115
|
+
guard proc_pidpath(pid, &buf, UInt32(buf.count)) > 0 else { return nil }
|
|
116
|
+
let bundleURL = URL(fileURLWithPath: String(cString: buf)).deletingLastPathComponent()
|
|
117
|
+
guard bundleURL.pathExtension == "app",
|
|
118
|
+
let plist = NSDictionary(contentsOf: bundleURL.appendingPathComponent("Info.plist")),
|
|
119
|
+
let bundleId = plist["CFBundleIdentifier"] as? String
|
|
120
|
+
else { return nil }
|
|
121
|
+
return bundleId
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
func ensureRunnerHostAppActive(reason: String) {
|
|
125
|
+
NSLog(
|
|
126
|
+
"AGENT_DEVICE_RUNNER_HOST_ACTIVATE state=%d reason=%@",
|
|
127
|
+
app.state.rawValue,
|
|
128
|
+
reason
|
|
129
|
+
)
|
|
130
|
+
if app.state == .unknown || app.state == .notRunning {
|
|
131
|
+
app.launch()
|
|
132
|
+
} else if app.state != .runningForeground {
|
|
133
|
+
app.activate()
|
|
134
|
+
}
|
|
135
|
+
currentApp = app
|
|
136
|
+
currentBundleId = nil
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
func targetNeedsActivation(_ target: XCUIApplication) -> Bool {
|
|
140
|
+
let state = target.state
|
|
141
|
+
#if os(macOS)
|
|
142
|
+
if state == .unknown || state == .notRunning || state == .runningBackground {
|
|
143
|
+
return true
|
|
144
|
+
}
|
|
145
|
+
#else
|
|
146
|
+
if state == .unknown || state == .notRunning || state == .runningBackground
|
|
147
|
+
|| state == .runningBackgroundSuspended
|
|
148
|
+
{
|
|
149
|
+
return true
|
|
150
|
+
}
|
|
151
|
+
#endif
|
|
152
|
+
return false
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
func canUseFastForegroundAppGuard(
|
|
156
|
+
activeApp: XCUIApplication,
|
|
157
|
+
requestedBundleId: String?,
|
|
158
|
+
command: CommandType
|
|
159
|
+
) -> Bool {
|
|
160
|
+
guard let requestedBundleId, currentBundleId == requestedBundleId, currentApp != nil else {
|
|
161
|
+
return false
|
|
162
|
+
}
|
|
163
|
+
guard activeApp.state == .runningForeground else { return false }
|
|
164
|
+
NSLog(
|
|
165
|
+
"AGENT_DEVICE_RUNNER_FAST_APP_GUARD command=%@ bundle=%@ state=%d",
|
|
166
|
+
String(describing: command),
|
|
167
|
+
requestedBundleId,
|
|
168
|
+
activeApp.state.rawValue
|
|
169
|
+
)
|
|
170
|
+
return true
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
func activateTarget(bundleId: String, reason: String) -> XCUIApplication {
|
|
174
|
+
let target = XCUIApplication(bundleIdentifier: bundleId)
|
|
175
|
+
NSLog(
|
|
176
|
+
"AGENT_DEVICE_RUNNER_ACTIVATE bundle=%@ state=%d reason=%@",
|
|
177
|
+
bundleId,
|
|
178
|
+
target.state.rawValue,
|
|
179
|
+
reason
|
|
180
|
+
)
|
|
181
|
+
// activate avoids terminating and relaunching the target app
|
|
182
|
+
target.activate()
|
|
183
|
+
currentApp = target
|
|
184
|
+
currentBundleId = bundleId
|
|
185
|
+
needsFirstInteractionDelay = true
|
|
186
|
+
return target
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
func withTemporaryScrollIdleTimeoutIfSupported(
|
|
190
|
+
_ target: XCUIApplication,
|
|
191
|
+
operation: () -> Void
|
|
192
|
+
) {
|
|
193
|
+
let setter = NSSelectorFromString("setWaitForIdleTimeout:")
|
|
194
|
+
let supportsWaitForIdleTimeout = target.responds(to: setter)
|
|
195
|
+
let previous = supportsWaitForIdleTimeout
|
|
196
|
+
? (target.value(forKey: "waitForIdleTimeout") as? NSNumber)
|
|
197
|
+
: nil
|
|
198
|
+
if supportsWaitForIdleTimeout {
|
|
199
|
+
target.setValue(scrollInteractionIdleTimeoutDefault, forKey: "waitForIdleTimeout")
|
|
200
|
+
}
|
|
201
|
+
defer {
|
|
202
|
+
if let previous {
|
|
203
|
+
target.setValue(previous.doubleValue, forKey: "waitForIdleTimeout")
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
performWithQuiescenceSkippedIfSupported(target, operation: operation)
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// Some apps never report post-gesture quiescence, even after XCTest has synthesized the event.
|
|
210
|
+
private func performWithQuiescenceSkippedIfSupported(
|
|
211
|
+
_ target: XCUIApplication,
|
|
212
|
+
operation: () -> Void
|
|
213
|
+
) {
|
|
214
|
+
let selector = NSSelectorFromString("_performWithInteractionOptions:block:")
|
|
215
|
+
guard target.responds(to: selector) else {
|
|
216
|
+
operation()
|
|
217
|
+
return
|
|
218
|
+
}
|
|
219
|
+
typealias PerformWithInteractionOptions = @convention(c) (
|
|
220
|
+
NSObject,
|
|
221
|
+
Selector,
|
|
222
|
+
UInt,
|
|
223
|
+
@convention(block) () -> Void
|
|
224
|
+
) -> Void
|
|
225
|
+
let implementation = target.method(for: selector)
|
|
226
|
+
let performWithOptions = unsafeBitCast(
|
|
227
|
+
implementation,
|
|
228
|
+
to: PerformWithInteractionOptions.self
|
|
229
|
+
)
|
|
230
|
+
let skipPreEventQuiescence = UInt(1)
|
|
231
|
+
let skipPostEventQuiescence = UInt(2)
|
|
232
|
+
withoutActuallyEscaping(operation) { escapableOperation in
|
|
233
|
+
let block: @convention(block) () -> Void = escapableOperation
|
|
234
|
+
performWithOptions(
|
|
235
|
+
target,
|
|
236
|
+
selector,
|
|
237
|
+
skipPreEventQuiescence | skipPostEventQuiescence,
|
|
238
|
+
block
|
|
239
|
+
)
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
func shouldRetryCommand(_ command: Command) -> Bool {
|
|
244
|
+
if RunnerEnv.isTruthy("AGENT_DEVICE_RUNNER_DISABLE_READONLY_RETRY") {
|
|
245
|
+
return false
|
|
246
|
+
}
|
|
247
|
+
return isReadOnlyCommand(command)
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
func shouldRetryException(_ command: Command, message: String) -> Bool {
|
|
251
|
+
guard shouldRetryCommand(command) else { return false }
|
|
252
|
+
let normalized = message.lowercased()
|
|
253
|
+
if normalized.contains("kaxerrorservernotfound") {
|
|
254
|
+
return true
|
|
255
|
+
}
|
|
256
|
+
if normalized.contains("main thread execution timed out") {
|
|
257
|
+
return true
|
|
258
|
+
}
|
|
259
|
+
if normalized.contains("timed out") && command.command == .snapshot {
|
|
260
|
+
return true
|
|
261
|
+
}
|
|
262
|
+
return false
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// MARK: - Command Classification
|
|
266
|
+
|
|
267
|
+
func isReadOnlyCommand(_ command: Command) -> Bool {
|
|
268
|
+
switch command.command {
|
|
269
|
+
case .interactionFrame, .findText, .readText, .snapshot, .screenshot:
|
|
270
|
+
return true
|
|
271
|
+
case .alert:
|
|
272
|
+
let action = (command.action ?? "get").lowercased()
|
|
273
|
+
return action == "get"
|
|
274
|
+
default:
|
|
275
|
+
return false
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
func shouldRetryResponse(_ response: Response) -> Bool {
|
|
280
|
+
guard response.ok == false else { return false }
|
|
281
|
+
guard let message = response.error?.message.lowercased() else { return false }
|
|
282
|
+
return message.contains("is not available")
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
func isInteractionCommand(_ command: CommandType) -> Bool {
|
|
286
|
+
switch command {
|
|
287
|
+
case
|
|
288
|
+
.tap,
|
|
289
|
+
.longPress,
|
|
290
|
+
.drag,
|
|
291
|
+
.remotePress,
|
|
292
|
+
.type,
|
|
293
|
+
.swipe,
|
|
294
|
+
.back,
|
|
295
|
+
.backInApp,
|
|
296
|
+
.backSystem,
|
|
297
|
+
.rotate,
|
|
298
|
+
.appSwitcher,
|
|
299
|
+
.keyboardDismiss,
|
|
300
|
+
.pinch:
|
|
301
|
+
return true
|
|
302
|
+
default:
|
|
303
|
+
return false
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
func isRunnerLifecycleCommand(_ command: CommandType) -> Bool {
|
|
308
|
+
switch command {
|
|
309
|
+
case .shutdown, .recordStop, .screenshot, .uptime, .idleCheck, .awaitIdle:
|
|
310
|
+
return true
|
|
311
|
+
default:
|
|
312
|
+
return false
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
// MARK: - Interaction Stabilization
|
|
317
|
+
|
|
318
|
+
func applyInteractionStabilizationIfNeeded() {
|
|
319
|
+
if needsPostSnapshotInteractionDelay {
|
|
320
|
+
sleepFor(postSnapshotInteractionDelay)
|
|
321
|
+
needsPostSnapshotInteractionDelay = false
|
|
322
|
+
}
|
|
323
|
+
if needsFirstInteractionDelay {
|
|
324
|
+
sleepFor(firstInteractionAfterActivateDelay)
|
|
325
|
+
needsFirstInteractionDelay = false
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
func sleepFor(_ delay: TimeInterval) {
|
|
330
|
+
guard delay > 0 else { return }
|
|
331
|
+
// Keep XCTest/UI sources moving during command-local pauses such as delayed typing.
|
|
332
|
+
if Thread.isMainThread {
|
|
333
|
+
let deadline = Date().addingTimeInterval(delay)
|
|
334
|
+
while Date() < deadline {
|
|
335
|
+
let slice = min(max(deadline.timeIntervalSinceNow, 0), 0.02)
|
|
336
|
+
if slice <= 0 {
|
|
337
|
+
break
|
|
338
|
+
}
|
|
339
|
+
let handledSource = RunLoop.current.run(
|
|
340
|
+
mode: .default,
|
|
341
|
+
before: Date().addingTimeInterval(slice)
|
|
342
|
+
)
|
|
343
|
+
if !handledSource {
|
|
344
|
+
usleep(useconds_t(slice * 1_000_000))
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
return
|
|
348
|
+
}
|
|
349
|
+
usleep(useconds_t(delay * 1_000_000))
|
|
350
|
+
}
|
|
351
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import Photos
|
|
2
|
+
import XCTest
|
|
3
|
+
|
|
4
|
+
extension RunnerTests {
|
|
5
|
+
/// Adds a photo/video to the device Photos library via PhotoKit.
|
|
6
|
+
///
|
|
7
|
+
/// This runs on-device because writing the Photos database is only possible
|
|
8
|
+
/// from a signed, add-permitted process — there is no host-side path on real
|
|
9
|
+
/// devices. On the simulator the host uses `simctl addmedia` instead and
|
|
10
|
+
/// never reaches this; this path is what gives real iOS devices addMedia
|
|
11
|
+
/// support (which upstream Maestro lacks).
|
|
12
|
+
func executeAddMedia(command: Command) throws -> Response {
|
|
13
|
+
guard let b64 = command.mediaData, let name = command.mediaName else {
|
|
14
|
+
return Response(ok: false, error: ErrorPayload(message: "addMedia: mediaData and mediaName are required"))
|
|
15
|
+
}
|
|
16
|
+
guard let data = Data(base64Encoded: b64) else {
|
|
17
|
+
return Response(ok: false, error: ErrorPayload(message: "addMedia: invalid base64 data"))
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
let isVideo = (command.mimeType ?? "").hasPrefix("video/")
|
|
21
|
+
let tmpURL = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(name)
|
|
22
|
+
do {
|
|
23
|
+
try data.write(to: tmpURL)
|
|
24
|
+
} catch {
|
|
25
|
+
return Response(ok: false, error: ErrorPayload(message: "addMedia: failed to write temp file: \(error.localizedDescription)"))
|
|
26
|
+
}
|
|
27
|
+
defer { try? FileManager.default.removeItem(at: tmpURL) }
|
|
28
|
+
|
|
29
|
+
// Ensure add-only authorization. On a real device the first request shows a
|
|
30
|
+
// SpringBoard alert, which we auto-accept on a background queue while the
|
|
31
|
+
// request blocks. On the simulator the permission is pre-granted host-side.
|
|
32
|
+
if #available(iOS 14, *) {
|
|
33
|
+
if PHPhotoLibrary.authorizationStatus(for: .addOnly) == .notDetermined {
|
|
34
|
+
acceptPhotoPermissionAlert()
|
|
35
|
+
let authSem = DispatchSemaphore(value: 0)
|
|
36
|
+
PHPhotoLibrary.requestAuthorization(for: .addOnly) { _ in authSem.signal() }
|
|
37
|
+
_ = authSem.wait(timeout: .now() + 15)
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
var creationError: Error?
|
|
42
|
+
let sem = DispatchSemaphore(value: 0)
|
|
43
|
+
PHPhotoLibrary.shared().performChanges({
|
|
44
|
+
if isVideo {
|
|
45
|
+
_ = PHAssetCreationRequest.creationRequestForAssetFromVideo(atFileURL: tmpURL)
|
|
46
|
+
} else {
|
|
47
|
+
_ = PHAssetCreationRequest.creationRequestForAssetFromImage(atFileURL: tmpURL)
|
|
48
|
+
}
|
|
49
|
+
}, completionHandler: { success, error in
|
|
50
|
+
if !success { creationError = error }
|
|
51
|
+
sem.signal()
|
|
52
|
+
})
|
|
53
|
+
if sem.wait(timeout: .now() + 30) == .timedOut {
|
|
54
|
+
return Response(ok: false, error: ErrorPayload(message: "addMedia: PhotoKit timed out"))
|
|
55
|
+
}
|
|
56
|
+
if let e = creationError {
|
|
57
|
+
return Response(ok: false, error: ErrorPayload(message: "addMedia: PhotoKit failed: \(e.localizedDescription)"))
|
|
58
|
+
}
|
|
59
|
+
return Response(ok: true, data: DataPayload(message: "added media: \(name)"))
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/// Best-effort auto-accept of the one-time add-only Photos permission alert on
|
|
63
|
+
/// a real device (no-op on the simulator where permission is pre-granted).
|
|
64
|
+
private func acceptPhotoPermissionAlert() {
|
|
65
|
+
DispatchQueue.global(qos: .userInitiated).async {
|
|
66
|
+
let springboard = XCUIApplication(bundleIdentifier: "com.apple.springboard")
|
|
67
|
+
let labels = ["Allow Access to All Photos", "Allow", "Add", "OK"]
|
|
68
|
+
let deadline = Date().addingTimeInterval(12)
|
|
69
|
+
while Date() < deadline {
|
|
70
|
+
for label in labels {
|
|
71
|
+
let button = springboard.buttons[label]
|
|
72
|
+
if button.exists && button.isHittable {
|
|
73
|
+
button.tap()
|
|
74
|
+
return
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
Thread.sleep(forTimeInterval: 0.3)
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
// MARK: - Wire Models
|
|
2
|
+
|
|
3
|
+
enum CommandType: String, Codable {
|
|
4
|
+
case tap
|
|
5
|
+
// Local extension: walk the XCUI tree, find best liberal match (substring
|
|
6
|
+
// + case-insensitive + prefer-editable-inputs ranking), tap at its center.
|
|
7
|
+
// Returns small {ok:true} on hit, or {ok:false, snapshot:[walked nodes]}
|
|
8
|
+
// on miss so the Go side can fall back to its own snapshot+filter+tap.
|
|
9
|
+
case tapBySelector
|
|
10
|
+
case mouseClick
|
|
11
|
+
case tapSeries
|
|
12
|
+
case longPress
|
|
13
|
+
case interactionFrame
|
|
14
|
+
case drag
|
|
15
|
+
case dragSeries
|
|
16
|
+
case remotePress
|
|
17
|
+
case type
|
|
18
|
+
case swipe
|
|
19
|
+
case findText
|
|
20
|
+
case querySelector
|
|
21
|
+
case readText
|
|
22
|
+
case snapshot
|
|
23
|
+
case screenshot
|
|
24
|
+
case back
|
|
25
|
+
case backInApp
|
|
26
|
+
case backSystem
|
|
27
|
+
case home
|
|
28
|
+
case rotate
|
|
29
|
+
case appSwitcher
|
|
30
|
+
case keyboardDismiss
|
|
31
|
+
case alert
|
|
32
|
+
case pinch
|
|
33
|
+
case recordStart
|
|
34
|
+
case recordStop
|
|
35
|
+
case uptime
|
|
36
|
+
case shutdown
|
|
37
|
+
// Local extension (not in upstream agent-device): take two screenshots
|
|
38
|
+
// in-process and return the fraction of differing pixels. Lets the Go
|
|
39
|
+
// side's waitForAnimationToEnd avoid two full PNG roundtrips +
|
|
40
|
+
// re-decode + pixel-walk per iteration.
|
|
41
|
+
case idleCheck
|
|
42
|
+
// Local extension: runner-side wait-for-idle loop. Takes timeoutMs +
|
|
43
|
+
// diff threshold; loops idleCheck internally until settled or timeout.
|
|
44
|
+
// Avoids HTTP roundtrips per poll iteration.
|
|
45
|
+
case awaitIdle
|
|
46
|
+
// Local extension (not in upstream agent-device): add a photo/video to the
|
|
47
|
+
// device Photos library via PhotoKit. This is the only way to inject media
|
|
48
|
+
// on a real iOS device (no host-side path exists), so it runs on-device.
|
|
49
|
+
case addMedia
|
|
50
|
+
// Local extension: read the device's light/dark appearance.
|
|
51
|
+
//
|
|
52
|
+
// The host used to answer this with `simctl ui appearance`, which exists
|
|
53
|
+
// only for simulators, so dark mode was unavailable on physical devices.
|
|
54
|
+
// XCUIDevice exposes the same state to a UI test on both (iOS 15+), so
|
|
55
|
+
// routing it through the runner covers real hardware too.
|
|
56
|
+
case appearance
|
|
57
|
+
// Local extension: set the device's light/dark appearance. Takes
|
|
58
|
+
// `appearance` as "dark" or "light".
|
|
59
|
+
case setAppearance
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
struct Command: Codable {
|
|
63
|
+
let command: CommandType
|
|
64
|
+
let appBundleId: String?
|
|
65
|
+
let text: String?
|
|
66
|
+
let selectorKey: String?
|
|
67
|
+
let selectorValue: String?
|
|
68
|
+
let delayMs: Int?
|
|
69
|
+
let textEntryMode: String?
|
|
70
|
+
let clearFirst: Bool?
|
|
71
|
+
let action: String?
|
|
72
|
+
let x: Double?
|
|
73
|
+
let y: Double?
|
|
74
|
+
let button: String?
|
|
75
|
+
let remoteButton: String?
|
|
76
|
+
let count: Double?
|
|
77
|
+
let intervalMs: Double?
|
|
78
|
+
let doubleTap: Bool?
|
|
79
|
+
let pauseMs: Double?
|
|
80
|
+
let pattern: String?
|
|
81
|
+
let x2: Double?
|
|
82
|
+
let y2: Double?
|
|
83
|
+
let durationMs: Double?
|
|
84
|
+
// moveDurationMs — local extension for drag: how long the movement itself
|
|
85
|
+
// takes (durationMs is the press-before-move hold). Absent = XCUITest's
|
|
86
|
+
// default drag velocity, which keeps the pre-existing swipe/scroll wire
|
|
87
|
+
// shape byte-for-byte compatible.
|
|
88
|
+
let moveDurationMs: Double?
|
|
89
|
+
let direction: String?
|
|
90
|
+
let orientation: String?
|
|
91
|
+
let scale: Double?
|
|
92
|
+
let outPath: String?
|
|
93
|
+
let fps: Int?
|
|
94
|
+
let quality: Int?
|
|
95
|
+
let interactiveOnly: Bool?
|
|
96
|
+
let compact: Bool?
|
|
97
|
+
let depth: Int?
|
|
98
|
+
let scope: String?
|
|
99
|
+
let raw: Bool?
|
|
100
|
+
let fullscreen: Bool?
|
|
101
|
+
let mediaName: String?
|
|
102
|
+
let mimeType: String?
|
|
103
|
+
let mediaData: String? // base64-encoded file bytes (addMedia)
|
|
104
|
+
let appearance: String? // "dark" or "light" (setAppearance)
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
struct Response: Codable {
|
|
108
|
+
let ok: Bool
|
|
109
|
+
let data: DataPayload?
|
|
110
|
+
let error: ErrorPayload?
|
|
111
|
+
|
|
112
|
+
init(ok: Bool, data: DataPayload? = nil, error: ErrorPayload? = nil) {
|
|
113
|
+
self.ok = ok
|
|
114
|
+
self.data = data
|
|
115
|
+
self.error = error
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
struct DataPayload: Codable {
|
|
120
|
+
let message: String?
|
|
121
|
+
let text: String?
|
|
122
|
+
let found: Bool?
|
|
123
|
+
let items: [String]?
|
|
124
|
+
let nodes: [SnapshotNode]?
|
|
125
|
+
let truncated: Bool?
|
|
126
|
+
let gestureStartUptimeMs: Double?
|
|
127
|
+
let gestureEndUptimeMs: Double?
|
|
128
|
+
let x: Double?
|
|
129
|
+
let y: Double?
|
|
130
|
+
let x2: Double?
|
|
131
|
+
let y2: Double?
|
|
132
|
+
let referenceWidth: Double?
|
|
133
|
+
let referenceHeight: Double?
|
|
134
|
+
let currentUptimeMs: Double?
|
|
135
|
+
let visible: Bool?
|
|
136
|
+
let wasVisible: Bool?
|
|
137
|
+
let dismissed: Bool?
|
|
138
|
+
let orientation: String?
|
|
139
|
+
// Local extension: identifier of the matched element when applicable
|
|
140
|
+
// (tapBySelector uses this so the Go side can populate
|
|
141
|
+
// lastTappedIdentifier for the next inputText to use as a typing hint).
|
|
142
|
+
let identifier: String?
|
|
143
|
+
// Local extension (not in upstream agent-device): inline PNG bytes
|
|
144
|
+
// (base64-encoded) for screenshot responses. Upstream writes a file
|
|
145
|
+
// and returns the path in `message`; for maestro-runner we need the
|
|
146
|
+
// bytes back on the host without an extra simctl roundtrip.
|
|
147
|
+
let pngBase64: String?
|
|
148
|
+
// Local extension: fraction of differing pixels from idleCheck.
|
|
149
|
+
let diffFraction: Double?
|
|
150
|
+
// Local extension: "dark" or "light" from the appearance command.
|
|
151
|
+
let appearance: String?
|
|
152
|
+
// Local extension (DeviceDeck): the target app's XCUIApplication.state
|
|
153
|
+
// at snapshot time — "runningForeground", "runningBackground",
|
|
154
|
+
// "runningBackgroundSuspended", "notRunning" or "unknown". A snapshot
|
|
155
|
+
// is not an interaction command, so it is never auto-activated first;
|
|
156
|
+
// this is the app's true state, which no signal in the node tree
|
|
157
|
+
// reports reliably (hittable oscillates while a screen backgrounds).
|
|
158
|
+
let appState: String?
|
|
159
|
+
|
|
160
|
+
init(
|
|
161
|
+
message: String? = nil,
|
|
162
|
+
text: String? = nil,
|
|
163
|
+
found: Bool? = nil,
|
|
164
|
+
items: [String]? = nil,
|
|
165
|
+
nodes: [SnapshotNode]? = nil,
|
|
166
|
+
truncated: Bool? = nil,
|
|
167
|
+
gestureStartUptimeMs: Double? = nil,
|
|
168
|
+
gestureEndUptimeMs: Double? = nil,
|
|
169
|
+
x: Double? = nil,
|
|
170
|
+
y: Double? = nil,
|
|
171
|
+
x2: Double? = nil,
|
|
172
|
+
y2: Double? = nil,
|
|
173
|
+
referenceWidth: Double? = nil,
|
|
174
|
+
referenceHeight: Double? = nil,
|
|
175
|
+
currentUptimeMs: Double? = nil,
|
|
176
|
+
visible: Bool? = nil,
|
|
177
|
+
wasVisible: Bool? = nil,
|
|
178
|
+
dismissed: Bool? = nil,
|
|
179
|
+
orientation: String? = nil,
|
|
180
|
+
pngBase64: String? = nil,
|
|
181
|
+
diffFraction: Double? = nil,
|
|
182
|
+
identifier: String? = nil,
|
|
183
|
+
appearance: String? = nil,
|
|
184
|
+
appState: String? = nil
|
|
185
|
+
) {
|
|
186
|
+
self.message = message
|
|
187
|
+
self.text = text
|
|
188
|
+
self.found = found
|
|
189
|
+
self.items = items
|
|
190
|
+
self.nodes = nodes
|
|
191
|
+
self.truncated = truncated
|
|
192
|
+
self.gestureStartUptimeMs = gestureStartUptimeMs
|
|
193
|
+
self.gestureEndUptimeMs = gestureEndUptimeMs
|
|
194
|
+
self.x = x
|
|
195
|
+
self.y = y
|
|
196
|
+
self.x2 = x2
|
|
197
|
+
self.y2 = y2
|
|
198
|
+
self.referenceWidth = referenceWidth
|
|
199
|
+
self.referenceHeight = referenceHeight
|
|
200
|
+
self.currentUptimeMs = currentUptimeMs
|
|
201
|
+
self.visible = visible
|
|
202
|
+
self.wasVisible = wasVisible
|
|
203
|
+
self.dismissed = dismissed
|
|
204
|
+
self.orientation = orientation
|
|
205
|
+
self.pngBase64 = pngBase64
|
|
206
|
+
self.diffFraction = diffFraction
|
|
207
|
+
self.identifier = identifier
|
|
208
|
+
self.appearance = appearance
|
|
209
|
+
self.appState = appState
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
struct ErrorPayload: Codable {
|
|
214
|
+
let code: String?
|
|
215
|
+
let message: String
|
|
216
|
+
|
|
217
|
+
init(code: String? = nil, message: String) {
|
|
218
|
+
self.code = code
|
|
219
|
+
self.message = message
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
struct SnapshotRect: Codable {
|
|
224
|
+
let x: Double
|
|
225
|
+
let y: Double
|
|
226
|
+
let width: Double
|
|
227
|
+
let height: Double
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
struct SnapshotNode: Codable {
|
|
231
|
+
let index: Int
|
|
232
|
+
let type: String
|
|
233
|
+
let label: String?
|
|
234
|
+
let identifier: String?
|
|
235
|
+
let value: String?
|
|
236
|
+
// Local extension (not in upstream agent-device): placeholder text for
|
|
237
|
+
// editable fields. maestro-runner YAML flows commonly match on
|
|
238
|
+
// placeholder text (e.g. RN TextInput placeholder="Username"); without
|
|
239
|
+
// this field, that text isn't visible in the snapshot.
|
|
240
|
+
let placeholderValue: String?
|
|
241
|
+
let rect: SnapshotRect
|
|
242
|
+
let enabled: Bool
|
|
243
|
+
let focused: Bool?
|
|
244
|
+
let selected: Bool?
|
|
245
|
+
let hittable: Bool
|
|
246
|
+
let depth: Int
|
|
247
|
+
let parentIndex: Int?
|
|
248
|
+
let hiddenContentAbove: Bool?
|
|
249
|
+
let hiddenContentBelow: Bool?
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
struct SnapshotOptions {
|
|
253
|
+
let interactiveOnly: Bool
|
|
254
|
+
let compact: Bool
|
|
255
|
+
let depth: Int?
|
|
256
|
+
let scope: String?
|
|
257
|
+
let raw: Bool
|
|
258
|
+
}
|