appium-desktop-driver 1.2.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 (208) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +609 -0
  3. package/ROADMAP.md +175 -0
  4. package/build/lib/commands/actions.d.ts +12 -0
  5. package/build/lib/commands/actions.d.ts.map +1 -0
  6. package/build/lib/commands/actions.js +242 -0
  7. package/build/lib/commands/actions.js.map +1 -0
  8. package/build/lib/commands/app.d.ts +18 -0
  9. package/build/lib/commands/app.d.ts.map +1 -0
  10. package/build/lib/commands/app.js +280 -0
  11. package/build/lib/commands/app.js.map +1 -0
  12. package/build/lib/commands/device.d.ts +11 -0
  13. package/build/lib/commands/device.d.ts.map +1 -0
  14. package/build/lib/commands/device.js +236 -0
  15. package/build/lib/commands/device.js.map +1 -0
  16. package/build/lib/commands/element.d.ts +16 -0
  17. package/build/lib/commands/element.d.ts.map +1 -0
  18. package/build/lib/commands/element.js +233 -0
  19. package/build/lib/commands/element.js.map +1 -0
  20. package/build/lib/commands/extension.d.ts +124 -0
  21. package/build/lib/commands/extension.d.ts.map +1 -0
  22. package/build/lib/commands/extension.js +715 -0
  23. package/build/lib/commands/extension.js.map +1 -0
  24. package/build/lib/commands/functions.d.ts +3 -0
  25. package/build/lib/commands/functions.d.ts.map +1 -0
  26. package/build/lib/commands/functions.js +194 -0
  27. package/build/lib/commands/functions.js.map +1 -0
  28. package/build/lib/commands/index.d.ts +178 -0
  29. package/build/lib/commands/index.d.ts.map +1 -0
  30. package/build/lib/commands/index.js +54 -0
  31. package/build/lib/commands/index.js.map +1 -0
  32. package/build/lib/commands/powershell.d.ts +6 -0
  33. package/build/lib/commands/powershell.d.ts.map +1 -0
  34. package/build/lib/commands/powershell.js +202 -0
  35. package/build/lib/commands/powershell.js.map +1 -0
  36. package/build/lib/commands/screen-recorder.d.ts +40 -0
  37. package/build/lib/commands/screen-recorder.d.ts.map +1 -0
  38. package/build/lib/commands/screen-recorder.js +183 -0
  39. package/build/lib/commands/screen-recorder.js.map +1 -0
  40. package/build/lib/commands/system.d.ts +4 -0
  41. package/build/lib/commands/system.d.ts.map +1 -0
  42. package/build/lib/commands/system.js +8 -0
  43. package/build/lib/commands/system.js.map +1 -0
  44. package/build/lib/constants.d.ts +3 -0
  45. package/build/lib/constants.d.ts.map +1 -0
  46. package/build/lib/constants.js +6 -0
  47. package/build/lib/constants.js.map +1 -0
  48. package/build/lib/constraints.d.ts +58 -0
  49. package/build/lib/constraints.d.ts.map +1 -0
  50. package/build/lib/constraints.js +60 -0
  51. package/build/lib/constraints.js.map +1 -0
  52. package/build/lib/driver.d.ts +36 -0
  53. package/build/lib/driver.d.ts.map +1 -0
  54. package/build/lib/driver.js +209 -0
  55. package/build/lib/driver.js.map +1 -0
  56. package/build/lib/enums.d.ts +89 -0
  57. package/build/lib/enums.d.ts.map +1 -0
  58. package/build/lib/enums.js +83 -0
  59. package/build/lib/enums.js.map +1 -0
  60. package/build/lib/mcp/appium-manager.d.ts +8 -0
  61. package/build/lib/mcp/appium-manager.d.ts.map +1 -0
  62. package/build/lib/mcp/appium-manager.js +160 -0
  63. package/build/lib/mcp/appium-manager.js.map +1 -0
  64. package/build/lib/mcp/config.d.ts +7 -0
  65. package/build/lib/mcp/config.d.ts.map +1 -0
  66. package/build/lib/mcp/config.js +14 -0
  67. package/build/lib/mcp/config.js.map +1 -0
  68. package/build/lib/mcp/constants.d.ts +3 -0
  69. package/build/lib/mcp/constants.d.ts.map +1 -0
  70. package/build/lib/mcp/constants.js +6 -0
  71. package/build/lib/mcp/constants.js.map +1 -0
  72. package/build/lib/mcp/errors.d.ts +2 -0
  73. package/build/lib/mcp/errors.d.ts.map +1 -0
  74. package/build/lib/mcp/errors.js +10 -0
  75. package/build/lib/mcp/errors.js.map +1 -0
  76. package/build/lib/mcp/index.d.ts +3 -0
  77. package/build/lib/mcp/index.d.ts.map +1 -0
  78. package/build/lib/mcp/index.js +113 -0
  79. package/build/lib/mcp/index.js.map +1 -0
  80. package/build/lib/mcp/session.d.ts +24 -0
  81. package/build/lib/mcp/session.d.ts.map +1 -0
  82. package/build/lib/mcp/session.js +77 -0
  83. package/build/lib/mcp/session.js.map +1 -0
  84. package/build/lib/mcp/tools/advanced.d.ts +4 -0
  85. package/build/lib/mcp/tools/advanced.d.ts.map +1 -0
  86. package/build/lib/mcp/tools/advanced.js +119 -0
  87. package/build/lib/mcp/tools/advanced.js.map +1 -0
  88. package/build/lib/mcp/tools/app.d.ts +4 -0
  89. package/build/lib/mcp/tools/app.d.ts.map +1 -0
  90. package/build/lib/mcp/tools/app.js +64 -0
  91. package/build/lib/mcp/tools/app.js.map +1 -0
  92. package/build/lib/mcp/tools/clipboard.d.ts +4 -0
  93. package/build/lib/mcp/tools/clipboard.d.ts.map +1 -0
  94. package/build/lib/mcp/tools/clipboard.js +41 -0
  95. package/build/lib/mcp/tools/clipboard.js.map +1 -0
  96. package/build/lib/mcp/tools/find.d.ts +4 -0
  97. package/build/lib/mcp/tools/find.d.ts.map +1 -0
  98. package/build/lib/mcp/tools/find.js +119 -0
  99. package/build/lib/mcp/tools/find.js.map +1 -0
  100. package/build/lib/mcp/tools/index.d.ts +4 -0
  101. package/build/lib/mcp/tools/index.d.ts.map +1 -0
  102. package/build/lib/mcp/tools/index.js +24 -0
  103. package/build/lib/mcp/tools/index.js.map +1 -0
  104. package/build/lib/mcp/tools/inspect.d.ts +4 -0
  105. package/build/lib/mcp/tools/inspect.d.ts.map +1 -0
  106. package/build/lib/mcp/tools/inspect.js +106 -0
  107. package/build/lib/mcp/tools/inspect.js.map +1 -0
  108. package/build/lib/mcp/tools/interact.d.ts +4 -0
  109. package/build/lib/mcp/tools/interact.d.ts.map +1 -0
  110. package/build/lib/mcp/tools/interact.js +121 -0
  111. package/build/lib/mcp/tools/interact.js.map +1 -0
  112. package/build/lib/mcp/tools/patterns.d.ts +4 -0
  113. package/build/lib/mcp/tools/patterns.d.ts.map +1 -0
  114. package/build/lib/mcp/tools/patterns.js +136 -0
  115. package/build/lib/mcp/tools/patterns.js.map +1 -0
  116. package/build/lib/mcp/tools/session.d.ts +4 -0
  117. package/build/lib/mcp/tools/session.d.ts.map +1 -0
  118. package/build/lib/mcp/tools/session.js +55 -0
  119. package/build/lib/mcp/tools/session.js.map +1 -0
  120. package/build/lib/mcp/tools/window.d.ts +4 -0
  121. package/build/lib/mcp/tools/window.d.ts.map +1 -0
  122. package/build/lib/mcp/tools/window.js +134 -0
  123. package/build/lib/mcp/tools/window.js.map +1 -0
  124. package/build/lib/powershell/common.d.ts +39 -0
  125. package/build/lib/powershell/common.d.ts.map +1 -0
  126. package/build/lib/powershell/common.js +121 -0
  127. package/build/lib/powershell/common.js.map +1 -0
  128. package/build/lib/powershell/conditions.d.ts +24 -0
  129. package/build/lib/powershell/conditions.d.ts.map +1 -0
  130. package/build/lib/powershell/conditions.js +131 -0
  131. package/build/lib/powershell/conditions.js.map +1 -0
  132. package/build/lib/powershell/converter.d.ts +3 -0
  133. package/build/lib/powershell/converter.d.ts.map +1 -0
  134. package/build/lib/powershell/converter.js +273 -0
  135. package/build/lib/powershell/converter.js.map +1 -0
  136. package/build/lib/powershell/core.d.ts +8 -0
  137. package/build/lib/powershell/core.d.ts.map +1 -0
  138. package/build/lib/powershell/core.js +30 -0
  139. package/build/lib/powershell/core.js.map +1 -0
  140. package/build/lib/powershell/elements.d.ts +70 -0
  141. package/build/lib/powershell/elements.d.ts.map +1 -0
  142. package/build/lib/powershell/elements.js +523 -0
  143. package/build/lib/powershell/elements.js.map +1 -0
  144. package/build/lib/powershell/index.d.ts +8 -0
  145. package/build/lib/powershell/index.d.ts.map +1 -0
  146. package/build/lib/powershell/index.js +24 -0
  147. package/build/lib/powershell/index.js.map +1 -0
  148. package/build/lib/powershell/regex.d.ts +19 -0
  149. package/build/lib/powershell/regex.d.ts.map +1 -0
  150. package/build/lib/powershell/regex.js +68 -0
  151. package/build/lib/powershell/regex.js.map +1 -0
  152. package/build/lib/powershell/types.d.ts +155 -0
  153. package/build/lib/powershell/types.d.ts.map +1 -0
  154. package/build/lib/powershell/types.js +141 -0
  155. package/build/lib/powershell/types.js.map +1 -0
  156. package/build/lib/util.d.ts +17 -0
  157. package/build/lib/util.d.ts.map +1 -0
  158. package/build/lib/util.js +76 -0
  159. package/build/lib/util.js.map +1 -0
  160. package/build/lib/winapi/types/index.d.ts +8 -0
  161. package/build/lib/winapi/types/index.d.ts.map +1 -0
  162. package/build/lib/winapi/types/index.js +24 -0
  163. package/build/lib/winapi/types/index.js.map +1 -0
  164. package/build/lib/winapi/types/input.d.ts +11 -0
  165. package/build/lib/winapi/types/input.d.ts.map +1 -0
  166. package/build/lib/winapi/types/input.js +12 -0
  167. package/build/lib/winapi/types/input.js.map +1 -0
  168. package/build/lib/winapi/types/keyeventf.d.ts +13 -0
  169. package/build/lib/winapi/types/keyeventf.d.ts.map +1 -0
  170. package/build/lib/winapi/types/keyeventf.js +14 -0
  171. package/build/lib/winapi/types/keyeventf.js.map +1 -0
  172. package/build/lib/winapi/types/mouseeventf.d.ts +34 -0
  173. package/build/lib/winapi/types/mouseeventf.d.ts.map +1 -0
  174. package/build/lib/winapi/types/mouseeventf.js +37 -0
  175. package/build/lib/winapi/types/mouseeventf.js.map +1 -0
  176. package/build/lib/winapi/types/scancode.d.ts +95 -0
  177. package/build/lib/winapi/types/scancode.d.ts.map +1 -0
  178. package/build/lib/winapi/types/scancode.js +96 -0
  179. package/build/lib/winapi/types/scancode.js.map +1 -0
  180. package/build/lib/winapi/types/systemmetric.d.ts +214 -0
  181. package/build/lib/winapi/types/systemmetric.d.ts.map +1 -0
  182. package/build/lib/winapi/types/systemmetric.js +215 -0
  183. package/build/lib/winapi/types/systemmetric.js.map +1 -0
  184. package/build/lib/winapi/types/virtualkey.d.ts +353 -0
  185. package/build/lib/winapi/types/virtualkey.d.ts.map +1 -0
  186. package/build/lib/winapi/types/virtualkey.js +354 -0
  187. package/build/lib/winapi/types/virtualkey.js.map +1 -0
  188. package/build/lib/winapi/types/xmousebutton.d.ts +7 -0
  189. package/build/lib/winapi/types/xmousebutton.d.ts.map +1 -0
  190. package/build/lib/winapi/types/xmousebutton.js +8 -0
  191. package/build/lib/winapi/types/xmousebutton.js.map +1 -0
  192. package/build/lib/winapi/user32.d.ts +56 -0
  193. package/build/lib/winapi/user32.d.ts.map +1 -0
  194. package/build/lib/winapi/user32.js +592 -0
  195. package/build/lib/winapi/user32.js.map +1 -0
  196. package/build/lib/xpath/core.d.ts +8 -0
  197. package/build/lib/xpath/core.d.ts.map +1 -0
  198. package/build/lib/xpath/core.js +593 -0
  199. package/build/lib/xpath/core.js.map +1 -0
  200. package/build/lib/xpath/functions.d.ts +4 -0
  201. package/build/lib/xpath/functions.d.ts.map +1 -0
  202. package/build/lib/xpath/functions.js +271 -0
  203. package/build/lib/xpath/functions.js.map +1 -0
  204. package/build/lib/xpath/index.d.ts +3 -0
  205. package/build/lib/xpath/index.d.ts.map +1 -0
  206. package/build/lib/xpath/index.js +19 -0
  207. package/build/lib/xpath/index.js.map +1 -0
  208. package/package.json +71 -0
package/ROADMAP.md ADDED
@@ -0,0 +1,175 @@
1
+ # Roadmap
2
+
3
+ ## Tier 1 — Complete What's Started
4
+
5
+ These are partially implemented or explicitly TODO'd in the code.
6
+
7
+ ### 1. Touch & Pen Input
8
+
9
+ - [ ] `lib/commands/actions.ts:51-52` throws `NotImplementedError` for
10
+ touch/pen pointer types
11
+ - [ ] Enable stylus pressure simulation for drawing apps, touchscreen
12
+ device testing
13
+
14
+ ### 2. Device Command Stubs
15
+
16
+ - [x] `lib/commands/device.ts` has stubs for: `pushFile`, `pullFile`,
17
+ `pullFolder`, `hideKeyboard`, `isKeyboardShown`, `activateApp`,
18
+ `terminateApp`, `isAppInstalled`
19
+ - [x] These are already in the Appium protocol — just need Windows
20
+ implementations
21
+
22
+ ### 3. Cached Element Support
23
+
24
+ - [ ] `pushCacheRequest` exists but cached elements are not actually
25
+ usable yet
26
+ - [ ] Would significantly improve performance for large UI trees
27
+
28
+ ### 4. Configurable Window Retry Parameters
29
+
30
+ - [x] `lib/commands/app.ts:113,136,137` — retries & sleep are hardcoded
31
+ at 20 × 500ms
32
+ - [x] Should be session capabilities: `ms:windowSwitchRetries`,
33
+ `ms:windowSwitchInterval`
34
+
35
+ ---
36
+
37
+ ## Tier 2 — High-Value New Features
38
+
39
+ ### 5. .NET Backend (Replace PowerShell)
40
+
41
+ - [ ] README explicitly mentions this as a planned migration
42
+ - [ ] Would dramatically improve: startup time, reliability, Unicode
43
+ support, complex tree traversal
44
+ - [ ] Suggested: embed a .NET named-pipe server as a sidecar process
45
+
46
+ ### 6. Multi-Monitor Support
47
+
48
+ - [ ] Currently no way to target a specific display
49
+ - [ ] Add capability: `ms:targetMonitor` (index or device name)
50
+ - [ ] Affects: screenshot, `getWindowRect`, mouse coordinate
51
+ normalization
52
+
53
+ ### 7. UI Automation Event Subscription
54
+
55
+ - [ ] Currently purely polling-based
56
+ - [ ] UIA supports native event callbacks: focus changed, property
57
+ changed, window opened/closed, structure changed
58
+ - [ ] Would enable `waitForElement` without polling, and event-driven
59
+ test patterns
60
+ - [ ] MCP equivalent: `subscribe_to_events` / `wait_for_event` tools
61
+
62
+ ### 8. XPath 2.0 / Ancestor Axis Support
63
+
64
+ - [ ] Current XPath 1.0 (`lib/xpath/`) lacks `ancestor::`,
65
+ `following-sibling::`, etc.
66
+ - [ ] Many real-world locator patterns rely on these
67
+
68
+ ### 9. OCR-Based Element Finding
69
+
70
+ - [ ] New locator strategy: `-windows ocr` using Windows.Media.Ocr API
71
+ (built into Win10+)
72
+ - [ ] Find elements by visible text when no accessibility properties
73
+ exist (games, legacy apps)
74
+ - [ ] MCP tool: `find_by_text_ocr`
75
+
76
+ ### 10. Image-Based Element Matching
77
+
78
+ - [ ] New locator: `-windows image` (template matching)
79
+ - [ ] Appium already defines this strategy in the protocol
80
+ - [ ] Use OpenCV/sharp for pixel-based matching — useful when UIA tree
81
+ is flat/inaccessible
82
+
83
+ ---
84
+
85
+ ## Tier 3 — Developer & AI Experience
86
+
87
+ ### 11. MCP Session Pooling
88
+
89
+ - [ ] MCP server currently manages one session at a time
90
+ - [ ] Pool of sessions would allow parallel AI agent workflows on the
91
+ same machine
92
+
93
+ ### 12. Structured Page Source (JSON)
94
+
95
+ - [ ] `getPageSource()` returns XML — hard to parse in AI contexts
96
+ - [ ] Add `windows: getPageSourceJson` extension command + MCP tool
97
+ returning a clean JSON tree with suggested selectors ranked by
98
+ stability
99
+
100
+ ### 13. Visual Snapshot Tool (MCP)
101
+
102
+ - [ ] Combined screenshot + annotated element map (bounding boxes +
103
+ selectors overlaid)
104
+ - [ ] Single MCP call that gives the AI both visual and structural
105
+ context simultaneously
106
+
107
+ ### 14. Accessibility Audit Command
108
+
109
+ - [ ] `windows: auditAccessibility` — traverse the UIA tree and report:
110
+ missing names, non-interactive controls with keyboard handlers,
111
+ invisible but enabled elements
112
+ - [ ] Useful for teams building accessible Windows apps
113
+
114
+ ### 15. App Performance Telemetry
115
+
116
+ - [ ] Tap Windows Performance Counters: CPU %, memory, GDI objects,
117
+ handle count per PID
118
+ - [ ] Extension command: `windows: getAppMetrics`
119
+ - [ ] MCP tool: `get_app_performance`
120
+
121
+ ---
122
+
123
+ ## Tier 4 — Ecosystem & Reliability
124
+
125
+ ### 16. Retry / Wait DSL
126
+
127
+ - [ ] Currently callers must implement their own polling
128
+ - [ ] Built-in `waitUntil` semantics: `windows: waitForElement`,
129
+ `windows: waitForCondition`
130
+ - [ ] Configurable timeout + interval, avoids sleep-based hacks in test
131
+ code
132
+
133
+ ### 17. Session Recording & Replay
134
+
135
+ - [ ] Record all commands with timing to a JSON log
136
+ - [ ] Replay capability for regression testing without writing test
137
+ scripts
138
+
139
+ ### 18. DPI-Aware Coordinate Handling
140
+
141
+ - [ ] `lib/winapi/user32.ts:727` — `getResolutionScalingFactor()`
142
+ exists but is unused
143
+ - [ ] Apply it consistently across mouse coordinates, element rects,
144
+ screenshots
145
+ - [ ] Critical for multi-DPI setups (Surface devices, 4K + 1080p mixed)
146
+
147
+ ### 19. Remote Windows Support (WinRM/SSH)
148
+
149
+ - [ ] Currently assumes local process execution
150
+ - [ ] Long-term: route PowerShell/pipe commands over WinRM for remote
151
+ desktop automation
152
+
153
+ ---
154
+
155
+ ## Priority Summary
156
+
157
+ | Priority | Feature | Effort | Impact | Status |
158
+ | --- | --- | --- | --- | --- |
159
+ | P0 | Device command stubs | Low | High | [x] |
160
+ | P0 | Configurable window retry | Low | Medium | [x] |
161
+ | P1 | Touch/pen input | Medium | High | [ ] |
162
+ | P1 | DPI-aware coordinates | Medium | High | [ ] |
163
+ | P1 | `waitForElement` DSL | Medium | High | [ ] |
164
+ | P1 | Structured JSON page source (MCP) | Low | High | [ ] |
165
+ | P2 | UI Automation events | High | High | [ ] |
166
+ | P2 | XPath 2.0 / ancestor axis | Medium | Medium | [ ] |
167
+ | P2 | Visual snapshot MCP tool | Medium | High | [ ] |
168
+ | P2 | App performance telemetry | Medium | Medium | [ ] |
169
+ | P3 | OCR-based locator | High | High | [ ] |
170
+ | P3 | Image-based locator | High | Medium | [ ] |
171
+ | P3 | .NET backend migration | Very High | Very High | [ ] |
172
+ | P3 | Multi-monitor support | Medium | Medium | [ ] |
173
+ | P4 | MCP session pooling | High | Medium | [ ] |
174
+ | P4 | Session recording/replay | High | Medium | [ ] |
175
+ | P4 | Accessibility audit | Medium | Medium | [ ] |
@@ -0,0 +1,12 @@
1
+ import { ActionSequence, KeyAction, KeyActionSequence, NullActionSequence, PointerActionSequence, PointerMoveAction, ScrollAction, WheelActionSequence } from '@appium/types';
2
+ import { NovaWindowsDriver } from '../driver';
3
+ export declare function performActions(this: NovaWindowsDriver, actionSequences: ActionSequence[]): Promise<void>;
4
+ export declare function handleKeyActionSequence(this: NovaWindowsDriver, actionSequence: KeyActionSequence): Promise<void>;
5
+ export declare function handlePointerActionSequence(this: NovaWindowsDriver, actionSequence: PointerActionSequence): Promise<void>;
6
+ export declare function handleMousePointerActionSequence(this: NovaWindowsDriver, actionSequence: PointerActionSequence): Promise<void>;
7
+ export declare function handleWheelActionSequence(this: NovaWindowsDriver, actionSequence: WheelActionSequence): Promise<void>;
8
+ export declare function handleNullActionSequence(this: NovaWindowsDriver, actionSequence: NullActionSequence): Promise<void>;
9
+ export declare function handleMouseMoveAction(this: NovaWindowsDriver, action: PointerMoveAction | ScrollAction): Promise<void>;
10
+ export declare function handleKeyAction(this: NovaWindowsDriver, action: KeyAction): Promise<void>;
11
+ export declare function releaseActions(this: NovaWindowsDriver): Promise<void>;
12
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../lib/commands/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EAEjB,YAAY,EACZ,mBAAmB,EACtB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAM9C,wBAAsB,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB9G;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKvH;AAED,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAS/H;AAED,wBAAsB,gCAAgC,CAAC,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBpI;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB3H;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOzH;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,GAAG,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B5H;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAuF/F;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B3E"}
@@ -0,0 +1,242 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.performActions = performActions;
4
+ exports.handleKeyActionSequence = handleKeyActionSequence;
5
+ exports.handlePointerActionSequence = handlePointerActionSequence;
6
+ exports.handleMousePointerActionSequence = handleMousePointerActionSequence;
7
+ exports.handleWheelActionSequence = handleWheelActionSequence;
8
+ exports.handleNullActionSequence = handleNullActionSequence;
9
+ exports.handleMouseMoveAction = handleMouseMoveAction;
10
+ exports.handleKeyAction = handleKeyAction;
11
+ exports.releaseActions = releaseActions;
12
+ const base_driver_1 = require("@appium/base-driver");
13
+ const user32_1 = require("../winapi/user32");
14
+ const util_1 = require("../util");
15
+ const powershell_1 = require("../powershell");
16
+ const enums_1 = require("../enums");
17
+ async function performActions(actionSequences) {
18
+ for (const actionSequence of actionSequences) {
19
+ switch (actionSequence.type) {
20
+ case 'key':
21
+ await this.handleKeyActionSequence(actionSequence);
22
+ break;
23
+ case 'wheel':
24
+ await this.handleWheelActionSequence(actionSequence);
25
+ break;
26
+ case 'pointer':
27
+ await this.handlePointerActionSequence(actionSequence);
28
+ break;
29
+ case 'none':
30
+ await this.handleNullActionSequence(actionSequence);
31
+ break;
32
+ default:
33
+ throw new base_driver_1.errors.InvalidArgumentError();
34
+ }
35
+ }
36
+ }
37
+ ;
38
+ async function handleKeyActionSequence(actionSequence) {
39
+ const actions = actionSequence.actions;
40
+ for (const action of actions) {
41
+ await this.handleKeyAction(action);
42
+ }
43
+ }
44
+ async function handlePointerActionSequence(actionSequence) {
45
+ switch (actionSequence.parameters?.pointerType) {
46
+ case 'touch':
47
+ case 'pen':
48
+ throw new base_driver_1.errors.NotImplementedError(`Pointer type ${actionSequence.parameters?.pointerType} not implemented yet.`);
49
+ case 'mouse':
50
+ default:
51
+ await this.handleMousePointerActionSequence(actionSequence);
52
+ }
53
+ }
54
+ async function handleMousePointerActionSequence(actionSequence) {
55
+ const actions = actionSequence.actions;
56
+ for (const action of actions) {
57
+ switch (action.type) {
58
+ case 'pointerMove':
59
+ await this.handleMouseMoveAction(action);
60
+ break;
61
+ case 'pointerDown':
62
+ (0, user32_1.mouseDown)(action.button);
63
+ break;
64
+ case 'pointerUp':
65
+ (0, user32_1.mouseUp)(action.button);
66
+ break;
67
+ case 'pause':
68
+ if (action.duration) {
69
+ await (0, util_1.sleep)(action.duration);
70
+ }
71
+ break;
72
+ default:
73
+ throw new base_driver_1.errors.InvalidArgumentError();
74
+ }
75
+ }
76
+ }
77
+ async function handleWheelActionSequence(actionSequence) {
78
+ const actions = actionSequence.actions;
79
+ for (const action of actions) {
80
+ switch (action.type) {
81
+ case 'scroll':
82
+ await this.handleMouseMoveAction(action);
83
+ (0, user32_1.mouseScroll)(action.deltaX, action.deltaY);
84
+ break;
85
+ case 'pause':
86
+ if (action.duration) {
87
+ await (0, util_1.sleep)(action.duration);
88
+ }
89
+ break;
90
+ default:
91
+ throw new base_driver_1.errors.InvalidArgumentError();
92
+ }
93
+ }
94
+ }
95
+ async function handleNullActionSequence(actionSequence) {
96
+ const actions = actionSequence.actions;
97
+ for (const action of actions) {
98
+ if (action.duration) {
99
+ await (0, util_1.sleep)(action.duration);
100
+ }
101
+ }
102
+ }
103
+ async function handleMouseMoveAction(action) {
104
+ const easingFunction = this.caps.smoothPointerMove;
105
+ switch (action.origin) {
106
+ case 'pointer':
107
+ await (0, user32_1.mouseMoveRelative)(action.x, action.y, action.duration, easingFunction);
108
+ break;
109
+ case 'viewport': {
110
+ const rootRectJson = await this.sendPowerShellCommand(powershell_1.AutomationElement.automationRoot.buildGetElementRectCommand());
111
+ const rootRect = JSON.parse(rootRectJson.replaceAll(/(?:infinity)/gi, 0x7FFFFFFF.toString()));
112
+ await (0, user32_1.mouseMoveAbsolute)(action.x + rootRect.x, action.y + rootRect.y, action.duration, easingFunction);
113
+ break;
114
+ }
115
+ default:
116
+ if (action.origin?.[base_driver_1.W3C_ELEMENT_KEY]) {
117
+ const element = new powershell_1.FoundAutomationElement(action.origin[base_driver_1.W3C_ELEMENT_KEY]);
118
+ const rectJson = await this.sendPowerShellCommand(element.buildGetElementRectCommand());
119
+ let rect = JSON.parse(rectJson.replaceAll(/(?:infinity)/gi, 0x7FFFFFFF.toString()));
120
+ if (Object.values(rect).some((x) => x === 0x7FFFFFFF)) {
121
+ await this.sendPowerShellCommand(element.buildScrollIntoViewCommand());
122
+ rect = JSON.parse(rectJson.replaceAll(/(?:infinity)/gi, 0x7FFFFFFF.toString()));
123
+ }
124
+ await (0, user32_1.mouseMoveAbsolute)(action.x === 0 ? rect.x + rect.width / 2 : action.x, action.y === 0 ? rect.y + rect.height / 2 : action.y, action.duration, easingFunction);
125
+ break;
126
+ }
127
+ throw new base_driver_1.errors.InvalidArgumentError();
128
+ }
129
+ }
130
+ async function handleKeyAction(action) {
131
+ if (action.type === 'pause') {
132
+ if (action.duration) {
133
+ await (0, util_1.sleep)(action.duration);
134
+ }
135
+ return;
136
+ }
137
+ switch (action.value) {
138
+ case enums_1.Key.SHIFT:
139
+ case enums_1.Key.R_SHIFT:
140
+ if (action.type === 'keyDown') {
141
+ (0, user32_1.keyDown)(action.value);
142
+ this.keyboardState.shift = true;
143
+ return;
144
+ }
145
+ (0, user32_1.keyUp)(enums_1.Key.SHIFT);
146
+ (0, user32_1.keyUp)(enums_1.Key.R_SHIFT);
147
+ this.keyboardState.shift = false;
148
+ return;
149
+ case enums_1.Key.CONTROL:
150
+ case enums_1.Key.R_CONTROL:
151
+ if (action.type === 'keyDown') {
152
+ (0, user32_1.keyDown)(action.value);
153
+ this.keyboardState.ctrl = true;
154
+ return;
155
+ }
156
+ (0, user32_1.keyUp)(enums_1.Key.CONTROL);
157
+ (0, user32_1.keyUp)(enums_1.Key.R_CONTROL);
158
+ this.keyboardState.ctrl = false;
159
+ return;
160
+ case enums_1.Key.META:
161
+ case enums_1.Key.R_META:
162
+ if (action.type === 'keyDown') {
163
+ (0, user32_1.keyDown)(action.value);
164
+ this.keyboardState.meta = true;
165
+ return;
166
+ }
167
+ (0, user32_1.keyUp)(enums_1.Key.META);
168
+ (0, user32_1.keyUp)(enums_1.Key.R_META);
169
+ this.keyboardState.meta = false;
170
+ return;
171
+ case enums_1.Key.ALT:
172
+ case enums_1.Key.R_ALT:
173
+ if (action.type === 'keyDown') {
174
+ (0, user32_1.keyDown)(action.value);
175
+ this.keyboardState.alt = true;
176
+ return;
177
+ }
178
+ (0, user32_1.keyUp)(enums_1.Key.ALT);
179
+ (0, user32_1.keyUp)(enums_1.Key.R_ALT);
180
+ this.keyboardState.alt = false;
181
+ return;
182
+ case enums_1.Key.NULL:
183
+ if (action.type === 'keyDown') {
184
+ if (this.keyboardState.shift) {
185
+ await this.handleKeyAction({ type: 'keyUp', value: enums_1.Key.SHIFT });
186
+ }
187
+ if (this.keyboardState.ctrl) {
188
+ await this.handleKeyAction({ type: 'keyUp', value: enums_1.Key.CONTROL });
189
+ }
190
+ if (this.keyboardState.meta) {
191
+ await this.handleKeyAction({ type: 'keyUp', value: enums_1.Key.META });
192
+ }
193
+ if (this.keyboardState.alt) {
194
+ await this.handleKeyAction({ type: 'keyUp', value: enums_1.Key.ALT });
195
+ }
196
+ for (const key in Array.of(this.keyboardState.pressed)) {
197
+ (0, user32_1.keyUp)(key);
198
+ this.keyboardState.pressed.delete(key);
199
+ }
200
+ }
201
+ return;
202
+ default:
203
+ if (action.type === 'keyDown') {
204
+ (0, user32_1.keyDown)(action.value);
205
+ this.keyboardState.pressed.add(action.value);
206
+ }
207
+ else {
208
+ (0, user32_1.keyUp)(action.value);
209
+ this.keyboardState.pressed.delete(action.value);
210
+ }
211
+ }
212
+ }
213
+ async function releaseActions() {
214
+ if (this.keyboardState.shift) {
215
+ (0, user32_1.keyUp)(enums_1.Key.SHIFT);
216
+ (0, user32_1.keyUp)(enums_1.Key.R_SHIFT);
217
+ this.keyboardState.shift = false;
218
+ }
219
+ if (this.keyboardState.ctrl) {
220
+ (0, user32_1.keyUp)(enums_1.Key.CONTROL);
221
+ (0, user32_1.keyUp)(enums_1.Key.R_CONTROL);
222
+ this.keyboardState.ctrl = false;
223
+ }
224
+ if (this.keyboardState.meta) {
225
+ (0, user32_1.keyUp)(enums_1.Key.META);
226
+ (0, user32_1.keyUp)(enums_1.Key.R_META);
227
+ this.keyboardState.meta = false;
228
+ }
229
+ if (this.keyboardState.alt) {
230
+ (0, user32_1.keyUp)(enums_1.Key.ALT);
231
+ (0, user32_1.keyUp)(enums_1.Key.R_ALT);
232
+ this.keyboardState.alt = false;
233
+ }
234
+ for (const key of this.keyboardState.pressed) {
235
+ (0, user32_1.keyUp)(key);
236
+ }
237
+ this.keyboardState.pressed.clear();
238
+ (0, user32_1.mouseUp)(0);
239
+ (0, user32_1.mouseUp)(1);
240
+ (0, user32_1.mouseUp)(2);
241
+ }
242
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../lib/commands/actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Rect } from '@appium/types';
2
+ import { NovaWindowsDriver } from '../driver';
3
+ export declare function getPageSource(this: NovaWindowsDriver): Promise<string>;
4
+ export declare function getScreenshot(this: NovaWindowsDriver): Promise<string>;
5
+ export declare function getWindowRect(this: NovaWindowsDriver): Promise<Rect>;
6
+ export declare function getWindowHandle(this: NovaWindowsDriver): Promise<string>;
7
+ export declare function getWindowHandles(this: NovaWindowsDriver): Promise<string[]>;
8
+ export declare function setWindow(this: NovaWindowsDriver, nameOrHandle: string): Promise<void>;
9
+ export declare function closeApp(this: NovaWindowsDriver): Promise<void>;
10
+ export declare function launchApp(this: NovaWindowsDriver): Promise<void>;
11
+ export declare function changeRootElement(this: NovaWindowsDriver, path: string): Promise<void>;
12
+ export declare function changeRootElement(this: NovaWindowsDriver, nativeWindowHandle: number): Promise<void>;
13
+ export declare function back(this: NovaWindowsDriver): Promise<void>;
14
+ export declare function forward(this: NovaWindowsDriver): Promise<void>;
15
+ export declare function title(this: NovaWindowsDriver): Promise<string>;
16
+ export declare function setWindowRect(this: NovaWindowsDriver, x: number | null, y: number | null, width: number | null, height: number | null): Promise<Rect>;
17
+ export declare function attachToApplicationWindow(this: NovaWindowsDriver, processIds: number[]): Promise<void>;
18
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../lib/commands/app.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,IAAI,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AA4D9C,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAE5E;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAc5E;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1E;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAG9E;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgBjF;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC5F;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQrE;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKtE;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAC7F,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAsD3G,wBAAsB,IAAI,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CASjE;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CASpE;AAED,wBAAsB,KAAK,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAQpE;AAED,wBAAsB,aAAa,CAC/B,IAAI,EAAE,iBAAiB,EACvB,CAAC,EAAE,MAAM,GAAG,IAAI,EAChB,CAAC,EAAE,MAAM,GAAG,IAAI,EAChB,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,MAAM,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,IAAI,CAAC,CAsBf;AAGD,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoD5G"}