@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,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2015-present, Facebook, Inc.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the BSD-style license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
#import "XCUIElement+FBTyping.h"
|
|
10
|
+
|
|
11
|
+
#import "FBConfiguration.h"
|
|
12
|
+
#import "FBErrorBuilder.h"
|
|
13
|
+
#import "FBXCElementSnapshotWrapper.h"
|
|
14
|
+
#import "FBXCElementSnapshotWrapper+Helpers.h"
|
|
15
|
+
#import "FBXCodeCompatibility.h"
|
|
16
|
+
#import "FBXCTestDaemonsProxy.h"
|
|
17
|
+
#import "NSString+FBVisualLength.h"
|
|
18
|
+
#import "XCUIDevice+FBHelpers.h"
|
|
19
|
+
#import "XCUIElement+FBCaching.h"
|
|
20
|
+
#import "XCUIElement+FBUtilities.h"
|
|
21
|
+
#import "XCSynthesizedEventRecord.h"
|
|
22
|
+
#import "XCPointerEventPath.h"
|
|
23
|
+
|
|
24
|
+
#define MAX_TEXT_ABBR_LEN 12
|
|
25
|
+
#define MAX_CLEAR_RETRIES 3
|
|
26
|
+
|
|
27
|
+
BOOL FBTypeText(NSString *text, NSUInteger typingSpeed, NSError **error)
|
|
28
|
+
{
|
|
29
|
+
NSString *name = text.length <= MAX_TEXT_ABBR_LEN
|
|
30
|
+
? [NSString stringWithFormat:@"Type '%@'", text]
|
|
31
|
+
: [NSString stringWithFormat:@"Type '%@…'", [text substringToIndex:MAX_TEXT_ABBR_LEN]];
|
|
32
|
+
XCSynthesizedEventRecord *eventRecord = [[XCSynthesizedEventRecord alloc] initWithName:name];
|
|
33
|
+
XCPointerEventPath *ep = [[XCPointerEventPath alloc] initForTextInput];
|
|
34
|
+
[ep typeText:text
|
|
35
|
+
atOffset:0.0
|
|
36
|
+
typingSpeed:typingSpeed
|
|
37
|
+
shouldRedact:NO];
|
|
38
|
+
[eventRecord addPointerEventPath:ep];
|
|
39
|
+
return [FBXCTestDaemonsProxy synthesizeEventWithRecord:eventRecord error:error];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@interface NSString (FBRepeat)
|
|
43
|
+
|
|
44
|
+
- (NSString *)fb_repeatTimes:(NSUInteger)times;
|
|
45
|
+
|
|
46
|
+
@end
|
|
47
|
+
|
|
48
|
+
@implementation NSString (FBRepeat)
|
|
49
|
+
|
|
50
|
+
- (NSString *)fb_repeatTimes:(NSUInteger)times {
|
|
51
|
+
return [@"" stringByPaddingToLength:times * self.length
|
|
52
|
+
withString:self
|
|
53
|
+
startingAtIndex:0];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@end
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
@interface FBXCElementSnapshotWrapper (FBKeyboardFocus)
|
|
60
|
+
|
|
61
|
+
- (BOOL)fb_hasKeyboardFocus;
|
|
62
|
+
|
|
63
|
+
@end
|
|
64
|
+
|
|
65
|
+
@implementation FBXCElementSnapshotWrapper (FBKeyboardFocus)
|
|
66
|
+
|
|
67
|
+
- (BOOL)fb_hasKeyboardFocus
|
|
68
|
+
{
|
|
69
|
+
// https://developer.apple.com/documentation/xctest/xcuielement/1500968-typetext?language=objc
|
|
70
|
+
// > The element or a descendant must have keyboard focus; otherwise an error is raised.
|
|
71
|
+
return self.hasKeyboardFocus || [self descendantsByFilteringWithBlock:^BOOL(id<FBXCElementSnapshot> snapshot) {
|
|
72
|
+
return snapshot.hasKeyboardFocus;
|
|
73
|
+
}].count > 0;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
@end
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
@implementation XCUIElement (FBTyping)
|
|
80
|
+
|
|
81
|
+
- (void)fb_prepareForTextInputWithSnapshot:(FBXCElementSnapshotWrapper *)snapshot
|
|
82
|
+
{
|
|
83
|
+
if (snapshot.fb_hasKeyboardFocus) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
[FBLogger logFmt:@"Neither the \"%@\" element itself nor its accessible descendants have the keyboard input focus", snapshot.fb_description];
|
|
88
|
+
// There is no possibility to open the keyboard by tapping a field in TvOS
|
|
89
|
+
#if !TARGET_OS_TV
|
|
90
|
+
[FBLogger logFmt:@"Trying to tap the \"%@\" element to have it focused", snapshot.fb_description];
|
|
91
|
+
[self tap];
|
|
92
|
+
// It might take some time to update the UI
|
|
93
|
+
[self fb_standardSnapshot];
|
|
94
|
+
#endif
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
- (BOOL)fb_typeText:(NSString *)text
|
|
98
|
+
shouldClear:(BOOL)shouldClear
|
|
99
|
+
error:(NSError **)error
|
|
100
|
+
{
|
|
101
|
+
return [self fb_typeText:text
|
|
102
|
+
shouldClear:shouldClear
|
|
103
|
+
frequency:FBConfiguration.maxTypingFrequency
|
|
104
|
+
error:error];
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
- (BOOL)fb_typeText:(NSString *)text
|
|
108
|
+
shouldClear:(BOOL)shouldClear
|
|
109
|
+
frequency:(NSUInteger)frequency
|
|
110
|
+
error:(NSError **)error
|
|
111
|
+
{
|
|
112
|
+
id<FBXCElementSnapshot> snapshot = [self fb_standardSnapshot];
|
|
113
|
+
FBXCElementSnapshotWrapper *wrapped = [FBXCElementSnapshotWrapper ensureWrapped:snapshot];
|
|
114
|
+
[self fb_prepareForTextInputWithSnapshot:wrapped];
|
|
115
|
+
if (shouldClear && ![self fb_clearTextWithSnapshot:wrapped shouldPrepareForInput:NO error:error]) {
|
|
116
|
+
return NO;
|
|
117
|
+
}
|
|
118
|
+
return FBTypeText(text, frequency, error);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
- (BOOL)fb_clearTextWithError:(NSError **)error
|
|
122
|
+
{
|
|
123
|
+
id<FBXCElementSnapshot> snapshot = [self fb_standardSnapshot];
|
|
124
|
+
return [self fb_clearTextWithSnapshot:[FBXCElementSnapshotWrapper ensureWrapped:snapshot]
|
|
125
|
+
shouldPrepareForInput:YES
|
|
126
|
+
error:error];
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
- (BOOL)fb_clearTextWithSnapshot:(FBXCElementSnapshotWrapper *)snapshot
|
|
130
|
+
shouldPrepareForInput:(BOOL)shouldPrepareForInput
|
|
131
|
+
error:(NSError **)error
|
|
132
|
+
{
|
|
133
|
+
id currentValue = snapshot.value;
|
|
134
|
+
if (nil != currentValue && ![currentValue isKindOfClass:NSString.class]) {
|
|
135
|
+
return [[[FBErrorBuilder builder]
|
|
136
|
+
withDescriptionFormat:@"The value of '%@' is not a string and thus cannot be edited", snapshot.fb_description]
|
|
137
|
+
buildError:error];
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (nil == currentValue || 0 == [currentValue fb_visualLength]) {
|
|
141
|
+
// Short circuit if the content is not present
|
|
142
|
+
return YES;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
static NSString *backspaceDeleteSequence;
|
|
146
|
+
static dispatch_once_t onceToken;
|
|
147
|
+
dispatch_once(&onceToken, ^{
|
|
148
|
+
backspaceDeleteSequence = [[NSString alloc] initWithData:(NSData *)[@"\\u0008\\u007F" dataUsingEncoding:NSASCIIStringEncoding]
|
|
149
|
+
encoding:NSNonLossyASCIIStringEncoding];
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
NSUInteger preClearTextLength = [currentValue fb_visualLength];
|
|
153
|
+
NSString *backspacesToType = [backspaceDeleteSequence fb_repeatTimes:preClearTextLength];
|
|
154
|
+
|
|
155
|
+
#if TARGET_OS_IOS
|
|
156
|
+
NSUInteger retry = 0;
|
|
157
|
+
NSString *placeholderValue = snapshot.placeholderValue;
|
|
158
|
+
do {
|
|
159
|
+
// the ios needs to have keyboard focus to clear text
|
|
160
|
+
if (shouldPrepareForInput && 0 == retry) {
|
|
161
|
+
[self fb_prepareForTextInputWithSnapshot:snapshot];
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (retry == 0 && FBConfiguration.useClearTextShortcut) {
|
|
165
|
+
// 1st attempt is via the IOHIDEvent as the fastest operation
|
|
166
|
+
// https://github.com/appium/appium/issues/19389
|
|
167
|
+
[[XCUIDevice sharedDevice] fb_performIOHIDEventWithPage:0x07 // kHIDPage_KeyboardOrKeypad
|
|
168
|
+
usage:0x9c // kHIDUsage_KeyboardClear
|
|
169
|
+
duration:0.01
|
|
170
|
+
error:nil];
|
|
171
|
+
} else if (retry >= MAX_CLEAR_RETRIES - 1) {
|
|
172
|
+
// Last chance retry. Tripple-tap the field to select its content
|
|
173
|
+
[self tapWithNumberOfTaps:3 numberOfTouches:1];
|
|
174
|
+
return FBTypeText(backspaceDeleteSequence, FBConfiguration.defaultTypingFrequency, error);
|
|
175
|
+
} else if (!FBTypeText(backspacesToType, FBConfiguration.defaultTypingFrequency, error)) {
|
|
176
|
+
// 2nd operation
|
|
177
|
+
return NO;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
currentValue = [self fb_standardSnapshot].value;
|
|
181
|
+
if (nil != placeholderValue && [currentValue isEqualToString:placeholderValue]) {
|
|
182
|
+
// Short circuit if only the placeholder value left
|
|
183
|
+
return YES;
|
|
184
|
+
}
|
|
185
|
+
preClearTextLength = [currentValue fb_visualLength];
|
|
186
|
+
|
|
187
|
+
retry++;
|
|
188
|
+
} while (preClearTextLength > 0);
|
|
189
|
+
return YES;
|
|
190
|
+
#else
|
|
191
|
+
// tvOS does not need a focus.
|
|
192
|
+
// kHIDPage_KeyboardOrKeypad did not work for tvOS's search field. (tvOS 17 at least)
|
|
193
|
+
// Tested XCUIElementTypeSearchField and XCUIElementTypeTextView whch were
|
|
194
|
+
// common search field and email/passowrd input in tvOS apps.
|
|
195
|
+
return FBTypeText(backspacesToType, FBConfiguration.defaultTypingFrequency, error);
|
|
196
|
+
#endif
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
@end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2015-present, Facebook, Inc.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the BSD-style license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
#import "FBXCElementSnapshotWrapper.h"
|
|
10
|
+
|
|
11
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
12
|
+
|
|
13
|
+
@interface XCUIElement (FBUID)
|
|
14
|
+
|
|
15
|
+
/*! Represents unique internal element identifier, which is the same for an element and its snapshot as UUIDv4 */
|
|
16
|
+
@property (nonatomic, nullable, readonly, copy) NSString *fb_uid;
|
|
17
|
+
|
|
18
|
+
/*! Represents unique internal element identifier, which is the same for an element and its snapshot */
|
|
19
|
+
@property (nonatomic, readonly) unsigned long long fb_accessibiltyId;
|
|
20
|
+
|
|
21
|
+
@end
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@interface FBXCElementSnapshotWrapper (FBUID)
|
|
25
|
+
|
|
26
|
+
/*! Represents unique internal element identifier, which is the same for an element and its snapshot as UUIDv4 */
|
|
27
|
+
@property (nonatomic, nullable, readonly, copy) NSString *fb_uid;
|
|
28
|
+
|
|
29
|
+
/*! Represents unique internal element identifier, which is the same for an element and its snapshot */
|
|
30
|
+
@property (nonatomic, readonly) unsigned long long fb_accessibiltyId;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
Fetches wdUID attribute value for the given snapshot instance
|
|
34
|
+
|
|
35
|
+
@param snapshot snapshot instance
|
|
36
|
+
@return UID attribute value
|
|
37
|
+
*/
|
|
38
|
+
+ (nullable NSString *)wdUIDWithSnapshot:(id<FBXCElementSnapshot>)snapshot;
|
|
39
|
+
|
|
40
|
+
@end
|
|
41
|
+
|
|
42
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2015-present, Facebook, Inc.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the BSD-style license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
#import <objc/runtime.h>
|
|
10
|
+
|
|
11
|
+
#import "XCUIElement+FBUID.h"
|
|
12
|
+
|
|
13
|
+
#import "FBElementUtils.h"
|
|
14
|
+
#import "FBLogger.h"
|
|
15
|
+
#import "XCUIApplication.h"
|
|
16
|
+
#import "XCUIElement+FBUtilities.h"
|
|
17
|
+
|
|
18
|
+
@implementation XCUIElement (FBUID)
|
|
19
|
+
|
|
20
|
+
- (unsigned long long)fb_accessibiltyId
|
|
21
|
+
{
|
|
22
|
+
return [FBElementUtils idWithAccessibilityElement:([self isKindOfClass:XCUIApplication.class]
|
|
23
|
+
? [(XCUIApplication *)self accessibilityElement]
|
|
24
|
+
: [self fb_standardSnapshot].accessibilityElement)];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
- (NSString *)fb_uid
|
|
28
|
+
{
|
|
29
|
+
return [self isKindOfClass:XCUIApplication.class]
|
|
30
|
+
? [FBElementUtils uidWithAccessibilityElement:[(XCUIApplication *)self accessibilityElement]]
|
|
31
|
+
: [FBXCElementSnapshotWrapper ensureWrapped:[self fb_standardSnapshot]].fb_uid;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@end
|
|
35
|
+
|
|
36
|
+
@implementation FBXCElementSnapshotWrapper (FBUID)
|
|
37
|
+
|
|
38
|
+
static void swizzled_validatePredicateWithExpressionsAllowed(id self, SEL _cmd, id predicate, BOOL withExpressionsAllowed)
|
|
39
|
+
{
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
#pragma clang diagnostic push
|
|
43
|
+
#pragma clang diagnostic ignored "-Wobjc-load-method"
|
|
44
|
+
#pragma clang diagnostic ignored "-Wcast-function-type-strict"
|
|
45
|
+
+ (void)load
|
|
46
|
+
{
|
|
47
|
+
Class XCElementSnapshotCls = objc_lookUpClass("XCElementSnapshot");
|
|
48
|
+
NSAssert(XCElementSnapshotCls != nil, @"Could not locate XCElementSnapshot class");
|
|
49
|
+
Method uidMethod = class_getInstanceMethod(self.class, @selector(fb_uid));
|
|
50
|
+
class_addMethod(XCElementSnapshotCls, @selector(fb_uid), method_getImplementation(uidMethod), method_getTypeEncoding(uidMethod));
|
|
51
|
+
|
|
52
|
+
// Support for Xcode 14.3 requires disabling the new predicate validator, see https://github.com/appium/appium/issues/18444
|
|
53
|
+
Class XCTElementQueryTransformerPredicateValidatorCls = objc_lookUpClass("XCTElementQueryTransformerPredicateValidator");
|
|
54
|
+
if (XCTElementQueryTransformerPredicateValidatorCls == nil) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
Method validatePredicateMethod = class_getClassMethod(XCTElementQueryTransformerPredicateValidatorCls, NSSelectorFromString(@"validatePredicate:withExpressionsAllowed:"));
|
|
58
|
+
if (validatePredicateMethod == nil) {
|
|
59
|
+
[FBLogger log:@"Could not find method +[XCTElementQueryTransformerPredicateValidator validatePredicate:withExpressionsAllowed:]"];
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
IMP swizzledImp = (IMP)swizzled_validatePredicateWithExpressionsAllowed;
|
|
63
|
+
method_setImplementation(validatePredicateMethod, swizzledImp);
|
|
64
|
+
}
|
|
65
|
+
#pragma diagnostic pop
|
|
66
|
+
|
|
67
|
+
- (unsigned long long)fb_accessibiltyId
|
|
68
|
+
{
|
|
69
|
+
return [FBElementUtils idWithAccessibilityElement:self.accessibilityElement];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
+ (nullable NSString *)wdUIDWithSnapshot:(id<FBXCElementSnapshot>)snapshot
|
|
73
|
+
{
|
|
74
|
+
return [FBElementUtils uidWithAccessibilityElement:[snapshot accessibilityElement]];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
- (NSString *)fb_uid
|
|
78
|
+
{
|
|
79
|
+
if ([self isKindOfClass:FBXCElementSnapshotWrapper.class]) {
|
|
80
|
+
return [self.class wdUIDWithSnapshot:self.snapshot];
|
|
81
|
+
}
|
|
82
|
+
return [FBElementUtils uidWithAccessibilityElement:[self accessibilityElement]];
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
@end
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2015-present, Facebook, Inc.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the BSD-style license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
#import <XCTest/XCTest.h>
|
|
10
|
+
#import <WebDriverAgentLib/FBElement.h>
|
|
11
|
+
#import <WebDriverAgentLib/FBXCElementSnapshot.h>
|
|
12
|
+
|
|
13
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
14
|
+
|
|
15
|
+
@interface XCUIElement (FBUtilities)
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
Gets the most recent snapshot of the current element. The element will be
|
|
19
|
+
automatically resolved if the snapshot is not available yet.
|
|
20
|
+
Calls to this method mutate the `lastSnapshot` instance property.
|
|
21
|
+
The snapshot is taken by the native API provided by XCTest.
|
|
22
|
+
The maximum snapshot tree depth is set by `FBConfiguration.snapshotMaxDepth`
|
|
23
|
+
|
|
24
|
+
Snapshot specifics:
|
|
25
|
+
- Most performant
|
|
26
|
+
- Memory-friedly
|
|
27
|
+
- `children` property is set to `nil` if not taken from XCUIApplication
|
|
28
|
+
- `value` property is cut off to max 512 bytes
|
|
29
|
+
- Sometimes `frame` properties may be off.
|
|
30
|
+
|
|
31
|
+
@return The recent snapshot of the element
|
|
32
|
+
@throws FBStaleElementException if the element is not present in DOM and thus no snapshot could be made
|
|
33
|
+
*/
|
|
34
|
+
- (id<FBXCElementSnapshot>)fb_standardSnapshot;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
Gets the most recent snapshot of the current element. The element will be
|
|
38
|
+
automatically resolved if the snapshot is not available yet.
|
|
39
|
+
Calls to this method mutate the `lastSnapshot` instance property.
|
|
40
|
+
The maximum snapshot tree depth is set by `FBConfiguration.snapshotMaxDepth`
|
|
41
|
+
|
|
42
|
+
Snapshot specifics:
|
|
43
|
+
- Less performant in comparison to the standard one
|
|
44
|
+
- `children` property is always defined
|
|
45
|
+
- `value` property is not cut off
|
|
46
|
+
|
|
47
|
+
@return The recent snapshot of the element
|
|
48
|
+
@throws FBStaleElementException if the element is not present in DOM and thus no snapshot could be made
|
|
49
|
+
*/
|
|
50
|
+
- (id<FBXCElementSnapshot>)fb_customSnapshot;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
Gets the most recent snapshot of the current element. The element will be
|
|
54
|
+
automatically resolved if the snapshot is not available yet.
|
|
55
|
+
Calls to this method mutate the `lastSnapshot` instance property.
|
|
56
|
+
The maximum snapshot tree depth is set by `FBConfiguration.snapshotMaxDepth`
|
|
57
|
+
|
|
58
|
+
Snapshot specifics:
|
|
59
|
+
- Less performant in comparison to the custom one. Internally, it calls same APIs
|
|
60
|
+
that fb_customSnapshot does, although this one has some additional logic to ensure
|
|
61
|
+
the snapshot is valid. It also may make retries, which slows the call down significantly.
|
|
62
|
+
- The `hittable` property calculation is aligned with the native calculation logic
|
|
63
|
+
|
|
64
|
+
@return The recent snapshot of the element
|
|
65
|
+
@throws FBStaleElementException if the element is not present in DOM and thus no snapshot could be made
|
|
66
|
+
*/
|
|
67
|
+
- (id<FBXCElementSnapshot>)fb_nativeSnapshot;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
Extracts the cached element snapshot from its query.
|
|
71
|
+
No requests to the accessiblity framework is made.
|
|
72
|
+
It is only safe to use this call right after element lookup query
|
|
73
|
+
has been executed.
|
|
74
|
+
|
|
75
|
+
@return Either the cached snapshot or nil
|
|
76
|
+
*/
|
|
77
|
+
- (nullable id<FBXCElementSnapshot>)fb_cachedSnapshot;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
Filters elements by matching them to snapshots from the corresponding array
|
|
81
|
+
|
|
82
|
+
@param snapshots Array of snapshots to be matched with
|
|
83
|
+
@param onlyChildren Whether to only look for direct element children
|
|
84
|
+
|
|
85
|
+
@return Array of filtered elements, which have matches in snapshots array
|
|
86
|
+
*/
|
|
87
|
+
- (NSArray<XCUIElement *> *)fb_filterDescendantsWithSnapshots:(NSArray<id<FBXCElementSnapshot>> *)snapshots
|
|
88
|
+
onlyChildren:(BOOL)onlyChildren;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
Waits until element snapshot is stable to avoid "Error copying attributes -25202 error".
|
|
92
|
+
This error usually happens for testmanagerd if there is an active UI animation in progress and
|
|
93
|
+
causes 15-seconds delay while getting hitpoint value of element's snapshot.
|
|
94
|
+
*/
|
|
95
|
+
- (void)fb_waitUntilStable;
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
Waits for receiver's snapshot to become stable with the given timeout
|
|
99
|
+
|
|
100
|
+
@param timeout The max time to wait util the snapshot is stable
|
|
101
|
+
*/
|
|
102
|
+
- (void)fb_waitUntilStableWithTimeout:(NSTimeInterval)timeout;
|
|
103
|
+
|
|
104
|
+
@end
|
|
105
|
+
|
|
106
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2015-present, Facebook, Inc.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the BSD-style license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
#import "XCUIElement+FBUtilities.h"
|
|
10
|
+
|
|
11
|
+
#import <objc/runtime.h>
|
|
12
|
+
|
|
13
|
+
#import "FBConfiguration.h"
|
|
14
|
+
#import "FBExceptions.h"
|
|
15
|
+
#import "FBImageUtils.h"
|
|
16
|
+
#import "FBElementUtils.h"
|
|
17
|
+
#import "FBLogger.h"
|
|
18
|
+
#import "FBMacros.h"
|
|
19
|
+
#import "FBMathUtils.h"
|
|
20
|
+
#import "FBRunLoopSpinner.h"
|
|
21
|
+
#import "FBSettings.h"
|
|
22
|
+
#import "FBScreenshot.h"
|
|
23
|
+
#import "FBXCAXClientProxy.h"
|
|
24
|
+
#import "FBXCodeCompatibility.h"
|
|
25
|
+
#import "FBXCElementSnapshot.h"
|
|
26
|
+
#import "FBXCElementSnapshotWrapper+Helpers.h"
|
|
27
|
+
#import "XCUIApplication.h"
|
|
28
|
+
#import "XCUIApplication+FBQuiescence.h"
|
|
29
|
+
#import "XCUIApplicationImpl.h"
|
|
30
|
+
#import "XCUIApplicationProcess.h"
|
|
31
|
+
#import "XCTElementSetTransformer-Protocol.h"
|
|
32
|
+
#import "XCTestPrivateSymbols.h"
|
|
33
|
+
#import "XCTRunnerDaemonSession.h"
|
|
34
|
+
#import "XCUIApplicationProcess+FBQuiescence.h"
|
|
35
|
+
#import "XCUIApplication.h"
|
|
36
|
+
#import "XCUIElement+FBCaching.h"
|
|
37
|
+
#import "XCUIElement+FBWebDriverAttributes.h"
|
|
38
|
+
#import "XCUIElementQuery.h"
|
|
39
|
+
#import "XCUIElementQuery+FBHelpers.h"
|
|
40
|
+
#import "XCUIElement+FBUID.h"
|
|
41
|
+
#import "XCUIScreen.h"
|
|
42
|
+
#import "XCUIElement+FBResolve.h"
|
|
43
|
+
|
|
44
|
+
@implementation XCUIElement (FBUtilities)
|
|
45
|
+
|
|
46
|
+
- (id<FBXCElementSnapshot>)fb_takeSnapshot:(BOOL)isCustom
|
|
47
|
+
{
|
|
48
|
+
__block id<FBXCElementSnapshot> snapshot = nil;
|
|
49
|
+
@autoreleasepool {
|
|
50
|
+
NSError *error = nil;
|
|
51
|
+
snapshot = isCustom
|
|
52
|
+
? [self.fb_query fb_uniqueSnapshotWithError:&error]
|
|
53
|
+
: (id<FBXCElementSnapshot>)[self snapshotWithError:&error];
|
|
54
|
+
if (nil == snapshot) {
|
|
55
|
+
[self fb_raiseStaleElementExceptionWithError:error];
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
self.lastSnapshot = snapshot;
|
|
59
|
+
return self.lastSnapshot;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
- (id<FBXCElementSnapshot>)fb_standardSnapshot
|
|
63
|
+
{
|
|
64
|
+
return [self fb_takeSnapshot:NO];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
- (id<FBXCElementSnapshot>)fb_customSnapshot
|
|
68
|
+
{
|
|
69
|
+
return [self fb_takeSnapshot:YES];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
- (id<FBXCElementSnapshot>)fb_nativeSnapshot
|
|
73
|
+
{
|
|
74
|
+
NSError *error = nil;
|
|
75
|
+
BOOL isSuccessful = [self resolveOrRaiseTestFailure:NO error:&error];
|
|
76
|
+
if (nil == self.lastSnapshot || !isSuccessful) {
|
|
77
|
+
[self fb_raiseStaleElementExceptionWithError:error];
|
|
78
|
+
}
|
|
79
|
+
return self.lastSnapshot;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
- (id<FBXCElementSnapshot>)fb_cachedSnapshot
|
|
83
|
+
{
|
|
84
|
+
return [self.query fb_cachedSnapshot];
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
- (NSArray<XCUIElement *> *)fb_filterDescendantsWithSnapshots:(NSArray<id<FBXCElementSnapshot>> *)snapshots
|
|
88
|
+
onlyChildren:(BOOL)onlyChildren
|
|
89
|
+
{
|
|
90
|
+
if (0 == snapshots.count) {
|
|
91
|
+
return @[];
|
|
92
|
+
}
|
|
93
|
+
NSMutableArray<NSString *> *matchedIds = [NSMutableArray new];
|
|
94
|
+
for (id<FBXCElementSnapshot> snapshot in snapshots) {
|
|
95
|
+
@autoreleasepool {
|
|
96
|
+
NSString *uid = [FBXCElementSnapshotWrapper wdUIDWithSnapshot:snapshot];
|
|
97
|
+
if (nil != uid) {
|
|
98
|
+
[matchedIds addObject:uid];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
NSMutableArray<XCUIElement *> *matchedElements = [NSMutableArray array];
|
|
103
|
+
NSString *uid = nil == self.lastSnapshot
|
|
104
|
+
? self.fb_uid
|
|
105
|
+
: [FBXCElementSnapshotWrapper wdUIDWithSnapshot:self.lastSnapshot];
|
|
106
|
+
if (nil != uid && [matchedIds containsObject:uid]) {
|
|
107
|
+
XCUIElement *stableSelf = [self fb_stableInstanceWithUid:uid];
|
|
108
|
+
if (1 == snapshots.count) {
|
|
109
|
+
return @[stableSelf];
|
|
110
|
+
}
|
|
111
|
+
[matchedElements addObject:stableSelf];
|
|
112
|
+
}
|
|
113
|
+
XCUIElementType type = XCUIElementTypeAny;
|
|
114
|
+
NSArray<NSNumber *> *uniqueTypes = [snapshots valueForKeyPath:[NSString stringWithFormat:@"@distinctUnionOfObjects.%@", FBStringify(XCUIElement, elementType)]];
|
|
115
|
+
if (uniqueTypes && [uniqueTypes count] == 1) {
|
|
116
|
+
type = [uniqueTypes.firstObject intValue];
|
|
117
|
+
}
|
|
118
|
+
XCUIElementQuery *query = onlyChildren
|
|
119
|
+
? [self.fb_query childrenMatchingType:type]
|
|
120
|
+
: [self.fb_query descendantsMatchingType:type];
|
|
121
|
+
|
|
122
|
+
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K IN %@",FBStringify(FBXCElementSnapshotWrapper, fb_uid), matchedIds];
|
|
123
|
+
[matchedElements addObjectsFromArray:[query matchingPredicate:predicate].allElementsBoundByIndex];
|
|
124
|
+
|
|
125
|
+
for (XCUIElement *el in matchedElements) {
|
|
126
|
+
el.fb_isResolvedNatively = @NO;
|
|
127
|
+
}
|
|
128
|
+
return matchedElements.copy;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
- (void)fb_waitUntilStable
|
|
132
|
+
{
|
|
133
|
+
[self fb_waitUntilStableWithTimeout:FBConfiguration.waitForIdleTimeout];
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
- (void)fb_waitUntilStableWithTimeout:(NSTimeInterval)timeout
|
|
137
|
+
{
|
|
138
|
+
if (timeout < DBL_EPSILON) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
NSTimeInterval previousTimeout = FBConfiguration.waitForIdleTimeout;
|
|
143
|
+
BOOL previousQuiescence = self.application.fb_shouldWaitForQuiescence;
|
|
144
|
+
FBConfiguration.waitForIdleTimeout = timeout;
|
|
145
|
+
if (!previousQuiescence) {
|
|
146
|
+
self.application.fb_shouldWaitForQuiescence = YES;
|
|
147
|
+
}
|
|
148
|
+
[[[self.application applicationImpl] currentProcess]
|
|
149
|
+
fb_waitForQuiescenceIncludingAnimationsIdle:YES];
|
|
150
|
+
if (previousQuiescence != self.application.fb_shouldWaitForQuiescence) {
|
|
151
|
+
self.application.fb_shouldWaitForQuiescence = previousQuiescence;
|
|
152
|
+
}
|
|
153
|
+
FBConfiguration.waitForIdleTimeout = previousTimeout;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
- (void)fb_raiseStaleElementExceptionWithError:(NSError *)error __attribute__((noreturn))
|
|
157
|
+
{
|
|
158
|
+
NSString *hintText = @"Make sure the application UI has the expected state";
|
|
159
|
+
if (nil != error && [error.localizedDescription containsString:@"Identity Binding"]) {
|
|
160
|
+
hintText = [NSString stringWithFormat:@"%@. You could also try to switch the binding strategy using the 'boundElementsByIndex' setting for the element lookup", hintText];
|
|
161
|
+
}
|
|
162
|
+
NSString *reason = [NSString stringWithFormat:@"The previously found element \"%@\" is not present in the current view anymore. %@",
|
|
163
|
+
self.description, hintText];
|
|
164
|
+
if (nil != error) {
|
|
165
|
+
reason = [NSString stringWithFormat:@"%@. Original error: %@", reason, error.localizedDescription];
|
|
166
|
+
}
|
|
167
|
+
@throw [NSException exceptionWithName:FBStaleElementException reason:reason userInfo:@{}];
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
@end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2015-present, Facebook, Inc.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the BSD-style license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
#import "FBXCElementSnapshotWrapper.h"
|
|
10
|
+
|
|
11
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
12
|
+
|
|
13
|
+
@interface XCUIElement (FBVisibleFrame)
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
Returns the snapshot visibleFrame with a fallback to direct attribute retrieval from FBXCAXClient in case of a snapshot fault (nil visibleFrame)
|
|
17
|
+
|
|
18
|
+
@return the snapshot visibleFrame
|
|
19
|
+
*/
|
|
20
|
+
- (CGRect)fb_visibleFrame;
|
|
21
|
+
|
|
22
|
+
@end
|
|
23
|
+
|
|
24
|
+
@interface FBXCElementSnapshotWrapper (FBVisibleFrame)
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
Returns the snapshot visibleFrame with a fallback to direct attribute retrieval from FBXCAXClient in case of a snapshot fault (nil visibleFrame)
|
|
28
|
+
|
|
29
|
+
@return the snapshot visibleFrame
|
|
30
|
+
*/
|
|
31
|
+
- (CGRect)fb_visibleFrame;
|
|
32
|
+
|
|
33
|
+
@end
|
|
34
|
+
|
|
35
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2015-present, Facebook, Inc.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the BSD-style license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
#import "XCUIElement+FBVisibleFrame.h"
|
|
10
|
+
#import "FBElementUtils.h"
|
|
11
|
+
#import "FBXCodeCompatibility.h"
|
|
12
|
+
#import "FBXCElementSnapshotWrapper+Helpers.h"
|
|
13
|
+
#import "XCUIElement+FBUtilities.h"
|
|
14
|
+
#import "XCTestPrivateSymbols.h"
|
|
15
|
+
|
|
16
|
+
@implementation XCUIElement (FBVisibleFrame)
|
|
17
|
+
|
|
18
|
+
- (CGRect)fb_visibleFrame
|
|
19
|
+
{
|
|
20
|
+
id<FBXCElementSnapshot> snapshot = [self fb_standardSnapshot];
|
|
21
|
+
return [FBXCElementSnapshotWrapper ensureWrapped:snapshot].fb_visibleFrame;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@end
|
|
25
|
+
|
|
26
|
+
@implementation FBXCElementSnapshotWrapper (FBVisibleFrame)
|
|
27
|
+
|
|
28
|
+
- (CGRect)fb_visibleFrame
|
|
29
|
+
{
|
|
30
|
+
CGRect thisVisibleFrame = [self visibleFrame];
|
|
31
|
+
if (!CGRectIsEmpty(thisVisibleFrame)) {
|
|
32
|
+
return thisVisibleFrame;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
NSDictionary *visibleFrameDict = [self fb_attributeValue:FB_XCAXAVisibleFrameAttributeName
|
|
36
|
+
error:nil];
|
|
37
|
+
if (nil == visibleFrameDict) {
|
|
38
|
+
return thisVisibleFrame;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
id x = [visibleFrameDict objectForKey:@"X"];
|
|
42
|
+
id y = [visibleFrameDict objectForKey:@"Y"];
|
|
43
|
+
id height = [visibleFrameDict objectForKey:@"Height"];
|
|
44
|
+
id width = [visibleFrameDict objectForKey:@"Width"];
|
|
45
|
+
if (x != nil && y != nil && height != nil && width != nil) {
|
|
46
|
+
return CGRectMake([x doubleValue], [y doubleValue], [width doubleValue], [height doubleValue]);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return thisVisibleFrame;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
@end
|