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,123 @@
|
|
|
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.lib.model
|
|
18
|
+
|
|
19
|
+
import com.google.gson.annotations.SerializedName
|
|
20
|
+
|
|
21
|
+
class UiautomatorParams : AppiumParams() {
|
|
22
|
+
val strategy: Strategy? = null
|
|
23
|
+
val locator: String? = null
|
|
24
|
+
val index: Int? = null
|
|
25
|
+
val action: Action? = null
|
|
26
|
+
|
|
27
|
+
enum class Strategy constructor(val strategyName: String) {
|
|
28
|
+
@SerializedName("clazz")
|
|
29
|
+
CLASS_NAME("clazz"),
|
|
30
|
+
|
|
31
|
+
@SerializedName("res")
|
|
32
|
+
ID("res"),
|
|
33
|
+
|
|
34
|
+
@SerializedName("text")
|
|
35
|
+
TEXT("text"),
|
|
36
|
+
|
|
37
|
+
@SerializedName("textContains")
|
|
38
|
+
TEXT_CONTAIN("textContains"),
|
|
39
|
+
|
|
40
|
+
@SerializedName("textEndsWith")
|
|
41
|
+
TEXT_ENDS_WITH("textEndsWith"),
|
|
42
|
+
|
|
43
|
+
@SerializedName("textStartsWith")
|
|
44
|
+
TEXT_STARTS_WITH("textStartsWith"),
|
|
45
|
+
|
|
46
|
+
@SerializedName("desc")
|
|
47
|
+
DESC("desc"),
|
|
48
|
+
|
|
49
|
+
@SerializedName("descContains")
|
|
50
|
+
DESC_CONTAINS("descContains"),
|
|
51
|
+
|
|
52
|
+
@SerializedName("descEndsWith")
|
|
53
|
+
DESC_ENDS_WITH("descEndsWith"),
|
|
54
|
+
|
|
55
|
+
@SerializedName("descStartsWith")
|
|
56
|
+
DESC_STARTS_WITH("descStartsWith"),
|
|
57
|
+
|
|
58
|
+
@SerializedName("pkg")
|
|
59
|
+
APPLICATION_PACKAGE("pkg");
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
enum class Action constructor(val actionName: String) {
|
|
63
|
+
@SerializedName("click")
|
|
64
|
+
CLICK("click"),
|
|
65
|
+
|
|
66
|
+
@SerializedName("longClick")
|
|
67
|
+
LONG_CLICK("longClick"),
|
|
68
|
+
|
|
69
|
+
@SerializedName("getText")
|
|
70
|
+
GET_TEXT("getText"),
|
|
71
|
+
|
|
72
|
+
@SerializedName("getContentDescription")
|
|
73
|
+
GET_CONTENT_DESCRIPTION("getContentDescription"),
|
|
74
|
+
|
|
75
|
+
@SerializedName("getClassName")
|
|
76
|
+
GET_CLASS_NAME("getClassName"),
|
|
77
|
+
|
|
78
|
+
@SerializedName("getResourceName")
|
|
79
|
+
GET_RESOURCE_NAME("getResourceName"),
|
|
80
|
+
|
|
81
|
+
@SerializedName("getVisibleBounds")
|
|
82
|
+
GET_VISIBLE_BOUNDS("getVisibleBounds"),
|
|
83
|
+
|
|
84
|
+
@SerializedName("getVisibleCenter")
|
|
85
|
+
GET_VISIBLE_CENTER("getVisibleCenter"),
|
|
86
|
+
|
|
87
|
+
@SerializedName("getApplicationPackage")
|
|
88
|
+
GET_APPLICATION_PACKAGE("getApplicationPackage"),
|
|
89
|
+
|
|
90
|
+
@SerializedName("getChildCount")
|
|
91
|
+
GET_CHILD_COUNT("getChildCount"),
|
|
92
|
+
|
|
93
|
+
@SerializedName("clear")
|
|
94
|
+
CLEAR("clear"),
|
|
95
|
+
|
|
96
|
+
@SerializedName("isCheckable")
|
|
97
|
+
IS_CHECKABLE("isCheckable"),
|
|
98
|
+
|
|
99
|
+
@SerializedName("isChecked")
|
|
100
|
+
IS_CHECKED("isChecked"),
|
|
101
|
+
|
|
102
|
+
@SerializedName("isClickable")
|
|
103
|
+
IS_CLICKABLE("isClickable"),
|
|
104
|
+
|
|
105
|
+
@SerializedName("isEnabled")
|
|
106
|
+
IS_ENABLED("isEnabled"),
|
|
107
|
+
|
|
108
|
+
@SerializedName("isFocusable")
|
|
109
|
+
IS_FOCUSABLE("isFocusable"),
|
|
110
|
+
|
|
111
|
+
@SerializedName("isFocused")
|
|
112
|
+
IS_FOCUSED("isFocused"),
|
|
113
|
+
|
|
114
|
+
@SerializedName("isLongClickable")
|
|
115
|
+
IS_LONG_CLICKABLE("isLongClickable"),
|
|
116
|
+
|
|
117
|
+
@SerializedName("isScrollable")
|
|
118
|
+
IS_SCROLLABLE("isScrollable"),
|
|
119
|
+
|
|
120
|
+
@SerializedName("isSelected")
|
|
121
|
+
IS_SELECTED("isSelected");
|
|
122
|
+
}
|
|
123
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
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.lib.model
|
|
18
|
+
|
|
19
|
+
enum class ViewAttributesEnum {
|
|
20
|
+
|
|
21
|
+
CONTENT_DESC,
|
|
22
|
+
CLASS,
|
|
23
|
+
TEXT,
|
|
24
|
+
PACKAGE,
|
|
25
|
+
CHECKABLE,
|
|
26
|
+
CHECKED,
|
|
27
|
+
CLICKABLE,
|
|
28
|
+
ENABLED,
|
|
29
|
+
FOCUSABLE,
|
|
30
|
+
FOCUSED,
|
|
31
|
+
SCROLLABLE,
|
|
32
|
+
LONG_CLICKABLE,
|
|
33
|
+
PASSWORD,
|
|
34
|
+
SELECTED,
|
|
35
|
+
VISIBLE,
|
|
36
|
+
NO_MULTILINE_BUTTONS,
|
|
37
|
+
NO_OVERLAPS,
|
|
38
|
+
NO_ELLIPSIZED_TEXT,
|
|
39
|
+
BOUNDS,
|
|
40
|
+
RESOURCE_ID,
|
|
41
|
+
INSTANCE,
|
|
42
|
+
INDEX,
|
|
43
|
+
ADAPTERS,
|
|
44
|
+
ADAPTER_TYPE,
|
|
45
|
+
HINT,
|
|
46
|
+
VIEW_TAG;
|
|
47
|
+
|
|
48
|
+
override fun toString(): String {
|
|
49
|
+
return this.name.replace("_", "-").toLowerCase()
|
|
50
|
+
}
|
|
51
|
+
}
|
package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ViewElement.kt
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
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.lib.model
|
|
18
|
+
|
|
19
|
+
import android.app.Activity
|
|
20
|
+
import android.content.Context
|
|
21
|
+
import android.content.ContextWrapper
|
|
22
|
+
import android.content.res.Resources
|
|
23
|
+
import android.graphics.Rect
|
|
24
|
+
import android.view.View
|
|
25
|
+
import android.view.View.NO_ID
|
|
26
|
+
import android.view.ViewGroup
|
|
27
|
+
import android.view.inputmethod.EditorInfo
|
|
28
|
+
import android.widget.Checkable
|
|
29
|
+
import android.widget.NumberPicker
|
|
30
|
+
import android.widget.ProgressBar
|
|
31
|
+
import android.widget.TextView
|
|
32
|
+
import androidx.test.core.app.ApplicationProvider.getApplicationContext
|
|
33
|
+
import androidx.test.espresso.matcher.ViewMatchers
|
|
34
|
+
|
|
35
|
+
class ViewElement(private val view: View) {
|
|
36
|
+
private var activity: Activity? = null
|
|
37
|
+
|
|
38
|
+
val contentDescription: CharSequence?
|
|
39
|
+
get() = view.contentDescription
|
|
40
|
+
|
|
41
|
+
val bounds: Rect
|
|
42
|
+
get() {
|
|
43
|
+
val l = IntArray(2)
|
|
44
|
+
view.getLocationOnScreen(l)
|
|
45
|
+
return Rect(l[0], l[1], l[0] + view.width, l[1] + view.height)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
val isClickable: Boolean
|
|
49
|
+
get() = ViewMatchers.isClickable().matches(view)
|
|
50
|
+
|
|
51
|
+
val isLongClickable: Boolean
|
|
52
|
+
get() = view.isLongClickable
|
|
53
|
+
|
|
54
|
+
val isCheckable: Boolean
|
|
55
|
+
get() = view is Checkable
|
|
56
|
+
|
|
57
|
+
val isChecked: Boolean
|
|
58
|
+
get() = ViewMatchers.isChecked().matches(view)
|
|
59
|
+
|
|
60
|
+
val isFocused: Boolean
|
|
61
|
+
get() = isFocusable && view.isAccessibilityFocused
|
|
62
|
+
|
|
63
|
+
val isVisible: Boolean
|
|
64
|
+
get() = ViewMatchers.isDisplayed().matches(view)
|
|
65
|
+
|
|
66
|
+
val id: Int
|
|
67
|
+
get() = view.id
|
|
68
|
+
|
|
69
|
+
// ignore
|
|
70
|
+
val resourceId: String?
|
|
71
|
+
get() {
|
|
72
|
+
val id = id
|
|
73
|
+
if (id != NO_ID) {
|
|
74
|
+
val r = view.resources
|
|
75
|
+
if (id > 0 && r != null) {
|
|
76
|
+
try {
|
|
77
|
+
val pkgname: String
|
|
78
|
+
when (id and -0x1000000) {
|
|
79
|
+
0x7f000000 -> pkgname = "app"
|
|
80
|
+
0x01000000 -> pkgname = "android"
|
|
81
|
+
else -> pkgname = r.getResourcePackageName(id)
|
|
82
|
+
}
|
|
83
|
+
return String.format("%s:%s/%s", pkgname,
|
|
84
|
+
r.getResourceTypeName(id), r.getResourceEntryName(id))
|
|
85
|
+
} catch (e: Resources.NotFoundException) {
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return null
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// we want the index of the inner class
|
|
94
|
+
// if this isn't an inner class, just find the start of the
|
|
95
|
+
// top level class name.
|
|
96
|
+
val className: String
|
|
97
|
+
get() {
|
|
98
|
+
var nameCopy = view.javaClass.name
|
|
99
|
+
nameCopy = nameCopy.replace("\\$[0-9]+".toRegex(), "\\$")
|
|
100
|
+
val start = nameCopy.lastIndexOf('$')
|
|
101
|
+
return if (start < 0) {
|
|
102
|
+
nameCopy
|
|
103
|
+
} else nameCopy.substring(0, start)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
val index: Int
|
|
107
|
+
get() {
|
|
108
|
+
val parentView = view.parent
|
|
109
|
+
if (parentView is ViewGroup) {
|
|
110
|
+
for (index in 0 until parentView.childCount) {
|
|
111
|
+
if (view == parentView.getChildAt(index)) {
|
|
112
|
+
return index
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return 0
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
val text: ViewText?
|
|
120
|
+
get() {
|
|
121
|
+
if (view is ProgressBar) {
|
|
122
|
+
return ViewText(view.progress)
|
|
123
|
+
}
|
|
124
|
+
if (view is NumberPicker) {
|
|
125
|
+
return ViewText(view.value)
|
|
126
|
+
}
|
|
127
|
+
if (view is TextView) {
|
|
128
|
+
val textValue = view.text
|
|
129
|
+
val hintValue = view.hint
|
|
130
|
+
return if ((textValue == null || textValue.toString().isEmpty())
|
|
131
|
+
&& hintValue != null && !hintValue.toString().isEmpty()) {
|
|
132
|
+
ViewText(hintValue.toString(), true)
|
|
133
|
+
} else ViewText(textValue.toString(), false)
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return null
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
val isEnabled: Boolean
|
|
140
|
+
get() = ViewMatchers.isEnabled().matches(view)
|
|
141
|
+
|
|
142
|
+
val isFocusable: Boolean
|
|
143
|
+
get() = ViewMatchers.isFocusable().matches(view)
|
|
144
|
+
|
|
145
|
+
val isScrollable: Boolean
|
|
146
|
+
get() = view.isScrollContainer
|
|
147
|
+
|
|
148
|
+
val isPassword: Boolean
|
|
149
|
+
get() = view is TextView && isPasswordInputType(view.inputType)
|
|
150
|
+
|
|
151
|
+
val isSelected: Boolean
|
|
152
|
+
get() = ViewMatchers.isSelected().matches(view)
|
|
153
|
+
|
|
154
|
+
val relativeLeft: Int
|
|
155
|
+
get() = view.left
|
|
156
|
+
|
|
157
|
+
val relativeTop: Int
|
|
158
|
+
get() = view.top
|
|
159
|
+
|
|
160
|
+
val packageName: String
|
|
161
|
+
get() = getApplicationContext<Context>().packageName
|
|
162
|
+
|
|
163
|
+
val viewTag: String?
|
|
164
|
+
get() {
|
|
165
|
+
val tag = view.tag
|
|
166
|
+
return tag?.toString()
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
@Synchronized
|
|
170
|
+
fun extractActivity(): Activity? {
|
|
171
|
+
this.activity?.let {
|
|
172
|
+
return it
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
var result = getActivity(view.context)
|
|
176
|
+
if (result == null && view is ViewGroup) {
|
|
177
|
+
var i = 0
|
|
178
|
+
while (i < view.childCount && result == null) {
|
|
179
|
+
result = getActivity(view.getChildAt(i).context)
|
|
180
|
+
++i
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
this.activity = result
|
|
184
|
+
return result
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
private fun getActivity(ctx: Context): Activity? {
|
|
188
|
+
var context = ctx
|
|
189
|
+
while (context is ContextWrapper) {
|
|
190
|
+
if (context is Activity) {
|
|
191
|
+
return context
|
|
192
|
+
}
|
|
193
|
+
context = context.baseContext
|
|
194
|
+
}
|
|
195
|
+
return null
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
private fun isPasswordInputType(inputType: Int): Boolean {
|
|
199
|
+
val variation = inputType and (EditorInfo.TYPE_MASK_CLASS or EditorInfo.TYPE_MASK_VARIATION)
|
|
200
|
+
return (variation == EditorInfo.TYPE_CLASS_TEXT or EditorInfo.TYPE_TEXT_VARIATION_PASSWORD
|
|
201
|
+
|| variation == EditorInfo.TYPE_CLASS_TEXT or EditorInfo.TYPE_TEXT_VARIATION_WEB_PASSWORD
|
|
202
|
+
|| variation == EditorInfo.TYPE_CLASS_NUMBER or EditorInfo.TYPE_NUMBER_VARIATION_PASSWORD)
|
|
203
|
+
}
|
|
204
|
+
}
|
package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ViewText.kt
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
package io.appium.espressoserver.lib.model
|
|
2
|
+
|
|
3
|
+
data class ViewText(
|
|
4
|
+
val rawText: String = "",
|
|
5
|
+
val isHint: Boolean = false
|
|
6
|
+
) {
|
|
7
|
+
constructor(rawText: Int) : this(Integer.toString(rawText), false)
|
|
8
|
+
|
|
9
|
+
override fun toString(): String {
|
|
10
|
+
return rawText
|
|
11
|
+
}
|
|
12
|
+
}
|
package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/WindowRect.kt
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
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.lib.model
|
|
18
|
+
|
|
19
|
+
data class WindowRect(
|
|
20
|
+
val width: Int,
|
|
21
|
+
val height: Int,
|
|
22
|
+
val x: Int,
|
|
23
|
+
val y: Int
|
|
24
|
+
) : AppiumParams()
|
package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/WindowSize.kt
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
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.lib.model
|
|
18
|
+
|
|
19
|
+
data class WindowSize(
|
|
20
|
+
val width: Int,
|
|
21
|
+
val height: Int
|
|
22
|
+
) : AppiumParams()
|
|
@@ -0,0 +1,23 @@
|
|
|
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.lib.model.settings
|
|
18
|
+
|
|
19
|
+
abstract class AbstractSetting {
|
|
20
|
+
abstract var name: String
|
|
21
|
+
abstract fun value(): Any?
|
|
22
|
+
abstract fun apply(value: Any?)
|
|
23
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
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.lib.model.settings
|
|
18
|
+
|
|
19
|
+
import io.appium.espressoserver.EspressoServerRunnerTest
|
|
20
|
+
import io.appium.espressoserver.lib.drivers.DriverContext
|
|
21
|
+
import io.appium.espressoserver.lib.handlers.exceptions.InvalidArgumentException
|
|
22
|
+
|
|
23
|
+
class DriverSetting : AbstractSetting() {
|
|
24
|
+
override var name: String = "driver"
|
|
25
|
+
|
|
26
|
+
override fun value(): String {
|
|
27
|
+
return EspressoServerRunnerTest.context.driverStrategy.name.toString().toLowerCase()
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
override fun apply(value: Any?) {
|
|
31
|
+
val driverStrategy =
|
|
32
|
+
DriverContext.StrategyType.values().find { it.toString().toLowerCase() == value }
|
|
33
|
+
?: throw InvalidArgumentException(
|
|
34
|
+
"driver type must be one of ${
|
|
35
|
+
DriverContext.StrategyType.values().map { it.toString().toLowerCase() }
|
|
36
|
+
}"
|
|
37
|
+
)
|
|
38
|
+
EspressoServerRunnerTest.context.setDriverStrategy(driverStrategy)
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
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.lib.model.settings
|
|
18
|
+
|
|
19
|
+
enum class SettingType(var setting: AbstractSetting) {
|
|
20
|
+
DRIVER(DriverSetting())
|
|
21
|
+
}
|
package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/web/WebAtom.kt
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
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.lib.model.web
|
|
18
|
+
|
|
19
|
+
import com.google.gson.annotations.JsonAdapter
|
|
20
|
+
import io.appium.espressoserver.lib.model.AppiumParams
|
|
21
|
+
|
|
22
|
+
@JsonAdapter(WebAtomDeserializer::class)
|
|
23
|
+
data class WebAtom(
|
|
24
|
+
val name: String,
|
|
25
|
+
val args: Array<Any> = emptyArray()
|
|
26
|
+
) : AppiumParams()
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
package io.appium.espressoserver.lib.model.web
|
|
2
|
+
|
|
3
|
+
import androidx.test.espresso.web.webdriver.Locator
|
|
4
|
+
import com.google.gson.JsonDeserializationContext
|
|
5
|
+
import com.google.gson.JsonDeserializer
|
|
6
|
+
import com.google.gson.JsonElement
|
|
7
|
+
import com.google.gson.JsonParseException
|
|
8
|
+
import io.appium.espressoserver.lib.handlers.exceptions.InvalidSelectorException
|
|
9
|
+
import io.appium.espressoserver.lib.helpers.AssertHelpers
|
|
10
|
+
import io.appium.espressoserver.lib.helpers.GsonParserHelpers
|
|
11
|
+
import java.lang.reflect.Type
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
// Deserializer for WebAtom
|
|
15
|
+
class WebAtomDeserializer : JsonDeserializer<WebAtom> {
|
|
16
|
+
@Throws(JsonParseException::class)
|
|
17
|
+
override fun deserialize(json: JsonElement, paramType: Type?,
|
|
18
|
+
paramJsonDeserializationContext: JsonDeserializationContext?): WebAtom {
|
|
19
|
+
|
|
20
|
+
if (json.isJsonObject) {
|
|
21
|
+
val jsonObj = json.asJsonObject
|
|
22
|
+
|
|
23
|
+
// Parse the name of the Atom
|
|
24
|
+
AssertHelpers.assertIsPrimitive(jsonObj, "name")
|
|
25
|
+
val webAtomName = jsonObj.get("name").asString
|
|
26
|
+
|
|
27
|
+
// Parse the Locator shorthand. If it was provided.
|
|
28
|
+
jsonObj.get("locator")?.let {
|
|
29
|
+
// Validate the locator
|
|
30
|
+
if (!it.isJsonObject) {
|
|
31
|
+
throw JsonParseException("'locator' must be an object with properties 'using' and 'value'")
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Validate that the locator contains "using" and "value"
|
|
35
|
+
val locator = it.asJsonObject
|
|
36
|
+
if (!locator.has("using") || !locator.has("value")) {
|
|
37
|
+
throw JsonParseException("'locator' must have properties 'using' and 'value'")
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Validate that "using" and "value" are primitives
|
|
41
|
+
val using = locator.get("using")
|
|
42
|
+
val value = locator.get("value")
|
|
43
|
+
|
|
44
|
+
if (!using.isJsonPrimitive || !value.isJsonPrimitive) {
|
|
45
|
+
throw JsonParseException("'using' and 'value' must be primitive types. " +
|
|
46
|
+
"Found 'using=${locator.get("using")}, value=${locator.get("value")}'")
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
val supportedLocatorNames = Locator.values().map { v -> v.name }
|
|
50
|
+
if (using.asString.toUpperCase() !in supportedLocatorNames) {
|
|
51
|
+
throw InvalidSelectorException("Only the following locator types are supported: " +
|
|
52
|
+
"$supportedLocatorNames (case-insensitive). '${locator.get("using")}' is given instead")
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Set the args as locator
|
|
56
|
+
return WebAtom(webAtomName, arrayOf(
|
|
57
|
+
Locator.valueOf(using.asString.toUpperCase()),
|
|
58
|
+
value.asString
|
|
59
|
+
))
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Parse the args
|
|
63
|
+
jsonObj.get("args")?.let { args ->
|
|
64
|
+
when {
|
|
65
|
+
args.isJsonPrimitive -> {
|
|
66
|
+
return WebAtom(webAtomName, arrayOf(GsonParserHelpers.parsePrimitive(args.asJsonPrimitive)))
|
|
67
|
+
}
|
|
68
|
+
args.isJsonArray -> {
|
|
69
|
+
val argsAsList = args.asJsonArray.map { arg ->
|
|
70
|
+
if (arg.isJsonPrimitive)
|
|
71
|
+
GsonParserHelpers.parsePrimitive(arg.asJsonPrimitive)
|
|
72
|
+
else
|
|
73
|
+
throw JsonParseException("'${arg}' is not a valid 'arg' type")
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return WebAtom(webAtomName, argsAsList.toTypedArray())
|
|
77
|
+
}
|
|
78
|
+
else -> {
|
|
79
|
+
throw JsonParseException(
|
|
80
|
+
"'args' must be an array or a single, primitive JSON type. Found '${args}'"
|
|
81
|
+
)
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// If no args provided, treat it as a function call with no parameters
|
|
87
|
+
if (!jsonObj.has("args")) {
|
|
88
|
+
return WebAtom(webAtomName, emptyArray())
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
} else if (json.isJsonPrimitive) {
|
|
92
|
+
// If JSON was provided as a String, treat it as a function call with no parameters
|
|
93
|
+
return WebAtom(json.asString, emptyArray())
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// This block is unreachable
|
|
97
|
+
throw JsonParseException("Expected atom to be a string or an object. Found '${json}'")
|
|
98
|
+
}
|
|
99
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
package io.appium.espressoserver.lib.model.web
|
|
2
|
+
|
|
3
|
+
import io.appium.espressoserver.lib.model.AppiumParams
|
|
4
|
+
|
|
5
|
+
data class WebAtomsParams(
|
|
6
|
+
val webviewElement: String,
|
|
7
|
+
val forceJavascriptEnabled: Boolean,
|
|
8
|
+
val methodChain: List<WebAtomsMethod> = emptyList()
|
|
9
|
+
) : AppiumParams()
|