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,76 @@
1
+ package io.appium.espressoserver.test.helpers.w3c
2
+
3
+ import io.appium.espressoserver.lib.handlers.exceptions.InvalidArgumentException
4
+ import org.junit.Test
5
+
6
+ import io.appium.espressoserver.lib.helpers.w3c.caps.parseCapabilities
7
+
8
+ import org.junit.Assert.*
9
+
10
+ class CapsUtilsTest {
11
+
12
+ @Test
13
+ fun shouldParseValidW3CCapabilitiesFromFirstMatch() {
14
+ val parsedCaps = parseCapabilities(listOf(mapOf(
15
+ "appActivity" to "com.package.activity",
16
+ "appPackage" to "com.package"
17
+ )), null)
18
+ assertEquals(parsedCaps["appActivity"], "com.package.activity")
19
+ assertEquals(parsedCaps["appPackage"], "com.package")
20
+ }
21
+
22
+ @Test
23
+ fun shouldParseValidEmptyW3CCapabilities() {
24
+ val parsedCaps = parseCapabilities(null, null)
25
+ assertEquals(parsedCaps.size, 0)
26
+ }
27
+
28
+ @Test
29
+ fun shouldParseValidW3CCapabilitiesFromAlwaysMatch() {
30
+ val parsedCaps = parseCapabilities(listOf(), mapOf(
31
+ "appActivity" to "com.package.activity",
32
+ "appPackage" to "com.package"
33
+ ))
34
+ assertEquals(parsedCaps["appActivity"], "com.package.activity")
35
+ assertEquals(parsedCaps["appPackage"], "com.package")
36
+ }
37
+
38
+ @Test
39
+ fun shouldParseValidW3CCapabilitiesFromBothMatches() {
40
+ val parsedCaps = parseCapabilities(listOf(mapOf(
41
+ "appActivity" to "com.package.activity"
42
+ )), mapOf(
43
+ "appPackage" to "com.package"
44
+ ))
45
+ assertEquals(parsedCaps["appActivity"], "com.package.activity")
46
+ assertEquals(parsedCaps["appPackage"], "com.package")
47
+ }
48
+
49
+ @Test
50
+ fun shouldParseValidW3CCapabilitiesFromBothMatchesWithPrefixes() {
51
+ val parsedCaps = parseCapabilities(listOf(mapOf(
52
+ "appium:appActivity" to "com.package.activity"
53
+ )), mapOf(
54
+ "appium:appPackage" to "com.package"
55
+ ))
56
+ assertEquals(parsedCaps["appActivity"], "com.package.activity")
57
+ assertEquals(parsedCaps["appPackage"], "com.package")
58
+ }
59
+
60
+ @Test(expected = InvalidArgumentException::class)
61
+ fun shouldThrowInvalidArgumentIfPropertyExistsInBothFirstAndAlwaysMatch() {
62
+ parseCapabilities(listOf(mapOf(
63
+ "appium:appActivity" to "com.package.activity"
64
+ )), mapOf(
65
+ "appActivity" to "com.package.activity",
66
+ "appium:appPackage" to "com.package"
67
+ ))
68
+ }
69
+
70
+ @Test(expected = InvalidArgumentException::class)
71
+ fun shouldThrowInvalidArgumentIfStandardPropertyIsPrefixed() {
72
+ parseCapabilities(listOf(mapOf(
73
+ "appium:platformName" to "android"
74
+ )), null)
75
+ }
76
+ }
@@ -0,0 +1,7 @@
1
+ package io.appium.espressoserver.test.helpers.w3c
2
+
3
+ import org.junit.Assert
4
+
5
+ fun assertFloatEquals(floatOne: Float, floatTwo: Float) {
6
+ Assert.assertEquals(floatOne.toDouble(), floatTwo.toDouble(), Math.ulp(1.0))
7
+ }
@@ -0,0 +1,153 @@
1
+ package io.appium.espressoserver.test.helpers.w3c
2
+
3
+ import com.google.gson.Gson
4
+ import io.appium.espressoserver.lib.helpers.w3c.models.InputSource
5
+ import io.appium.espressoserver.lib.helpers.w3c.models.InputSource.InputSourceType
6
+ import io.appium.espressoserver.lib.helpers.w3c.models.Origin
7
+ import io.appium.espressoserver.lib.helpers.w3c.state.KeyInputState
8
+ import io.appium.espressoserver.lib.helpers.w3c.state.PointerInputState
9
+ import org.junit.Assert
10
+ import org.junit.Test
11
+ import java.util.*
12
+ import kotlin.test.assertEquals
13
+
14
+ class InputSourceTest {
15
+ @Test
16
+ fun shouldDeserializeInputSource() {
17
+ val postJson = "{\"id\":\"something1\"}"
18
+ val inputSource = Gson().fromJson(postJson, InputSource::class.java)
19
+ Assert.assertEquals(inputSource.id, "something1")
20
+ }
21
+
22
+ @Test
23
+ fun shouldDeserializePointerInputSource() {
24
+ val postJson = "{\"type\":\"pointer\",\"id\":\"something2\", \"parameters\": {\"pointerType\": \"touch\"}}"
25
+ val inputSource = Gson().fromJson(postJson, InputSource::class.java)
26
+ Assert.assertEquals(inputSource.id, "something2")
27
+ Assert.assertEquals(inputSource.pointerType, InputSource.PointerType.TOUCH)
28
+ }
29
+
30
+ @Test
31
+ fun shouldDeserializeElementOriginPointer() {
32
+ val postJson = "{\"type\":\"pointer\",\"id\":\"something2\", \"parameters\": {\"pointerType\": \"touch\"}, " +
33
+ "\"actions\": [{\"type\":\"pointerMove\",\"duration\":1000,\"origin\":{\"element-6066-11e4-a52e-4f735466cecf\":\"some-element-id\"},\"x\":50,\"y\":0}]}"
34
+ val inputSource = Gson().fromJson(postJson, InputSource::class.java)
35
+ Assert.assertEquals(inputSource.id, "something2")
36
+ Assert.assertEquals(inputSource.pointerType, InputSource.PointerType.TOUCH)
37
+ val action = inputSource.actions!![0]
38
+ Assert.assertEquals(action.origin.type, Origin.ELEMENT)
39
+ Assert.assertEquals(action.origin.elementId, "some-element-id")
40
+ }
41
+
42
+ @Test
43
+ fun shouldDeserializeComplexPointerObject() {
44
+ val postJson = "{\"type\":\"pointer\",\"id\":\"finger1\",\"parameters\":{\"pointerType\":\"touch\"},\"actions\":[{\"type\":\"pointerMove\",\"duration\":0,\"x\":100,\"y\":200},{\"type\":\"pointerDown\",\"button\":0},{\"type\":\"pause\",\"duration\":500},{\"type\":\"pointerMove\",\"duration\":1000,\"origin\":\"pointer\",\"x\":50,\"y\":10},{\"type\":\"pointerUp\",\"button\":0}]}"
45
+ val inputSource = Gson().fromJson(postJson, InputSource::class.java)
46
+ Assert.assertEquals(inputSource.type, InputSourceType.POINTER)
47
+ Assert.assertEquals(inputSource.id, "finger1")
48
+ Assert.assertEquals(inputSource.pointerType, InputSource.PointerType.TOUCH)
49
+ val actions = inputSource.actions
50
+ val actionOne = actions!![0]
51
+ Assert.assertEquals(actionOne.type, InputSource.ActionType.POINTER_MOVE)
52
+ assertFloatEquals(actionOne.duration!!, 0f)
53
+ assertFloatEquals(actionOne.x!!, 100f)
54
+ assertFloatEquals(actionOne.y!!, 200f)
55
+ val actionTwo = actions[1]
56
+ Assert.assertEquals(actionTwo.type, InputSource.ActionType.POINTER_DOWN)
57
+ assertEquals(actionTwo.button, 0)
58
+ val actionThree = actions[2]
59
+ Assert.assertEquals(actionThree.type, InputSource.ActionType.PAUSE)
60
+ assertFloatEquals(actionThree.duration!!, 500f)
61
+ val actionFour = actions[3]
62
+ Assert.assertEquals(actionFour.type, InputSource.ActionType.POINTER_MOVE)
63
+ assertFloatEquals(actionFour.duration!!, 1000f)
64
+ Assert.assertEquals(actionFour.origin.type, "pointer")
65
+ Assert.assertTrue(actionFour.isOriginPointer)
66
+ assertFloatEquals(actionFour.x!!, 50f)
67
+ assertFloatEquals(actionFour.y!!, 10f)
68
+ val actionFive = actions[4]
69
+ Assert.assertEquals(actionFive.type, InputSource.ActionType.POINTER_UP)
70
+ assertEquals(actionFive.button, 0)
71
+ }
72
+
73
+ @Test
74
+ fun shouldDeserializeComplexKeyObject() {
75
+ val postJson = "{\"type\":\"key\",\"id\":\"keyboard\",\"actions\":[{\"type\":\"keyDown\",\"value\":\"key1\"},{\"type\":\"keyDown\",\"value\":\"key2\"},{\"type\":\"keyUp\",\"value\":\"key1\"},{\"type\":\"keyUp\",\"value\":\"key2\"}]}"
76
+ val inputSource = Gson().fromJson(postJson, InputSource::class.java)
77
+ Assert.assertEquals(inputSource.type, InputSourceType.KEY)
78
+ Assert.assertEquals(inputSource.id, "keyboard")
79
+ Assert.assertNull(inputSource.pointerType)
80
+ val actions = inputSource.actions
81
+ val actionOne = actions!![0]
82
+ Assert.assertEquals(actionOne.type, InputSource.ActionType.KEY_DOWN)
83
+ Assert.assertEquals(actionOne.value, "key1")
84
+ val actionTwo = actions[1]
85
+ Assert.assertEquals(actionTwo.type, InputSource.ActionType.KEY_DOWN)
86
+ Assert.assertEquals(actionTwo.value, "key2")
87
+ val actionThree = actions[2]
88
+ Assert.assertEquals(actionThree.type, InputSource.ActionType.KEY_UP)
89
+ Assert.assertEquals(actionThree.value, "key1")
90
+ val actionFour = actions[3]
91
+ Assert.assertEquals(actionFour.type, InputSource.ActionType.KEY_UP)
92
+ Assert.assertEquals(actionFour.value, "key2")
93
+ }
94
+
95
+ @Test
96
+ fun shouldDefaultPointerTypeToTouch() {
97
+ val inputSource = InputSource()
98
+ inputSource.type = InputSourceType.POINTER
99
+ Assert.assertEquals(inputSource.pointerType, InputSource.PointerType.TOUCH)
100
+ }
101
+
102
+ @Test
103
+ fun shouldMapKeyObjectToKeyInputState() {
104
+ val actions: MutableList<InputSource.Action> = ArrayList()
105
+ val action = InputSource.Action()
106
+ action.type = InputSource.ActionType.KEY_DOWN
107
+ actions.add(action)
108
+ val inputSource = InputSource(InputSourceType.KEY, "any", null, actions)
109
+
110
+ // Check the initial state
111
+ val inputState = inputSource.defaultState as KeyInputState?
112
+ Assert.assertFalse(inputState!!.isAlt)
113
+ Assert.assertFalse(inputState.isCtrl)
114
+ Assert.assertFalse(inputState.isMeta)
115
+ Assert.assertFalse(inputState.isShift)
116
+
117
+ // Add and remove a key and check the state along the way
118
+ Assert.assertFalse(inputState.isPressed("a"))
119
+ inputState.addPressed("a")
120
+ Assert.assertTrue(inputState.isPressed("a"))
121
+ inputState.removePressed("a")
122
+ Assert.assertFalse(inputState.isPressed("a"))
123
+ }
124
+
125
+ @Test
126
+ fun shouldMapPointerObjectToPointerInputState() {
127
+ val actions: MutableList<InputSource.Action> = ArrayList()
128
+ val action = InputSource.Action()
129
+ action.type = InputSource.ActionType.POINTER_DOWN
130
+ actions.add(action)
131
+ val parameters = InputSource.Parameters()
132
+ parameters.pointerType = InputSource.PointerType.TOUCH
133
+ val inputSource = InputSource(InputSourceType.POINTER, "any", parameters, actions)
134
+
135
+ // Check the initial state
136
+ val inputState = inputSource.defaultState as PointerInputState?
137
+ Assert.assertFalse(inputState!!.isPressed(1))
138
+ inputState.addPressed(1)
139
+ Assert.assertTrue(inputState.isPressed(1))
140
+ inputState.removePressed(1)
141
+ Assert.assertFalse(inputState.isPressed(1))
142
+ }
143
+
144
+ @Test
145
+ fun shouldMapNullInputSourceStateToNull() {
146
+ val actions: MutableList<InputSource.Action> = ArrayList()
147
+ val action = InputSource.Action()
148
+ action.type = InputSource.ActionType.POINTER_DOWN
149
+ actions.add(action)
150
+ val inputSource = InputSource(InputSourceType.NONE, "any", null, actions)
151
+ Assert.assertNull(inputSource.defaultState)
152
+ }
153
+ }
@@ -0,0 +1,72 @@
1
+ package io.appium.espressoserver.test.helpers.w3c
2
+
3
+ import io.appium.espressoserver.lib.handlers.exceptions.AppiumException
4
+ import io.appium.espressoserver.lib.helpers.w3c.adapter.DummyW3CActionAdapter
5
+ import io.appium.espressoserver.lib.helpers.w3c.adapter.W3CActionAdapter
6
+ import io.appium.espressoserver.lib.helpers.w3c.dispatcher.constants.KeyNormalizer
7
+ import io.appium.espressoserver.lib.helpers.w3c.models.ActionObject
8
+ import io.appium.espressoserver.lib.helpers.w3c.models.InputSource
9
+ import io.appium.espressoserver.lib.helpers.w3c.models.InputSource.InputSourceType
10
+ import io.appium.espressoserver.lib.helpers.w3c.state.InputStateTable
11
+ import io.appium.espressoserver.lib.helpers.w3c.state.KeyInputState
12
+ import io.appium.espressoserver.lib.helpers.w3c.state.PointerInputState
13
+ import org.junit.Test
14
+ import kotlin.test.assertFalse
15
+ import kotlin.test.assertTrue
16
+
17
+ class InputStateTableTest {
18
+ @Test
19
+ @Throws(AppiumException::class)
20
+ fun shouldUndoPointerDownEvents() {
21
+ val inputStateTable = InputStateTable()
22
+ val adapter: W3CActionAdapter = DummyW3CActionAdapter()
23
+
24
+ // Create a pointer down action
25
+ val actionObject = ActionObject()
26
+ actionObject.type = InputSourceType.POINTER
27
+ actionObject.subType = InputSource.ActionType.POINTER_DOWN
28
+ actionObject.button = 5
29
+ actionObject.id = "123"
30
+
31
+ // Call the pointer down action
32
+ actionObject.dispatch(adapter, inputStateTable, 0f, 0)
33
+
34
+ // Check that the button is depressed
35
+ val inputState = inputStateTable.getInputState("123") as PointerInputState?
36
+ assertTrue(inputState!!.buttons.contains(5))
37
+
38
+ // Undo the action and check that it is not depressed anymore
39
+ inputStateTable.undoAll(adapter, 0)
40
+ assertFalse(inputState.buttons.contains(5))
41
+ assertTrue(inputState.buttons.isEmpty())
42
+ }
43
+
44
+ @Test
45
+ @Throws(AppiumException::class)
46
+ fun shouldUndoKeyDownEvents() {
47
+ val inputStateTable = InputStateTable()
48
+ val adapter: W3CActionAdapter = DummyW3CActionAdapter()
49
+ val SHIFT = "\uE008"
50
+
51
+ // Create a pointer down action
52
+ val actionObject = ActionObject()
53
+ actionObject.type = InputSourceType.KEY
54
+ actionObject.subType = InputSource.ActionType.KEY_DOWN
55
+ actionObject.value = SHIFT
56
+ actionObject.id = "456"
57
+
58
+ // Call the pointer down action
59
+ actionObject.dispatch(adapter, inputStateTable, 0f, 0)
60
+
61
+ // Check that the button is depressed
62
+ val normalizedKey = KeyNormalizer.toNormalizedKey(SHIFT)
63
+ val inputState = inputStateTable.getInputState("456") as KeyInputState?
64
+ assertTrue(inputState!!.isPressed(normalizedKey))
65
+ assertTrue(inputState.isShift)
66
+
67
+ // Undo the action and check that it is not depressed anymore
68
+ inputStateTable.undoAll(adapter, 0)
69
+ assertFalse(inputState.isPressed(normalizedKey))
70
+ assertFalse(inputState.isShift)
71
+ }
72
+ }
@@ -0,0 +1,133 @@
1
+ package io.appium.espressoserver.test.helpers.w3c
2
+
3
+ import io.appium.espressoserver.lib.handlers.exceptions.AppiumException
4
+ import io.appium.espressoserver.lib.helpers.w3c.adapter.DummyW3CActionAdapter
5
+ import io.appium.espressoserver.lib.helpers.w3c.dispatcher.constants.KeyNormalizer
6
+ import io.appium.espressoserver.lib.helpers.w3c.dispatcher.constants.NormalizedKeys
7
+ import io.appium.espressoserver.lib.helpers.w3c.dispatcher.dispatchKeyDown
8
+ import io.appium.espressoserver.lib.helpers.w3c.dispatcher.dispatchKeyUp
9
+ import io.appium.espressoserver.lib.helpers.w3c.models.ActionObject
10
+ import io.appium.espressoserver.lib.helpers.w3c.models.InputSource
11
+ import io.appium.espressoserver.lib.helpers.w3c.models.InputSource.InputSourceType
12
+ import io.appium.espressoserver.lib.helpers.w3c.state.InputStateTable
13
+ import io.appium.espressoserver.lib.helpers.w3c.state.KeyInputState
14
+ import org.junit.Test
15
+ import kotlin.test.assertEquals
16
+ import kotlin.test.assertFalse
17
+ import kotlin.test.assertNull
18
+ import kotlin.test.assertTrue
19
+
20
+ class KeyDispatchTest {
21
+ @Test
22
+ @Throws(AppiumException::class)
23
+ fun shouldToggleAltIfAltPassedToBlankKeyState() {
24
+ val adapter = DummyW3CActionAdapter()
25
+ val inputStateTable = InputStateTable()
26
+ val id = "keyboard"
27
+ val alt = "\uE00A"
28
+ val actionObject = ActionObject(id, InputSourceType.KEY, InputSource.ActionType.KEY_DOWN, 0)
29
+ actionObject.value = alt
30
+ val keyInputState = KeyInputState()
31
+ assertFalse(keyInputState.isAlt)
32
+ assertFalse(keyInputState.isCtrl)
33
+ val cancelList = inputStateTable.cancelList
34
+ assertTrue(cancelList.isEmpty())
35
+ dispatchKeyDown(adapter, actionObject, keyInputState, inputStateTable)
36
+ assertEquals(cancelList.size, 1)
37
+ val cancelObject = cancelList[0]
38
+ assertEquals(cancelObject.subType, InputSource.ActionType.KEY_UP)
39
+ assertEquals(cancelObject.value, alt)
40
+ assertTrue(keyInputState.isAlt)
41
+ assertFalse(keyInputState.isCtrl)
42
+ }
43
+
44
+ @Test
45
+ @Throws(AppiumException::class)
46
+ fun shouldAddKeysToKeyPressedState() {
47
+ val adapter = DummyW3CActionAdapter()
48
+ val inputStateTable = InputStateTable()
49
+ val id = "keyboard"
50
+ val value = "F"
51
+ val actionObject = ActionObject(id, InputSourceType.KEY, InputSource.ActionType.KEY_DOWN, 0)
52
+ actionObject.value = value
53
+ val keyInputState = KeyInputState()
54
+ assertFalse(keyInputState.isPressed(value))
55
+ dispatchKeyDown(adapter, actionObject, keyInputState, inputStateTable)
56
+ assertTrue(keyInputState.isPressed(value))
57
+ }
58
+
59
+ @Test
60
+ @Throws(AppiumException::class)
61
+ fun shouldPassKeyCodeToEvent() {
62
+ val adapter = DummyW3CActionAdapter()
63
+ val inputStateTable = InputStateTable()
64
+ val id = "keyboard"
65
+ val actionObject = ActionObject(id, InputSourceType.KEY, InputSource.ActionType.KEY_DOWN, 0)
66
+ actionObject.value = "F"
67
+ val keyInputState = KeyInputState()
68
+ val keyEvent = dispatchKeyDown(adapter, actionObject, keyInputState, inputStateTable)
69
+ assertEquals(keyEvent!!.code, "KeyF")
70
+ }
71
+
72
+ @Test
73
+ @Throws(AppiumException::class)
74
+ fun shouldPassNullKeyCodeAndLocationZeroIfNotDefined() {
75
+ val adapter = DummyW3CActionAdapter()
76
+ val inputStateTable = InputStateTable()
77
+ val id = "keyboard"
78
+ val actionObject = ActionObject(id, InputSourceType.KEY, InputSource.ActionType.KEY_DOWN, 0)
79
+ actionObject.value = "\uFFFF"
80
+ val keyInputState = KeyInputState()
81
+ val keyEvent = dispatchKeyDown(adapter, actionObject, keyInputState, inputStateTable)
82
+ assertNull(keyEvent!!.code)
83
+ assertEquals(keyEvent.location, 0)
84
+ }
85
+
86
+ @Test
87
+ @Throws(AppiumException::class)
88
+ fun shouldReleaseAltOnAltKeyUp() {
89
+ val adapter = DummyW3CActionAdapter()
90
+ val inputStateTable = InputStateTable()
91
+ val id = "keyboard"
92
+ val alt = "\uE00A"
93
+ val actionObject = ActionObject(id, InputSourceType.KEY, InputSource.ActionType.KEY_DOWN, 0)
94
+ actionObject.value = alt
95
+ val keyInputState = KeyInputState()
96
+ keyInputState.addPressed("ALT")
97
+ keyInputState.isAlt = true
98
+ keyInputState.isCtrl = true
99
+ assertTrue(keyInputState.isAlt)
100
+ assertTrue(keyInputState.isCtrl)
101
+ dispatchKeyUp(adapter, actionObject, keyInputState, inputStateTable)
102
+ assertFalse(keyInputState.isAlt)
103
+ assertTrue(keyInputState.isCtrl)
104
+ }
105
+
106
+ @Test
107
+ @Throws(AppiumException::class)
108
+ fun shouldAddAndRemoveKeysFromKeyPressedState() {
109
+ val adapter = DummyW3CActionAdapter()
110
+ val inputStateTable = InputStateTable()
111
+ val id = "keyboard"
112
+ val value = "~"
113
+ val actionObject = ActionObject(id, InputSourceType.KEY, InputSource.ActionType.KEY_DOWN, 0)
114
+ actionObject.value = value
115
+ val keyInputState = KeyInputState()
116
+ assertFalse(keyInputState.isPressed(value))
117
+
118
+ // Press down a key and check that it's pressed
119
+ dispatchKeyDown(adapter, actionObject, keyInputState, inputStateTable)
120
+ assertTrue(keyInputState.isPressed(value))
121
+
122
+ // Release a key and check that it's not pressed
123
+ dispatchKeyUp(adapter, actionObject, keyInputState, inputStateTable)
124
+ assertFalse(keyInputState.isPressed(value))
125
+ }
126
+
127
+ @Test
128
+ @Throws(AppiumException::class)
129
+ fun shouldNormalizeKeys() {
130
+ val normalizedKey = KeyNormalizer.toNormalizedKey("\uE008")
131
+ assertEquals(normalizedKey, NormalizedKeys.SHIFT)
132
+ }
133
+ }
@@ -0,0 +1,74 @@
1
+ package io.appium.espressoserver.test.helpers.w3c
2
+
3
+ import io.appium.espressoserver.lib.helpers.w3c.state.KeyInputState
4
+ import io.appium.espressoserver.lib.helpers.w3c.state.getGlobalKeyState
5
+ import org.junit.Assert
6
+ import org.junit.Before
7
+ import org.junit.Test
8
+
9
+ class KeyInputStateTest {
10
+ private var keyInputStateOne: KeyInputState? = null
11
+ private var keyInputStateTwo: KeyInputState? = null
12
+
13
+ @Before
14
+ fun before() {
15
+ keyInputStateOne = KeyInputState()
16
+ keyInputStateTwo = KeyInputState()
17
+ }
18
+
19
+ @Test
20
+ fun shouldSetAltToTrueIfJustOneIsTrue() {
21
+ keyInputStateOne!!.isAlt = true
22
+ keyInputStateTwo!!.isAlt = false
23
+ val keyInputStates = arrayOf(keyInputStateOne, keyInputStateTwo)
24
+ val aggregateKeyInputState = getGlobalKeyState(listOfNotNull(*keyInputStates))
25
+ Assert.assertTrue(aggregateKeyInputState.isAlt)
26
+ }
27
+
28
+ @Test
29
+ fun shouldSetAltToFalseIfAllAreFalse() {
30
+ keyInputStateOne!!.isAlt = false
31
+ keyInputStateTwo!!.isAlt = false
32
+ val keyInputStates = arrayOf(keyInputStateOne, keyInputStateTwo)
33
+ val aggregateKeyInputState = getGlobalKeyState(listOfNotNull(*keyInputStates))
34
+ Assert.assertFalse(aggregateKeyInputState.isAlt)
35
+ }
36
+
37
+ @Test
38
+ fun shouldTestSeveralKeyStates() {
39
+ keyInputStateOne!!.isAlt = true
40
+ keyInputStateOne!!.isCtrl = true
41
+ keyInputStateOne!!.isShift = false
42
+ keyInputStateOne!!.isMeta = false
43
+ keyInputStateTwo!!.isAlt = false
44
+ keyInputStateTwo!!.isCtrl = true
45
+ keyInputStateTwo!!.isShift = false
46
+ keyInputStateTwo!!.isMeta = true
47
+ val keyInputStates = arrayOf(keyInputStateOne, keyInputStateTwo)
48
+ val aggregateKeyInputState = getGlobalKeyState(listOfNotNull(*keyInputStates))
49
+ Assert.assertTrue(aggregateKeyInputState.isAlt)
50
+ Assert.assertTrue(aggregateKeyInputState.isCtrl)
51
+ Assert.assertFalse(aggregateKeyInputState.isShift)
52
+ Assert.assertTrue(aggregateKeyInputState.isMeta)
53
+ }
54
+
55
+ @Test
56
+ fun shouldCombinePressed() {
57
+ keyInputStateOne!!.addPressed("a")
58
+ keyInputStateOne!!.addPressed("b")
59
+ keyInputStateOne!!.addPressed("c")
60
+ keyInputStateOne!!.addPressed("d")
61
+ keyInputStateTwo!!.addPressed("d")
62
+ keyInputStateTwo!!.addPressed("e")
63
+ keyInputStateTwo!!.addPressed("f")
64
+ val keyInputStates = arrayOf(keyInputStateOne, keyInputStateTwo)
65
+ val aggregateKeyInputState = getGlobalKeyState(listOfNotNull(*keyInputStates))
66
+ Assert.assertTrue(aggregateKeyInputState.isPressed("a"))
67
+ Assert.assertTrue(aggregateKeyInputState.isPressed("b"))
68
+ Assert.assertTrue(aggregateKeyInputState.isPressed("c"))
69
+ Assert.assertTrue(aggregateKeyInputState.isPressed("d"))
70
+ Assert.assertTrue(aggregateKeyInputState.isPressed("e"))
71
+ Assert.assertTrue(aggregateKeyInputState.isPressed("f"))
72
+ Assert.assertFalse(aggregateKeyInputState.isPressed("g"))
73
+ }
74
+ }