@devicelab/maestro-runner-darwin-arm64 1.1.27 → 1.1.28
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/README.md +31 -19
- package/bin/maestro-runner +0 -0
- package/drivers/LICENSE-BINARIES.md +38 -0
- package/drivers/android/devicelab-android-driver.apk +0 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunner.xcodeproj/project.pbxproj +38 -14
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/Bridging-Header.h +3 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerAXSnapshotBridge.h +51 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerAXSnapshotBridge.m +439 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerDefaults.h +12 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerDefaults.m +59 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+AXSnapshotFallback.swift +128 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+CommandExecution.swift +68 -14
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Interaction.swift +256 -48
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Lifecycle.swift +102 -6
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Models.swift +74 -1
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Settle.swift +89 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Snapshot.swift +279 -82
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+SystemModal.swift +1 -1
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Transport.swift +7 -2
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests.swift +44 -10
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerXCTestTimeouts.h +87 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerXCTestTimeouts.m +207 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/SnapshotParams.m +22 -6
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/SyntheticTyping.h +23 -0
- package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/SyntheticTyping.m +77 -30
- package/drivers/ios/DevicelabIOSRunner/PROTOCOL.md +26 -3
- package/drivers/ios/WebDriverAgent/.editorconfig +11 -0
- package/drivers/ios/WebDriverAgent/.github/dependabot.yml +1 -1
- package/drivers/ios/WebDriverAgent/.github/workflows/functional-test.yml +65 -24
- package/drivers/ios/WebDriverAgent/.github/workflows/publish.js.yml +15 -8
- package/drivers/ios/WebDriverAgent/.github/workflows/unit-test.yml +4 -2
- package/drivers/ios/WebDriverAgent/.github/workflows/wda-package.yml +9 -2
- package/drivers/ios/WebDriverAgent/.github/workflows/wda-tests.yml +54 -29
- package/drivers/ios/WebDriverAgent/CHANGELOG.md +546 -0
- package/drivers/ios/WebDriverAgent/Fastlane/Fastfile +8 -1
- package/drivers/ios/WebDriverAgent/Gemfile +1 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/CDStructures.h +5 -26
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/NSFastEnumeration-Protocol.h +23 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCAXClient_iOS.h +80 -44
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCApplicationQuery.h +18 -11
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCDebugLogDelegate-Protocol.h +17 -5
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCPointerEvent.h +52 -19
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCPointerEventPath.h +55 -33
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSynthesizedEventRecord.h +44 -21
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTAggregateSuiteRunStatistics.h +38 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTAttachmentManager.h +33 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTCapabilities.h +35 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTCapabilitiesProviding-Protocol.h +23 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTElementSetTransformer-Protocol.h +30 -13
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTElementSnapshotAttributeDataSource-Protocol.h +33 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTElementSnapshotProvider-Protocol.h +23 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTExpectedFailureContextManager.h +35 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTFuture.h +45 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTHarnessEventReporting-Protocol.h +29 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTIssue.h +49 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTIssueHandling-Protocol.h +26 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMacCatalystStatusProviding-Protocol.h +23 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMeasureOptions.h +48 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMemoryChecker.h +50 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMemoryCheckerDelegate-Protocol.h +26 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingChannel_IDEToRunner-Protocol.h +27 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingChannel_RunnerToDaemon-Protocol.h +39 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingChannel_RunnerToIDE-Protocol.h +32 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_ActivityReporting-Protocol.h +24 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_AttachmentFutureResultStatusUpdating-Protocol.h +23 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_BundleRequesting-Protocol.h +24 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_CapabilityExchange-Protocol.h +56 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_DebugLogging-Protocol.h +23 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_EventSynthesis-Protocol.h +34 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_ForcePressureSupportQuerying-Protocol.h +25 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_HIDEventRecording-Protocol.h +25 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_MemoryTesting-Protocol.h +23 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_PerformanceMeasurementReporting-Protocol.h +23 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_ProcessMonitoring-Protocol.h +25 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_ProtectedResourceAuthorization-Protocol.h +22 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_ScreenRecording-Protocol.h +24 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_SelfDiagnosisIssueReporting-Protocol.h +23 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_SignpostRequesting-Protocol.h +24 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_SiriAutomation-Protocol.h +27 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_SystemConfiguration-Protocol.h +27 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_TelemetrySending-Protocol.h +23 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_TestExecution-Protocol.h +28 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_TestReporting-Protocol.h +40 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_UIAutomation-Protocol.h +29 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_UIAutomationRunnerEventReporting-Protocol.h +27 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_UserPresence-Protocol.h +24 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMetricDiagnosticHelper.h +49 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTNSPredicateExpectationObject-Protocol.h +15 -7
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTPromise.h +30 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRemoteSignpostListenerProxy-Protocol.h +29 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRepetitionPolicy.h +43 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTReportingSession.h +50 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTReportingSessionConfiguration-Protocol.h +27 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTReportingSessionIssueReporter-Protocol.h +23 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTReportingSessionTestContainer-Protocol.h +26 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTReportingSessionTestReporter.h +51 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRunnerAutomationSession-Protocol.h +38 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRunnerDaemonSession.h +76 -78
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRunnerDaemonSessionUIAutomationDelegate-Protocol.h +33 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRunnerIDESession.h +87 -53
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRunnerIDESessionDelegate-Protocol.h +24 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRuntimeDiagnosticsPolicy.h +36 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRuntimeIssueDetectionPolicy.h +39 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTScreenCapturePolicy.h +35 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTSignpostListener-Protocol.h +25 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTSkippedTestContext.h +37 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTSourceCodeContext.h +39 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTSourceCodeLocation.h +31 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTTagSelection.h +41 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTTestIdentifier.h +81 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTTestIdentifierSet.h +54 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTTestSelection.h +35 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiter.h +45 -46
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiterManagement-Protocol.h +17 -6
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiterManager-Protocol.h +25 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiterWait.h +40 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTest.h +47 -28
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestCase.h +165 -87
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestCaseDiscoveryUIAutomationDelegate-Protocol.h +20 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestCaseRun.h +19 -9
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestCaseUIAutomationDelegate-Protocol.h +25 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestCastMethodNamesUIAutomationDelegate-Protocol.h +24 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestConfiguration.h +83 -55
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestDriver.h +54 -28
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestExpectation.h +37 -26
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestExpectationDelegate-Protocol.h +15 -6
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestObservationCenter.h +49 -25
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestRun.h +33 -28
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIAXNotificationHandling-Protocol.h +25 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIAccessibilityInterface-Protocol.h +58 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIAlertMonitoring-Protocol.h +27 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplication.h +87 -49
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationAutomationSessionProviding-Protocol.h +26 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationImpl.h +78 -26
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationImplReporter-Protocol.h +26 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationManaging-Protocol.h +23 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationMonitor-Protocol.h +43 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationOpenRequest.h +34 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationPlatformServicesProviderDelegate-Protocol.h +25 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationProcess.h +89 -69
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationProcessDelegate-Protocol.h +25 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationProcessManaging-Protocol.h +26 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationProcessTracker-Protocol.h +28 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationRegistry.h +32 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIButtonConsole.h +26 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUICoordinate.h +37 -32
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIDevice.h +121 -17
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIDeviceAutomationModeInterface-Protocol.h +25 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIDeviceDelayedAttachmentTransferSupportInterface-Protocol.h +22 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIDeviceEventAndStateInterface-Protocol.h +40 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElement.h +192 -59
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElementAttributesPrivate-Protocol.h +26 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElementEventTarget-Protocol.h +38 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElementQuery.h +154 -58
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElementTypeQueryProvider_Private-Protocol.h +24 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIEventRecording-Protocol.h +37 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIHitPointResult.h +16 -11
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIInterruptionMonitoring-Protocol.h +27 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIIssueDiagnosticsProviding-Protocol.h +23 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIKnobControl.h +26 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUILocation.h +24 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIPlatformApplicationServicesProviding-Protocol.h +33 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRemoteAccessibilityInterface-Protocol.h +45 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRemoteDeviceRunner-Protocol.h +24 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRemoteSiriInterface-Protocol.h +30 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIResetAuthorizationStatusOfProtectedResourcesInterface-Protocol.h +22 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIScreen.h +45 -19
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIScreenDataSource-Protocol.h +28 -12
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUISiriService.h +39 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUISystem.h +26 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIXcodeApplicationManaging-Protocol.h +27 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_TtC10XCTestCore19XCTReportingContext.h +26 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTMessaging_VoidProtocol-Protocol.h +20 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestObservationInternal-Protocol.h +26 -0
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestObservationPrivate-Protocol.h +27 -0
- package/drivers/ios/WebDriverAgent/README.md +0 -10
- package/drivers/ios/WebDriverAgent/Scripts/build-webdriveragent.mjs +30 -22
- package/drivers/ios/WebDriverAgent/Scripts/build.sh +14 -1
- package/drivers/ios/WebDriverAgent/Scripts/embed-runner-icon.sh +118 -0
- package/drivers/ios/WebDriverAgent/Scripts/fetch-prebuilt-wda.mjs +34 -22
- package/drivers/ios/WebDriverAgent/Scripts/update-wda-version.mjs +12 -10
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/project.pbxproj +2583 -659
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationApp.xcscheme +1 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationApp_tvOS.xcscheme +78 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationApp_watchOS.xcscheme +78 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationTests_1.xcscheme +8 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationTests_2.xcscheme +8 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationTests_3.xcscheme +8 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationTests_tvOS.xcscheme +93 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationTests_watchOS.xcscheme +93 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentLib.xcscheme +1 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentLib_tvOS.xcscheme +1 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentLib_watchOS.xcscheme +85 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentRunner-nodebug.xcscheme +1 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentRunner.xcscheme +20 -2
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentRunner_tvOS.xcscheme +1 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentRunner_watchOS.xcscheme +128 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/NSDictionary+FBUtf8SafeDictionary.m +45 -27
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCAXClient_iOS+FBSnapshotReqParams.h +1 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCAXClient_iOS+FBSnapshotReqParams.m +91 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBAlert.h +27 -3
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBAlert.m +125 -55
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBHelpers.h +15 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBHelpers.m +32 -3
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBTouchAction.m +2 -3
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplicationProcess+FBQuiescence.m +9 -16
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBHelpers.h +47 -4
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBHelpers.m +173 -83
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBRotation.h +9 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBRotation.m +45 -5
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBVoiceOver.h +66 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBVoiceOver.m +218 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBClassChain.m +144 -3
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBFind.m +1 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBForceTouch.m +5 -2
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBPickerWheel.m +4 -3
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBScrolling.m +113 -50
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBTVFocuse.m +5 -5
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBTyping.h +33 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBTyping.m +39 -5
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBUtilities.m +9 -7
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBVisibleFrame.m +12 -3
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBWebDriverAttributes.m +6 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElementQuery+FBHelpers.m +1 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBAlertViewCommands.m +10 -36
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBCustomCommands.m +155 -8
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBElementCommands.m +45 -19
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBFindElementCommands.m +7 -7
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBOrientationCommands.m +9 -2
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBScreenshotCommands.m +3 -3
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBSessionCommands.m +220 -296
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/FBAlert.h +43 -30
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/FBAlert.m +273 -93
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Info.plist +2 -2
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBElement.h +3 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBExceptionHandler.m +8 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBExceptions.h +9 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBExceptions.m +3 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBHTTPServer.h +97 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBHTTPServer.m +932 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBResponseJSONPayload.m +2 -3
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBResponsePayload.m +1 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBRoute.h +9 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBRoute.m +9 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBScreenRecordingContainer.h +9 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBScreenRecordingContainer.m +28 -12
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBScreenRecordingRequest.m +1 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBSession.h +16 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBSession.m +252 -42
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBTCPSocket.h +57 -9
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBTCPSocket.m +183 -33
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBWebServer.h +18 -2
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBWebServer.m +92 -37
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBXCElementSnapshot.h +1 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/RouteRequest.h +28 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/RouteRequest.m +25 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/RouteResponse.h +30 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/RouteResponse.m +54 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBActiveAppDetectionPoint.m +10 -2
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBAlertsMonitor.m +21 -5
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBBaseActionsSynthesizer.h +2 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBBaseActionsSynthesizer.m +3 -3
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBCapabilities.h +1 -3
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBCapabilities.m +0 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBClassChainQueryParser.m +1 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBConfiguration.h +106 -136
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBConfiguration.m +150 -386
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBFailureProofTestCase.m +6 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBImageProcessor.m +54 -29
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBLogger.m +2 -2
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMacros.h +14 -5
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMathUtils.h +54 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMathUtils.m +48 -2
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMjpegServer.h +12 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMjpegServer.m +119 -24
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBPasteboard.h +1 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBPasteboard.m +9 -5
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBScreen.h +10 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBScreen.m +32 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBScreenshot.m +3 -3
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBSettings.h +3 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBSettings.m +3 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBSettingsHandler.h +35 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBSettingsHandler.m +374 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBTVNavigationTracker-Private.h +10 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBTVNavigationTracker.h +29 -4
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBTVNavigationTracker.m +62 -27
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBW3CActionsSynthesizer.h +1 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBW3CActionsSynthesizer.m +28 -10
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCAXClientProxy.h +124 -2
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCAXClientProxy.m +142 -21
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCTestDaemonsProxy.h +2 -2
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCTestDaemonsProxy.m +22 -19
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCodeCompatibility.h +1 -8
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCodeCompatibility.m +57 -27
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXPath-Private.h +5 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXPath.m +69 -14
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXPathExtensions.h +40 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXPathExtensions.m +418 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/XCTestPrivateSymbols.h +2 -2
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/XCTestPrivateSymbols.m +54 -34
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/WebDriverAgentLib.h +1 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentRunner/Assets.xcassets/AppIcon.appiconset/Contents.json +14 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentRunner/Assets.xcassets/AppIcon.appiconset/icon-1024.png +0 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentRunner/Assets.xcassets/Contents.json +6 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentRunner/UITestingUITests.m +7 -7
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/COORDINATE_PROBE.md +50 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBCoordinateProbeViewController.h +4 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBCoordinateProbeViewController.m +176 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBScrollViewController.m +15 -2
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/TouchViewController.h +1 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/TouchableView.h +2 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/TouchableView.m +14 -3
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/ViewController.m +44 -3
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Info.plist +2 -2
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Resources/Base.lproj/Main.storyboard +52 -22
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp_tvOS/AppDelegate.h +13 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp_tvOS/AppDelegate.m +26 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp_tvOS/Info.plist +41 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp_tvOS/SceneDelegate.h +15 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp_tvOS/SceneDelegate.m +22 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp_tvOS/ViewController.h +13 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp_tvOS/ViewController.m +79 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp_tvOS/main.m +17 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp_watchOS/ContentView.swift +31 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp_watchOS/WatchSpikeApp.swift +18 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBAlertTests.m +37 -56
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBAutoAlertsHandlerTests.m +10 -4
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBConfigurationTests.m +41 -8
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBElementAttributeTests.m +10 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBElementSwipingTests.m +4 -4
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBElementVisibilityTests.m +14 -19
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBForceTouchTests.m +6 -3
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBIntegrationAppTests.m +87 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBIntegrationTestCase.h +30 -5
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBIntegrationTestCase.m +51 -15
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBPasteboardTests.m +3 -2
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBSafariAlertTests.m +6 -2
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBScreenTests.m +28 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBScrollingTests.m +3 -6
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBTapTest.m +83 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBVideoRecordingTests.m +1 -2
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBVoiceOverTests.m +103 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBW3CMultiTouchActionsIntegrationTests.m +35 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBW3CTouchActionsIntegrationTests.m +96 -13
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBW3CTypeActionsTests.m +3 -3
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBXPathIntegrationTests.m +108 -5
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCElementSnapshotHelperTests.m +1 -7
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIApplicationHelperTests.m +1 -1
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIDeviceHelperTests.m +21 -5
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIDeviceRotationTests.m +21 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIElementAttributesTests.m +5 -5
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIElementFBFindTests.m +98 -10
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_tvOS/FBTVFocusIntegrationTests.m +84 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_tvOS/Info.plist +24 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/IntegrationTests_watchOS-Bridging-Header.h +23 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDAAlertIntegrationTests.swift +25 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDAAppLifecycleIntegrationTests.swift +37 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDAClickIntegrationTests.swift +25 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDADeviceIntegrationTests.swift +92 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDAElementAttributeIntegrationTests.swift +39 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDAFindIntegrationTests.swift +101 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDAMjpegStreamingIntegrationTests.swift +81 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDAScreenshotAndSourceIntegrationTests.swift +54 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDATypingIntegrationTests.swift +73 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDAWatchInProcessTestCase.swift +51 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/Doubles/XCUIElementDouble.h +4 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/Doubles/XCUIElementDouble.m +10 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBConfigurationTests.m +18 -6
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBCustomCommandsTests.m +83 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBHTTPServerSessionTests.m +133 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBHTTPServerTests.m +264 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBMathUtilsTests.m +38 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBResponseJSONPayloadTests.m +76 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBSessionTests.m +3 -3
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBTouchableViewTests.m +121 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBXCAXClientProxyTests.m +90 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBXPathTests.m +127 -2
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/NSDictionaryFBUtf8SafeTests.m +43 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/Doubles/FBXCAccessibilityElementDouble.h +27 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/Doubles/FBXCAccessibilityElementDouble.m +23 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/Doubles/FBXCElementSnapshotDouble.h +43 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/Doubles/FBXCElementSnapshotDouble.m +24 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/Doubles/XCUIElementDouble.h +1 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/Doubles/XCUIElementDouble.m +1 -0
- package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/FBTVNavigationTrackerTests.m +48 -0
- package/drivers/ios/WebDriverAgent/lib/check-dependencies.ts +42 -21
- package/drivers/ios/WebDriverAgent/lib/constants.ts +12 -2
- package/drivers/ios/WebDriverAgent/lib/index.ts +7 -0
- package/drivers/ios/WebDriverAgent/lib/logger.ts +1 -1
- package/drivers/ios/WebDriverAgent/lib/no-session-proxy.ts +8 -14
- package/drivers/ios/WebDriverAgent/lib/types.ts +108 -8
- package/drivers/ios/WebDriverAgent/lib/utils/index.ts +15 -0
- package/drivers/ios/WebDriverAgent/lib/utils/module.ts +24 -0
- package/drivers/ios/WebDriverAgent/lib/utils/platform.ts +34 -0
- package/drivers/ios/WebDriverAgent/lib/utils/processes.ts +166 -0
- package/drivers/ios/WebDriverAgent/lib/utils/security.ts +13 -0
- package/drivers/ios/WebDriverAgent/lib/utils/xctestrun.ts +173 -0
- package/drivers/ios/WebDriverAgent/lib/wda-strategies.ts +333 -0
- package/drivers/ios/WebDriverAgent/lib/webdriveragent.ts +336 -428
- package/drivers/ios/WebDriverAgent/lib/xcodebuild.ts +232 -127
- package/drivers/ios/WebDriverAgent/oxfmt.config.mjs +6 -0
- package/drivers/ios/WebDriverAgent/oxlint.config.mjs +6 -0
- package/drivers/ios/WebDriverAgent/package.json +70 -79
- package/drivers/ios/WebDriverAgent/release.config.mjs +14 -0
- package/drivers/ios/WebDriverAgent/test/functional/desired.ts +10 -6
- package/drivers/ios/WebDriverAgent/test/functional/helpers/simulator.ts +39 -28
- package/drivers/ios/WebDriverAgent/test/functional/webdriveragent-e2e.spec.ts +100 -0
- package/drivers/ios/WebDriverAgent/test/unit/processes.spec.ts +99 -0
- package/drivers/ios/WebDriverAgent/test/unit/utils.spec.ts +235 -0
- package/drivers/ios/WebDriverAgent/test/unit/wda-cleanup.spec.ts +136 -0
- package/drivers/ios/WebDriverAgent/test/unit/webdriveragent.spec.ts +562 -0
- package/drivers/ios/WebDriverAgent/tsconfig.json +6 -8
- package/drivers/ios/devicelab-ios-agent/README.md +51 -0
- package/drivers/ios/devicelab-ios-agent/device/DevicelabIOSAgent.app/DevicelabIOSAgent +0 -0
- package/drivers/ios/devicelab-ios-agent/device/DevicelabIOSAgent.app/Info.plist +0 -0
- package/drivers/ios/devicelab-ios-agent/device/DevicelabIOSAgent.app/PkgInfo +1 -0
- package/drivers/ios/devicelab-ios-agent/device/DevicelabIOSAgentUITests-Runner.app/DevicelabIOSAgentUITests-Runner +0 -0
- package/drivers/ios/devicelab-ios-agent/device/DevicelabIOSAgentUITests-Runner.app/Info.plist +302 -0
- package/drivers/ios/devicelab-ios-agent/device/DevicelabIOSAgentUITests-Runner.app/PkgInfo +1 -0
- package/drivers/ios/devicelab-ios-agent/device/DevicelabIOSAgentUITests-Runner.app/PlugIns/DevicelabIOSAgentUITests.xctest/DevicelabIOSAgentUITests +0 -0
- package/drivers/ios/devicelab-ios-agent/device/DevicelabIOSAgentUITests-Runner.app/PlugIns/DevicelabIOSAgentUITests.xctest/Info.plist +0 -0
- package/drivers/ios/devicelab-ios-agent/device/agent.xctestrun +120 -0
- package/drivers/ios/devicelab-ios-agent/device/manifest.json +18 -0
- package/drivers/ios/devicelab-ios-agent/signing-stub/SigningStub/StubApp.swift +10 -0
- package/drivers/ios/devicelab-ios-agent/signing-stub/SigningStub.xcodeproj/project.pbxproj +394 -0
- package/drivers/ios/devicelab-ios-agent/signing-stub/SigningStub.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/drivers/ios/devicelab-ios-agent/signing-stub/SigningStub.xcodeproj/xcshareddata/xcschemes/SigningStubUITests.xcscheme +100 -0
- package/drivers/ios/devicelab-ios-agent/signing-stub/SigningStubUITests/StubUITests.swift +8 -0
- package/drivers/ios/devicelab-ios-agent/signing-stub/project.yml +64 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgent.app/DevicelabIOSAgent +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgent.app/Info.plist +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgent.app/PkgInfo +1 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/DevicelabIOSAgentUITests-Runner +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Info.plist +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Modules/Testing.swiftcrossimport/CoreGraphics.swiftoverlay +3 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Modules/Testing.swiftcrossimport/CoreImage.swiftoverlay +3 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Modules/Testing.swiftcrossimport/CoreTransferable.swiftoverlay +3 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Modules/Testing.swiftcrossimport/Foundation.swiftoverlay +3 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Modules/Testing.swiftcrossimport/UIKit.swiftoverlay +3 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Modules/Testing.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Modules/Testing.swiftmodule/arm64-apple-ios-simulator.swiftinterface +1431 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Modules/Testing.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Modules/Testing.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +1431 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Testing +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/_CodeSignature/CodeResources +212 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/version.plist +18 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTAutomationSupport.framework/Info.plist +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTAutomationSupport.framework/XCTAutomationSupport +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTAutomationSupport.framework/_CodeSignature/CodeResources +113 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTAutomationSupport.framework/version.plist +18 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCAbstractTest.h +140 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTActivity.h +33 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTAttachment+XCUIScreenshot.h +32 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTAttachment.h +219 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTAttachmentLifetime.h +28 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTContext.h +65 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTDarwinNotificationExpectation.h +60 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTExpectedFailure.h +134 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTIssue.h +143 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTKVOExpectation.h +110 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTMeasureOptions.h +57 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTMetric+UIAutomation.h +77 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTMetric.h +390 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTNSNotificationExpectation.h +92 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTNSPredicateExpectation.h +74 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTSourceCodeContext.h +109 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTWaiter.h +304 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTest.apinotes +182 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTest.h +41 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestAssertions.h +277 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestAssertionsImpl.h +503 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestCase+AsynchronousTesting.h +276 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestCase+XCUIApplicationLaunchTesting.h +36 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestCase+XCUIInterruptionMonitoring.h +95 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestCase.h +443 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestCaseRun.h +50 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestCore.h +42 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestDefines.h +135 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestErrors.h +33 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestExpectation.h +73 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestLog.h +56 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestObservation.h +195 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestObservationCenter.h +60 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestObserver.h +61 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestProbe.h +55 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestRun.h +223 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestSkipping.h +41 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestSkippingImpl.h +46 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestSuite.h +92 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestSuiteRun.h +50 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIAccessibilityAuditIssue.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIAccessibilityAuditTypes.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIApplication.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIAutomation.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIAutomationDefines.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUICoordinate.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIDevice.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIDeviceButton.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIDeviceHandGesture.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIElement.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIElementAttributes.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIElementQuery.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIElementTypeQueryProvider.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIElementTypes.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIKeyboardKeys.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUILocation.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIProtectedResource.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIRemote.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIScreen.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIScreenshot.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIScreenshotProviding.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUISiriService.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUISystem.h +9 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Info.plist +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Modules/module.modulemap +30 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/XCTest +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/_CodeSignature/CodeResources +817 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/version.plist +18 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTestCore.framework/Info.plist +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTestCore.framework/XCTestCore +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTestCore.framework/_CodeSignature/CodeResources +113 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTestCore.framework/version.plist +18 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTestSupport.framework/Info.plist +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTestSupport.framework/XCTestSupport +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTestSupport.framework/_CodeSignature/CodeResources +113 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTestSupport.framework/version.plist +18 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIAccessibilityAuditIssue.h +33 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIAccessibilityAuditTypes.h +36 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIApplication.h +154 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIAutomation.apinotes +88 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIAutomation.h +30 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIAutomationDefines.h +62 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUICoordinate.h +99 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIDevice.h +133 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIDeviceButton.h +40 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIDeviceHandGesture.h +24 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIElement.h +366 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIElementAttributes.h +106 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIElementQuery.h +81 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIElementTypeQueryProvider.h +109 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIElementTypes.h +95 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIKeyboardKeys.h +68 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUILocation.h +35 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIProtectedResource.h +52 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIRemote.h +77 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIScreen.h +36 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIScreenshot.h +42 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIScreenshotProviding.h +26 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUISiriService.h +45 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUISystem.h +26 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIVoiceOverOutput.h +26 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIVoiceOverService.h +72 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIVoiceOverServiceError.h +25 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Info.plist +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Modules/XCUIAutomation.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Modules/XCUIAutomation.swiftmodule/arm64-apple-ios-simulator.swiftinterface +30 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Modules/XCUIAutomation.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Modules/XCUIAutomation.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +30 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Modules/module.modulemap +4 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/XCUIAutomation +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/_CodeSignature/CodeResources +465 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/version.plist +18 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUnit.framework/Info.plist +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUnit.framework/XCUnit +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUnit.framework/_CodeSignature/CodeResources +113 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUnit.framework/version.plist +18 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/_Testing_Foundation.framework/Info.plist +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/_Testing_Foundation.framework/Modules/_Testing_Foundation.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/_Testing_Foundation.framework/Modules/_Testing_Foundation.swiftmodule/arm64-apple-ios-simulator.swiftinterface +41 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/_Testing_Foundation.framework/Modules/_Testing_Foundation.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/_Testing_Foundation.framework/Modules/_Testing_Foundation.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +41 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/_Testing_Foundation.framework/_CodeSignature/CodeResources +157 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/_Testing_Foundation.framework/_Testing_Foundation +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/_Testing_Foundation.framework/version.plist +18 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/libXCTestBundleInject.dylib +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/libXCTestSwiftSupport.dylib +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/lib_TestingInterop.dylib +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Info.plist +302 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/PkgInfo +1 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/PlugIns/DevicelabIOSAgentUITests.xctest/DevicelabIOSAgentUITests +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/PlugIns/DevicelabIOSAgentUITests.xctest/Info.plist +0 -0
- package/drivers/ios/devicelab-ios-agent/simulator/agent.xctestrun +140 -0
- package/drivers/ios/devicelab-ios-agent/simulator/manifest.json +162 -0
- package/package.json +1 -1
- package/drivers/ios/WebDriverAgent/.mocharc.js +0 -4
- package/drivers/ios/WebDriverAgent/.releaserc +0 -45
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/NSString-XCTAdditions.h +0 -11
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/NSValue-XCTestAdditions.h +0 -11
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UIGestureRecognizer-RecordingAdditions.h +0 -11
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UILongPressGestureRecognizer-RecordingAdditions.h +0 -11
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UIPanGestureRecognizer-RecordingAdditions.h +0 -11
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UIPinchGestureRecognizer-RecordingAdditions.h +0 -11
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UISwipeGestureRecognizer-RecordingAdditions.h +0 -11
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UITapGestureRecognizer-RecordingAdditions.h +0 -11
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCActivityRecord.h +0 -39
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCApplicationMonitor.h +0 -44
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCApplicationMonitor_iOS.h +0 -18
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCDeviceEvent.h +0 -27
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCEventGenerator.h +0 -73
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCKeyMappingPath.h +0 -36
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCKeyboardInputSolver.h +0 -41
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCKeyboardKeyMap.h +0 -101
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCKeyboardLayout.h +0 -35
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSourceCodeRecording.h +0 -42
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSourceCodeTreeNode.h +0 -84
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSourceCodeTreeNodeEnumerator.h +0 -18
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSymbolicationRecord.h +0 -29
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSymbolicatorHolder.h +0 -14
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTAXClient-Protocol.h +0 -14
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTAsyncActivity-Protocol.h +0 -16
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTAsyncActivity.h +0 -23
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTAutomationTarget-Protocol.h +0 -12
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTDarwinNotificationExpectation.h +0 -23
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTKVOExpectation.h +0 -28
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMetric.h +0 -29
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTNSNotificationExpectation.h +0 -27
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTNSPredicateExpectation.h +0 -24
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRunnerAutomationSession.h +0 -21
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTTestRunSession.h +0 -25
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTTestRunSessionDelegate-Protocol.h +0 -17
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTUIApplicationMonitor-Protocol.h +0 -17
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiterDelegate-Protocol.h +0 -16
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiterDelegatePrivate-Protocol.h +0 -12
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiterManager.h +0 -28
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestCaseSuite.h +0 -19
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestContext.h +0 -26
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestContextScope.h +0 -19
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestDriverInterface-Protocol.h +0 -14
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestExpectationWaiter.h +0 -17
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestLog.h +0 -32
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestManager_IDEInterface-Protocol.h +0 -36
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestManager_ManagerInterface-Protocol.h +0 -54
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestManager_TestsInterface-Protocol.h +0 -12
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestMisuseObserver.h +0 -37
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestObservation-Protocol.h +0 -20
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestObserver.h +0 -20
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestProbe.h +0 -13
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestSuite.h +0 -48
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestSuiteRun.h +0 -28
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestWaiter.h +0 -14
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElementAsynchronousHandlerWrapper.h +0 -19
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElementHitPointCoordinate.h +0 -24
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRecorderNodeFinder.h +0 -65
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRecorderNodeFinderMatch.h +0 -25
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRecorderTimingMessage.h +0 -20
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRecorderUtilities.h +0 -45
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCInternalTestRun.h +0 -43
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCKVOExpectationImplementation.h +0 -32
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTDarwinNotificationExpectationImplementation.h +0 -27
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTNSNotificationExpectationImplementation.h +0 -30
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTNSPredicateExpectationImplementation.h +0 -29
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTWaiterImpl.h +0 -41
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestCaseImplementation.h +0 -70
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestCaseInterruptionException.h +0 -13
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestExpectationImplementation.h +0 -40
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestImplementation.h +0 -14
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestObservationCenterImplementation.h +0 -19
- package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestSuiteImplementation.h +0 -23
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncSocket.h +0 -1220
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncSocket.m +0 -8812
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncUdpSocket.h +0 -1036
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncUdpSocket.m +0 -5868
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Categories/DDNumber.h +0 -12
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Categories/DDNumber.m +0 -88
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Categories/DDRange.h +0 -56
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Categories/DDRange.m +0 -106
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPConnection.h +0 -107
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPConnection.m +0 -2238
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPLogging.h +0 -122
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPMessage.h +0 -53
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPMessage.m +0 -357
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPResponse.h +0 -149
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPServer.h +0 -126
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPServer.m +0 -372
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/LICENSE +0 -18
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Responses/HTTPDataResponse.h +0 -13
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Responses/HTTPDataResponse.m +0 -83
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Responses/HTTPErrorResponse.h +0 -9
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Responses/HTTPErrorResponse.m +0 -40
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/HTTPResponseProxy.h +0 -13
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/HTTPResponseProxy.m +0 -84
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/LICENSE +0 -19
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/Route.h +0 -18
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/Route.m +0 -11
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RouteRequest.h +0 -16
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RouteRequest.m +0 -50
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RouteResponse.h +0 -20
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RouteResponse.m +0 -66
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingConnection.h +0 -5
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingConnection.m +0 -142
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingHTTPServer.h +0 -55
- package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingHTTPServer.m +0 -303
- package/drivers/ios/WebDriverAgent/eslint.config.mjs +0 -13
- package/drivers/ios/WebDriverAgent/index.ts +0 -7
- package/drivers/ios/WebDriverAgent/lib/utils.ts +0 -342
- package/drivers/ios/WebDriverAgent/test/functional/webdriveragent-e2e-specs.ts +0 -119
- package/drivers/ios/WebDriverAgent/test/unit/utils-specs.ts +0 -157
- package/drivers/ios/WebDriverAgent/test/unit/webdriveragent-specs.ts +0 -446
|
@@ -1,76 +1,79 @@
|
|
|
1
|
-
import { waitForCondition } from 'asyncbox';
|
|
2
|
-
import _ from 'lodash';
|
|
3
1
|
import path from 'node:path';
|
|
4
|
-
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import type {
|
|
9
|
-
import { log as defaultLogger } from './logger';
|
|
10
|
-
import { NoSessionProxy } from './no-session-proxy';
|
|
11
|
-
import {
|
|
12
|
-
getWDAUpgradeTimestamp, resetTestProcesses, getPIDsListeningOnPort, BOOTSTRAP_PATH
|
|
13
|
-
} from './utils';
|
|
14
|
-
import {XcodeBuild} from './xcodebuild';
|
|
2
|
+
|
|
3
|
+
import {WebDriverProxy} from '@appium/base-driver';
|
|
4
|
+
import {strongbox} from '@appium/strongbox';
|
|
5
|
+
import {fs, util} from '@appium/support';
|
|
6
|
+
import type {AppiumLogger, StringRecord} from '@appium/types';
|
|
15
7
|
import AsyncLock from 'async-lock';
|
|
16
|
-
import {
|
|
17
|
-
|
|
8
|
+
import {waitForCondition} from 'asyncbox';
|
|
9
|
+
|
|
10
|
+
import {WDA_RUNNER_BUNDLE_ID, WDA_BASE_URL, DEFAULT_TEST_BUNDLE_SUFFIX} from './constants.js';
|
|
11
|
+
import {log as defaultLogger} from './logger.js';
|
|
12
|
+
import {NoSessionProxy} from './no-session-proxy.js';
|
|
13
|
+
import type {
|
|
14
|
+
WebDriverAgentArgs,
|
|
15
|
+
AppleDevice,
|
|
16
|
+
XcodeBuildSettings,
|
|
17
|
+
RetrieveBuildSettingsOptions,
|
|
18
|
+
WdaHostOps,
|
|
19
|
+
} from './types.js';
|
|
20
|
+
import {BOOTSTRAP_PATH, getWDAUpgradeTimestamp, isWatchOS} from './utils/index.js';
|
|
18
21
|
import {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
import
|
|
22
|
+
createDefaultWdaHostOps,
|
|
23
|
+
createWdaStartupStrategy,
|
|
24
|
+
type WdaStartupStrategy,
|
|
25
|
+
type WdaStartupStrategyContext,
|
|
26
|
+
} from './wda-strategies.js';
|
|
27
|
+
import {XcodeBuild} from './xcodebuild.js';
|
|
25
28
|
|
|
26
29
|
const WDA_LAUNCH_TIMEOUT = 60 * 1000;
|
|
27
30
|
const WDA_AGENT_PORT = 8100;
|
|
28
|
-
const WDA_CF_BUNDLE_NAME = 'WebDriverAgentRunner-Runner';
|
|
29
31
|
const SHARED_RESOURCES_GUARD = new AsyncLock();
|
|
30
32
|
const RECENT_MODULE_VERSION_ITEM_NAME = 'recentWdaModuleVersion';
|
|
33
|
+
const URL_PROTOCOL_SEPARATOR = '://';
|
|
31
34
|
|
|
32
35
|
export class WebDriverAgent {
|
|
33
|
-
bootstrapPath
|
|
34
|
-
agentPath
|
|
36
|
+
bootstrapPath!: string;
|
|
37
|
+
agentPath!: string;
|
|
35
38
|
readonly args: WebDriverAgentArgs;
|
|
36
|
-
private readonly log: AppiumLogger;
|
|
37
39
|
readonly device: AppleDevice;
|
|
38
40
|
readonly platformVersion?: string;
|
|
39
41
|
readonly platformName?: string;
|
|
40
42
|
readonly iosSdkVersion?: string;
|
|
41
43
|
readonly host?: string;
|
|
42
44
|
readonly isRealDevice: boolean;
|
|
43
|
-
private readonly wdaBundlePath?: string;
|
|
44
|
-
private readonly wdaLocalPort?: number;
|
|
45
45
|
readonly wdaRemotePort: number;
|
|
46
46
|
readonly wdaBaseUrl: string;
|
|
47
47
|
readonly wdaBindingIP?: string;
|
|
48
|
-
private readonly prebuildWDA?: boolean;
|
|
49
48
|
webDriverAgentUrl?: string;
|
|
50
49
|
started: boolean;
|
|
50
|
+
updatedWDABundleId?: string;
|
|
51
|
+
noSessionProxy?: NoSessionProxy;
|
|
52
|
+
jwproxy?: WebDriverProxy;
|
|
53
|
+
proxyReqRes?: any;
|
|
54
|
+
private readonly log: AppiumLogger;
|
|
55
|
+
private readonly wdaLocalPort?: number;
|
|
56
|
+
private readonly prebuildWDA?: boolean;
|
|
51
57
|
private readonly wdaConnectionTimeout?: number;
|
|
52
58
|
private readonly useXctestrunFile?: boolean;
|
|
53
59
|
private readonly usePrebuiltWDA?: boolean;
|
|
54
|
-
private readonly derivedDataPath?: string;
|
|
55
60
|
private readonly mjpegServerPort?: number;
|
|
56
|
-
|
|
61
|
+
private readonly maxHttpRequestBodySize?: number;
|
|
57
62
|
private readonly wdaLaunchTimeout: number;
|
|
58
63
|
private readonly usePreinstalledWDA?: boolean;
|
|
59
|
-
private xctestApiClient?: Xctest | null;
|
|
60
64
|
private readonly updatedWDABundleIdSuffix: string;
|
|
65
|
+
private readonly hostOps: Required<WdaHostOps>;
|
|
66
|
+
private activeStartupStrategy?: WdaStartupStrategy;
|
|
61
67
|
private _xcodebuild?: XcodeBuild | null;
|
|
62
|
-
|
|
63
|
-
jwproxy?: JWProxy;
|
|
64
|
-
proxyReqRes?: any;
|
|
65
|
-
private _url?: url.UrlWithStringQuery;
|
|
68
|
+
private _url?: URL;
|
|
66
69
|
|
|
67
70
|
/**
|
|
68
71
|
* Creates a new WebDriverAgent instance.
|
|
69
72
|
* @param args - Configuration arguments for WebDriverAgent
|
|
70
73
|
* @param log - Optional logger instance
|
|
71
74
|
*/
|
|
72
|
-
constructor
|
|
73
|
-
this.args =
|
|
75
|
+
constructor(args: WebDriverAgentArgs, log: AppiumLogger | null = null) {
|
|
76
|
+
this.args = {...args};
|
|
74
77
|
this.log = log ?? defaultLogger;
|
|
75
78
|
|
|
76
79
|
this.device = args.device;
|
|
@@ -79,13 +82,15 @@ export class WebDriverAgent {
|
|
|
79
82
|
this.iosSdkVersion = args.iosSdkVersion;
|
|
80
83
|
this.host = args.host;
|
|
81
84
|
this.isRealDevice = !!args.realDevice;
|
|
82
|
-
|
|
85
|
+
|
|
86
|
+
if (isWatchOS(this.platformName || '') && this.isRealDevice) {
|
|
87
|
+
throw new Error('Real watchOS device testing is not supported; watchOS is only available via the Simulator.');
|
|
88
|
+
}
|
|
83
89
|
|
|
84
90
|
this.setWDAPaths(args.bootstrapPath, args.agentPath);
|
|
85
91
|
|
|
86
92
|
this.wdaLocalPort = args.wdaLocalPort;
|
|
87
|
-
this.wdaRemotePort = ((this.isRealDevice ? args.wdaRemotePort : null) ?? args.wdaLocalPort)
|
|
88
|
-
|| WDA_AGENT_PORT;
|
|
93
|
+
this.wdaRemotePort = ((this.isRealDevice ? args.wdaRemotePort : null) ?? args.wdaLocalPort) || WDA_AGENT_PORT;
|
|
89
94
|
this.wdaBaseUrl = args.wdaBaseUrl || WDA_BASE_URL;
|
|
90
95
|
this.wdaBindingIP = args.wdaBindingIP;
|
|
91
96
|
this.prebuildWDA = args.prebuildWDA;
|
|
@@ -101,51 +106,70 @@ export class WebDriverAgent {
|
|
|
101
106
|
|
|
102
107
|
this.useXctestrunFile = args.useXctestrunFile;
|
|
103
108
|
this.usePrebuiltWDA = args.usePrebuiltWDA;
|
|
104
|
-
this.derivedDataPath = args.derivedDataPath;
|
|
105
109
|
this.mjpegServerPort = args.mjpegServerPort;
|
|
110
|
+
this.maxHttpRequestBodySize = args.maxHttpRequestBodySize;
|
|
106
111
|
|
|
107
112
|
this.updatedWDABundleId = args.updatedWDABundleId;
|
|
108
113
|
|
|
109
114
|
this.wdaLaunchTimeout = args.wdaLaunchTimeout || WDA_LAUNCH_TIMEOUT;
|
|
110
115
|
this.usePreinstalledWDA = args.usePreinstalledWDA;
|
|
111
|
-
this.xctestApiClient = null;
|
|
112
116
|
this.updatedWDABundleIdSuffix = args.updatedWDABundleIdSuffix ?? DEFAULT_TEST_BUNDLE_SUFFIX;
|
|
117
|
+
const defaultHostOps = createDefaultWdaHostOps();
|
|
118
|
+
this.hostOps = {
|
|
119
|
+
simulator: {
|
|
120
|
+
...defaultHostOps.simulator,
|
|
121
|
+
...args.hostOps?.simulator,
|
|
122
|
+
},
|
|
123
|
+
realDevicePreinstalled: {
|
|
124
|
+
...defaultHostOps.realDevicePreinstalled,
|
|
125
|
+
...args.hostOps?.realDevicePreinstalled,
|
|
126
|
+
},
|
|
127
|
+
realDeviceXcodebuild: {
|
|
128
|
+
...defaultHostOps.realDeviceXcodebuild,
|
|
129
|
+
...args.hostOps?.realDeviceXcodebuild,
|
|
130
|
+
},
|
|
131
|
+
};
|
|
113
132
|
|
|
114
133
|
this._xcodebuild = this.canSkipXcodebuild
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
134
|
+
? null
|
|
135
|
+
: new XcodeBuild(
|
|
136
|
+
this.device,
|
|
137
|
+
{
|
|
138
|
+
platformVersion: this.platformVersion,
|
|
139
|
+
platformName: this.platformName,
|
|
140
|
+
iosSdkVersion: this.iosSdkVersion,
|
|
141
|
+
agentPath: this.agentPath,
|
|
142
|
+
bootstrapPath: this.bootstrapPath,
|
|
143
|
+
realDevice: this.isRealDevice,
|
|
144
|
+
showXcodeLog: args.showXcodeLog,
|
|
145
|
+
xcodeConfigFile: args.xcodeConfigFile,
|
|
146
|
+
xcodeOrgId: args.xcodeOrgId,
|
|
147
|
+
xcodeSigningId: args.xcodeSigningId,
|
|
148
|
+
keychainPath: args.keychainPath,
|
|
149
|
+
keychainPassword: args.keychainPassword,
|
|
150
|
+
useSimpleBuildTest: args.useSimpleBuildTest,
|
|
151
|
+
usePrebuiltWDA: args.usePrebuiltWDA,
|
|
152
|
+
updatedWDABundleId: this.updatedWDABundleId,
|
|
153
|
+
launchTimeout: this.wdaLaunchTimeout,
|
|
154
|
+
wdaRemotePort: this.wdaRemotePort,
|
|
155
|
+
wdaBindingIP: this.wdaBindingIP,
|
|
156
|
+
useXctestrunFile: this.useXctestrunFile,
|
|
157
|
+
derivedDataPath: args.derivedDataPath,
|
|
158
|
+
mjpegServerPort: this.mjpegServerPort,
|
|
159
|
+
maxHttpRequestBodySize: this.maxHttpRequestBodySize,
|
|
160
|
+
allowProvisioningDeviceRegistration: args.allowProvisioningDeviceRegistration,
|
|
161
|
+
resultBundlePath: args.resultBundlePath,
|
|
162
|
+
resultBundleVersion: args.resultBundleVersion,
|
|
163
|
+
},
|
|
164
|
+
this.log,
|
|
165
|
+
);
|
|
142
166
|
}
|
|
143
167
|
|
|
144
168
|
/**
|
|
145
169
|
* Return true if the session does not need xcodebuild.
|
|
146
170
|
* @returns Whether the session needs/has xcodebuild.
|
|
147
171
|
*/
|
|
148
|
-
get canSkipXcodebuild
|
|
172
|
+
get canSkipXcodebuild(): boolean {
|
|
149
173
|
// Use this.args.webDriverAgentUrl to guarantee
|
|
150
174
|
// the capabilities set gave the `appium:webDriverAgentUrl`.
|
|
151
175
|
return this.usePreinstalledWDA || !!this.args.webDriverAgentUrl;
|
|
@@ -156,7 +180,7 @@ export class WebDriverAgent {
|
|
|
156
180
|
* @returns The XcodeBuild instance
|
|
157
181
|
* @throws Error if xcodebuild is not available
|
|
158
182
|
*/
|
|
159
|
-
get xcodebuild
|
|
183
|
+
get xcodebuild(): XcodeBuild {
|
|
160
184
|
if (!this._xcodebuild) {
|
|
161
185
|
throw new Error('xcodebuild is not available');
|
|
162
186
|
}
|
|
@@ -171,44 +195,81 @@ export class WebDriverAgent {
|
|
|
171
195
|
*
|
|
172
196
|
* @returns Bundle ID for Xctest.
|
|
173
197
|
*/
|
|
174
|
-
get bundleIdForXctest
|
|
198
|
+
get bundleIdForXctest(): string {
|
|
175
199
|
return `${this.updatedWDABundleId ? this.updatedWDABundleId : WDA_RUNNER_BUNDLE_ID}${this.updatedWDABundleIdSuffix}`;
|
|
176
200
|
}
|
|
177
201
|
|
|
178
202
|
/**
|
|
179
|
-
*
|
|
180
|
-
*
|
|
203
|
+
* Gets the base path for the WebDriverAgent URL.
|
|
204
|
+
* @returns The base path (empty string if root path)
|
|
181
205
|
*/
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
!cmdLine.toLowerCase().includes(this.device.udid.toLowerCase()));
|
|
186
|
-
|
|
187
|
-
if (_.isEmpty(obsoletePids)) {
|
|
188
|
-
this.log.debug(`No obsolete cached processes from previous WDA sessions ` +
|
|
189
|
-
`listening on port ${this.url.port} have been found`);
|
|
190
|
-
return;
|
|
206
|
+
get basePath(): string {
|
|
207
|
+
if (this.url.pathname === '/') {
|
|
208
|
+
return '';
|
|
191
209
|
}
|
|
210
|
+
return this.url.pathname || '';
|
|
211
|
+
}
|
|
192
212
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
213
|
+
/**
|
|
214
|
+
* Gets the WebDriverAgent URL.
|
|
215
|
+
* Constructs the URL from webDriverAgentUrl if provided, otherwise
|
|
216
|
+
* builds it from wdaBaseUrl, wdaBindingIP, and wdaLocalPort.
|
|
217
|
+
* @returns The parsed URL object
|
|
218
|
+
*/
|
|
219
|
+
get url(): URL {
|
|
220
|
+
if (!this._url) {
|
|
221
|
+
if (this.webDriverAgentUrl) {
|
|
222
|
+
this._url = this.toUrl(this.webDriverAgentUrl);
|
|
223
|
+
} else {
|
|
224
|
+
const port = this.wdaLocalPort || WDA_AGENT_PORT;
|
|
225
|
+
const parsedBaseUrl = this.toUrl(this.wdaBaseUrl || WDA_BASE_URL);
|
|
226
|
+
this._url = new URL(`${parsedBaseUrl.protocol}//${this.wdaBindingIP || parsedBaseUrl.hostname}:${port}`);
|
|
227
|
+
}
|
|
200
228
|
}
|
|
229
|
+
return this._url;
|
|
201
230
|
}
|
|
202
231
|
|
|
203
232
|
/**
|
|
204
|
-
* Gets
|
|
205
|
-
* @returns
|
|
233
|
+
* Gets whether WebDriverAgent has fully started.
|
|
234
|
+
* @returns `true` if WDA has started, `false` otherwise
|
|
206
235
|
*/
|
|
207
|
-
get
|
|
208
|
-
|
|
209
|
-
|
|
236
|
+
get fullyStarted(): boolean {
|
|
237
|
+
return this.started;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Sets whether WebDriverAgent has fully started.
|
|
242
|
+
* @param started - `true` if WDA has started, `false` otherwise
|
|
243
|
+
*/
|
|
244
|
+
set fullyStarted(started: boolean) {
|
|
245
|
+
this.started = started ?? false;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Sets the WebDriverAgent URL.
|
|
250
|
+
* @param _url - The URL string to parse and set
|
|
251
|
+
*/
|
|
252
|
+
set url(_url: string) {
|
|
253
|
+
this._url = this.toUrl(_url);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Cleans up obsolete cached processes from previous WDA sessions
|
|
258
|
+
* that are listening on the same port but belong to different devices.
|
|
259
|
+
*/
|
|
260
|
+
async cleanupObsoleteProcesses(): Promise<void> {
|
|
261
|
+
try {
|
|
262
|
+
await this.hostOps.realDeviceXcodebuild.cleanupObsoleteProcesses?.({
|
|
263
|
+
udid: this.device.udid,
|
|
264
|
+
port: this.url.port as string,
|
|
265
|
+
commandLineIncludes: '/WebDriverAgentRunner',
|
|
266
|
+
});
|
|
267
|
+
} catch (e: any) {
|
|
268
|
+
this.log.warn(`Failed to clean obsolete cached processes. Original error: ${e.message}`);
|
|
210
269
|
}
|
|
211
|
-
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/**
|
|
212
273
|
}
|
|
213
274
|
|
|
214
275
|
/**
|
|
@@ -232,50 +293,11 @@ export class WebDriverAgent {
|
|
|
232
293
|
*
|
|
233
294
|
* @param sessionId Launch WDA and establish the session with this sessionId
|
|
234
295
|
*/
|
|
235
|
-
async launch
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
return await this.getStatus();
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
if (this.usePreinstalledWDA) {
|
|
244
|
-
return await this.launchWithPreinstalledWDA(sessionId);
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
this.log.info('Launching WebDriverAgent on the device');
|
|
248
|
-
|
|
249
|
-
this.setupProxies(sessionId);
|
|
250
|
-
|
|
251
|
-
if (!this.useXctestrunFile && !await fs.exists(this.agentPath)) {
|
|
252
|
-
throw new Error(`Trying to use WebDriverAgent project at '${this.agentPath}' but the ` +
|
|
253
|
-
'file does not exist');
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
// useXctestrunFile and usePrebuiltWDA use existing dependencies
|
|
257
|
-
// It depends on user side
|
|
258
|
-
if (this.useXctestrunFile || this.usePrebuiltWDA) {
|
|
259
|
-
this.log.info('Skipped WDA project cleanup according to the provided capabilities');
|
|
260
|
-
} else {
|
|
261
|
-
const synchronizationKey = path.normalize(this.bootstrapPath);
|
|
262
|
-
await SHARED_RESOURCES_GUARD.acquire(synchronizationKey,
|
|
263
|
-
async () => await this._cleanupProjectIfFresh());
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
// We need to provide WDA local port, because it might be occupied
|
|
267
|
-
await resetTestProcesses(this.device.udid, !this.isRealDevice);
|
|
268
|
-
|
|
269
|
-
if (!this.noSessionProxy) {
|
|
270
|
-
throw new Error('noSessionProxy is not available');
|
|
271
|
-
}
|
|
272
|
-
await this.xcodebuild.init(this.noSessionProxy);
|
|
273
|
-
|
|
274
|
-
// Start the xcodebuild process
|
|
275
|
-
if (this.prebuildWDA) {
|
|
276
|
-
await this.xcodebuild.prebuild();
|
|
277
|
-
}
|
|
278
|
-
return await this.xcodebuild.start() as StringRecord | null;
|
|
296
|
+
async launch(sessionId: string): Promise<StringRecord | null> {
|
|
297
|
+
const startupStrategy = this.createStartupStrategy();
|
|
298
|
+
this.log.info(`Selected '${startupStrategy.name}' WebDriverAgent startup strategy`);
|
|
299
|
+
this.activeStartupStrategy = startupStrategy;
|
|
300
|
+
return await startupStrategy.launch(sessionId);
|
|
279
301
|
}
|
|
280
302
|
|
|
281
303
|
/**
|
|
@@ -283,83 +305,19 @@ export class WebDriverAgent {
|
|
|
283
305
|
* that required resource files exist.
|
|
284
306
|
* @returns `true` if source is fresh (all required files exist), `false` otherwise
|
|
285
307
|
*/
|
|
286
|
-
async isSourceFresh
|
|
287
|
-
const existsPromises = [
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
return (await B.all(existsPromises)).some((v) => v === false);
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
private async parseBundleId (wdaBundlePath: string): Promise<string> {
|
|
295
|
-
const infoPlistPath = path.join(wdaBundlePath, 'Info.plist');
|
|
296
|
-
const infoPlist = await plist.parsePlist(await fs.readFile(infoPlistPath));
|
|
297
|
-
if (!infoPlist.CFBundleIdentifier) {
|
|
298
|
-
throw new Error(`Could not find bundle id in '${infoPlistPath}'`);
|
|
299
|
-
}
|
|
300
|
-
return infoPlist.CFBundleIdentifier as string;
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
private async fetchWDABundle (): Promise<string> {
|
|
304
|
-
if (!this.derivedDataPath) {
|
|
305
|
-
return await bundleWDASim(this.xcodebuild);
|
|
306
|
-
}
|
|
307
|
-
const wdaBundlePaths = await fs.glob(`${this.derivedDataPath}/**/*${WDA_RUNNER_APP}/`, {
|
|
308
|
-
absolute: true,
|
|
309
|
-
});
|
|
310
|
-
if (_.isEmpty(wdaBundlePaths)) {
|
|
311
|
-
throw new Error(`Could not find the WDA bundle in '${this.derivedDataPath}'`);
|
|
312
|
-
}
|
|
313
|
-
return wdaBundlePaths[0];
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
private setupProxies (sessionId: string): void {
|
|
317
|
-
const proxyOpts: any = {
|
|
318
|
-
log: this.log,
|
|
319
|
-
server: this.url.hostname ?? undefined,
|
|
320
|
-
port: parseInt(this.url.port ?? '', 10) || undefined,
|
|
321
|
-
base: this.basePath,
|
|
322
|
-
timeout: this.wdaConnectionTimeout,
|
|
323
|
-
keepAlive: true,
|
|
324
|
-
scheme: this.url.protocol ? this.url.protocol.replace(':', '') : 'http',
|
|
325
|
-
};
|
|
326
|
-
if (this.args.reqBasePath) {
|
|
327
|
-
proxyOpts.reqBasePath = this.args.reqBasePath;
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
this.jwproxy = new JWProxy(proxyOpts);
|
|
331
|
-
this.jwproxy.sessionId = sessionId;
|
|
332
|
-
this.proxyReqRes = this.jwproxy.proxyReqRes.bind(this.jwproxy);
|
|
333
|
-
|
|
334
|
-
this.noSessionProxy = new NoSessionProxy(proxyOpts);
|
|
308
|
+
async isSourceFresh(): Promise<boolean> {
|
|
309
|
+
const existsPromises = ['Resources', path.join('Resources', 'WebDriverAgent.bundle')].map((subPath) =>
|
|
310
|
+
fs.exists(path.resolve(this.bootstrapPath, subPath)),
|
|
311
|
+
);
|
|
312
|
+
return (await Promise.all(existsPromises)).every((v) => v === true);
|
|
335
313
|
}
|
|
336
314
|
|
|
337
315
|
/**
|
|
338
316
|
* Stops the WebDriverAgent session and cleans up resources.
|
|
339
317
|
* Handles both preinstalled WDA and xcodebuild-based sessions.
|
|
340
318
|
*/
|
|
341
|
-
async quit
|
|
342
|
-
|
|
343
|
-
this.log.info('Stopping the XCTest session');
|
|
344
|
-
if (this.xctestApiClient) {
|
|
345
|
-
this.xctestApiClient.stop();
|
|
346
|
-
this.xctestApiClient = null;
|
|
347
|
-
} else {
|
|
348
|
-
try {
|
|
349
|
-
await this.device.simctl.terminateApp(this.bundleIdForXctest);
|
|
350
|
-
} catch (e: any) {
|
|
351
|
-
this.log.warn(e.message);
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
} else if (!this.args.webDriverAgentUrl) {
|
|
355
|
-
this.log.info('Shutting down sub-processes');
|
|
356
|
-
if (this._xcodebuild) {
|
|
357
|
-
await this.xcodebuild.quit();
|
|
358
|
-
}
|
|
359
|
-
} else {
|
|
360
|
-
this.log.debug('Do not stop xcodebuild nor XCTest session ' +
|
|
361
|
-
'since the WDA session is managed by outside this driver.');
|
|
362
|
-
}
|
|
319
|
+
async quit(): Promise<void> {
|
|
320
|
+
await (this.activeStartupStrategy ?? this.createStartupStrategy()).quit();
|
|
363
321
|
|
|
364
322
|
if (this.jwproxy) {
|
|
365
323
|
this.jwproxy.sessionId = null;
|
|
@@ -372,114 +330,168 @@ export class WebDriverAgent {
|
|
|
372
330
|
// then clean that up. If the url was supplied, we want to keep it
|
|
373
331
|
this.webDriverAgentUrl = undefined;
|
|
374
332
|
}
|
|
333
|
+
this.activeStartupStrategy = undefined;
|
|
375
334
|
}
|
|
376
335
|
|
|
377
336
|
/**
|
|
378
|
-
*
|
|
379
|
-
*
|
|
380
|
-
*
|
|
381
|
-
* @returns The parsed URL object
|
|
382
|
-
*/
|
|
383
|
-
get url (): url.UrlWithStringQuery {
|
|
384
|
-
if (!this._url) {
|
|
385
|
-
if (this.webDriverAgentUrl) {
|
|
386
|
-
this._url = url.parse(this.webDriverAgentUrl);
|
|
387
|
-
} else {
|
|
388
|
-
const port = this.wdaLocalPort || WDA_AGENT_PORT;
|
|
389
|
-
const {protocol, hostname} = url.parse(this.wdaBaseUrl || WDA_BASE_URL);
|
|
390
|
-
this._url = url.parse(`${protocol}//${this.wdaBindingIP || hostname}:${port}`);
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
return this._url;
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
/**
|
|
397
|
-
* Sets the WebDriverAgent URL.
|
|
398
|
-
* @param _url - The URL string to parse and set
|
|
399
|
-
*/
|
|
400
|
-
set url (_url: string) {
|
|
401
|
-
this._url = url.parse(_url);
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
/**
|
|
405
|
-
* Gets whether WebDriverAgent has fully started.
|
|
406
|
-
* @returns `true` if WDA has started, `false` otherwise
|
|
407
|
-
*/
|
|
408
|
-
get fullyStarted (): boolean {
|
|
409
|
-
return this.started;
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
/**
|
|
413
|
-
* Sets whether WebDriverAgent has fully started.
|
|
414
|
-
* @param started - `true` if WDA has started, `false` otherwise
|
|
415
|
-
*/
|
|
416
|
-
set fullyStarted (started: boolean) {
|
|
417
|
-
this.started = started ?? false;
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
/**
|
|
421
|
-
* Retrieves the Xcode derived data path for WebDriverAgent.
|
|
422
|
-
* @returns The derived data path, or `undefined` if xcodebuild is skipped
|
|
337
|
+
* Retrieves Xcode build settings.
|
|
338
|
+
* @param options - Optional scheme, SDK, configuration, or destination
|
|
339
|
+
* @returns Build settings, or `undefined` if xcodebuild is skipped or settings cannot be determined
|
|
423
340
|
*/
|
|
424
|
-
async
|
|
341
|
+
async retrieveBuildSettings(options?: RetrieveBuildSettingsOptions): Promise<XcodeBuildSettings | undefined> {
|
|
425
342
|
if (this.canSkipXcodebuild) {
|
|
426
343
|
return;
|
|
427
344
|
}
|
|
428
|
-
return await this.xcodebuild.
|
|
345
|
+
return await this.xcodebuild.retrieveBuildSettings(options);
|
|
429
346
|
}
|
|
430
347
|
|
|
431
348
|
/**
|
|
432
349
|
* Reuse running WDA if it has the same bundle id with updatedWDABundleId.
|
|
433
350
|
* Or reuse it if it has the default id without updatedWDABundleId.
|
|
434
|
-
*
|
|
351
|
+
*
|
|
352
|
+
* @returns The WDA URL used for caching on success, or `undefined` if caching was skipped.
|
|
435
353
|
*/
|
|
436
|
-
async setupCaching
|
|
354
|
+
async setupCaching(): Promise<string | undefined> {
|
|
437
355
|
const status = await this.getStatus(0);
|
|
438
356
|
if (!status || !status.build) {
|
|
439
357
|
this.log.debug('WDA is currently not running. There is nothing to cache');
|
|
440
|
-
return;
|
|
358
|
+
return undefined;
|
|
441
359
|
}
|
|
442
360
|
|
|
443
|
-
const {
|
|
444
|
-
productBundleIdentifier,
|
|
445
|
-
upgradedAt,
|
|
446
|
-
} = status.build as any;
|
|
361
|
+
const {productBundleIdentifier, upgradedAt} = status.build as any;
|
|
447
362
|
// for real device
|
|
448
|
-
if (
|
|
449
|
-
|
|
450
|
-
|
|
363
|
+
if (
|
|
364
|
+
util.hasValue(productBundleIdentifier) &&
|
|
365
|
+
util.hasValue(this.updatedWDABundleId) &&
|
|
366
|
+
this.updatedWDABundleId !== productBundleIdentifier
|
|
367
|
+
) {
|
|
368
|
+
this.log.info(
|
|
369
|
+
`Will not reuse running WDA since it has different bundle id. The actual value is '${productBundleIdentifier}'.`,
|
|
370
|
+
);
|
|
371
|
+
return undefined;
|
|
451
372
|
}
|
|
452
373
|
// for simulator
|
|
453
|
-
if (
|
|
454
|
-
|
|
455
|
-
|
|
374
|
+
if (
|
|
375
|
+
util.hasValue(productBundleIdentifier) &&
|
|
376
|
+
!util.hasValue(this.updatedWDABundleId) &&
|
|
377
|
+
WDA_RUNNER_BUNDLE_ID !== productBundleIdentifier
|
|
378
|
+
) {
|
|
379
|
+
this.log.info(
|
|
380
|
+
`Will not reuse running WDA since its bundle id is not equal to the default value ${WDA_RUNNER_BUNDLE_ID}`,
|
|
381
|
+
);
|
|
382
|
+
return undefined;
|
|
456
383
|
}
|
|
457
384
|
|
|
458
385
|
const actualUpgradeTimestamp = await getWDAUpgradeTimestamp();
|
|
459
386
|
this.log.debug(`Upgrade timestamp of the currently bundled WDA: ${actualUpgradeTimestamp}`);
|
|
460
387
|
this.log.debug(`Upgrade timestamp of the WDA on the device: ${upgradedAt}`);
|
|
461
|
-
if (
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
388
|
+
if (
|
|
389
|
+
actualUpgradeTimestamp &&
|
|
390
|
+
upgradedAt &&
|
|
391
|
+
`${actualUpgradeTimestamp}`.toLowerCase() !== `${upgradedAt}`.toLowerCase()
|
|
392
|
+
) {
|
|
393
|
+
this.log.info(
|
|
394
|
+
'Will not reuse running WDA since it has different version in comparison to the one ' +
|
|
395
|
+
`which is bundled with appium-xcuitest-driver module (${actualUpgradeTimestamp} != ${upgradedAt})`,
|
|
396
|
+
);
|
|
397
|
+
return undefined;
|
|
465
398
|
}
|
|
466
399
|
|
|
400
|
+
const cachedUrl = this.url.href;
|
|
467
401
|
const message = util.hasValue(productBundleIdentifier)
|
|
468
|
-
? `Will reuse previously cached WDA instance at '${
|
|
469
|
-
: `Will reuse previously cached WDA instance at '${
|
|
470
|
-
this.log.info(
|
|
471
|
-
|
|
402
|
+
? `Will reuse previously cached WDA instance at '${cachedUrl}' with '${productBundleIdentifier}'`
|
|
403
|
+
: `Will reuse previously cached WDA instance at '${cachedUrl}'`;
|
|
404
|
+
this.log.info(
|
|
405
|
+
`${message}. Set the wdaLocalPort capability to a value different from ${this.url.port} if this is an undesired behavior.`,
|
|
406
|
+
);
|
|
407
|
+
this.webDriverAgentUrl = cachedUrl;
|
|
408
|
+
return cachedUrl;
|
|
472
409
|
}
|
|
473
410
|
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
411
|
+
private createStartupStrategy(): WdaStartupStrategy {
|
|
412
|
+
const context: WdaStartupStrategyContext = {
|
|
413
|
+
argsWebDriverAgentUrl: this.args.webDriverAgentUrl,
|
|
414
|
+
webDriverAgentUrl: this.webDriverAgentUrl,
|
|
415
|
+
usePreinstalledWDA: this.usePreinstalledWDA,
|
|
416
|
+
useXctestrunFile: this.useXctestrunFile,
|
|
417
|
+
usePrebuiltWDA: this.usePrebuiltWDA,
|
|
418
|
+
prebuildWDA: this.prebuildWDA,
|
|
419
|
+
isRealDevice: this.isRealDevice,
|
|
420
|
+
device: this.device,
|
|
421
|
+
agentPath: this.agentPath,
|
|
422
|
+
bootstrapPath: this.bootstrapPath,
|
|
423
|
+
bundleIdForXctest: this.bundleIdForXctest,
|
|
424
|
+
wdaLocalPort: this.wdaLocalPort,
|
|
425
|
+
wdaRemotePort: this.wdaRemotePort,
|
|
426
|
+
wdaBindingIP: this.wdaBindingIP,
|
|
427
|
+
wdaLaunchTimeout: this.wdaLaunchTimeout,
|
|
428
|
+
mjpegServerPort: this.mjpegServerPort,
|
|
429
|
+
maxHttpRequestBodySize: this.maxHttpRequestBodySize,
|
|
430
|
+
platformName: this.platformName,
|
|
431
|
+
platformVersion: this.platformVersion,
|
|
432
|
+
log: this.log,
|
|
433
|
+
hostOps: this.hostOps,
|
|
434
|
+
setWebDriverAgentUrl: (value) => {
|
|
435
|
+
this.webDriverAgentUrl = value;
|
|
436
|
+
},
|
|
437
|
+
setUrl: (value) => {
|
|
438
|
+
this.url = value;
|
|
439
|
+
},
|
|
440
|
+
setupProxies: (sessionId) => this.setupProxies(sessionId),
|
|
441
|
+
getStatus: async (timeoutMs) => await this.getStatus(timeoutMs),
|
|
442
|
+
cleanupProjectIfFresh: async () => {
|
|
443
|
+
const synchronizationKey = path.normalize(this.bootstrapPath);
|
|
444
|
+
await SHARED_RESOURCES_GUARD.acquire(synchronizationKey, async () => await this._cleanupProjectIfFresh());
|
|
445
|
+
},
|
|
446
|
+
xcodebuild: () => this.xcodebuild,
|
|
447
|
+
noSessionProxy: () => {
|
|
448
|
+
if (!this.noSessionProxy) {
|
|
449
|
+
throw new Error('noSessionProxy is not available');
|
|
450
|
+
}
|
|
451
|
+
return this.noSessionProxy;
|
|
452
|
+
},
|
|
453
|
+
setStarted: (started) => {
|
|
454
|
+
this.started = started;
|
|
455
|
+
},
|
|
456
|
+
};
|
|
457
|
+
return createWdaStartupStrategy(context);
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
private setupProxies(sessionId: string): void {
|
|
461
|
+
const proxyOpts: any = {
|
|
462
|
+
log: this.log,
|
|
463
|
+
server: this.url.hostname ?? undefined,
|
|
464
|
+
port: parseInt(this.url.port ?? '', 10) || undefined,
|
|
465
|
+
base: this.basePath,
|
|
466
|
+
timeout: this.wdaConnectionTimeout,
|
|
467
|
+
keepAlive: true,
|
|
468
|
+
scheme: this.url.protocol ? this.url.protocol.replace(':', '') : 'http',
|
|
469
|
+
headers: this.args.extraRequestHeaders,
|
|
470
|
+
};
|
|
471
|
+
if (this.args.reqBasePath) {
|
|
472
|
+
proxyOpts.reqBasePath = this.args.reqBasePath;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
this.jwproxy = new WebDriverProxy(proxyOpts);
|
|
476
|
+
this.jwproxy.sessionId = sessionId;
|
|
477
|
+
this.proxyReqRes = this.jwproxy.proxyReqRes.bind(this.jwproxy);
|
|
478
|
+
|
|
479
|
+
this.noSessionProxy = new NoSessionProxy(proxyOpts);
|
|
480
480
|
}
|
|
481
481
|
|
|
482
|
-
private
|
|
482
|
+
private toUrl(value: string): URL {
|
|
483
|
+
// Treat values without `://` as host/path inputs and normalize to http.
|
|
484
|
+
if (!value.includes(URL_PROTOCOL_SEPARATOR)) {
|
|
485
|
+
return new URL(`http://${value}`);
|
|
486
|
+
}
|
|
487
|
+
try {
|
|
488
|
+
return new URL(value);
|
|
489
|
+
} catch {
|
|
490
|
+
throw new Error(`Invalid URL: ${value}`);
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
private setWDAPaths(bootstrapPath?: string, agentPath?: string): void {
|
|
483
495
|
// allow the user to specify a place for WDA. This is undocumented and
|
|
484
496
|
// only here for the purposes of testing development of WDA
|
|
485
497
|
this.bootstrapPath = bootstrapPath || BOOTSTRAP_PATH;
|
|
@@ -490,10 +502,6 @@ export class WebDriverAgent {
|
|
|
490
502
|
this.log.info(`Using WDA agent: '${this.agentPath}'`);
|
|
491
503
|
}
|
|
492
504
|
|
|
493
|
-
private async isRunning (): Promise<boolean> {
|
|
494
|
-
return !!(await this.getStatus());
|
|
495
|
-
}
|
|
496
|
-
|
|
497
505
|
/**
|
|
498
506
|
* Return current running WDA's status like below
|
|
499
507
|
* {
|
|
@@ -515,17 +523,19 @@ export class WebDriverAgent {
|
|
|
515
523
|
*
|
|
516
524
|
* @param timeoutMs If zero or negative, returns immediately. Otherwise, waits up to timeoutMs.
|
|
517
525
|
*/
|
|
518
|
-
private async getStatus
|
|
526
|
+
private async getStatus(timeoutMs: number = 0): Promise<StringRecord | null> {
|
|
519
527
|
const noSessionProxy = new NoSessionProxy({
|
|
528
|
+
scheme: this.url.protocol ? this.url.protocol.replace(':', '') : 'http',
|
|
520
529
|
server: this.url.hostname ?? undefined,
|
|
521
530
|
port: parseInt(this.url.port ?? '', 10) || undefined,
|
|
522
531
|
base: this.basePath,
|
|
523
532
|
timeout: 3000,
|
|
533
|
+
headers: this.args.extraRequestHeaders,
|
|
524
534
|
});
|
|
525
535
|
|
|
526
|
-
const sendGetStatus = async () => await noSessionProxy.command('/status', 'GET') as StringRecord;
|
|
536
|
+
const sendGetStatus = async () => (await noSessionProxy.command('/status', 'GET')) as StringRecord;
|
|
527
537
|
|
|
528
|
-
if (
|
|
538
|
+
if (timeoutMs == null || timeoutMs <= 0) {
|
|
529
539
|
try {
|
|
530
540
|
return await sendGetStatus();
|
|
531
541
|
} catch (err: any) {
|
|
@@ -537,82 +547,51 @@ export class WebDriverAgent {
|
|
|
537
547
|
let lastError: any = null;
|
|
538
548
|
let status: StringRecord | null = null;
|
|
539
549
|
try {
|
|
540
|
-
await waitForCondition(
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
550
|
+
await waitForCondition(
|
|
551
|
+
async () => {
|
|
552
|
+
try {
|
|
553
|
+
status = await sendGetStatus();
|
|
554
|
+
return true;
|
|
555
|
+
} catch (err) {
|
|
556
|
+
lastError = err;
|
|
557
|
+
}
|
|
558
|
+
return false;
|
|
559
|
+
},
|
|
560
|
+
{
|
|
561
|
+
waitMs: timeoutMs,
|
|
562
|
+
intervalMs: 300,
|
|
563
|
+
},
|
|
564
|
+
);
|
|
552
565
|
} catch (err: any) {
|
|
553
|
-
this.log.debug(
|
|
554
|
-
`
|
|
555
|
-
|
|
566
|
+
this.log.debug(
|
|
567
|
+
`Failed to get the status endpoint in ${timeoutMs} ms. ` +
|
|
568
|
+
`The last error while accessing ${this.url.href}: ${lastError}. Original error:: ${err.message}.`,
|
|
569
|
+
);
|
|
570
|
+
throw new Error(`WDA was not ready in ${timeoutMs} ms.`, {cause: err});
|
|
556
571
|
}
|
|
557
572
|
return status;
|
|
558
573
|
}
|
|
559
574
|
|
|
560
|
-
|
|
561
|
-
* Uninstall WDAs from the test device.
|
|
562
|
-
* Over Xcode 11, multiple WDA can be in the device since Xcode 11 generates different WDA.
|
|
563
|
-
* Appium does not expect multiple WDAs are running on a device.
|
|
564
|
-
*/
|
|
565
|
-
private async uninstall (): Promise<void> {
|
|
566
|
-
try {
|
|
567
|
-
const bundleIds = await this.device.getUserInstalledBundleIdsByBundleName(WDA_CF_BUNDLE_NAME);
|
|
568
|
-
if (_.isEmpty(bundleIds)) {
|
|
569
|
-
this.log.debug('No WDAs on the device.');
|
|
570
|
-
return;
|
|
571
|
-
}
|
|
572
|
-
|
|
573
|
-
this.log.debug(`Uninstalling WDAs: '${bundleIds}'`);
|
|
574
|
-
for (const bundleId of bundleIds) {
|
|
575
|
-
await this.device.removeApp(bundleId);
|
|
576
|
-
}
|
|
577
|
-
} catch (e: any) {
|
|
578
|
-
this.log.debug(e);
|
|
579
|
-
this.log.warn(`WebDriverAgent uninstall failed. Perhaps, it is already uninstalled? ` +
|
|
580
|
-
`Original error: ${e.message}`);
|
|
581
|
-
}
|
|
582
|
-
}
|
|
583
|
-
|
|
584
|
-
private async _cleanupProjectIfFresh (): Promise<void> {
|
|
575
|
+
private async _cleanupProjectIfFresh(): Promise<void> {
|
|
585
576
|
if (this.canSkipXcodebuild) {
|
|
586
577
|
return;
|
|
587
578
|
}
|
|
588
579
|
|
|
589
580
|
const packageInfo = JSON.parse(await fs.readFile(path.join(BOOTSTRAP_PATH, 'package.json'), 'utf8'));
|
|
590
581
|
const box = strongbox(packageInfo.name);
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
} catch (e: any) {
|
|
601
|
-
this.log.warn(`The actual module version cannot be persisted: ${e.message}`);
|
|
602
|
-
return;
|
|
603
|
-
}
|
|
604
|
-
} else {
|
|
605
|
-
this.log.info('There is no need to perform the project cleanup. A fresh install has been detected');
|
|
606
|
-
try {
|
|
607
|
-
await box.createItemWithValue(RECENT_MODULE_VERSION_ITEM_NAME, packageInfo.version);
|
|
608
|
-
} catch (e: any) {
|
|
609
|
-
this.log.warn(`The actual module version cannot be persisted: ${e.message}`);
|
|
610
|
-
}
|
|
611
|
-
return;
|
|
582
|
+
// Each Strongbox instance starts with an empty item map. Load the persisted value from disk.
|
|
583
|
+
const boxItem = await box.createItem<string>(RECENT_MODULE_VERSION_ITEM_NAME);
|
|
584
|
+
let recentModuleVersion = boxItem.value;
|
|
585
|
+
if (recentModuleVersion === undefined) {
|
|
586
|
+
this.log.info('There is no need to perform the project cleanup. A fresh install has been detected');
|
|
587
|
+
try {
|
|
588
|
+
await boxItem.write(packageInfo.version);
|
|
589
|
+
} catch (e: any) {
|
|
590
|
+
this.log.warn(`The actual module version cannot be persisted: ${e.message}`);
|
|
612
591
|
}
|
|
592
|
+
return;
|
|
613
593
|
}
|
|
614
594
|
|
|
615
|
-
let recentModuleVersion = await boxItem.read();
|
|
616
595
|
try {
|
|
617
596
|
recentModuleVersion = util.coerceVersion(recentModuleVersion, true);
|
|
618
597
|
} catch (e: any) {
|
|
@@ -625,14 +604,14 @@ export class WebDriverAgent {
|
|
|
625
604
|
if (util.compareVersions(recentModuleVersion, '>=', packageInfo.version)) {
|
|
626
605
|
this.log.info(
|
|
627
606
|
`WebDriverAgent does not need a cleanup. The project sources are up to date ` +
|
|
628
|
-
|
|
607
|
+
`(${recentModuleVersion} >= ${packageInfo.version})`,
|
|
629
608
|
);
|
|
630
609
|
return;
|
|
631
610
|
}
|
|
632
611
|
|
|
633
612
|
this.log.info(
|
|
634
613
|
`Cleaning up the WebDriverAgent project after the module upgrade has happened ` +
|
|
635
|
-
|
|
614
|
+
`(${recentModuleVersion} < ${packageInfo.version})`,
|
|
636
615
|
);
|
|
637
616
|
try {
|
|
638
617
|
await this.xcodebuild.cleanProject();
|
|
@@ -641,75 +620,4 @@ export class WebDriverAgent {
|
|
|
641
620
|
this.log.warn(`Cannot perform WebDriverAgent project cleanup. Original error: ${e.message}`);
|
|
642
621
|
}
|
|
643
622
|
}
|
|
644
|
-
|
|
645
|
-
/**
|
|
646
|
-
* Launch WDA with preinstalled package with 'xcrun devicectl device process launch'.
|
|
647
|
-
* The WDA package must be prepared properly like published via
|
|
648
|
-
* https://github.com/appium/WebDriverAgent/releases
|
|
649
|
-
* with proper sign for this case.
|
|
650
|
-
*
|
|
651
|
-
* When we implement launching XCTest service via appium-ios-device,
|
|
652
|
-
* this implementation can be replaced with it.
|
|
653
|
-
*
|
|
654
|
-
* @param opts launching WDA with devicectl command options.
|
|
655
|
-
*/
|
|
656
|
-
private async _launchViaDevicectl(opts: {env?: Record<string, string | number>} = {}): Promise<void> {
|
|
657
|
-
const {env} = opts;
|
|
658
|
-
|
|
659
|
-
await this.device.devicectl.launchApp(
|
|
660
|
-
this.bundleIdForXctest, { env, terminateExisting: true }
|
|
661
|
-
);
|
|
662
|
-
}
|
|
663
|
-
|
|
664
|
-
/**
|
|
665
|
-
* Launch WDA with preinstalled package without xcodebuild.
|
|
666
|
-
* @param sessionId Launch WDA and establish the session with this sessionId
|
|
667
|
-
*/
|
|
668
|
-
private async launchWithPreinstalledWDA(sessionId: string): Promise<StringRecord | null> {
|
|
669
|
-
const xctestEnv: Record<string, string | number> = {
|
|
670
|
-
USE_PORT: this.wdaLocalPort || WDA_AGENT_PORT,
|
|
671
|
-
WDA_PRODUCT_BUNDLE_IDENTIFIER: this.bundleIdForXctest
|
|
672
|
-
};
|
|
673
|
-
if (this.mjpegServerPort) {
|
|
674
|
-
xctestEnv.MJPEG_SERVER_PORT = this.mjpegServerPort;
|
|
675
|
-
}
|
|
676
|
-
if (this.wdaBindingIP) {
|
|
677
|
-
xctestEnv.USE_IP = this.wdaBindingIP;
|
|
678
|
-
}
|
|
679
|
-
this.log.info('Launching WebDriverAgent on the device without xcodebuild');
|
|
680
|
-
if (this.isRealDevice) {
|
|
681
|
-
// Current method to launch WDA process can be done via 'xcrun devicectl',
|
|
682
|
-
// but it has limitation about the WDA preinstalled package.
|
|
683
|
-
// https://github.com/appium/appium/issues/19206#issuecomment-2014182674
|
|
684
|
-
if (this.platformVersion && util.compareVersions(this.platformVersion, '>=', '17.0')) {
|
|
685
|
-
await this._launchViaDevicectl({env: xctestEnv});
|
|
686
|
-
} else {
|
|
687
|
-
this.xctestApiClient = new Xctest(this.device.udid, this.bundleIdForXctest, null, {env: xctestEnv});
|
|
688
|
-
await this.xctestApiClient.start();
|
|
689
|
-
}
|
|
690
|
-
} else {
|
|
691
|
-
await this.device.simctl.exec('launch', {
|
|
692
|
-
args: [
|
|
693
|
-
'--terminate-running-process',
|
|
694
|
-
this.device.udid,
|
|
695
|
-
this.bundleIdForXctest,
|
|
696
|
-
],
|
|
697
|
-
env: xctestEnv,
|
|
698
|
-
});
|
|
699
|
-
}
|
|
700
|
-
|
|
701
|
-
this.setupProxies(sessionId);
|
|
702
|
-
let status: StringRecord | null;
|
|
703
|
-
try {
|
|
704
|
-
status = await this.getStatus(this.wdaLaunchTimeout);
|
|
705
|
-
} catch {
|
|
706
|
-
throw new Error(
|
|
707
|
-
`Failed to start the preinstalled WebDriverAgent in ${this.wdaLaunchTimeout} ms. ` +
|
|
708
|
-
`The WebDriverAgent might not be properly built or the device might be locked. ` +
|
|
709
|
-
`The 'appium:wdaLaunchTimeout' capability modifies the timeout.`
|
|
710
|
-
);
|
|
711
|
-
}
|
|
712
|
-
this.started = true;
|
|
713
|
-
return status;
|
|
714
|
-
}
|
|
715
623
|
}
|