appium-espresso-driver 1.46.0
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/CHANGELOG.md +23 -0
- package/LICENSE +201 -0
- package/README.md +864 -0
- package/build/index.js +48 -0
- package/build/lib/commands/execute.js +67 -0
- package/build/lib/commands/general.js +337 -0
- package/build/lib/commands/idling-resources.js +31 -0
- package/build/lib/commands/index.js +26 -0
- package/build/lib/commands/services.js +27 -0
- package/build/lib/desired-caps.js +65 -0
- package/build/lib/driver.js +475 -0
- package/build/lib/espresso-runner.js +381 -0
- package/build/lib/logger.js +18 -0
- package/build/lib/server-builder.js +213 -0
- package/build/lib/server.js +39 -0
- package/build/lib/utils.js +85 -0
- package/espresso-server/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk +0 -0
- package/espresso-server/app/build/outputs/apk/androidTest/debug/output-metadata.json +18 -0
- package/espresso-server/app/build.gradle.kts +153 -0
- package/espresso-server/app/proguard-rules.pro +25 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/EspressoServerRunnerTest.kt +93 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/drivers/AppDriver.kt +29 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/drivers/ComposeDriver.kt +73 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/drivers/DriverContext.kt +35 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/drivers/EspressoDriver.kt +70 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/AcceptAlert.kt +32 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Back.kt +31 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Clear.kt +40 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Click.kt +27 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/CreateSession.kt +58 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/DeleteSession.kt +33 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/DismissAlert.kt +32 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/DrawerActionHandler.kt +45 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ElementEquals.kt +19 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ElementScreenshot.kt +31 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ElementValue.kt +85 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/FindActive.kt +32 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/FindElement.kt +29 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/FindElements.kt +43 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetAlertText.kt +31 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetAttribute.kt +101 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetClipboard.kt +65 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetDeviceInfo.kt +44 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetDisplayed.kt +28 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetEnabled.kt +30 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetLocation.kt +32 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetLocationInView.kt +33 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetName.kt +31 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetOrientation.kt +44 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetRect.kt +38 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetRotation.kt +33 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetSelected.kt +30 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetSession.kt +34 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetSessions.kt +41 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetSettings.kt +25 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetSize.kt +32 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetToastVisibility.kt +34 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetWindowRect.kt +43 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetWindowSize.kt +42 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/HideKeyboard.kt +29 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Keys.kt +82 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ListIdlingResources.kt +30 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/MobileBackdoor.kt +42 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/MobileClickAction.kt +49 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/MobileSwipe.kt +71 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/MobileViewFlash.kt +50 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/MoveTo.kt +50 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/MultiTouchAction.kt +50 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/NavigateTo.kt +42 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/NoSessionCommandHandler.kt +4 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/NotYetImplemented.kt +28 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/OpenNotifications.kt +28 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/PerformAction.kt +42 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/PerformAutofillDismissal.kt +31 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/PerformEditorAction.kt +30 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/PointerEventHandler.kt +281 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/PressKeyCode.kt +90 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/RegisterIdlingResources.kt +33 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ReleaseActions.kt +41 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/RequestHandler.kt +43 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ScreenshotHandler.kt +29 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ScrollToPage.kt +60 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/SetClipboard.kt +64 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/SetDate.kt +41 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/SetOrientation.kt +61 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/SetRotation.kt +46 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/SetTime.kt +41 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Source.kt +29 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/StartActivity.kt +30 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/StartService.kt +40 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Status.kt +26 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/StopService.kt +37 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Text.kt +28 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/TouchAction.kt +49 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Uiautomator.kt +68 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/UiautomatorPageSource.kt +35 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/UnregisterIdlingResources.kt +33 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/UpdateSettings.kt +35 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/WebAtoms.kt +69 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/AppiumException.kt +40 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/DuplicateRouteException.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/ElementNotVisibleException.kt +30 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/InvalidArgumentException.kt +35 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/InvalidElementStateException.kt +41 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/InvalidSelectorException.kt +35 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/MoveTargetOutOfBoundsException.kt +39 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/NoAlertOpenException.kt +33 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/NoSuchDriverException.kt +31 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/NoSuchElementException.kt +34 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/NotYetImplementedException.kt +33 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/ScreenCaptureException.kt +30 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/SessionNotCreatedException.kt +34 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/StaleElementException.kt +30 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/XPathLookupException.kt +31 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/AccessibilityServiceState.kt +15 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ActivityHelpers.kt +125 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ActivityOptionsHelpers.kt +60 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/AlertHelpers.kt +170 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/AndroidLogger.kt +45 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/AssertHelpers.kt +17 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/AutofillHelpers.kt +44 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/BackdoorUtils.java +49 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ClipboardHelper.kt +51 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ComposeNodeFinder.kt +59 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/DeviceInfoHelper.kt +148 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/EspressoViewsCache.kt +57 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/GsonParserHelpers.kt +72 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/IMEHelpers.kt +88 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/IntentHelpers.kt +336 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/InteractionHelper.kt +40 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/InvocationOperation.java +80 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/LocaleHelpers.kt +46 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/Logger.kt +25 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/NotificationListener.kt +87 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/Rect.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ReflectionUtils.kt +64 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ScreenshotsHelper.kt +59 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/StringHelpers.kt +42 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ThreadHelpers.kt +15 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/UiAutomationWrapper.kt +48 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ViewFinder.kt +316 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/XMLHelpers.kt +56 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/extensions/Semaphore.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/reflection/ArrayUtils.java +110 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/reflection/ClassUtils.java +180 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/reflection/MethodUtils.java +155 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/reflection/Validate.java +34 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/BaseW3CActionAdapter.kt +71 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/DummyW3CActionAdapter.kt +133 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/W3CActionAdapter.kt +71 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/AndroidKeyEvent.kt +271 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/AndroidMotionEvent.kt +90 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/EspressoW3CActionAdapter.kt +147 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/Helpers.kt +71 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/MotionEventBuilder.kt +153 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/MultiTouchState.kt +132 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/TouchState.kt +7 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/caps/CapsUtils.kt +96 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/BaseDispatchResult.kt +14 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/DispatchPointerMoveResult.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/KeyDispatch.kt +151 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/PointerDispatch.kt +286 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/W3CKeyEvent.kt +21 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/constants/KeyCodeMapper.kt +169 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/constants/KeyLocationMapper.kt +50 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/constants/KeyNormalizer.kt +84 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/constants/NormalizedKeys.kt +60 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/ActionObject.kt +138 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/ActionSequence.kt +112 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/Actions.kt +89 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/InputSource.kt +173 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/Origin.kt +24 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/OriginDeserializer.kt +25 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/Tick.kt +62 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/processor/ActionsProcessor.kt +93 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/processor/KeyProcessor.kt +57 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/processor/PauseProcessor.kt +59 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/processor/PointerProcessor.kt +115 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/processor/ProcessorHelpers.kt +35 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/state/ActiveInputSources.kt +62 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/state/InputState.kt +6 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/state/InputStateTable.kt +95 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/state/KeyInputState.kt +82 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/state/PointerInputState.kt +45 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/http/RouteDefinition.kt +67 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/http/RouteMap.kt +51 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/http/Router.kt +250 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/http/Server.kt +109 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/http/response/AppiumResponse.kt +61 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/http/response/BaseResponse.kt +25 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/AlertParams.kt +21 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/AppiumParams.kt +55 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/BackdoorMethodArg.kt +3 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ClipboardDataType.kt +18 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/DrawerActionParams.kt +21 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/EditorActionParams.kt +21 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/Element.kt +169 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/GetClipboardParams.kt +27 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/GlobalSession.kt +64 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/HamcrestMatcher.kt +144 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/IdlingResourcesParams.kt +66 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/KeyEventParams.kt +23 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/LocaleParams.kt +34 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/Location.kt +19 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/Locator.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MatcherJson.kt +37 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MobileBackdoorMethod.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MobileBackdoorParams.kt +20 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MobileClickActionParams.kt +81 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MobileSwipeParams.kt +106 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MotionEventParams.kt +37 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MoveToParams.kt +26 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MultiTouchActionsParams.kt +5 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/NavigateToParams.kt +21 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/OrientationParams.kt +21 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/OrientationType.kt +6 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/Rect.kt +24 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/RotationParams.kt +38 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ScrollToPageParams.kt +36 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/SessionParams.kt +23 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/SetClipboardParams.kt +29 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/SetDateParams.kt +23 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/SetTimeParams.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/SettingsParams.kt +19 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/Size.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/SourceDocument.kt +286 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/StartActivityParams.kt +9 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/StartServiceParams.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/StopServiceParams.kt +21 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/Strategy.kt +49 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/TextValueParams.kt +6 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ToastLookupParams.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/TouchAction.kt +178 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/TouchActionsParams.kt +5 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/UiautomatorParams.kt +123 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ViewAttributesEnum.kt +51 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ViewElement.kt +204 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ViewFlashParams.kt +9 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ViewText.kt +12 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/WindowRect.kt +24 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/WindowSize.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/settings/AbstractSetting.kt +23 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/settings/DriverSetting.kt +40 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/settings/SettingType.kt +21 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/web/WebAtom.kt +26 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/web/WebAtomDeserializer.kt +99 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/web/WebAtomsMethods.kt +4 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/web/WebAtomsParams.kt +9 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewaction/OrientationChange.kt +47 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewaction/ScrollTo.kt +48 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewaction/UiControllerPerformer.kt +67 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewaction/UiControllerRunnable.kt +25 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewaction/ViewGetter.kt +79 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewaction/ViewTextGetter.kt +31 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewmatcher/RegexpTextMatcher.kt +38 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewmatcher/WithView.kt +33 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewmatcher/WithXPath.kt +55 -0
- package/espresso-server/app/src/main/AndroidManifest.xml +7 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/assets/Helpers.kt +20 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/assets/backdoor-methods.json +51 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/assets/key-actions.json +15 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/assets/multi-touch-actions.json +28 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/GsonParserHelpersTest.kt +41 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/IntentCreationTests.kt +115 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/InvocationOperationTest.java +97 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/KReflectionUtilsTest.kt +108 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/XpathQueryParserTests.kt +42 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/ActionSequenceTest.kt +220 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/ActionsTest.kt +76 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/CapsUtilsTest.kt +76 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/Helpers.kt +7 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/InputSourceTest.kt +153 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/InputStateTableTest.kt +72 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/KeyDispatchTest.kt +133 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/KeyInputStateTest.kt +74 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/PointerDispatchTest.kt +370 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/ProcessorTest.kt +320 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/TickTest.kt +265 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/adapter/AndroidKeyEventTest.kt +114 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/adapter/HelpersTest.kt +31 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/http/RouteDefinitionTest.kt +74 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/HamcrestMatcherTest.kt +112 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/MatcherJsonTest.kt +20 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/MobileBackdoorMethodTest.java +110 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/MobileClickTest.kt +46 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/MobileSwipeTest.kt +68 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/TouchActionTest.kt +56 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/web/WebAtomTest.kt +68 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/web/WebAtomsTest.kt +96 -0
- package/espresso-server/build.gradle.kts +33 -0
- package/espresso-server/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/espresso-server/gradle/wrapper/gradle-wrapper.properties +5 -0
- package/espresso-server/gradle.properties +26 -0
- package/espresso-server/gradlew +185 -0
- package/espresso-server/gradlew.bat +89 -0
- package/espresso-server/lint.xml +4 -0
- package/espresso-server/settings.gradle.kts +1 -0
- package/index.js +29 -0
- package/lib/commands/execute.js +72 -0
- package/lib/commands/general.js +321 -0
- package/lib/commands/idling-resources.js +52 -0
- package/lib/commands/index.js +16 -0
- package/lib/commands/services.js +50 -0
- package/lib/desired-caps.js +55 -0
- package/lib/driver.js +566 -0
- package/lib/espresso-runner.js +340 -0
- package/lib/logger.js +6 -0
- package/lib/server-builder.js +194 -0
- package/lib/server.js +18 -0
- package/lib/utils.js +74 -0
- package/package.json +105 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
* you may not use this file except in compliance with the License.
|
|
4
|
+
* See the NOTICE file distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
package io.appium.espressoserver.test.helpers
|
|
18
|
+
|
|
19
|
+
import android.content.Intent
|
|
20
|
+
import io.appium.espressoserver.lib.helpers.makeIntent
|
|
21
|
+
import org.junit.Test
|
|
22
|
+
import org.junit.runner.RunWith
|
|
23
|
+
import org.robolectric.RobolectricTestRunner
|
|
24
|
+
import java.lang.Exception
|
|
25
|
+
import kotlin.test.assertEquals
|
|
26
|
+
import kotlin.test.assertTrue
|
|
27
|
+
|
|
28
|
+
@RunWith(RobolectricTestRunner::class)
|
|
29
|
+
class `Intent Creation Tests` {
|
|
30
|
+
|
|
31
|
+
@Test(expected = Exception::class)
|
|
32
|
+
fun `should throw if none of the required options have been provided`(){
|
|
33
|
+
makeIntent(null, mapOf())
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@Test(expected = Exception::class)
|
|
37
|
+
fun `should throw if an invalid option name as been provided`(){
|
|
38
|
+
makeIntent(null, mapOf(
|
|
39
|
+
"foo" to "bar"
|
|
40
|
+
))
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@Test
|
|
44
|
+
fun `should create intent if options were set properly`(){
|
|
45
|
+
assertEquals(makeIntent(null, mapOf(
|
|
46
|
+
"action" to "io.appium.espresso"
|
|
47
|
+
)).action, "io.appium.espresso")
|
|
48
|
+
|
|
49
|
+
assertEquals(makeIntent(null, mapOf(
|
|
50
|
+
"data" to "content://contacts/people/1"
|
|
51
|
+
)).data!!.toString(), "content://contacts/people/1")
|
|
52
|
+
|
|
53
|
+
assertEquals(makeIntent(null, mapOf(
|
|
54
|
+
"type" to "image/png"
|
|
55
|
+
)).type!!.toString(), "image/png")
|
|
56
|
+
|
|
57
|
+
assertEquals(makeIntent(null, mapOf(
|
|
58
|
+
"categories" to "android.intent.category.APP_CONTACTS, android.intent.category.DEFAULT"
|
|
59
|
+
)).categories.size, 2)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
@Test
|
|
63
|
+
fun `should create intent with valid intFlags`(){
|
|
64
|
+
assertEquals(makeIntent(null, mapOf(
|
|
65
|
+
"action" to "io.appium.espresso",
|
|
66
|
+
"intFlags" to "0x0F"
|
|
67
|
+
)).flags, 0x0F)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@Test
|
|
71
|
+
fun `should create intent with valid flags`(){
|
|
72
|
+
assertEquals(makeIntent(null, mapOf(
|
|
73
|
+
"action" to "io.appium.espresso",
|
|
74
|
+
"flags" to "GRANT_READ_URI_PERMISSION, FLAG_EXCLUDE_STOPPED_PACKAGES"
|
|
75
|
+
)).flags, Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_EXCLUDE_STOPPED_PACKAGES)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
@Test
|
|
79
|
+
fun `should create intent with valid single extra args`(){
|
|
80
|
+
val intent = makeIntent(null, mapOf(
|
|
81
|
+
"action" to "io.appium.espresso",
|
|
82
|
+
"e" to mapOf(
|
|
83
|
+
"bar" to "baz",
|
|
84
|
+
"bar5" to "baz5"
|
|
85
|
+
),
|
|
86
|
+
"es" to mapOf("bar2" to "baz2"),
|
|
87
|
+
"ei" to mapOf("int1" to 2L),
|
|
88
|
+
"ez" to mapOf("bool1" to true),
|
|
89
|
+
"el" to mapOf("long1" to 1L),
|
|
90
|
+
"ef" to mapOf("float1" to 1.1)
|
|
91
|
+
))
|
|
92
|
+
val extras = intent.extras!!
|
|
93
|
+
assertEquals(extras.get("bar"), "baz")
|
|
94
|
+
assertEquals(extras.get("bar5"), "baz5")
|
|
95
|
+
assertEquals(extras.get("bar2"), "baz2")
|
|
96
|
+
assertEquals(extras.getInt("int1"), 2)
|
|
97
|
+
assertEquals(extras.getBoolean("bool1"), true)
|
|
98
|
+
assertEquals(extras.getLong("long1"), 1L)
|
|
99
|
+
assertTrue(extras.getFloat("float1") > 1.0)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
@Test
|
|
103
|
+
fun `should create intent with valid array extra args`(){
|
|
104
|
+
val intent = makeIntent(null, mapOf<String, Any>(
|
|
105
|
+
"action" to "io.appium.espresso",
|
|
106
|
+
"eia" to mapOf("intarr" to "1,2, 3"),
|
|
107
|
+
"ela" to mapOf("longarr" to "4, 5, 6"),
|
|
108
|
+
"efa" to mapOf("floatarr" to "1.1, 2.2")
|
|
109
|
+
))
|
|
110
|
+
val extras = intent.extras!!
|
|
111
|
+
assertTrue(extras.getIntArray("intarr")!!.size == 3)
|
|
112
|
+
assertTrue(extras.getLongArray("longarr")!!.size == 3)
|
|
113
|
+
assertTrue(extras.getFloatArray("floatarr")!!.size == 2)
|
|
114
|
+
}
|
|
115
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
package io.appium.espressoserver.test.helpers;
|
|
2
|
+
|
|
3
|
+
import org.junit.Before;
|
|
4
|
+
import org.junit.Test;
|
|
5
|
+
|
|
6
|
+
import java.util.concurrent.Executor;
|
|
7
|
+
|
|
8
|
+
import androidx.annotation.NonNull;
|
|
9
|
+
|
|
10
|
+
import io.appium.espressoserver.lib.handlers.exceptions.AppiumException;
|
|
11
|
+
import io.appium.espressoserver.lib.helpers.InvocationOperation;
|
|
12
|
+
|
|
13
|
+
import static org.junit.Assert.assertEquals;
|
|
14
|
+
|
|
15
|
+
public class InvocationOperationTest {
|
|
16
|
+
|
|
17
|
+
private Executor mainThreadExecutor;
|
|
18
|
+
private DummyBackdoorSubject invokeOn;
|
|
19
|
+
|
|
20
|
+
@Before
|
|
21
|
+
public void setUp() {
|
|
22
|
+
mainThreadExecutor = new Executor() {
|
|
23
|
+
@Override
|
|
24
|
+
public void execute(@NonNull Runnable runnable) {
|
|
25
|
+
runnable.run();
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
invokeOn = new DummyBackdoorSubject();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@Test
|
|
32
|
+
public void shouldReturnValidResults() throws Exception {
|
|
33
|
+
InvocationOperation operation = new InvocationOperation("validMethod",
|
|
34
|
+
new Object[]{}, new Class[0], mainThreadExecutor);
|
|
35
|
+
Object result = operation.apply(invokeOn);
|
|
36
|
+
assertEquals(DummyBackdoorSubject.RETURN_VALUE, result);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@Test
|
|
40
|
+
public void shouldReturnVoidIfReturnTypeIsVoid() throws Exception {
|
|
41
|
+
InvocationOperation operation = new InvocationOperation("voidReturn",
|
|
42
|
+
new Object[0], new Class[0], mainThreadExecutor);
|
|
43
|
+
Object result = operation.apply(invokeOn);
|
|
44
|
+
assertEquals(InvocationOperation.VOID, result);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@Test(expected = AppiumException.class)
|
|
48
|
+
public void shouldThrowExceptionIfMethodNotFound() throws Exception {
|
|
49
|
+
String nonExistent = "nonExistent";
|
|
50
|
+
InvocationOperation operation = new InvocationOperation(nonExistent,
|
|
51
|
+
new Object[0], new Class[0], mainThreadExecutor);
|
|
52
|
+
operation.apply(invokeOn);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
@Test
|
|
56
|
+
public void shouldBeAbleToChainMethods() throws Exception {
|
|
57
|
+
InvocationOperation operation1 = new InvocationOperation("geObjectWithValue",
|
|
58
|
+
new Object[]{45}, new Class[]{int.class}, mainThreadExecutor);
|
|
59
|
+
|
|
60
|
+
InvocationOperation operation2 = new InvocationOperation("getTestValue",
|
|
61
|
+
new Object[0], new Class[0], mainThreadExecutor);
|
|
62
|
+
|
|
63
|
+
Object result = operation2.apply(operation1.apply(invokeOn));
|
|
64
|
+
|
|
65
|
+
assertEquals(45, result);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
public static class DummyBackdoorSubject {
|
|
70
|
+
public static final String RETURN_VALUE = "LOL";
|
|
71
|
+
|
|
72
|
+
private int testValue;
|
|
73
|
+
|
|
74
|
+
@SuppressWarnings("unused")
|
|
75
|
+
public void voidReturn() {
|
|
76
|
+
// to test void return type
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@SuppressWarnings("unused")
|
|
80
|
+
public Object validMethod() {
|
|
81
|
+
return RETURN_VALUE;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
@SuppressWarnings("unused")
|
|
86
|
+
public Object geObjectWithValue(int testValue) {
|
|
87
|
+
this.testValue = testValue;
|
|
88
|
+
return this;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
@SuppressWarnings("unused")
|
|
92
|
+
public int getTestValue() {
|
|
93
|
+
return testValue;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
}
|
|
97
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
package io.appium.espressoserver.test.helpers
|
|
2
|
+
|
|
3
|
+
import androidx.test.espresso.web.model.Atom
|
|
4
|
+
import androidx.test.espresso.web.webdriver.DriverAtoms
|
|
5
|
+
import androidx.test.espresso.web.webdriver.Locator
|
|
6
|
+
import io.appium.espressoserver.lib.helpers.ReflectionUtils
|
|
7
|
+
import io.appium.espressoserver.lib.helpers.ReflectionUtils.invokeStaticMethod
|
|
8
|
+
import org.hamcrest.Matcher
|
|
9
|
+
import org.hamcrest.Matchers
|
|
10
|
+
import org.junit.Test
|
|
11
|
+
import org.junit.runner.RunWith
|
|
12
|
+
import org.robolectric.RobolectricTestRunner
|
|
13
|
+
import kotlin.test.assertEquals
|
|
14
|
+
import kotlin.test.assertFalse
|
|
15
|
+
import kotlin.test.assertNotNull
|
|
16
|
+
import kotlin.test.assertTrue
|
|
17
|
+
|
|
18
|
+
@RunWith(RobolectricTestRunner::class)
|
|
19
|
+
class `KReflectionUtils Test` {
|
|
20
|
+
|
|
21
|
+
@Test
|
|
22
|
+
fun `"invokeMethod" should find methods specific to parameters provided and call it`(){
|
|
23
|
+
val obj = TestClass()
|
|
24
|
+
|
|
25
|
+
var methodResult = ReflectionUtils.invokeInstanceMethod(obj, "plus", null, 1)
|
|
26
|
+
assertTrue(methodResult is String)
|
|
27
|
+
assertEquals(methodResult, "1")
|
|
28
|
+
|
|
29
|
+
methodResult = ReflectionUtils.invokeInstanceMethod(obj, "plus", DumbEnum.A, 1)
|
|
30
|
+
assertTrue(methodResult is String)
|
|
31
|
+
assertEquals(methodResult, "A1")
|
|
32
|
+
|
|
33
|
+
methodResult = ReflectionUtils.invokeInstanceMethod(obj, "plus", 1, 2)
|
|
34
|
+
assertTrue(methodResult is Number)
|
|
35
|
+
assertEquals(methodResult, 3)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@Test
|
|
39
|
+
fun `"invokeInstanceMethod" should extract method of an object`() {
|
|
40
|
+
val methodResult = ReflectionUtils.extractMethod(TestClass::class.java, "plus", Int::class.java, Int::class.java)
|
|
41
|
+
assertNotNull(methodResult)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@Test
|
|
45
|
+
fun `"invokeInstanceMethod" should invoke method on instance of an object`() {
|
|
46
|
+
val obj = TestClass()
|
|
47
|
+
val methodResult = ReflectionUtils.invokeInstanceMethod(obj, "plus", 2, 2)
|
|
48
|
+
assertTrue(methodResult is Number)
|
|
49
|
+
assertEquals(methodResult, 4)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
@Test(expected = Exception::class)
|
|
53
|
+
fun `should fail with AppiumException if wrong invocation`() {
|
|
54
|
+
val obj = TestClass()
|
|
55
|
+
invokeStaticMethod(TestClass::class.java, "plus", obj, "A", "B")
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@Test
|
|
59
|
+
fun `should parse Driver Atoms "findElement"`() {
|
|
60
|
+
val findElementAtom = invokeStaticMethod(DriverAtoms::class.java,
|
|
61
|
+
"findElement", Locator.ID, "some Identifier")
|
|
62
|
+
assertTrue(findElementAtom is Atom<*>)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@Test
|
|
66
|
+
fun `should parse Hamcrest 'instanceOf' matcher with className`() {
|
|
67
|
+
arrayOf("java.lang.String")
|
|
68
|
+
.forEach {className ->
|
|
69
|
+
val hamcrestMatcher = invokeStaticMethod(Matchers::class.java,
|
|
70
|
+
"instanceOf", Class.forName(className))
|
|
71
|
+
assertTrue(hamcrestMatcher is Matcher<*>)
|
|
72
|
+
assertTrue(hamcrestMatcher.matches("Hello World"))
|
|
73
|
+
assertFalse(hamcrestMatcher.matches(123))
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
@Test
|
|
78
|
+
fun `should extract declared properties from an instance`() {
|
|
79
|
+
data class TestData(val appPackage:String, val appActivity:String)
|
|
80
|
+
val sessionParams = TestData("appPackage", "appActivity")
|
|
81
|
+
val extractedProps = ReflectionUtils.extractDeclaredProperties(sessionParams)
|
|
82
|
+
assertEquals(extractedProps["appPackage"], "appPackage")
|
|
83
|
+
assertEquals(extractedProps["appActivity"], "appActivity")
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
class TestClass {
|
|
87
|
+
fun plus (numOne: Int, numTwo: Int):Number {
|
|
88
|
+
return numOne + numTwo
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
fun plus (num: Int):Number {
|
|
92
|
+
return num
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
fun plus (dumbEnum: DumbEnum?, num: Int): String {
|
|
96
|
+
return when (dumbEnum) {
|
|
97
|
+
DumbEnum.A -> "A$num"
|
|
98
|
+
DumbEnum.B -> "B$num"
|
|
99
|
+
DumbEnum.C -> "C$num"
|
|
100
|
+
else -> num.toString()
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
enum class DumbEnum {
|
|
106
|
+
A, B, C
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
* you may not use this file except in compliance with the License.
|
|
4
|
+
* See the NOTICE file distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
package io.appium.espressoserver.test.helpers
|
|
18
|
+
|
|
19
|
+
import io.appium.espressoserver.lib.model.ViewAttributesEnum
|
|
20
|
+
import io.appium.espressoserver.lib.viewmatcher.fetchIncludedAttributes
|
|
21
|
+
import org.junit.Test
|
|
22
|
+
import kotlin.test.assertEquals
|
|
23
|
+
import kotlin.test.assertNull
|
|
24
|
+
|
|
25
|
+
class `Xpath Query Parser Tests` {
|
|
26
|
+
|
|
27
|
+
@Test
|
|
28
|
+
fun `should parse attributes from query`() {
|
|
29
|
+
assertEquals(fetchIncludedAttributes("//*[@text=\"yolo\" and @enabled=\"true\"]"),
|
|
30
|
+
setOf(ViewAttributesEnum.TEXT, ViewAttributesEnum.ENABLED))
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@Test
|
|
34
|
+
fun `should include all attributes for a wildcard`() {
|
|
35
|
+
assertNull(fetchIncludedAttributes("//*[@*=\"yolo\"]"))
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@Test
|
|
39
|
+
fun `should include no attributes if the query has none`() {
|
|
40
|
+
assertEquals(fetchIncludedAttributes("//*[@foo=\"yolo\"]"), setOf())
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
package io.appium.espressoserver.test.helpers.w3c
|
|
2
|
+
|
|
3
|
+
import com.google.gson.Gson
|
|
4
|
+
|
|
5
|
+
import org.junit.Test
|
|
6
|
+
|
|
7
|
+
import java.io.IOException
|
|
8
|
+
import java.util.concurrent.ExecutionException
|
|
9
|
+
|
|
10
|
+
import io.appium.espressoserver.lib.handlers.exceptions.AppiumException
|
|
11
|
+
import io.appium.espressoserver.lib.handlers.exceptions.InvalidArgumentException
|
|
12
|
+
import io.appium.espressoserver.lib.handlers.exceptions.NotYetImplementedException
|
|
13
|
+
import io.appium.espressoserver.lib.helpers.w3c.adapter.DummyW3CActionAdapter
|
|
14
|
+
import io.appium.espressoserver.lib.helpers.w3c.models.*
|
|
15
|
+
import io.appium.espressoserver.lib.helpers.w3c.models.InputSource.ActionType
|
|
16
|
+
import io.appium.espressoserver.lib.helpers.w3c.models.InputSource.PointerType
|
|
17
|
+
import io.appium.espressoserver.lib.helpers.w3c.state.ActiveInputSources
|
|
18
|
+
import io.appium.espressoserver.lib.helpers.w3c.state.InputStateTable
|
|
19
|
+
import io.appium.espressoserver.lib.helpers.w3c.state.PointerInputState
|
|
20
|
+
|
|
21
|
+
import io.appium.espressoserver.lib.helpers.w3c.models.InputSource.ActionType.KEY_DOWN
|
|
22
|
+
import io.appium.espressoserver.lib.helpers.w3c.models.InputSource.ActionType.KEY_UP
|
|
23
|
+
import io.appium.espressoserver.lib.helpers.w3c.models.InputSource.ActionType.PAUSE
|
|
24
|
+
import io.appium.espressoserver.lib.helpers.w3c.models.InputSource.ActionType.POINTER_DOWN
|
|
25
|
+
import io.appium.espressoserver.lib.helpers.w3c.models.InputSource.ActionType.POINTER_MOVE
|
|
26
|
+
import io.appium.espressoserver.lib.helpers.w3c.models.InputSource.InputSourceType.KEY
|
|
27
|
+
import io.appium.espressoserver.lib.helpers.w3c.models.InputSource.InputSourceType.POINTER
|
|
28
|
+
import io.appium.espressoserver.test.assets.readAssetFile
|
|
29
|
+
import org.junit.Assert.*
|
|
30
|
+
|
|
31
|
+
class ActionSequenceTest {
|
|
32
|
+
|
|
33
|
+
@Test
|
|
34
|
+
@Throws(IOException::class, InvalidArgumentException::class, NotYetImplementedException::class)
|
|
35
|
+
fun shouldPullOutPointerActionsInW3CActions() {
|
|
36
|
+
val multiTouchJson = readAssetFile("multi-touch-actions.json")
|
|
37
|
+
val actions = Actions::class.java.cast(Gson().fromJson(multiTouchJson, Actions::class.java))
|
|
38
|
+
val actionSequence = ActionSequence(actions!!, ActiveInputSources(), InputStateTable())
|
|
39
|
+
|
|
40
|
+
// Tick #1 of 6
|
|
41
|
+
var tick = actionSequence.next()
|
|
42
|
+
var action = tick.next()
|
|
43
|
+
assertEquals(action.id, "finger1")
|
|
44
|
+
assertEquals(action.type, POINTER)
|
|
45
|
+
assertEquals(action.subType, POINTER_MOVE)
|
|
46
|
+
assertEquals(action.duration, 0f)
|
|
47
|
+
assertFloatEquals(action.x!!, 100f)
|
|
48
|
+
assertFloatEquals(action.y!!, 100f)
|
|
49
|
+
|
|
50
|
+
action = tick.next()
|
|
51
|
+
assertEquals(action.id, "finger2")
|
|
52
|
+
assertEquals(action.type, POINTER)
|
|
53
|
+
assertEquals(action.subType, POINTER_MOVE)
|
|
54
|
+
assertEquals(action.duration, 10f)
|
|
55
|
+
assertFloatEquals(action.x!!, 200f)
|
|
56
|
+
assertFloatEquals(action.y!!, 400f)
|
|
57
|
+
|
|
58
|
+
assertFalse(tick.hasNext())
|
|
59
|
+
|
|
60
|
+
// Tick #2 of 6
|
|
61
|
+
tick = actionSequence.next()
|
|
62
|
+
action = tick.next()
|
|
63
|
+
assertEquals(action.id, "finger1")
|
|
64
|
+
assertEquals(action.type, POINTER)
|
|
65
|
+
assertEquals(action.subType, POINTER_DOWN)
|
|
66
|
+
assertEquals(action.button.toLong(), 0)
|
|
67
|
+
|
|
68
|
+
action = tick.next()
|
|
69
|
+
assertEquals(action.id, "finger2")
|
|
70
|
+
assertEquals(action.type, POINTER)
|
|
71
|
+
assertEquals(action.subType, POINTER_DOWN)
|
|
72
|
+
assertEquals(action.button.toLong(), 0)
|
|
73
|
+
|
|
74
|
+
// Tick #3 of 6
|
|
75
|
+
tick = actionSequence.next()
|
|
76
|
+
action = tick.next()
|
|
77
|
+
assertEquals(action.id, "finger1")
|
|
78
|
+
assertEquals(action.type, POINTER)
|
|
79
|
+
assertEquals(action.subType, PAUSE)
|
|
80
|
+
assertEquals(action.button.toLong(), 0)
|
|
81
|
+
|
|
82
|
+
action = tick.next()
|
|
83
|
+
assertEquals(action.id, "finger2")
|
|
84
|
+
assertEquals(action.type, POINTER)
|
|
85
|
+
assertEquals(action.subType, PAUSE)
|
|
86
|
+
assertEquals(action.button.toLong(), 0)
|
|
87
|
+
|
|
88
|
+
assertFalse(tick.hasNext())
|
|
89
|
+
|
|
90
|
+
// Tick #4 of 6
|
|
91
|
+
tick = actionSequence.next()
|
|
92
|
+
action = tick.next()
|
|
93
|
+
assertEquals(action.id, "finger1")
|
|
94
|
+
assertEquals(action.type, POINTER)
|
|
95
|
+
assertEquals(action.subType, POINTER_MOVE)
|
|
96
|
+
assertEquals(action.duration, 1000f)
|
|
97
|
+
assertTrue(action.pointer == PointerType.TOUCH)
|
|
98
|
+
assertFloatEquals(action.x!!, 20f)
|
|
99
|
+
assertFloatEquals(action.y!!, 0f)
|
|
100
|
+
|
|
101
|
+
action = tick.next()
|
|
102
|
+
assertEquals(action.id, "finger2")
|
|
103
|
+
assertEquals(action.type, POINTER)
|
|
104
|
+
assertEquals(action.subType, POINTER_MOVE)
|
|
105
|
+
assertEquals(action.duration, 1000f)
|
|
106
|
+
assertEquals(action.origin.type, Origin.POINTER)
|
|
107
|
+
assertFloatEquals(action.x!!, 50f)
|
|
108
|
+
assertFloatEquals(action.y!!, 0f)
|
|
109
|
+
|
|
110
|
+
assertFalse(tick.hasNext())
|
|
111
|
+
|
|
112
|
+
// Tick #5 of 6
|
|
113
|
+
tick = actionSequence.next()
|
|
114
|
+
action = tick.next()
|
|
115
|
+
assertEquals(action.id, "finger1")
|
|
116
|
+
assertEquals(action.type, POINTER)
|
|
117
|
+
assertEquals(action.subType, ActionType.POINTER_UP)
|
|
118
|
+
assertEquals(action.button.toLong(), 0)
|
|
119
|
+
|
|
120
|
+
action = tick.next()
|
|
121
|
+
assertEquals(action.id, "finger2")
|
|
122
|
+
assertEquals(action.type, POINTER)
|
|
123
|
+
assertEquals(action.subType, ActionType.POINTER_UP)
|
|
124
|
+
assertEquals(action.button.toLong(), 0)
|
|
125
|
+
|
|
126
|
+
assertFalse(tick.hasNext())
|
|
127
|
+
|
|
128
|
+
// Tick #6 of 6
|
|
129
|
+
tick = actionSequence.next()
|
|
130
|
+
action = tick.next()
|
|
131
|
+
assertEquals(action.id, "finger2")
|
|
132
|
+
assertEquals(action.type, POINTER)
|
|
133
|
+
assertEquals(action.subType, PAUSE)
|
|
134
|
+
assertEquals(action.duration, 0f)
|
|
135
|
+
|
|
136
|
+
assertFalse(tick.hasNext())
|
|
137
|
+
assertFalse(actionSequence.hasNext())
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
@Test
|
|
142
|
+
@Throws(IOException::class, InvalidArgumentException::class, NotYetImplementedException::class)
|
|
143
|
+
fun shouldPullOutKeyActionsInW3CActions() {
|
|
144
|
+
val keyJson = readAssetFile("key-actions.json")
|
|
145
|
+
val actions = Actions::class.java.cast(Gson().fromJson(keyJson, Actions::class.java))
|
|
146
|
+
val actionSequence = ActionSequence(actions!!, ActiveInputSources(), InputStateTable())
|
|
147
|
+
|
|
148
|
+
var action: ActionObject
|
|
149
|
+
var tick: Tick
|
|
150
|
+
|
|
151
|
+
val unicodeChar = '\uE009'.toString()
|
|
152
|
+
|
|
153
|
+
val expectedSubTypes = arrayOf(KEY_DOWN, PAUSE, KEY_DOWN, KEY_UP, KEY_UP)
|
|
154
|
+
val expectedValue = arrayOf(unicodeChar, null, "s", unicodeChar, "s")
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
for (i in expectedSubTypes.indices) {
|
|
158
|
+
tick = actionSequence.next()
|
|
159
|
+
action = tick.next()
|
|
160
|
+
assertEquals(action.type, KEY)
|
|
161
|
+
assertEquals(action.subType, expectedSubTypes[i])
|
|
162
|
+
assertEquals(action.value, expectedValue[i])
|
|
163
|
+
assertEquals(action.id, "keyboard")
|
|
164
|
+
assertFalse(tick.hasNext())
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
assertFalse(actionSequence.hasNext())
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
@Test
|
|
171
|
+
@Throws(IOException::class, AppiumException::class, InterruptedException::class, ExecutionException::class)
|
|
172
|
+
fun shouldDispatchW3CPointerActions() {
|
|
173
|
+
class AlteredDummyAdapter : DummyW3CActionAdapter() {
|
|
174
|
+
override// Bump up viewport width so we don't get out of bounds issues
|
|
175
|
+
val viewportWidth: Long
|
|
176
|
+
get() = 251
|
|
177
|
+
|
|
178
|
+
override val viewportHeight: Long
|
|
179
|
+
get() = 401
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
val inputStateTable = InputStateTable()
|
|
183
|
+
val multiTouchJson = readAssetFile("multi-touch-actions.json")
|
|
184
|
+
val actions = Actions::class.java.cast(Gson().fromJson(multiTouchJson, Actions::class.java))
|
|
185
|
+
val actionSequence = ActionSequence(actions!!, ActiveInputSources(), InputStateTable())
|
|
186
|
+
|
|
187
|
+
val timeBefore = System.currentTimeMillis()
|
|
188
|
+
actionSequence.dispatch(AlteredDummyAdapter(), inputStateTable)
|
|
189
|
+
val elapsedTime = System.currentTimeMillis() - timeBefore
|
|
190
|
+
|
|
191
|
+
// Must be greater than 2s because that's the total duration
|
|
192
|
+
assertTrue(elapsedTime >= 2000)
|
|
193
|
+
|
|
194
|
+
// Check that it's under 2.5s though to verify that it's not TOO long
|
|
195
|
+
assertTrue(elapsedTime < 2500)
|
|
196
|
+
|
|
197
|
+
val finger1State = inputStateTable.getInputState("finger1") as PointerInputState
|
|
198
|
+
val finger2State = inputStateTable.getInputState("finger2") as PointerInputState
|
|
199
|
+
|
|
200
|
+
assertFloatEquals(finger1State.x, 120f)
|
|
201
|
+
assertFloatEquals(finger1State.y, 100f)
|
|
202
|
+
assertFloatEquals(finger2State.x, 250f)
|
|
203
|
+
assertFloatEquals(finger2State.y, 400f)
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
@Test
|
|
207
|
+
@Throws(IOException::class, AppiumException::class, InterruptedException::class, ExecutionException::class)
|
|
208
|
+
fun shouldDispatchW3CKeyActions() {
|
|
209
|
+
val inputStateTable = InputStateTable()
|
|
210
|
+
val multiTouchJson = readAssetFile("key-actions.json")
|
|
211
|
+
val actions = Actions::class.java.cast(Gson().fromJson(multiTouchJson, Actions::class.java))
|
|
212
|
+
val actionSequence = ActionSequence(actions!!, ActiveInputSources(), InputStateTable())
|
|
213
|
+
|
|
214
|
+
val timeBefore = System.currentTimeMillis()
|
|
215
|
+
actionSequence.dispatch(DummyW3CActionAdapter(), inputStateTable)
|
|
216
|
+
val elapsedTime = System.currentTimeMillis() - timeBefore
|
|
217
|
+
assertTrue(elapsedTime >= 500)
|
|
218
|
+
assertTrue(elapsedTime <= 600)
|
|
219
|
+
}
|
|
220
|
+
}
|
package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/ActionsTest.kt
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
package io.appium.espressoserver.test.helpers.w3c
|
|
2
|
+
|
|
3
|
+
import com.google.gson.Gson
|
|
4
|
+
import io.appium.espressoserver.lib.handlers.exceptions.AppiumException
|
|
5
|
+
import io.appium.espressoserver.lib.helpers.w3c.adapter.DummyW3CActionAdapter
|
|
6
|
+
import io.appium.espressoserver.lib.helpers.w3c.models.Actions
|
|
7
|
+
import io.appium.espressoserver.lib.helpers.w3c.state.InputStateTable
|
|
8
|
+
import io.appium.espressoserver.lib.helpers.w3c.state.KeyInputState
|
|
9
|
+
import io.appium.espressoserver.lib.helpers.w3c.state.PointerInputState
|
|
10
|
+
import io.appium.espressoserver.test.assets.readAssetFile
|
|
11
|
+
import junit.framework.TestCase
|
|
12
|
+
import org.junit.Assert
|
|
13
|
+
import org.junit.Test
|
|
14
|
+
import java.io.IOException
|
|
15
|
+
|
|
16
|
+
class ActionsTest {
|
|
17
|
+
internal class AlteredDummyAdapter : DummyW3CActionAdapter() {
|
|
18
|
+
// Bump up viewport width so we don't get out of bounds issues
|
|
19
|
+
override val viewportWidth: Long
|
|
20
|
+
get() =// Bump up viewport width so we don't get out of bounds issues
|
|
21
|
+
300
|
|
22
|
+
|
|
23
|
+
// Bump up viewport width so we don't get out of bounds issues
|
|
24
|
+
override val viewportHeight: Long
|
|
25
|
+
get() =// Bump up viewport width so we don't get out of bounds issues
|
|
26
|
+
500
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@Test
|
|
30
|
+
@Throws(IOException::class)
|
|
31
|
+
fun shouldThrowIfAdapterNotSet() {
|
|
32
|
+
val multiTouchJson = readAssetFile("multi-touch-actions.json")
|
|
33
|
+
val actions = Gson().fromJson(multiTouchJson, Actions::class.java)
|
|
34
|
+
try {
|
|
35
|
+
actions.perform("123")
|
|
36
|
+
} catch (e: AppiumException) {
|
|
37
|
+
TestCase.assertTrue(e.message!!.contains("Failed to initialize /actions adapter"))
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@Test
|
|
42
|
+
@Throws(IOException::class, AppiumException::class)
|
|
43
|
+
fun shouldPerformPointerActionsOnASetOfInputSources() {
|
|
44
|
+
val multiTouchJson = readAssetFile("multi-touch-actions.json")
|
|
45
|
+
val actions = Gson().fromJson(multiTouchJson, Actions::class.java)
|
|
46
|
+
actions.adapter = AlteredDummyAdapter()
|
|
47
|
+
val sessionId = "123"
|
|
48
|
+
actions.perform(sessionId)
|
|
49
|
+
val inputStateTable = InputStateTable.getInputStateTableOfSession(sessionId)
|
|
50
|
+
val finger1 = inputStateTable.getInputState("finger1") as PointerInputState
|
|
51
|
+
val finger2 = inputStateTable.getInputState("finger2") as PointerInputState
|
|
52
|
+
|
|
53
|
+
// Check the state
|
|
54
|
+
assertFloatEquals(finger1.x, 120f)
|
|
55
|
+
assertFloatEquals(finger1.y, 100f)
|
|
56
|
+
assertFloatEquals(finger2.x, 250f)
|
|
57
|
+
assertFloatEquals(finger2.y, 400f)
|
|
58
|
+
|
|
59
|
+
// Sanity check that it's recording pointer move events
|
|
60
|
+
val pointerMoveEvents = (actions.adapter as DummyW3CActionAdapter?)!!.getPointerMoveEvents()
|
|
61
|
+
TestCase.assertTrue(pointerMoveEvents.isNotEmpty())
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@Test
|
|
65
|
+
@Throws(IOException::class, AppiumException::class)
|
|
66
|
+
fun shouldPerformKeyActionsOnASetOfInputSources() {
|
|
67
|
+
val keyJson = readAssetFile("key-actions.json")
|
|
68
|
+
val actions = Gson().fromJson(keyJson, Actions::class.java)
|
|
69
|
+
actions.adapter = AlteredDummyAdapter()
|
|
70
|
+
val sessionId = "123"
|
|
71
|
+
actions.perform(sessionId)
|
|
72
|
+
val inputStateTable = InputStateTable.getInputStateTableOfSession(sessionId)
|
|
73
|
+
val keyboard = inputStateTable.getInputState("keyboard") as KeyInputState
|
|
74
|
+
Assert.assertFalse(keyboard.isPressed("\\uE009"))
|
|
75
|
+
}
|
|
76
|
+
}
|