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.
Files changed (311) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/LICENSE +201 -0
  3. package/README.md +864 -0
  4. package/build/index.js +48 -0
  5. package/build/lib/commands/execute.js +67 -0
  6. package/build/lib/commands/general.js +337 -0
  7. package/build/lib/commands/idling-resources.js +31 -0
  8. package/build/lib/commands/index.js +26 -0
  9. package/build/lib/commands/services.js +27 -0
  10. package/build/lib/desired-caps.js +65 -0
  11. package/build/lib/driver.js +475 -0
  12. package/build/lib/espresso-runner.js +381 -0
  13. package/build/lib/logger.js +18 -0
  14. package/build/lib/server-builder.js +213 -0
  15. package/build/lib/server.js +39 -0
  16. package/build/lib/utils.js +85 -0
  17. package/espresso-server/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk +0 -0
  18. package/espresso-server/app/build/outputs/apk/androidTest/debug/output-metadata.json +18 -0
  19. package/espresso-server/app/build.gradle.kts +153 -0
  20. package/espresso-server/app/proguard-rules.pro +25 -0
  21. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/EspressoServerRunnerTest.kt +93 -0
  22. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/drivers/AppDriver.kt +29 -0
  23. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/drivers/ComposeDriver.kt +73 -0
  24. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/drivers/DriverContext.kt +35 -0
  25. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/drivers/EspressoDriver.kt +70 -0
  26. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/AcceptAlert.kt +32 -0
  27. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Back.kt +31 -0
  28. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Clear.kt +40 -0
  29. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Click.kt +27 -0
  30. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/CreateSession.kt +58 -0
  31. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/DeleteSession.kt +33 -0
  32. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/DismissAlert.kt +32 -0
  33. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/DrawerActionHandler.kt +45 -0
  34. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ElementEquals.kt +19 -0
  35. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ElementScreenshot.kt +31 -0
  36. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ElementValue.kt +85 -0
  37. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/FindActive.kt +32 -0
  38. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/FindElement.kt +29 -0
  39. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/FindElements.kt +43 -0
  40. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetAlertText.kt +31 -0
  41. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetAttribute.kt +101 -0
  42. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetClipboard.kt +65 -0
  43. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetDeviceInfo.kt +44 -0
  44. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetDisplayed.kt +28 -0
  45. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetEnabled.kt +30 -0
  46. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetLocation.kt +32 -0
  47. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetLocationInView.kt +33 -0
  48. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetName.kt +31 -0
  49. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetOrientation.kt +44 -0
  50. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetRect.kt +38 -0
  51. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetRotation.kt +33 -0
  52. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetSelected.kt +30 -0
  53. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetSession.kt +34 -0
  54. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetSessions.kt +41 -0
  55. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetSettings.kt +25 -0
  56. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetSize.kt +32 -0
  57. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetToastVisibility.kt +34 -0
  58. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetWindowRect.kt +43 -0
  59. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetWindowSize.kt +42 -0
  60. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/HideKeyboard.kt +29 -0
  61. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Keys.kt +82 -0
  62. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ListIdlingResources.kt +30 -0
  63. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/MobileBackdoor.kt +42 -0
  64. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/MobileClickAction.kt +49 -0
  65. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/MobileSwipe.kt +71 -0
  66. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/MobileViewFlash.kt +50 -0
  67. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/MoveTo.kt +50 -0
  68. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/MultiTouchAction.kt +50 -0
  69. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/NavigateTo.kt +42 -0
  70. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/NoSessionCommandHandler.kt +4 -0
  71. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/NotYetImplemented.kt +28 -0
  72. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/OpenNotifications.kt +28 -0
  73. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/PerformAction.kt +42 -0
  74. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/PerformAutofillDismissal.kt +31 -0
  75. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/PerformEditorAction.kt +30 -0
  76. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/PointerEventHandler.kt +281 -0
  77. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/PressKeyCode.kt +90 -0
  78. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/RegisterIdlingResources.kt +33 -0
  79. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ReleaseActions.kt +41 -0
  80. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/RequestHandler.kt +43 -0
  81. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ScreenshotHandler.kt +29 -0
  82. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ScrollToPage.kt +60 -0
  83. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/SetClipboard.kt +64 -0
  84. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/SetDate.kt +41 -0
  85. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/SetOrientation.kt +61 -0
  86. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/SetRotation.kt +46 -0
  87. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/SetTime.kt +41 -0
  88. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Source.kt +29 -0
  89. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/StartActivity.kt +30 -0
  90. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/StartService.kt +40 -0
  91. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Status.kt +26 -0
  92. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/StopService.kt +37 -0
  93. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Text.kt +28 -0
  94. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/TouchAction.kt +49 -0
  95. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Uiautomator.kt +68 -0
  96. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/UiautomatorPageSource.kt +35 -0
  97. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/UnregisterIdlingResources.kt +33 -0
  98. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/UpdateSettings.kt +35 -0
  99. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/WebAtoms.kt +69 -0
  100. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/AppiumException.kt +40 -0
  101. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/DuplicateRouteException.kt +22 -0
  102. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/ElementNotVisibleException.kt +30 -0
  103. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/InvalidArgumentException.kt +35 -0
  104. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/InvalidElementStateException.kt +41 -0
  105. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/InvalidSelectorException.kt +35 -0
  106. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/MoveTargetOutOfBoundsException.kt +39 -0
  107. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/NoAlertOpenException.kt +33 -0
  108. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/NoSuchDriverException.kt +31 -0
  109. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/NoSuchElementException.kt +34 -0
  110. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/NotYetImplementedException.kt +33 -0
  111. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/ScreenCaptureException.kt +30 -0
  112. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/SessionNotCreatedException.kt +34 -0
  113. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/StaleElementException.kt +30 -0
  114. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/XPathLookupException.kt +31 -0
  115. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/AccessibilityServiceState.kt +15 -0
  116. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ActivityHelpers.kt +125 -0
  117. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ActivityOptionsHelpers.kt +60 -0
  118. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/AlertHelpers.kt +170 -0
  119. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/AndroidLogger.kt +45 -0
  120. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/AssertHelpers.kt +17 -0
  121. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/AutofillHelpers.kt +44 -0
  122. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/BackdoorUtils.java +49 -0
  123. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ClipboardHelper.kt +51 -0
  124. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ComposeNodeFinder.kt +59 -0
  125. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/DeviceInfoHelper.kt +148 -0
  126. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/EspressoViewsCache.kt +57 -0
  127. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/GsonParserHelpers.kt +72 -0
  128. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/IMEHelpers.kt +88 -0
  129. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/IntentHelpers.kt +336 -0
  130. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/InteractionHelper.kt +40 -0
  131. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/InvocationOperation.java +80 -0
  132. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/LocaleHelpers.kt +46 -0
  133. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/Logger.kt +25 -0
  134. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/NotificationListener.kt +87 -0
  135. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/Rect.kt +22 -0
  136. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ReflectionUtils.kt +64 -0
  137. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ScreenshotsHelper.kt +59 -0
  138. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/StringHelpers.kt +42 -0
  139. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ThreadHelpers.kt +15 -0
  140. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/UiAutomationWrapper.kt +48 -0
  141. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ViewFinder.kt +316 -0
  142. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/XMLHelpers.kt +56 -0
  143. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/extensions/Semaphore.kt +22 -0
  144. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/reflection/ArrayUtils.java +110 -0
  145. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/reflection/ClassUtils.java +180 -0
  146. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/reflection/MethodUtils.java +155 -0
  147. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/reflection/Validate.java +34 -0
  148. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/BaseW3CActionAdapter.kt +71 -0
  149. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/DummyW3CActionAdapter.kt +133 -0
  150. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/W3CActionAdapter.kt +71 -0
  151. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/AndroidKeyEvent.kt +271 -0
  152. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/AndroidMotionEvent.kt +90 -0
  153. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/EspressoW3CActionAdapter.kt +147 -0
  154. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/Helpers.kt +71 -0
  155. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/MotionEventBuilder.kt +153 -0
  156. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/MultiTouchState.kt +132 -0
  157. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/TouchState.kt +7 -0
  158. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/caps/CapsUtils.kt +96 -0
  159. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/BaseDispatchResult.kt +14 -0
  160. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/DispatchPointerMoveResult.kt +22 -0
  161. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/KeyDispatch.kt +151 -0
  162. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/PointerDispatch.kt +286 -0
  163. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/W3CKeyEvent.kt +21 -0
  164. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/constants/KeyCodeMapper.kt +169 -0
  165. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/constants/KeyLocationMapper.kt +50 -0
  166. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/constants/KeyNormalizer.kt +84 -0
  167. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/constants/NormalizedKeys.kt +60 -0
  168. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/ActionObject.kt +138 -0
  169. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/ActionSequence.kt +112 -0
  170. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/Actions.kt +89 -0
  171. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/InputSource.kt +173 -0
  172. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/Origin.kt +24 -0
  173. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/OriginDeserializer.kt +25 -0
  174. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/Tick.kt +62 -0
  175. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/processor/ActionsProcessor.kt +93 -0
  176. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/processor/KeyProcessor.kt +57 -0
  177. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/processor/PauseProcessor.kt +59 -0
  178. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/processor/PointerProcessor.kt +115 -0
  179. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/processor/ProcessorHelpers.kt +35 -0
  180. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/state/ActiveInputSources.kt +62 -0
  181. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/state/InputState.kt +6 -0
  182. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/state/InputStateTable.kt +95 -0
  183. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/state/KeyInputState.kt +82 -0
  184. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/state/PointerInputState.kt +45 -0
  185. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/http/RouteDefinition.kt +67 -0
  186. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/http/RouteMap.kt +51 -0
  187. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/http/Router.kt +250 -0
  188. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/http/Server.kt +109 -0
  189. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/http/response/AppiumResponse.kt +61 -0
  190. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/http/response/BaseResponse.kt +25 -0
  191. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/AlertParams.kt +21 -0
  192. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/AppiumParams.kt +55 -0
  193. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/BackdoorMethodArg.kt +3 -0
  194. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ClipboardDataType.kt +18 -0
  195. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/DrawerActionParams.kt +21 -0
  196. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/EditorActionParams.kt +21 -0
  197. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/Element.kt +169 -0
  198. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/GetClipboardParams.kt +27 -0
  199. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/GlobalSession.kt +64 -0
  200. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/HamcrestMatcher.kt +144 -0
  201. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/IdlingResourcesParams.kt +66 -0
  202. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/KeyEventParams.kt +23 -0
  203. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/LocaleParams.kt +34 -0
  204. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/Location.kt +19 -0
  205. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/Locator.kt +22 -0
  206. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MatcherJson.kt +37 -0
  207. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MobileBackdoorMethod.kt +22 -0
  208. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MobileBackdoorParams.kt +20 -0
  209. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MobileClickActionParams.kt +81 -0
  210. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MobileSwipeParams.kt +106 -0
  211. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MotionEventParams.kt +37 -0
  212. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MoveToParams.kt +26 -0
  213. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MultiTouchActionsParams.kt +5 -0
  214. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/NavigateToParams.kt +21 -0
  215. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/OrientationParams.kt +21 -0
  216. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/OrientationType.kt +6 -0
  217. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/Rect.kt +24 -0
  218. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/RotationParams.kt +38 -0
  219. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ScrollToPageParams.kt +36 -0
  220. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/SessionParams.kt +23 -0
  221. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/SetClipboardParams.kt +29 -0
  222. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/SetDateParams.kt +23 -0
  223. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/SetTimeParams.kt +22 -0
  224. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/SettingsParams.kt +19 -0
  225. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/Size.kt +22 -0
  226. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/SourceDocument.kt +286 -0
  227. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/StartActivityParams.kt +9 -0
  228. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/StartServiceParams.kt +22 -0
  229. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/StopServiceParams.kt +21 -0
  230. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/Strategy.kt +49 -0
  231. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/TextValueParams.kt +6 -0
  232. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ToastLookupParams.kt +22 -0
  233. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/TouchAction.kt +178 -0
  234. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/TouchActionsParams.kt +5 -0
  235. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/UiautomatorParams.kt +123 -0
  236. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ViewAttributesEnum.kt +51 -0
  237. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ViewElement.kt +204 -0
  238. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ViewFlashParams.kt +9 -0
  239. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ViewText.kt +12 -0
  240. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/WindowRect.kt +24 -0
  241. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/WindowSize.kt +22 -0
  242. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/settings/AbstractSetting.kt +23 -0
  243. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/settings/DriverSetting.kt +40 -0
  244. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/settings/SettingType.kt +21 -0
  245. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/web/WebAtom.kt +26 -0
  246. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/web/WebAtomDeserializer.kt +99 -0
  247. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/web/WebAtomsMethods.kt +4 -0
  248. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/web/WebAtomsParams.kt +9 -0
  249. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewaction/OrientationChange.kt +47 -0
  250. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewaction/ScrollTo.kt +48 -0
  251. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewaction/UiControllerPerformer.kt +67 -0
  252. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewaction/UiControllerRunnable.kt +25 -0
  253. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewaction/ViewGetter.kt +79 -0
  254. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewaction/ViewTextGetter.kt +31 -0
  255. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewmatcher/RegexpTextMatcher.kt +38 -0
  256. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewmatcher/WithView.kt +33 -0
  257. package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewmatcher/WithXPath.kt +55 -0
  258. package/espresso-server/app/src/main/AndroidManifest.xml +7 -0
  259. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/assets/Helpers.kt +20 -0
  260. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/assets/backdoor-methods.json +51 -0
  261. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/assets/key-actions.json +15 -0
  262. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/assets/multi-touch-actions.json +28 -0
  263. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/GsonParserHelpersTest.kt +41 -0
  264. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/IntentCreationTests.kt +115 -0
  265. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/InvocationOperationTest.java +97 -0
  266. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/KReflectionUtilsTest.kt +108 -0
  267. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/XpathQueryParserTests.kt +42 -0
  268. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/ActionSequenceTest.kt +220 -0
  269. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/ActionsTest.kt +76 -0
  270. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/CapsUtilsTest.kt +76 -0
  271. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/Helpers.kt +7 -0
  272. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/InputSourceTest.kt +153 -0
  273. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/InputStateTableTest.kt +72 -0
  274. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/KeyDispatchTest.kt +133 -0
  275. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/KeyInputStateTest.kt +74 -0
  276. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/PointerDispatchTest.kt +370 -0
  277. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/ProcessorTest.kt +320 -0
  278. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/TickTest.kt +265 -0
  279. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/adapter/AndroidKeyEventTest.kt +114 -0
  280. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/adapter/HelpersTest.kt +31 -0
  281. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/http/RouteDefinitionTest.kt +74 -0
  282. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/HamcrestMatcherTest.kt +112 -0
  283. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/MatcherJsonTest.kt +20 -0
  284. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/MobileBackdoorMethodTest.java +110 -0
  285. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/MobileClickTest.kt +46 -0
  286. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/MobileSwipeTest.kt +68 -0
  287. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/TouchActionTest.kt +56 -0
  288. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/web/WebAtomTest.kt +68 -0
  289. package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/web/WebAtomsTest.kt +96 -0
  290. package/espresso-server/build.gradle.kts +33 -0
  291. package/espresso-server/gradle/wrapper/gradle-wrapper.jar +0 -0
  292. package/espresso-server/gradle/wrapper/gradle-wrapper.properties +5 -0
  293. package/espresso-server/gradle.properties +26 -0
  294. package/espresso-server/gradlew +185 -0
  295. package/espresso-server/gradlew.bat +89 -0
  296. package/espresso-server/lint.xml +4 -0
  297. package/espresso-server/settings.gradle.kts +1 -0
  298. package/index.js +29 -0
  299. package/lib/commands/execute.js +72 -0
  300. package/lib/commands/general.js +321 -0
  301. package/lib/commands/idling-resources.js +52 -0
  302. package/lib/commands/index.js +16 -0
  303. package/lib/commands/services.js +50 -0
  304. package/lib/desired-caps.js +55 -0
  305. package/lib/driver.js +566 -0
  306. package/lib/espresso-runner.js +340 -0
  307. package/lib/logger.js +6 -0
  308. package/lib/server-builder.js +194 -0
  309. package/lib/server.js +18 -0
  310. package/lib/utils.js +74 -0
  311. package/package.json +105 -0
@@ -0,0 +1,110 @@
1
+ package io.appium.espressoserver.test.model;
2
+
3
+ import com.google.gson.Gson;
4
+
5
+ import org.junit.Test;
6
+
7
+ import java.io.IOException;
8
+ import java.util.ArrayList;
9
+ import java.util.List;
10
+
11
+ import io.appium.espressoserver.lib.model.BackdoorMethodArg;
12
+ import io.appium.espressoserver.lib.model.InvocationTarget;
13
+ import io.appium.espressoserver.lib.model.MobileBackdoorMethod;
14
+ import io.appium.espressoserver.lib.model.MobileBackdoorParams;
15
+
16
+ import static io.appium.espressoserver.test.assets.HelpersKt.readAssetFile;
17
+ import static java.util.Objects.requireNonNull;
18
+ import static org.junit.Assert.fail;
19
+ import static org.junit.Assert.assertArrayEquals;
20
+ import static org.junit.Assert.assertEquals;
21
+ import static org.junit.Assert.assertTrue;
22
+
23
+ public class MobileBackdoorMethodTest {
24
+
25
+ @Test
26
+ public void shouldParseArgumentsAndTypes() {
27
+ MobileBackdoorMethod method = new MobileBackdoorMethod();
28
+ List<BackdoorMethodArg> args = new ArrayList<>();
29
+ BackdoorMethodArg arg1 = new BackdoorMethodArg();
30
+ arg1.setType("java.lang.String");
31
+ arg1.setValue("Oh");
32
+ args.add(arg1);
33
+
34
+ BackdoorMethodArg arg2 = new BackdoorMethodArg();
35
+ arg2.setType("java.lang.Integer");
36
+ arg2.setValue("10");
37
+ args.add(arg2);
38
+
39
+ BackdoorMethodArg arg3 = new BackdoorMethodArg();
40
+ arg3.setType("int");
41
+ arg3.setValue("20");
42
+ args.add(arg3);
43
+
44
+ BackdoorMethodArg arg4 = new BackdoorMethodArg();
45
+ arg4.setType("Boolean");
46
+ arg4.setValue("true");
47
+ args.add(arg4);
48
+
49
+ method.setArgs(args);
50
+ assertArrayEquals(new Class[]{String.class, Integer.class, int.class, Boolean.class}, method.getArgumentTypes());
51
+ assertArrayEquals(new Object[]{"Oh", 10, 20, true}, method.getArguments());
52
+
53
+ }
54
+
55
+ @Test
56
+ public void shouldNotAllowInvalidArgumentTypes() {
57
+ MobileBackdoorMethod method = new MobileBackdoorMethod();
58
+ List<BackdoorMethodArg> args = new ArrayList<>();
59
+ BackdoorMethodArg arg1 = new BackdoorMethodArg();
60
+ arg1.setType("java.lang.Lol");
61
+ arg1.setValue("Oh");
62
+ args.add(arg1);
63
+ method.setArgs(args);
64
+ try {
65
+ method.getArgumentTypes();
66
+ fail("expected exception was not occured.");
67
+ } catch (Exception e) {
68
+ assertTrue(e.getMessage().contains("Class not found: java.lang.Lol"));
69
+ }
70
+
71
+ }
72
+
73
+ @Test
74
+ public void shouldNotAllowIncompatibleValueForGivenType() {
75
+ MobileBackdoorMethod method = new MobileBackdoorMethod();
76
+ List<BackdoorMethodArg> args = new ArrayList<>();
77
+ BackdoorMethodArg arg1 = new BackdoorMethodArg();
78
+ arg1.setType("int");
79
+ arg1.setValue("lol");
80
+ args.add(arg1);
81
+ method.setArgs(args);
82
+ try {
83
+ method.getArguments();
84
+ fail("expected exception was not occured.");
85
+ } catch (Exception e) {
86
+ assertTrue(e.getMessage().contains("For input string: \"lol\""));
87
+ }
88
+
89
+ }
90
+
91
+ @Test
92
+ public void shouldPullMethodsWithArguments() throws IOException {
93
+ String backdoorMethods = readAssetFile("backdoor-methods.json");
94
+ MobileBackdoorParams params = (MobileBackdoorParams) (new Gson()).fromJson(backdoorMethods, MobileBackdoorParams.class);
95
+ List<MobileBackdoorMethod> mobileBackdoor = requireNonNull(params).getMethods();
96
+
97
+ assertEquals(InvocationTarget.ACTIVITY, params.getTarget());
98
+
99
+ MobileBackdoorMethod firstMethod = mobileBackdoor.get(0);
100
+ assertEquals("firstMethod", firstMethod.getName());
101
+ assertArrayEquals(new Class[]{boolean.class, int.class, byte.class, char.class}, firstMethod.getArgumentTypes());
102
+ assertArrayEquals(new Object[]{true, 1, (byte) 20, 'X'}, firstMethod.getArguments());
103
+
104
+ MobileBackdoorMethod secondMethod = mobileBackdoor.get(1);
105
+ assertEquals("secondMethod", secondMethod.getName());
106
+ assertArrayEquals(new Class[]{boolean.class, int.class, byte.class, Character.class, String.class}, secondMethod.getArgumentTypes());
107
+ assertArrayEquals(new Object[]{true, 1, (byte) 20, 'X', "Y"}, secondMethod.getArguments());
108
+
109
+ }
110
+ }
@@ -0,0 +1,46 @@
1
+ package io.appium.espressoserver.test.model
2
+
3
+ import androidx.test.espresso.action.GeneralLocation.TOP_RIGHT
4
+ import androidx.test.espresso.action.GeneralLocation.VISIBLE_CENTER
5
+ import androidx.test.espresso.action.Press.FINGER
6
+ import androidx.test.espresso.action.Press.PINPOINT
7
+ import androidx.test.espresso.action.Tap.DOUBLE
8
+ import androidx.test.espresso.action.Tap.SINGLE
9
+ import com.google.gson.JsonObject
10
+ import com.google.gson.JsonPrimitive
11
+ import io.appium.espressoserver.lib.model.MobileClickActionParams
12
+ import org.junit.Test
13
+ import kotlin.test.assertEquals
14
+
15
+ class `mobile clickAction test` {
16
+
17
+ @Test
18
+ fun `should parse "MobileClickParams" and set defaults if some params not provided` () {
19
+ val jsonElement = JsonObject()
20
+ val clickActionParams = MobileClickActionParams.MobileClickActionParamsDeserializer()
21
+ .deserialize(jsonElement, null, null)
22
+ assertEquals(clickActionParams.inputDevice, 0)
23
+ assertEquals(clickActionParams.buttonState, 0)
24
+ assertEquals(clickActionParams.tapper, SINGLE)
25
+ assertEquals(clickActionParams.coordinatesProvider, VISIBLE_CENTER)
26
+ assertEquals(clickActionParams.precisionDescriber, FINGER)
27
+ }
28
+
29
+ @Test
30
+ fun `should parse "MobileClickParams" and set values if all params provided` () {
31
+ val jsonElement = JsonObject()
32
+ jsonElement.add("inputDevice", JsonPrimitive(2))
33
+ jsonElement.add("buttonState", JsonPrimitive("3"))
34
+ jsonElement.add("tapper", JsonPrimitive("DOUBLE"))
35
+ jsonElement.add("coordinatesProvider", JsonPrimitive("TOP_RIGHT"))
36
+ jsonElement.add("precisionDescriber", JsonPrimitive("PINPOINT"))
37
+ val clickActionParams = MobileClickActionParams.MobileClickActionParamsDeserializer()
38
+ .deserialize(jsonElement, null, null)
39
+ assertEquals(clickActionParams.inputDevice, 2)
40
+ assertEquals(clickActionParams.buttonState, 3)
41
+ assertEquals(clickActionParams.tapper, DOUBLE)
42
+ assertEquals(clickActionParams.coordinatesProvider, TOP_RIGHT)
43
+ assertEquals(clickActionParams.precisionDescriber, PINPOINT)
44
+
45
+ }
46
+ }
@@ -0,0 +1,68 @@
1
+ package io.appium.espressoserver.test.model
2
+
3
+ import androidx.test.espresso.action.GeneralLocation.*
4
+ import androidx.test.espresso.action.Press.PINPOINT
5
+ import androidx.test.espresso.action.Press.THUMB
6
+ import androidx.test.espresso.action.Swipe.FAST
7
+ import com.google.gson.JsonObject
8
+ import com.google.gson.JsonParseException
9
+ import com.google.gson.JsonPrimitive
10
+ import io.appium.espressoserver.lib.model.MobileSwipeParams.Direction.DOWN
11
+ import io.appium.espressoserver.lib.model.MobileSwipeParams.MobileSwipeActionParamsDeserializer
12
+ import org.junit.Test
13
+ import kotlin.test.assertEquals
14
+
15
+ class `mobile swipe test` {
16
+
17
+ @Test
18
+ fun `should parse "MobileSwipeActionParams" with 'direction' property` () {
19
+ val jsonElement = JsonObject()
20
+ jsonElement.add("direction", JsonPrimitive("DOWN"))
21
+ val mobileSwipeActionParams = MobileSwipeActionParamsDeserializer()
22
+ .deserialize(jsonElement, null, null)
23
+ assertEquals(mobileSwipeActionParams.direction, DOWN)
24
+ }
25
+
26
+ @Test
27
+ fun `should parse "MobileSwipeActionParams" with 'swiper' property and use default parameters` () {
28
+ val jsonElement = JsonObject()
29
+ jsonElement.add("swiper", JsonPrimitive("FAST"))
30
+ val mobileSwipeActionParams = MobileSwipeActionParamsDeserializer()
31
+ .deserialize(jsonElement, null, null)
32
+ assertEquals(mobileSwipeActionParams.swiper, FAST);
33
+ assertEquals(mobileSwipeActionParams.startCoordinates, BOTTOM_CENTER);
34
+ assertEquals(mobileSwipeActionParams.endCoordinates, TOP_CENTER);
35
+ assertEquals(mobileSwipeActionParams.precisionDescriber, THUMB);
36
+ }
37
+
38
+ @Test
39
+ fun `should parse "MobileSwipeActionParams" with 'swiper' property plus other parameters` () {
40
+ val jsonElement = JsonObject()
41
+ jsonElement.add("swiper", JsonPrimitive("FAST"))
42
+ jsonElement.add("startCoordinates", JsonPrimitive("TOP_LEFT"))
43
+ jsonElement.add("endCoordinates", JsonPrimitive("TOP_RIGHT"))
44
+ jsonElement.add("precisionDescriber", JsonPrimitive("PINPOINT"))
45
+ val mobileSwipeActionParams = MobileSwipeActionParamsDeserializer()
46
+ .deserialize(jsonElement, null, null)
47
+ assertEquals(mobileSwipeActionParams.swiper, FAST);
48
+ assertEquals(mobileSwipeActionParams.startCoordinates, TOP_LEFT);
49
+ assertEquals(mobileSwipeActionParams.endCoordinates, TOP_RIGHT);
50
+ assertEquals(mobileSwipeActionParams.precisionDescriber, PINPOINT);
51
+ }
52
+
53
+ @Test(expected = JsonParseException::class)
54
+ fun `should reject if both 'direction' and 'swiper' provided`() {
55
+ val jsonElement = JsonObject()
56
+ jsonElement.add("swiper", JsonPrimitive("FAST"))
57
+ jsonElement.add("direction", JsonPrimitive("DOWN"))
58
+ MobileSwipeActionParamsDeserializer()
59
+ .deserialize(jsonElement, null, null)
60
+ }
61
+
62
+ @Test(expected = JsonParseException::class)
63
+ fun `should reject if do not provided 'direction' or 'swiper` () {
64
+ val jsonElement = JsonObject()
65
+ MobileSwipeActionParamsDeserializer()
66
+ .deserialize(jsonElement, null, null)
67
+ }
68
+ }
@@ -0,0 +1,56 @@
1
+ package io.appium.espressoserver.test.model
2
+
3
+ import io.appium.espressoserver.lib.handlers.exceptions.AppiumException
4
+ import io.appium.espressoserver.lib.helpers.w3c.models.InputSource
5
+ import io.appium.espressoserver.lib.model.TouchAction
6
+ import io.appium.espressoserver.lib.model.TouchAction.TouchActionOptions
7
+ import io.appium.espressoserver.test.helpers.w3c.assertFloatEquals
8
+ import org.junit.Assert
9
+ import org.junit.Test
10
+ import kotlin.test.assertEquals
11
+
12
+ class TouchActionTest {
13
+
14
+ @Test
15
+ @Throws(AppiumException::class)
16
+ fun shouldConvertMoveTo() {
17
+ val touchAction = TouchAction()
18
+ touchAction.action = TouchAction.ActionType.MOVE_TO
19
+ val options = TouchActionOptions()
20
+ options.x = 100L
21
+ options.y = 200L
22
+ touchAction.options = options
23
+ val actions = touchAction.toW3CAction()
24
+ Assert.assertEquals(actions[0].type, InputSource.ActionType.PAUSE)
25
+ Assert.assertEquals(actions[1].type, InputSource.ActionType.PAUSE)
26
+ val action = actions[2]
27
+ assertFloatEquals(action.x!!, 100f)
28
+ assertFloatEquals(action.y!!, 200f)
29
+ Assert.assertEquals(action.type, InputSource.ActionType.POINTER_MOVE)
30
+ Assert.assertTrue(action.isOriginViewport)
31
+ }
32
+
33
+ @Test
34
+ @Throws(AppiumException::class)
35
+ fun shouldConvertPress() {
36
+ val actionTypes = arrayOf(TouchAction.ActionType.TAP, TouchAction.ActionType.PRESS, TouchAction.ActionType.LONG_PRESS)
37
+ for (actionType in actionTypes) {
38
+ val touchAction = TouchAction()
39
+ touchAction.action = actionType
40
+ val options = TouchActionOptions()
41
+ options.x = 100L
42
+ options.y = 200L
43
+ touchAction.options = options
44
+ val actions = touchAction.toW3CAction()
45
+ val moveAction = actions[0]
46
+ Assert.assertEquals(moveAction.type, InputSource.ActionType.POINTER_MOVE)
47
+ assertFloatEquals(moveAction.x!!, 100f)
48
+ assertFloatEquals(moveAction.y!!, 200f)
49
+ val upAction = actions[1]
50
+ Assert.assertEquals(upAction.type, InputSource.ActionType.POINTER_DOWN)
51
+ assertEquals(upAction.button, 0)
52
+ val waitAction = actions[2]
53
+ Assert.assertEquals(waitAction.type, InputSource.ActionType.PAUSE)
54
+ }
55
+ }
56
+ }
@@ -0,0 +1,68 @@
1
+ package io.appium.espressoserver.test.model.web
2
+
3
+ import androidx.test.espresso.web.webdriver.Locator
4
+ import com.google.gson.JsonArray
5
+ import com.google.gson.JsonObject
6
+ import com.google.gson.JsonPrimitive
7
+ import io.appium.espressoserver.lib.model.web.WebAtomDeserializer
8
+ import org.junit.Test
9
+ import kotlin.test.assertEquals
10
+ import kotlin.test.assertTrue
11
+
12
+ class WebAtomTest {
13
+
14
+ @Test
15
+ fun `should parse web atom with no args`() {
16
+ val jsonObject = JsonObject()
17
+ jsonObject.addProperty("name", "clearElement")
18
+ val webAtom = WebAtomDeserializer().deserialize(jsonObject, null, null)
19
+ assertEquals(webAtom.name, "clearElement")
20
+ }
21
+
22
+ @Test
23
+ fun `should parse JSON primtive as web atom with name and no args`() {
24
+ val jsonObject = JsonPrimitive("clearElement")
25
+ val webAtom = WebAtomDeserializer().deserialize(jsonObject, null, null)
26
+ assertEquals(webAtom.name, "clearElement")
27
+ }
28
+
29
+ @Test
30
+ fun `should parse web atom with singleton args`() {
31
+ val jsonObject = JsonObject()
32
+ jsonObject.addProperty("name", "webKeys")
33
+ jsonObject.addProperty("args", "Hello World!")
34
+ val webAtom = WebAtomDeserializer().deserialize(jsonObject, null, null)
35
+ assertEquals(webAtom.name, "webKeys")
36
+ assertEquals(webAtom.args.first(), "Hello World!")
37
+ assertEquals(webAtom.args.size, 1)
38
+ }
39
+
40
+ @Test
41
+ fun `should parse web atom name with array of args of containing differing JSON primitive types`() {
42
+ val jsonObject = JsonObject()
43
+ jsonObject.addProperty("name", "someFakeAtom")
44
+ val argsArr = JsonArray()
45
+ argsArr.add(JsonPrimitive("hello"))
46
+ argsArr.add(JsonPrimitive(true))
47
+ argsArr.add(JsonPrimitive(100))
48
+ argsArr.add(JsonPrimitive(1.1))
49
+ jsonObject.add("args", argsArr)
50
+ val webAtom = WebAtomDeserializer().deserialize(jsonObject, null, null)
51
+ assertEquals(webAtom.name, "someFakeAtom")
52
+ assertTrue(webAtom.args contentEquals arrayOf("hello", true, 100, 1.1))
53
+ assertEquals(webAtom.args.size, 4)
54
+ }
55
+
56
+ @Test
57
+ fun `should accept locator shorthand in place of "args"`() {
58
+ val jsonObject = JsonObject()
59
+ jsonObject.addProperty("name", "findElement")
60
+ val locatorObject = JsonObject()
61
+ locatorObject.addProperty("using", "id")
62
+ locatorObject.addProperty("value", "some_html_id")
63
+ jsonObject.add("locator", locatorObject)
64
+ val webAtom = WebAtomDeserializer().deserialize(jsonObject, null, null)
65
+ assertEquals(webAtom.name, "findElement")
66
+ assertTrue(webAtom.args contentEquals arrayOf(Locator.ID, "some_html_id"))
67
+ }
68
+ }
@@ -0,0 +1,96 @@
1
+ package io.appium.espressoserver.test.model.web
2
+
3
+ import androidx.test.espresso.web.webdriver.Locator
4
+ import com.google.gson.Gson
5
+ import io.appium.espressoserver.lib.model.web.WebAtomsParams
6
+ import io.appium.espressoserver.lib.model.web.WebAtomsMethod
7
+ import org.junit.Test
8
+ import kotlin.test.assertEquals
9
+ import kotlin.test.assertTrue
10
+
11
+ class WebAtomsTest {
12
+ val g = Gson()
13
+ @Test
14
+ fun `should parse name and atom for WebAtoms method`() {
15
+ val webAtomsMethod = g.fromJson("""{
16
+ "name": "withElement",
17
+ "atom": {
18
+ "name": "findElement",
19
+ "locator": {
20
+ "using": "id",
21
+ "value": "text_input"
22
+ }
23
+ }
24
+ }""".trimIndent(), WebAtomsMethod::class.java)
25
+ assertEquals(webAtomsMethod.name, "withElement")
26
+ assertEquals(webAtomsMethod.atom.name, "findElement")
27
+ assertTrue(webAtomsMethod.atom.args contentEquals arrayOf(Locator.ID, "text_input"))
28
+ }
29
+
30
+ @Test
31
+ fun `should parse selectFrameByIndex for WebAtoms method`() {
32
+ val webAtomsMethod = g.fromJson("""{
33
+ "name": "withElement",
34
+ "atom": {
35
+ "name": "selectFrameByIndex",
36
+ "args": 1
37
+ }
38
+ }""".trimIndent(), WebAtomsMethod::class.java)
39
+ assertEquals(webAtomsMethod.name, "withElement")
40
+ assertEquals(webAtomsMethod.atom.name, "selectFrameByIndex")
41
+ assertEquals(webAtomsMethod.atom.args[0], 1)
42
+ }
43
+
44
+ @Test
45
+ fun `should parse web atoms object`() {
46
+ val json = """{
47
+ "webviewElement":"abc",
48
+ "forceJavascriptEnabled":true,
49
+ "methodChain":[
50
+ {
51
+ "name":"withElement",
52
+ "atom":{
53
+ "name":"findElement",
54
+ "locator":{
55
+ "using":"id",
56
+ "value":"text_input"
57
+ }
58
+ }
59
+ },
60
+ {
61
+ "name":"perform",
62
+ "atom":"clearElement"
63
+ },
64
+ {
65
+ "name":"perform",
66
+ "atom":{
67
+ "name":"webKeys",
68
+ "args":"Foo"
69
+ }
70
+ }
71
+ ]
72
+ }"""
73
+ val webAtoms = g.fromJson(json, WebAtomsParams::class.java)
74
+ assertEquals(webAtoms.webviewElement, "abc")
75
+ assertEquals(webAtoms.forceJavascriptEnabled, true)
76
+
77
+ webAtoms.methodChain[0].let {
78
+ assertEquals(it.name, "withElement")
79
+ assertEquals(it.atom.name, "findElement")
80
+ assertTrue(it.atom.args contentEquals arrayOf(Locator.ID, "text_input"))
81
+ }
82
+
83
+ webAtoms.methodChain[1].let {
84
+ assertEquals(it.name, "perform")
85
+ assertEquals(it.atom.name, "clearElement")
86
+ assertTrue(it.atom.args contentEquals emptyArray())
87
+ }
88
+
89
+ webAtoms.methodChain[2].let {
90
+ assertEquals(it.name, "perform")
91
+ assertEquals(it.atom.name, "webKeys")
92
+ assertTrue(it.atom.args contentEquals arrayOf("Foo"))
93
+ }
94
+
95
+ }
96
+ }
@@ -0,0 +1,33 @@
1
+ // Top-level build file where you can add configuration options common to all sub-projects/modules.
2
+
3
+ buildscript {
4
+ val appiumKotlin =
5
+ properties.getOrDefault("appiumKotlin", "1.4.32")
6
+
7
+ val appiumAndroidGradlePlugin =
8
+ properties.getOrDefault("appiumAndroidGradlePlugin", "4.1.1")
9
+
10
+ repositories {
11
+ google()
12
+ mavenCentral()
13
+ jcenter()
14
+ }
15
+ dependencies {
16
+ classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$appiumKotlin")
17
+ classpath("com.android.tools.build:gradle:$appiumAndroidGradlePlugin")
18
+
19
+ // NOTE: Do not place your application dependencies here; they belong
20
+ // in the individual module build.gradle.kts files
21
+ }
22
+ }
23
+
24
+ allprojects {
25
+ repositories {
26
+ google()
27
+ mavenCentral()
28
+ }
29
+ }
30
+
31
+ tasks.register("clean", Delete::class) {
32
+ delete(rootProject.buildDir)
33
+ }
@@ -0,0 +1,5 @@
1
+ distributionBase=GRADLE_USER_HOME
2
+ distributionPath=wrapper/dists
3
+ distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-all.zip
4
+ zipStoreBase=GRADLE_USER_HOME
5
+ zipStorePath=wrapper/dists
@@ -0,0 +1,26 @@
1
+ # Project-wide Gradle settings.
2
+
3
+ # IDE (e.g. Android Studio) users:
4
+ # Gradle settings configured through the IDE *will override*
5
+ # any settings specified in this file.
6
+
7
+ # For more details on how to configure your build environment visit
8
+ # http://www.gradle.org/docs/current/userguide/build_environment.html
9
+
10
+ # Specifies the JVM arguments used for the daemon process.
11
+ # The setting is particularly useful for tweaking memory settings.
12
+ org.gradle.jvmargs=-Xmx1536m
13
+
14
+ # When configured, Gradle will run in incubating parallel mode.
15
+ # This option should only be used with decoupled projects. More details, visit
16
+ # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
17
+ # org.gradle.parallel=true
18
+
19
+ org.gradle.configureondemand=false
20
+
21
+ android.useAndroidX=true
22
+
23
+ org.gradle.vfs.watch=true
24
+ org.gradle.caching=true
25
+ # https://youtrack.jetbrains.com/issue/KT-46708
26
+ kotlin.stdlib.default.dependency=false