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,321 @@
1
+ import _ from 'lodash';
2
+ import { util } from 'appium-support';
3
+ import logger from '../logger';
4
+ import validate from 'validate.js';
5
+ import { errors } from 'appium-base-driver';
6
+ import { qualifyActivityName } from '../utils';
7
+
8
+ let commands = {}, helpers = {}, extensions = {};
9
+
10
+ function assertRequiredOptions (options, requiredOptionNames) {
11
+ if (!_.isArray(requiredOptionNames)) {
12
+ requiredOptionNames = [requiredOptionNames];
13
+ }
14
+ const presentOptionNames = _.keys(options);
15
+ const missingOptionNames = _.difference(requiredOptionNames, presentOptionNames);
16
+ if (_.isEmpty(missingOptionNames)) {
17
+ return options;
18
+ }
19
+ throw new Error(`The following options are required: ${JSON.stringify(missingOptionNames)}. ` +
20
+ `You have only provided: ${JSON.stringify(presentOptionNames)}`);
21
+ }
22
+
23
+ // eslint-disable-next-line require-await
24
+ commands.launchApp = async function launchApp () {
25
+ throw new errors.UnsupportedOperationError('Please create a new session in order to launch the application under test');
26
+ };
27
+
28
+ // eslint-disable-next-line require-await
29
+ commands.closeApp = async function closeApp () {
30
+ throw new errors.UnsupportedOperationError('Please quit the session in order to close the application under test');
31
+ };
32
+
33
+ // eslint-disable-next-line require-await
34
+ commands.reset = async function reset () {
35
+ throw new errors.UnsupportedOperationError(
36
+ 'Please quit the session and create a new one ' +
37
+ 'in order to close and launch the application under test');
38
+ };
39
+
40
+ commands.getClipboard = async function getClipboard () {
41
+ return (await this.adb.getApiLevel() < 29)
42
+ ? (await this.espresso.jwproxy.command('/appium/device/get_clipboard', 'POST', {}))
43
+ : (await this.adb.getClipboard());
44
+ };
45
+
46
+ commands.mobilePerformEditorAction = async function mobilePerformEditorAction (opts = {}) {
47
+ const {action} = assertRequiredOptions(opts, ['action']);
48
+ return await this.espresso.jwproxy.command('/appium/device/perform_editor_action', 'POST', {action});
49
+ };
50
+
51
+ commands.mobileSwipe = async function mobileSwipe (opts = {}) {
52
+ const {direction, element, swiper, startCoordinates, endCoordinates, precisionDescriber} = assertRequiredOptions(opts, ['element']);
53
+ return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/swipe`, 'POST', {
54
+ direction, element, swiper, startCoordinates, endCoordinates, precisionDescriber
55
+ });
56
+ };
57
+
58
+ commands.mobileGetDeviceInfo = async function mobileGetDeviceInfo () {
59
+ return await this.espresso.jwproxy.command('/appium/device/info', 'GET');
60
+ };
61
+
62
+ commands.mobileIsToastVisible = async function mobileIsToastVisible (opts = {}) {
63
+ const {text, isRegexp} = opts;
64
+ if (!util.hasValue(text)) {
65
+ logger.errorAndThrow(`'text' argument is mandatory`);
66
+ }
67
+ return await this.espresso.jwproxy.command('/appium/execute_mobile/is_toast_displayed', 'POST', {
68
+ text,
69
+ isRegexp,
70
+ });
71
+ };
72
+
73
+ commands.mobileOpenDrawer = async function mobileOpenDrawer (opts = {}) {
74
+ const {element, gravity} = assertRequiredOptions(opts, ['element']);
75
+
76
+ return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/open_drawer`, 'POST', {
77
+ gravity
78
+ });
79
+ };
80
+
81
+ commands.mobileCloseDrawer = async function mobileCloseDrawer (opts = {}) {
82
+ const {element, gravity} = assertRequiredOptions(opts, ['element']);
83
+
84
+ return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/close_drawer`, 'POST', {
85
+ gravity
86
+ });
87
+ };
88
+
89
+ commands.mobileSetDate = async function mobileSetDate (opts = {}) {
90
+ const {element, year, monthOfYear, dayOfMonth} = assertRequiredOptions(opts, ['element', 'year', 'monthOfYear', 'dayOfMonth']);
91
+
92
+ return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/set_date`, 'POST', {
93
+ year,
94
+ monthOfYear,
95
+ dayOfMonth,
96
+ });
97
+ };
98
+
99
+ commands.mobileSetTime = async function mobileSetTime (opts = {}) {
100
+ const {element, hours, minutes} = assertRequiredOptions(opts, ['element', 'hours', 'minutes']);
101
+
102
+ return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/set_time`, 'POST', {
103
+ hours,
104
+ minutes,
105
+ });
106
+ };
107
+
108
+ commands.mobileNavigateTo = async function mobileNavigateTo (opts = {}) {
109
+ let {element, menuItemId} = assertRequiredOptions(opts, ['menuItemId', 'element']);
110
+
111
+ let menuItemIdAsNumber = parseInt(menuItemId, 10);
112
+ if (_.isNaN(menuItemIdAsNumber) || menuItemIdAsNumber < 0) {
113
+ logger.errorAndThrow(`'menuItemId' must be a non-negative number. Found ${menuItemId}`);
114
+ menuItemId = menuItemIdAsNumber;
115
+ }
116
+
117
+ return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/navigate_to`, 'POST', {
118
+ menuItemId
119
+ });
120
+ };
121
+
122
+ /**
123
+ * Runs a chain of Espresso web atoms (see https://developer.android.com/training/testing/espresso/web for reference)
124
+ *
125
+ * Takes JSON of the form
126
+ *
127
+ * {
128
+ * "webviewEl": "<ELEMENT_ID>", // optional webview element to operate on
129
+ * "forceJavascriptEnabled": true|false, // if webview disables javascript, webatoms won't work, this forces it
130
+ * "methodChain": [
131
+ * {"name": "methodName", "atom": {"name": "atomName", "args": ["arg1", "arg2", ...]}},
132
+ * ...
133
+ * ]
134
+ * }
135
+ *
136
+ */
137
+ commands.mobileWebAtoms = async function mobileWebAtoms (opts = {}) {
138
+ opts = assertRequiredOptions(opts, ['methodChain']);
139
+ return await this.espresso.jwproxy.command(`/appium/execute_mobile/web_atoms`, 'POST', opts);
140
+ };
141
+
142
+ commands.mobileScrollToPage = async function mobileScrollToPage (opts = {}) {
143
+
144
+ // Validate the parameters
145
+ const scrollToTypes = ['first', 'last', 'left', 'right'];
146
+ const res = validate(opts, {
147
+ element: {presence: true},
148
+ scrollTo: {
149
+ inclusion: {
150
+ within: scrollToTypes,
151
+ message: `"scrollTo" must be one of "${scrollToTypes.join(', ')}" found '%{value}'`,
152
+ }
153
+ },
154
+ scrollToPage: {
155
+ numericality: {
156
+ onlyInteger: true,
157
+ greaterThanOrEqualTo: 0,
158
+ message: `"scrollToPage" must be a non-negative integer. Found '%{value}'`
159
+ },
160
+ },
161
+ });
162
+
163
+ if (util.hasValue(res)) {
164
+ logger.errorAndThrow(`Invalid scrollTo parameters: ${JSON.stringify(res)}`);
165
+ }
166
+
167
+ const {element, scrollTo, scrollToPage, smoothScroll} = opts;
168
+
169
+ if (util.hasValue(scrollTo) && util.hasValue(scrollToPage)) {
170
+ logger.warn(`'scrollTo' and 'scrollToPage' where both provided. Defaulting to 'scrollTo'`);
171
+ }
172
+
173
+ return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/scroll_to_page`, 'POST', {
174
+ scrollTo,
175
+ scrollToPage,
176
+ smoothScroll,
177
+ });
178
+ };
179
+
180
+
181
+ /**
182
+ * API to invoke methods defined in Android app.
183
+ *
184
+ * Example data
185
+ * {
186
+ * target: 'activity',
187
+ * methods:
188
+ * [
189
+ * {
190
+ * name: "someMethod",
191
+ * },
192
+ * {
193
+ * name: "anotherMethod",
194
+ * args:
195
+ * [
196
+ * {value: "Lol", type: 'java.lang.CharSequence'},
197
+ * {value: 1, type: 'int'}
198
+ * ]
199
+ * }
200
+ * ]
201
+ * }
202
+ *
203
+ * In above example, method "someMethod" will be invoked on 'activity'. On the result, "anotherMethod" will be invoked
204
+ * "target" can be either 'activity', 'application' or 'element'
205
+ * If target is set to 'application', methods will be invoked on application class
206
+ * If target is set to 'activity', methods will be invoked on current activity
207
+ * If target is set to 'element', 'elementId' must be specified
208
+ *
209
+ * - Only 'Public' methods can be invoked. ('open' modifire is necessary in Kotlin)
210
+ * - following primitive types are supported: "int", "boolean", "byte", "short", "long", "float", "char"
211
+ * - Non-primitive types with fully qualified name "java.lang.*" is also supported:
212
+ * Eg. "java.lang.CharSequence", "java.lang.String", "java.lang.Integer", "java.lang.Float",
213
+ * "java.lang.Double", "java.lang.Boolean", "java.lang.Long", "java.lang.Short",
214
+ * "java.lang.Character" etc...
215
+ *
216
+ *
217
+ * @throws {Error} if target is not 'activity' or 'application'
218
+ * @throws {Error} if a method is not found with given argument types
219
+ *
220
+ * @return {*} the result of the last method in the invocation chain. If method return type is void, then "<VOID>" will be returned
221
+ *
222
+ */
223
+ commands.mobileBackdoor = async function mobileBackdoor (opts = {}) {
224
+ assertRequiredOptions(opts, ['target', 'methods']);
225
+ const {target, methods} = opts;
226
+ if (target === 'element') {
227
+ assertRequiredOptions(opts, ['elementId']);
228
+ }
229
+ const {elementId: targetElement} = opts;
230
+ return await this.espresso.jwproxy.command(`/appium/execute_mobile/backdoor`, 'POST', {target, methods, targetElement});
231
+ };
232
+
233
+ /**
234
+ * Execute UiAutomator2 commands to drive out of app areas.
235
+ * strategy can be one of: "clazz", "res", "text", "textContains", "textEndsWith", "textStartsWith",
236
+ * "desc", "descContains", "descEndsWith", "descStartsWith", "pkg"
237
+ *
238
+ * action can be one of: "click", "longClick", "getText", "getContentDescription", "getClassName",
239
+ * "getResourceName", "getVisibleBounds", "getVisibleCenter", "getApplicationPackage",
240
+ * "getChildCount", "clear", "isCheckable", "isChecked", "isClickable", "isEnabled",
241
+ * "isFocusable", "isFocused", "isLongClickable", "isScrollable", "isSelected"
242
+ */
243
+ commands.mobileUiautomator = async function mobileUiautomator (opts = {}) {
244
+ const {strategy, locator, action, index} = assertRequiredOptions(opts, ['strategy', 'locator', 'action']);
245
+ return await this.espresso.jwproxy.command(`/appium/execute_mobile/uiautomator`, 'POST', {strategy, locator, index, action});
246
+ };
247
+
248
+ /**
249
+ * Execute UiAutomator2 command to return the UI dump when AUT is in background.
250
+ * @throws {Error} if uiautomator view dump is unsuccessful
251
+ * @returns {string} uiautomator DOM xml as string
252
+ */
253
+ commands.mobileUiautomatorPageSource = async function mobileUiautomatorPageSource () {
254
+ return await this.espresso.jwproxy.command(`/appium/execute_mobile/uiautomator_page_source`, 'GET');
255
+ };
256
+
257
+ /**
258
+ * Flash the element with given id.
259
+ * durationMillis and repeatCount are optional
260
+ *
261
+ */
262
+ commands.mobileFlashElement = async function mobileFlashElement (opts = {}) {
263
+ const {element} = assertRequiredOptions(opts, ['element']);
264
+ const {durationMillis, repeatCount} = opts;
265
+ return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/flash`, 'POST', {
266
+ durationMillis,
267
+ repeatCount
268
+ });
269
+ };
270
+
271
+ /**
272
+ * Perform a 'GeneralClickAction' (https://developer.android.com/reference/androidx/test/espresso/action/GeneralClickAction)
273
+ */
274
+ commands.mobileClickAction = async function mobileClickAction (opts = {}) {
275
+ const {element, tapper, coordinatesProvider, precisionDescriber,
276
+ inputDevice, buttonState} = assertRequiredOptions(opts, ['element']);
277
+ return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/click_action`, 'POST', {
278
+ tapper, coordinatesProvider, precisionDescriber, inputDevice, buttonState
279
+ });
280
+ };
281
+
282
+ commands.updateSettings = async function updateSettings (settings) {
283
+ return await this.espresso.jwproxy.command(`/appium/settings`, 'POST', { settings });
284
+ };
285
+
286
+ commands.getSettings = async function getSettings () {
287
+ return await this.espresso.jwproxy.command(`/appium/settings`, 'GET');
288
+ };
289
+
290
+ // Stop proxying to any Chromedriver and redirect to Espresso
291
+ helpers.suspendChromedriverProxy = function suspendChromedriverProxy () {
292
+ this.chromedriver = null;
293
+ this.proxyReqRes = this.espresso.proxyReqRes.bind(this.espresso);
294
+ this.jwpProxyActive = true;
295
+ };
296
+
297
+ commands.startActivity = async function startActivity (appPackage, appActivity,
298
+ appWaitPackage, appWaitActivity) {
299
+ // intentAction, intentCategory, intentFlags, optionalIntentArguments, dontStopAppOnReset
300
+ // parameters are not supported by Espresso
301
+ appPackage = appPackage || this.caps.appPackage;
302
+ appWaitPackage = appWaitPackage || appPackage;
303
+ appActivity = qualifyActivityName(appActivity, appPackage);
304
+ appWaitActivity = qualifyActivityName(appWaitActivity || appActivity, appWaitPackage);
305
+ logger.debug(`Starting activity '${appActivity}' for package '${appPackage}'`);
306
+ await this.espresso.jwproxy.command(`/appium/device/start_activity`, 'POST', {
307
+ appPackage,
308
+ appActivity,
309
+ });
310
+ await this.adb.waitForActivity(appWaitPackage, appWaitActivity);
311
+ };
312
+
313
+ commands.mobileDismissAutofill = async function mobileDismissAutofill (opts = {}) {
314
+ const {element} = assertRequiredOptions(opts, ['element']);
315
+ await this.espresso.jwproxy.command(
316
+ `/session/:sessionId/appium/execute_mobile/${util.unwrapElement(element)}/dismiss_autofill`, 'POST', {});
317
+ };
318
+
319
+ Object.assign(extensions, commands, helpers);
320
+ export { commands, helpers };
321
+ export default extensions;
@@ -0,0 +1,52 @@
1
+ import { requireOptions } from '../utils';
2
+
3
+ const commands = {};
4
+
5
+ /**
6
+ * @typedef {Object} IdlingResourcesOptions
7
+ * @property {!string} classNames - The comma-separated list of idling resources class names.
8
+ * Each name must be a full-qualified java class name, like `io.appium.espressoserver.lib.MyIdlingResource`.
9
+ * Each class in the app source must implement a singleton pattern and have a static `getInstance()`
10
+ * method returning the class instance, which implements `androidx.test.espresso.IdlingResource`
11
+ * interface. Read
12
+ * - https://developer.android.com/training/testing/espresso/idling-resource
13
+ * - https://android.jlelse.eu/integrate-espresso-idling-resources-in-your-app-to-build-flexible-ui-tests-c779e24f5057
14
+ * for more details on how to design and use idling resources concept in Espresso.
15
+ */
16
+
17
+ /**
18
+ * Registers one or more idling resources
19
+ *
20
+ * @param {IdlingResourcesOptions} opts
21
+ * @throws {Error} If there was a failure while parsing options or registering
22
+ * the actual instances
23
+ */
24
+ commands.mobileRegisterIdlingResources = async function mobileRegisterIdlingResources (opts = {}) {
25
+ return await this.espresso.jwproxy.command('/appium/execute_mobile/register_idling_resources', 'POST',
26
+ requireOptions(opts, ['classNames']));
27
+ };
28
+
29
+ /**
30
+ * Unregisters one or more idling resources
31
+ *
32
+ * @param {IdlingResourcesOptions} opts
33
+ * @throws {Error} If there was a failure while parsing options or unregistering
34
+ * the actual instances
35
+ */
36
+ commands.mobileUnregisterIdlingResources = async function mobileUnregisterIdlingResources (opts = {}) {
37
+ return await this.espresso.jwproxy.command('/appium/execute_mobile/unregister_idling_resources', 'POST',
38
+ requireOptions(opts, ['classNames']));
39
+ };
40
+
41
+ /**
42
+ * Returns a list of currently registered idling resources
43
+ * or an empty list if no resources have been registered yet.
44
+ *
45
+ * @returns {Array<string>} The list of fully qualified class names
46
+ */
47
+ commands.mobileListIdlingResources = async function mobileListIdlingResources () {
48
+ return await this.espresso.jwproxy.command('/appium/execute_mobile/list_idling_resources', 'GET');
49
+ };
50
+
51
+ export { commands };
52
+ export default commands;
@@ -0,0 +1,16 @@
1
+ import executeCmds from './execute';
2
+ import generalCmds from './general';
3
+ import servicesCmds from './services';
4
+ import idlingResourcesCmds from './idling-resources';
5
+
6
+ const commands = {};
7
+ Object.assign(
8
+ commands,
9
+ generalCmds,
10
+ executeCmds,
11
+ servicesCmds,
12
+ idlingResourcesCmds,
13
+ // add other command types here
14
+ );
15
+
16
+ export default commands;
@@ -0,0 +1,50 @@
1
+ import { requireOptions } from '../utils';
2
+
3
+ const commands = {};
4
+
5
+
6
+ /**
7
+ * @typedef {Object} StartServiceOptions
8
+ * @property {!string} intent - The name of the service intent to start, for example
9
+ * `com.some.package.name/.YourServiceSubClassName`. This option is mandatory.
10
+ * !!! Only services in the app's under test scope could be started.
11
+ * @property {boolean} foreground [false] - Set it to `true` if your service must be
12
+ * started as foreground service.
13
+ */
14
+
15
+ /**
16
+ * Starts the given service intent.
17
+ *
18
+ * @param {StartServiceOptions} opts
19
+ * @returns {string} The full component name
20
+ * @throws {Error} If there was a failure while starting the service
21
+ * or required options are missing
22
+ */
23
+ commands.mobileStartService = async function mobileStartService (opts = {}) {
24
+ return await this.espresso.jwproxy.command('/appium/execute_mobile/start_service', 'POST',
25
+ requireOptions(opts, ['intent']));
26
+ };
27
+
28
+ /**
29
+ * @typedef {Object} StopServiceOptions
30
+ * @property {!string} intent - The name of the service intent to stop, for example
31
+ * `com.some.package.name/.YourServiceSubClassName`. This option is mandatory.
32
+ * !!! Only services in the app's under test scope could be stopped.
33
+ */
34
+
35
+ /**
36
+ * Stops the given service intent.
37
+ *
38
+ * @param {StopServiceOptions} opts
39
+ * @returns {string} `true` if the service has been successfully stopped
40
+ * @throws {Error} If there was a failure while stopping the service
41
+ * or required options are missing
42
+ */
43
+ commands.mobileStopService = async function mobileStopService (opts = {}) {
44
+ return await this.espresso.jwproxy.command('/appium/execute_mobile/stop_service', 'POST',
45
+ requireOptions(opts, ['intent']));
46
+ };
47
+
48
+
49
+ export { commands };
50
+ export default commands;
@@ -0,0 +1,55 @@
1
+ import { commonCapConstraints } from 'appium-android-driver';
2
+
3
+ let espressoCapConstraints = {
4
+ app: {
5
+ isString: true,
6
+ },
7
+ automationName: {
8
+ isString: true,
9
+ },
10
+ systemPort: {
11
+ isNumber: true
12
+ },
13
+ browserName: {
14
+ isString: true
15
+ },
16
+ launchTimeout: {
17
+ isNumber: true
18
+ },
19
+ skipUnlock: {
20
+ isBoolean: true
21
+ },
22
+ forceEspressoRebuild: {
23
+ isBoolean: true
24
+ },
25
+ espressoServerLaunchTimeout: {
26
+ isNumber: true
27
+ },
28
+ espressoBuildConfig: {
29
+ isString: true
30
+ },
31
+ showGradleLog: {
32
+ isBoolean: true
33
+ },
34
+ skipServerInstallation: {
35
+ isBoolean: true
36
+ },
37
+ intentOptions: {
38
+ isObject: true
39
+ },
40
+ disableSuppressAccessibilityService: {
41
+ isBoolean: true
42
+ },
43
+ activityOptions: {
44
+ isObject: true
45
+ },
46
+ appLocale: {
47
+ isObject: true,
48
+ }
49
+ };
50
+
51
+ let desiredCapConstraints = {};
52
+ Object.assign(desiredCapConstraints, espressoCapConstraints,
53
+ commonCapConstraints);
54
+
55
+ export default desiredCapConstraints;