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
@@ -0,0 +1,280 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPageSource = getPageSource;
4
+ exports.getScreenshot = getScreenshot;
5
+ exports.getWindowRect = getWindowRect;
6
+ exports.getWindowHandle = getWindowHandle;
7
+ exports.getWindowHandles = getWindowHandles;
8
+ exports.setWindow = setWindow;
9
+ exports.closeApp = closeApp;
10
+ exports.launchApp = launchApp;
11
+ exports.changeRootElement = changeRootElement;
12
+ exports.back = back;
13
+ exports.forward = forward;
14
+ exports.title = title;
15
+ exports.setWindowRect = setWindowRect;
16
+ exports.attachToApplicationWindow = attachToApplicationWindow;
17
+ const node_path_1 = require("node:path");
18
+ const powershell_1 = require("../powershell");
19
+ const util_1 = require("../util");
20
+ const base_driver_1 = require("@appium/base-driver");
21
+ const user32_1 = require("../winapi/user32");
22
+ const enums_1 = require("../enums");
23
+ const GET_PAGE_SOURCE_COMMAND = (0, powershell_1.pwsh$ /* ps1 */) `
24
+ $el = ${0}
25
+
26
+ if ($el -eq $null) {
27
+ $dummy = [xml]'<DummyRoot></DummyRoot>'
28
+ return $dummy.OuterXml
29
+ }
30
+
31
+ Get-PageSource $el |
32
+ ForEach-Object { $_.OuterXml }
33
+ `;
34
+ const GET_SCREENSHOT_COMMAND = (0, powershell_1.pwsh /* ps1 */) `
35
+ if ($rootElement -eq $null) {
36
+ $bitmap = New-Object Drawing.Bitmap 1,1
37
+ $stream = New-Object IO.MemoryStream
38
+ $bitmap.Save($stream, [Drawing.Imaging.ImageFormat]::Png)
39
+ $bitmap.Dispose()
40
+ return [Convert]::ToBase64String($stream.ToArray())
41
+ }
42
+
43
+ $rect = $rootElement.Current.BoundingRectangle
44
+ $bitmap = New-Object Drawing.Bitmap([int32]$rect.Width, [int32]$rect.Height)
45
+
46
+ $graphics = [Drawing.Graphics]::FromImage($bitmap)
47
+ $graphics.CopyFromScreen([int32]$rect.Left, [int32]$rect.Top, 0, 0, $bitmap.Size)
48
+ $graphics.Dispose()
49
+
50
+ $stream = New-Object IO.MemoryStream
51
+ $bitmap.Save($stream, [Drawing.Imaging.ImageFormat]::Png)
52
+ $bitmap.Dispose()
53
+
54
+ [Convert]::ToBase64String($stream.ToArray())
55
+ `;
56
+ const SLEEP_INTERVAL_MS = 500;
57
+ async function getPageSource() {
58
+ return await this.sendPowerShellCommand(GET_PAGE_SOURCE_COMMAND.format(powershell_1.AutomationElement.automationRoot));
59
+ }
60
+ async function getScreenshot() {
61
+ const automationRootId = await this.sendPowerShellCommand(powershell_1.AutomationElement.automationRoot.buildCommand());
62
+ if (this.caps.app && this.caps.app.toLowerCase() !== 'root') {
63
+ try {
64
+ await this.focusElement({
65
+ [base_driver_1.W3C_ELEMENT_KEY]: automationRootId.trim(),
66
+ });
67
+ }
68
+ catch {
69
+ // noop
70
+ }
71
+ }
72
+ return await this.sendPowerShellCommand(GET_SCREENSHOT_COMMAND);
73
+ }
74
+ async function getWindowRect() {
75
+ const result = await this.sendPowerShellCommand(powershell_1.AutomationElement.automationRoot.buildGetElementRectCommand());
76
+ return JSON.parse(result.replaceAll(/(?:infinity)/gi, 0x7FFFFFFF.toString()));
77
+ }
78
+ async function getWindowHandle() {
79
+ const nativeWindowHandle = await this.sendPowerShellCommand(powershell_1.AutomationElement.automationRoot.buildGetPropertyCommand(powershell_1.Property.NATIVE_WINDOW_HANDLE));
80
+ return `0x${Number(nativeWindowHandle).toString(16).padStart(8, '0')}`;
81
+ }
82
+ async function getWindowHandles() {
83
+ if (this.appProcessIds.length > 0 && !this.caps.returnAllWindowHandles) {
84
+ const handles = (0, user32_1.getWindowAllHandlesForProcessIds)(this.appProcessIds);
85
+ return handles.map((h) => `0x${h.toString(16).padStart(8, '0')}`);
86
+ }
87
+ const result = await this.sendPowerShellCommand(powershell_1.AutomationElement.rootElement.findAll(powershell_1.TreeScope.CHILDREN, new powershell_1.TrueCondition()).buildCommand());
88
+ const elIds = result.split('\n').map((x) => x.trim()).filter(Boolean);
89
+ const nativeWindowHandles = [];
90
+ for (const elId of elIds) {
91
+ const nativeWindowHandle = await this.sendPowerShellCommand(new powershell_1.FoundAutomationElement(elId).buildGetPropertyCommand(powershell_1.Property.NATIVE_WINDOW_HANDLE));
92
+ nativeWindowHandles.push(`0x${Number(nativeWindowHandle).toString(16).padStart(8, '0')}`);
93
+ }
94
+ return nativeWindowHandles;
95
+ }
96
+ async function setWindow(nameOrHandle) {
97
+ const handle = Number(nameOrHandle);
98
+ const maxRetries = this.caps['ms:windowSwitchRetries'] ?? 20;
99
+ const sleepInterval = this.caps['ms:windowSwitchInterval'] ?? SLEEP_INTERVAL_MS;
100
+ for (let i = 1; i <= maxRetries; i++) {
101
+ if (!isNaN(handle)) {
102
+ const condition = new powershell_1.PropertyCondition(powershell_1.Property.NATIVE_WINDOW_HANDLE, new powershell_1.PSInt32(handle));
103
+ const elementId = await this.sendPowerShellCommand(powershell_1.AutomationElement.rootElement.findFirst(powershell_1.TreeScope.CHILDREN_OR_SELF, condition).buildCommand());
104
+ if (elementId.trim() !== '') {
105
+ await this.sendPowerShellCommand(/* ps1 */ `$rootElement = ${new powershell_1.FoundAutomationElement(elementId).buildCommand()}`);
106
+ (0, user32_1.trySetForegroundWindow)(handle);
107
+ return;
108
+ }
109
+ }
110
+ const name = nameOrHandle;
111
+ const condition = new powershell_1.PropertyCondition(powershell_1.Property.NAME, new powershell_1.PSString(name));
112
+ const elementId = await this.sendPowerShellCommand(powershell_1.AutomationElement.rootElement.findFirst(powershell_1.TreeScope.CHILDREN, condition).buildCommand());
113
+ if (elementId.trim() !== '') {
114
+ this.log.info(`Found window with name '${name}'. Setting it as the root element.`);
115
+ await this.sendPowerShellCommand(/* ps1 */ `$rootElement = ${new powershell_1.FoundAutomationElement(elementId).buildCommand()}`);
116
+ (0, user32_1.trySetForegroundWindow)(handle);
117
+ return;
118
+ }
119
+ this.log.info(`Failed to locate window with name '${name}'. Sleeping for ${sleepInterval} milliseconds and retrying... (${i}/${maxRetries})`);
120
+ await (0, util_1.sleep)(sleepInterval);
121
+ }
122
+ throw new base_driver_1.errors.NoSuchWindowError(`No window was found with name or handle '${nameOrHandle}'.`);
123
+ }
124
+ async function closeApp() {
125
+ const result = await this.sendPowerShellCommand(powershell_1.AutomationElement.automationRoot.buildCommand());
126
+ const elementId = result.split('\n').map((id) => id.trim()).filter(Boolean)[0];
127
+ if (!elementId) {
128
+ throw new base_driver_1.errors.NoSuchWindowError('No active app window is found for this session.');
129
+ }
130
+ await this.sendPowerShellCommand(new powershell_1.FoundAutomationElement(elementId).buildCloseCommand());
131
+ await this.sendPowerShellCommand(/* ps1 */ `$rootElement = $null`);
132
+ }
133
+ async function launchApp() {
134
+ if (!this.caps.app || ['root', 'none'].includes(this.caps.app.toLowerCase())) {
135
+ throw new base_driver_1.errors.InvalidArgumentError('No app capability is set for this session.');
136
+ }
137
+ await this.changeRootElement(this.caps.app);
138
+ }
139
+ async function changeRootElement(pathOrNativeWindowHandle) {
140
+ if (typeof pathOrNativeWindowHandle === 'number') {
141
+ const nativeWindowHandle = pathOrNativeWindowHandle;
142
+ const condition = new powershell_1.PropertyCondition(powershell_1.Property.NATIVE_WINDOW_HANDLE, new powershell_1.PSInt32(nativeWindowHandle));
143
+ const elementId = await this.sendPowerShellCommand(powershell_1.AutomationElement.rootElement.findFirst(powershell_1.TreeScope.CHILDREN_OR_SELF, condition).buildCommand());
144
+ if (elementId.trim() !== '') {
145
+ await this.sendPowerShellCommand(/* ps1 */ `$rootElement = ${new powershell_1.FoundAutomationElement(elementId).buildCommand()}`);
146
+ (0, user32_1.trySetForegroundWindow)(nativeWindowHandle);
147
+ const pidResult = await this.sendPowerShellCommand(`$rootElement.Current.ProcessId`);
148
+ const pid = Number(pidResult.trim());
149
+ if (!isNaN(pid) && pid > 0) {
150
+ this.appProcessIds = [pid];
151
+ }
152
+ return;
153
+ }
154
+ throw new base_driver_1.errors.UnknownError('Failed to locate top level window with that window handle.');
155
+ }
156
+ const path = pathOrNativeWindowHandle;
157
+ if ((0, util_1.isUwpAppId)(path)) {
158
+ this.log.debug('Detected app path to be in the UWP format.');
159
+ await this.sendPowerShellCommand(/* ps1 */ `Start-Process 'explorer.exe' 'shell:AppsFolder\\${path}'${this.caps.appArguments ? ` -ArgumentList '${this.caps.appArguments}'` : ''}`);
160
+ const result = await this.sendPowerShellCommand(/* ps1 */ `(Get-Process -Name 'ApplicationFrameHost').Id`);
161
+ const processIds = result.split('\n').map((pid) => pid.trim()).filter(Boolean).map(Number);
162
+ this.log.debug(`Process IDs of ApplicationFrameHost processes (${processIds.length}): ` + processIds.join(', '));
163
+ this.appProcessIds = processIds;
164
+ await this.attachToApplicationWindow(processIds);
165
+ const attachedPid = Number((await this.sendPowerShellCommand(`$rootElement.Current.ProcessId`)).trim());
166
+ if (!isNaN(attachedPid) && attachedPid > 0) {
167
+ this.appProcessIds = [attachedPid];
168
+ }
169
+ }
170
+ else {
171
+ this.log.debug('Detected app path to be in the classic format.');
172
+ const normalizedPath = (0, node_path_1.normalize)(path);
173
+ await this.sendPowerShellCommand(/* ps1 */ `Start-Process '${normalizedPath}'${this.caps.appArguments ? ` -ArgumentList '${this.caps.appArguments}'` : ''}`);
174
+ const breadcrumbs = normalizedPath.toLowerCase().split('\\').flatMap((x) => x.split('/'));
175
+ const executable = breadcrumbs[breadcrumbs.length - 1];
176
+ const processName = executable.endsWith('.exe') ? executable.slice(0, executable.length - 4) : executable;
177
+ const result = await this.sendPowerShellCommand(/* ps1 */ `(Get-Process -Name '${processName}' | Sort-Object StartTime -Descending).Id`);
178
+ const processIds = result.split('\n').map((pid) => pid.trim()).filter(Boolean).map(Number);
179
+ this.log.debug(`Process IDs of '${processName}' processes: ` + processIds.join(', '));
180
+ this.appProcessIds = processIds;
181
+ await this.attachToApplicationWindow(processIds);
182
+ const attachedPid = Number((await this.sendPowerShellCommand(`$rootElement.Current.ProcessId`)).trim());
183
+ if (!isNaN(attachedPid) && attachedPid > 0) {
184
+ this.appProcessIds = [attachedPid];
185
+ }
186
+ }
187
+ }
188
+ async function back() {
189
+ const elementId = (await this.sendPowerShellCommand(powershell_1.AutomationElement.automationRoot.buildCommand())).trim();
190
+ if (!elementId) {
191
+ throw new base_driver_1.errors.NoSuchWindowError('No active window found for this session.');
192
+ }
193
+ (0, user32_1.keyDown)(enums_1.Key.ALT);
194
+ (0, user32_1.keyDown)(enums_1.Key.LEFT);
195
+ (0, user32_1.keyUp)(enums_1.Key.LEFT);
196
+ (0, user32_1.keyUp)(enums_1.Key.ALT);
197
+ }
198
+ async function forward() {
199
+ const elementId = (await this.sendPowerShellCommand(powershell_1.AutomationElement.automationRoot.buildCommand())).trim();
200
+ if (!elementId) {
201
+ throw new base_driver_1.errors.NoSuchWindowError('No active window found for this session.');
202
+ }
203
+ (0, user32_1.keyDown)(enums_1.Key.ALT);
204
+ (0, user32_1.keyDown)(enums_1.Key.RIGHT);
205
+ (0, user32_1.keyUp)(enums_1.Key.RIGHT);
206
+ (0, user32_1.keyUp)(enums_1.Key.ALT);
207
+ }
208
+ async function title() {
209
+ const elementId = (await this.sendPowerShellCommand(powershell_1.AutomationElement.automationRoot.buildCommand())).trim();
210
+ if (!elementId) {
211
+ throw new base_driver_1.errors.NoSuchWindowError('No active window found for this session.');
212
+ }
213
+ return await this.sendPowerShellCommand(powershell_1.AutomationElement.automationRoot.buildGetPropertyCommand(powershell_1.Property.NAME));
214
+ }
215
+ async function setWindowRect(x, y, width, height) {
216
+ if (width !== null && width < 0) {
217
+ throw new base_driver_1.errors.InvalidArgumentError('width must be a non-negative integer.');
218
+ }
219
+ if (height !== null && height < 0) {
220
+ throw new base_driver_1.errors.InvalidArgumentError('height must be a non-negative integer.');
221
+ }
222
+ const elementId = (await this.sendPowerShellCommand(powershell_1.AutomationElement.automationRoot.buildCommand())).trim();
223
+ if (!elementId) {
224
+ throw new base_driver_1.errors.NoSuchWindowError('No active window found for this session.');
225
+ }
226
+ const el = new powershell_1.FoundAutomationElement(elementId);
227
+ if (x !== null && y !== null) {
228
+ await this.sendPowerShellCommand(el.buildMoveCommand(x, y));
229
+ }
230
+ if (width !== null && height !== null) {
231
+ await this.sendPowerShellCommand(el.buildResizeCommand(width, height));
232
+ }
233
+ return await this.getWindowRect();
234
+ }
235
+ async function attachToApplicationWindow(processIds) {
236
+ const trackedPids = new Set(processIds);
237
+ this.log.debug(`Attaching to application window. Process IDs: [${[...trackedPids].join(', ')}]`);
238
+ const timeout = (this.caps['ms:waitForAppLaunch'] ?? 0) * 1000 || SLEEP_INTERVAL_MS * 20;
239
+ const start = Date.now();
240
+ let attempts = 0;
241
+ while (Date.now() - start < timeout) {
242
+ // Discover child processes of all currently-tracked PIDs
243
+ const pidList = [...trackedPids].join(', ');
244
+ const childPidResult = await this.sendPowerShellCommand(
245
+ /* ps1 */ `@(Get-CimInstance Win32_Process | Where-Object { $_.ParentProcessId -in @(${pidList}) }).ProcessId`);
246
+ for (const token of childPidResult.split('\n').map((s) => s.trim()).filter(Boolean)) {
247
+ const childPid = Number(token);
248
+ if (!isNaN(childPid) && childPid > 0 && !trackedPids.has(childPid)) {
249
+ this.log.debug(`Discovered child process PID ${childPid} spawned by tracked PIDs`);
250
+ trackedPids.add(childPid);
251
+ }
252
+ }
253
+ const currentPids = [...trackedPids];
254
+ const handles = (0, user32_1.getWindowAllHandlesForProcessIds)(currentPids);
255
+ if (handles.length > 0) {
256
+ this.log.debug(`Found ${handles.length} window handle(s) for PIDs [${currentPids.join(', ')}]: ${handles.map((h) => `0x${h.toString(16).padStart(8, '0')}`).join(', ')}`);
257
+ for (const handle of handles) {
258
+ const elementId = await this.sendPowerShellCommand(powershell_1.AutomationElement.rootElement.findFirst(powershell_1.TreeScope.CHILDREN, new powershell_1.PropertyCondition(powershell_1.Property.NATIVE_WINDOW_HANDLE, new powershell_1.PSInt32(handle))).buildCommand());
259
+ if (elementId.trim()) {
260
+ await this.sendPowerShellCommand(/* ps1 */ `$rootElement = ${new powershell_1.FoundAutomationElement(elementId).buildCommand()}`);
261
+ if ((await this.sendPowerShellCommand(/* ps1 */ `$null -ne $rootElement`)).toLowerCase() === 'true') {
262
+ const confirmedHandle = Number(await this.sendPowerShellCommand(powershell_1.AutomationElement.automationRoot.buildGetPropertyCommand(powershell_1.Property.NATIVE_WINDOW_HANDLE)));
263
+ this.log.info(`Successfully attached to window. Native window handle: 0x${confirmedHandle.toString(16).padStart(8, '0')}`);
264
+ this.appProcessIds = currentPids;
265
+ if (!(0, user32_1.trySetForegroundWindow)(confirmedHandle)) {
266
+ await this.focusElement({
267
+ [base_driver_1.W3C_ELEMENT_KEY]: elementId,
268
+ });
269
+ }
270
+ return;
271
+ }
272
+ }
273
+ }
274
+ }
275
+ this.log.debug(`No attachable window found yet. Sleeping for ${SLEEP_INTERVAL_MS} milliseconds and retrying... (${++attempts}/${Math.floor(timeout / SLEEP_INTERVAL_MS)})`);
276
+ await (0, util_1.sleep)(SLEEP_INTERVAL_MS);
277
+ }
278
+ throw new Error('Timed out waiting to attach to application window.');
279
+ }
280
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../lib/commands/app.ts"],"names":[],"mappings":";;AA8DA,sCAEC;AAED,sCAcC;AAED,sCAGC;AAED,0CAGC;AAED,4CAgBC;AAED,8BAgCC;AAED,4BAQC;AAED,8BAKC;AAID,8CAmDC;AAED,oBASC;AAED,0BASC;AAED,sBAQC;AAED,sCA4BC;AAGD,8DAoDC;AA3UD,yCAAsC;AAGtC,8CAWuB;AACvB,kCAA4C;AAC5C,qDAA8D;AAC9D,6CAK0B;AAC1B,oCAA+B;AAE/B,MAAM,uBAAuB,GAAG,IAAA,kBAAK,CAAC,SAAS,EAAC;YACpC,CAAC;;;;;;;;;CASZ,CAAC;AAEF,MAAM,sBAAsB,GAAG,IAAA,iBAAI,CAAC,SAAS,EAAC;;;;;;;;;;;;;;;;;;;;;CAqB7C,CAAC;AAEF,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAEvB,KAAK,UAAU,aAAa;IAC/B,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,MAAM,CAAC,8BAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;AAC9G,CAAC;AAEM,KAAK,UAAU,aAAa;IAC/B,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,8BAAiB,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAE3G,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;QAC1D,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,YAAY,CAAC;gBACpB,CAAC,6BAAe,CAAC,EAAE,gBAAgB,CAAC,IAAI,EAAE;aAC3B,CAAC,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACL,OAAO;QACX,CAAC;IACL,CAAC;IAED,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;AACpE,CAAC;AAEM,KAAK,UAAU,aAAa;IAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,8BAAiB,CAAC,cAAc,CAAC,0BAA0B,EAAE,CAAC,CAAC;IAC/G,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAClF,CAAC;AAEM,KAAK,UAAU,eAAe;IACjC,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,8BAAiB,CAAC,cAAc,CAAC,uBAAuB,CAAC,qBAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACrJ,OAAO,KAAK,MAAM,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAC3E,CAAC;AAEM,KAAK,UAAU,gBAAgB;IAClC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACrE,MAAM,OAAO,GAAG,IAAA,yCAAgC,EAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,8BAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,sBAAS,CAAC,QAAQ,EAAE,IAAI,0BAAa,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;IAC/I,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtE,MAAM,mBAAmB,GAAa,EAAE,CAAC;IAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,mCAAsB,CAAC,IAAI,CAAC,CAAC,uBAAuB,CAAC,qBAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACrJ,mBAAmB,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,OAAO,mBAAmB,CAAC;AAC/B,CAAC;AAEM,KAAK,UAAU,SAAS,CAA0B,YAAoB;IACzE,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;IAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,iBAAiB,CAAC;IAChF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,IAAI,8BAAiB,CAAC,qBAAQ,CAAC,oBAAoB,EAAE,IAAI,oBAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAC5F,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,8BAAiB,CAAC,WAAW,CAAC,SAAS,CAAC,sBAAS,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;YAElJ,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC1B,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,kBAAkB,IAAI,mCAAsB,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;gBACrH,IAAA,+BAAsB,EAAC,MAAM,CAAC,CAAC;gBAC/B,OAAO;YACX,CAAC;QACL,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,8BAAiB,CAAC,qBAAQ,CAAC,IAAI,EAAE,IAAI,qBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,8BAAiB,CAAC,WAAW,CAAC,SAAS,CAAC,sBAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;QAE1I,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,IAAI,oCAAoC,CAAC,CAAC;YACnF,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,kBAAkB,IAAI,mCAAsB,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YACrH,IAAA,+BAAsB,EAAC,MAAM,CAAC,CAAC;YAC/B,OAAO;QACX,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,IAAI,mBAAmB,aAAa,kCAAkC,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC;QAC9I,MAAM,IAAA,YAAK,EAAC,aAAa,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,IAAI,oBAAM,CAAC,iBAAiB,CAAC,4CAA4C,YAAY,IAAI,CAAC,CAAC;AACrG,CAAC;AAEM,KAAK,UAAU,QAAQ;IAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,8BAAiB,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IACjG,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,MAAM,IAAI,oBAAM,CAAC,iBAAiB,CAAC,iDAAiD,CAAC,CAAC;IAC1F,CAAC;IACD,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,mCAAsB,CAAC,SAAS,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC5F,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;AACvE,CAAC;AAEM,KAAK,UAAU,SAAS;IAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,oBAAM,CAAC,oBAAoB,CAAC,4CAA4C,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,CAAC;AAIM,KAAK,UAAU,iBAAiB,CAA0B,wBAAyC;IACtG,IAAI,OAAO,wBAAwB,KAAK,QAAQ,EAAE,CAAC;QAC/C,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;QACpD,MAAM,SAAS,GAAG,IAAI,8BAAiB,CAAC,qBAAQ,CAAC,oBAAoB,EAAE,IAAI,oBAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACxG,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,8BAAiB,CAAC,WAAW,CAAC,SAAS,CAAC,sBAAS,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;QAElJ,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,kBAAkB,IAAI,mCAAsB,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YACrH,IAAA,+BAAsB,EAAC,kBAAkB,CAAC,CAAC;YAC3C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,gCAAgC,CAAC,CAAC;YACrF,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO;QACX,CAAC;QAED,MAAM,IAAI,oBAAM,CAAC,YAAY,CAAC,4DAA4D,CAAC,CAAC;IAChG,CAAC;IAGD,MAAM,IAAI,GAAG,wBAAwB,CAAC;IACtC,IAAI,IAAA,iBAAU,EAAC,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,mDAAmD,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpL,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,+CAA+C,CAAC,CAAC;QAC3G,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3F,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kDAAkD,UAAU,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjH,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;QAChC,MAAM,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,gCAAgC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACxG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,aAAa,GAAG,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACjE,MAAM,cAAc,GAAG,IAAA,qBAAS,EAAC,IAAI,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,kBAAkB,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7J,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1F,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAC1G,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,uBAAuB,WAAW,2CAA2C,CAAC,CAAC;QACzI,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3F,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,WAAW,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;QAChC,MAAM,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,gCAAgC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACxG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,aAAa,GAAG,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,IAAI;IACtB,MAAM,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,8BAAiB,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7G,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,MAAM,IAAI,oBAAM,CAAC,iBAAiB,CAAC,0CAA0C,CAAC,CAAC;IACnF,CAAC;IACD,IAAA,gBAAO,EAAC,WAAG,CAAC,GAAG,CAAC,CAAC;IACjB,IAAA,gBAAO,EAAC,WAAG,CAAC,IAAI,CAAC,CAAC;IAClB,IAAA,cAAK,EAAC,WAAG,CAAC,IAAI,CAAC,CAAC;IAChB,IAAA,cAAK,EAAC,WAAG,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAEM,KAAK,UAAU,OAAO;IACzB,MAAM,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,8BAAiB,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7G,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,MAAM,IAAI,oBAAM,CAAC,iBAAiB,CAAC,0CAA0C,CAAC,CAAC;IACnF,CAAC;IACD,IAAA,gBAAO,EAAC,WAAG,CAAC,GAAG,CAAC,CAAC;IACjB,IAAA,gBAAO,EAAC,WAAG,CAAC,KAAK,CAAC,CAAC;IACnB,IAAA,cAAK,EAAC,WAAG,CAAC,KAAK,CAAC,CAAC;IACjB,IAAA,cAAK,EAAC,WAAG,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAEM,KAAK,UAAU,KAAK;IACvB,MAAM,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,8BAAiB,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7G,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,MAAM,IAAI,oBAAM,CAAC,iBAAiB,CAAC,0CAA0C,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,MAAM,IAAI,CAAC,qBAAqB,CACnC,8BAAiB,CAAC,cAAc,CAAC,uBAAuB,CAAC,qBAAQ,CAAC,IAAI,CAAC,CAC1E,CAAC;AACN,CAAC;AAEM,KAAK,UAAU,aAAa,CAE/B,CAAgB,EAChB,CAAgB,EAChB,KAAoB,EACpB,MAAqB;IAErB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,oBAAM,CAAC,oBAAoB,CAAC,uCAAuC,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,oBAAM,CAAC,oBAAoB,CAAC,wCAAwC,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,8BAAiB,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7G,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,MAAM,IAAI,oBAAM,CAAC,iBAAiB,CAAC,0CAA0C,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,mCAAsB,CAAC,SAAS,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3B,MAAM,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpC,MAAM,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AACtC,CAAC;AAGM,KAAK,UAAU,yBAAyB,CAA0B,UAAoB;IACzF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kDAAkD,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjG,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,iBAAiB,GAAG,EAAE,CAAC;IACzF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,OAAO,EAAE,CAAC;QAClC,yDAAyD;QACzD,MAAM,OAAO,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,qBAAqB;QACnD,SAAS,CAAC,6EAA6E,OAAO,gBAAgB,CACjH,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAClF,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,QAAQ,0BAA0B,CAAC,CAAC;gBACnF,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC;QAED,MAAM,WAAW,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,IAAA,yCAAgC,EAAC,WAAW,CAAC,CAAC;QAE9D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,OAAO,CAAC,MAAM,+BAA+B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAE1K,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC3B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,8BAAiB,CAAC,WAAW,CAAC,SAAS,CAAC,sBAAS,CAAC,QAAQ,EAAE,IAAI,8BAAiB,CAAC,qBAAQ,CAAC,oBAAoB,EAAE,IAAI,oBAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;gBAE1M,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;oBACnB,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,kBAAkB,IAAI,mCAAsB,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;oBACrH,IAAI,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;wBAClG,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,8BAAiB,CAAC,cAAc,CAAC,uBAAuB,CAAC,qBAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;wBAC1J,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,4DAA4D,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;wBAC3H,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;wBACjC,IAAI,CAAC,IAAA,+BAAsB,EAAC,eAAe,CAAC,EAAE,CAAC;4BAC3C,MAAM,IAAI,CAAC,YAAY,CAAC;gCACpB,CAAC,6BAAe,CAAC,EAAE,SAAS;6BACb,CAAC,CAAC;wBACzB,CAAC;wBACD,OAAO;oBACX,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gDAAgD,iBAAiB,kCAAkC,EAAE,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAC5K,MAAM,IAAA,YAAK,EAAC,iBAAiB,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { NovaWindowsDriver } from '../driver';
2
+ export declare function getDeviceTime(this: NovaWindowsDriver, _sessionId?: string, format?: string): Promise<string>;
3
+ export declare function pushFile(this: NovaWindowsDriver, path: string, data: string): Promise<void>;
4
+ export declare function pullFile(this: NovaWindowsDriver, path: string): Promise<string>;
5
+ export declare function pullFolder(this: NovaWindowsDriver, path: string): Promise<string>;
6
+ export declare function hideKeyboard(this: NovaWindowsDriver, _strategy?: string, _key?: string, _keyCode?: string, _keyName?: string): Promise<void>;
7
+ export declare function isKeyboardShown(this: NovaWindowsDriver): Promise<boolean>;
8
+ export declare function activateApp(this: NovaWindowsDriver, appId: string, _options?: Record<string, unknown>): Promise<void>;
9
+ export declare function terminateApp(this: NovaWindowsDriver, appId: string, _options?: Record<string, unknown>): Promise<boolean>;
10
+ export declare function isAppInstalled(this: NovaWindowsDriver, appId: string): Promise<boolean>;
11
+ //# sourceMappingURL=device.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../../lib/commands/device.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAW9C,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGlH;AAWD,wBAAsB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOjG;AAID,wBAAsB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIrF;AAaD,wBAAsB,UAAU,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIvF;AAyBD,wBAAsB,YAAY,CAC9B,IAAI,EAAE,iBAAiB,EACvB,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAEf;AAoBD,wBAAsB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAG/E;AAID,wBAAsB,WAAW,CAC7B,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED,wBAAsB,YAAY,CAC9B,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,OAAO,CAAC,OAAO,CAAC,CA0ElB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA2B7F"}
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDeviceTime = getDeviceTime;
4
+ exports.pushFile = pushFile;
5
+ exports.pullFile = pullFile;
6
+ exports.pullFolder = pullFolder;
7
+ exports.hideKeyboard = hideKeyboard;
8
+ exports.isKeyboardShown = isKeyboardShown;
9
+ exports.activateApp = activateApp;
10
+ exports.terminateApp = terminateApp;
11
+ exports.isAppInstalled = isAppInstalled;
12
+ const node_path_1 = require("node:path");
13
+ const base_driver_1 = require("@appium/base-driver");
14
+ const powershell_1 = require("../powershell");
15
+ const constants_1 = require("../constants");
16
+ const util_1 = require("../util");
17
+ const TERMINATE_POLL_INTERVAL_MS = 200;
18
+ const TERMINATE_TIMEOUT_MS = 10_000;
19
+ const GET_SYSTEM_TIME_COMMAND = (0, powershell_1.pwsh$ /* ps1 */) `(Get-Date).ToString(${0})`;
20
+ const ISO_8061_FORMAT = 'yyyy-MM-ddTHH:mm:sszzz';
21
+ async function getDeviceTime(_sessionId, format) {
22
+ const fmt = format ? new powershell_1.PSString(format).toString() : `'${ISO_8061_FORMAT}'`;
23
+ return await this.sendPowerShellCommand(GET_SYSTEM_TIME_COMMAND.format(fmt));
24
+ }
25
+ // ─── File operations ─────────────────────────────────────────────────────────
26
+ const PUSH_FILE_COMMAND = (0, powershell_1.pwsh$ /* ps1 */) `
27
+ $path = ${0}
28
+ $parentDir = [IO.Path]::GetDirectoryName($path)
29
+ if ($parentDir) { [IO.Directory]::CreateDirectory($parentDir) | Out-Null }
30
+ [IO.File]::WriteAllBytes($path, [Convert]::FromBase64String(${1}))
31
+ `;
32
+ async function pushFile(path, data) {
33
+ this.assertFeatureEnabled(constants_1.MODIFY_FS_FEATURE);
34
+ if (!path) {
35
+ throw new base_driver_1.errors.InvalidArgumentError("'path' must be provided.");
36
+ }
37
+ if (!data) {
38
+ throw new base_driver_1.errors.InvalidArgumentError("'data' must be provided.");
39
+ }
40
+ await this.sendPowerShellCommand(PUSH_FILE_COMMAND.format(new powershell_1.PSString(path).toString(), new powershell_1.PSString(data).toString()));
41
+ }
42
+ const PULL_FILE_COMMAND = (0, powershell_1.pwsh$ /* ps1 */) `[Convert]::ToBase64String([IO.File]::ReadAllBytes(${0}))`;
43
+ async function pullFile(path) {
44
+ this.assertFeatureEnabled(constants_1.MODIFY_FS_FEATURE);
45
+ if (!path) {
46
+ throw new base_driver_1.errors.InvalidArgumentError("'path' must be provided.");
47
+ }
48
+ return await this.sendPowerShellCommand(PULL_FILE_COMMAND.format(new powershell_1.PSString(path).toString()));
49
+ }
50
+ const PULL_FOLDER_COMMAND = (0, powershell_1.pwsh$ /* ps1 */) `
51
+ $srcPath = ${0}
52
+ $tempZip = [IO.Path]::GetTempFileName() + '.zip'
53
+ try {
54
+ Compress-Archive -LiteralPath $srcPath -DestinationPath $tempZip -ErrorAction Stop
55
+ [Convert]::ToBase64String([IO.File]::ReadAllBytes($tempZip))
56
+ } finally {
57
+ if (Test-Path $tempZip) { Remove-Item $tempZip -Force }
58
+ }
59
+ `;
60
+ async function pullFolder(path) {
61
+ this.assertFeatureEnabled(constants_1.MODIFY_FS_FEATURE);
62
+ if (!path) {
63
+ throw new base_driver_1.errors.InvalidArgumentError("'path' must be provided.");
64
+ }
65
+ return await this.sendPowerShellCommand(PULL_FOLDER_COMMAND.format(new powershell_1.PSString(path).toString()));
66
+ }
67
+ // ─── Keyboard ────────────────────────────────────────────────────────────────
68
+ const HIDE_KEYBOARD_COMMAND = (0, powershell_1.pwsh /* ps1 */) `
69
+ $kb = Get-Process -Name 'TabTip','TextInputHost' -ErrorAction SilentlyContinue | Select-Object -First 1
70
+ if ($null -eq $kb) { return }
71
+ $kbEl = [System.Windows.Automation.AutomationElement]::RootElement.FindFirst(
72
+ [System.Windows.Automation.TreeScope]::Children,
73
+ [System.Windows.Automation.PropertyCondition]::new(
74
+ [System.Windows.Automation.AutomationElement]::ProcessIdProperty,
75
+ $kb.Id
76
+ )
77
+ )
78
+ if ($null -ne $kbEl) {
79
+ try {
80
+ $kbEl.GetCurrentPattern([System.Windows.Automation.WindowPattern]::Pattern).Close()
81
+ } catch {
82
+ Stop-Process -Id $kb.Id -Force -ErrorAction SilentlyContinue
83
+ }
84
+ } else {
85
+ Stop-Process -Id $kb.Id -Force -ErrorAction SilentlyContinue
86
+ }
87
+ `;
88
+ async function hideKeyboard(_strategy, _key, _keyCode, _keyName) {
89
+ await this.sendPowerShellCommand(HIDE_KEYBOARD_COMMAND);
90
+ }
91
+ const IS_KEYBOARD_SHOWN_COMMAND = (0, powershell_1.pwsh /* ps1 */) `
92
+ $kb = Get-Process -Name 'TabTip','TextInputHost' -ErrorAction SilentlyContinue | Select-Object -First 1
93
+ if ($null -eq $kb) { Write-Output 'false'; return }
94
+ $kbEl = [System.Windows.Automation.AutomationElement]::RootElement.FindFirst(
95
+ [System.Windows.Automation.TreeScope]::Children,
96
+ [System.Windows.Automation.PropertyCondition]::new(
97
+ [System.Windows.Automation.AutomationElement]::ProcessIdProperty,
98
+ $kb.Id
99
+ )
100
+ )
101
+ if ($null -eq $kbEl) { Write-Output 'false'; return }
102
+ if ($kbEl.GetCurrentPropertyValue([System.Windows.Automation.AutomationElement]::IsOffscreenProperty)) {
103
+ Write-Output 'false'
104
+ } else {
105
+ Write-Output 'true'
106
+ }
107
+ `;
108
+ async function isKeyboardShown() {
109
+ const result = await this.sendPowerShellCommand(IS_KEYBOARD_SHOWN_COMMAND);
110
+ return result.trim().toLowerCase() === 'true';
111
+ }
112
+ // ─── App management ──────────────────────────────────────────────────────────
113
+ async function activateApp(appId, _options) {
114
+ if (!appId) {
115
+ throw new base_driver_1.errors.InvalidArgumentError("'appId' or 'bundleId' must be provided.");
116
+ }
117
+ const isUwp = (0, util_1.isUwpAppId)(appId);
118
+ if (isUwp) {
119
+ await this.changeRootElement(appId);
120
+ return;
121
+ }
122
+ const normalizedPath = (0, node_path_1.normalize)(appId);
123
+ const parts = normalizedPath.toLowerCase().split('\\').flatMap((x) => x.split('/'));
124
+ const executable = parts[parts.length - 1];
125
+ const processName = (executable.endsWith('.exe') ? executable.slice(0, -4) : executable).replace(/'/g, "''");
126
+ const pidResult = await this.sendPowerShellCommand(
127
+ /* ps1 */ `(Get-Process -Name '${processName}' -ErrorAction SilentlyContinue | Sort-Object StartTime -Descending | Select-Object -First 1).Id`);
128
+ const existingPid = Number(pidResult.trim());
129
+ if (!isNaN(existingPid) && existingPid > 0) {
130
+ const handleResult = await this.sendPowerShellCommand(
131
+ /* ps1 */ `(Get-Process -Id ${existingPid} -ErrorAction SilentlyContinue).MainWindowHandle`);
132
+ const handle = Number(handleResult.trim());
133
+ if (!isNaN(handle) && handle > 0) {
134
+ await this.changeRootElement(handle);
135
+ return;
136
+ }
137
+ await this.attachToApplicationWindow([existingPid]);
138
+ return;
139
+ }
140
+ await this.changeRootElement(appId);
141
+ }
142
+ async function terminateApp(appId, _options) {
143
+ if (!appId) {
144
+ throw new base_driver_1.errors.InvalidArgumentError("'appId' or 'bundleId' must be provided.");
145
+ }
146
+ const isUwp = (0, util_1.isUwpAppId)(appId);
147
+ let killed;
148
+ if (isUwp) {
149
+ const safeFamily = new powershell_1.PSString(appId.split('!')[0]).toString();
150
+ const checkResult = await this.sendPowerShellCommand(
151
+ /* ps1 */ `
152
+ $pkg = Get-AppxPackage | Where-Object { $_.PackageFamilyName -eq ${safeFamily} }
153
+ if ($null -eq $pkg) { Write-Output 'none'; return }
154
+ $procs = Get-Process | Where-Object { $_.Path -like ($pkg.InstallLocation + '\\*') }
155
+ if (@($procs).Count -eq 0) { Write-Output 'none' } else { ($procs | Select-Object -ExpandProperty Id) -join ',' }
156
+ `);
157
+ const pids = checkResult.trim();
158
+ if (pids === 'none' || pids === '') {
159
+ await this.sendPowerShellCommand(/* ps1 */ `$rootElement = $null`).catch(() => { });
160
+ return false;
161
+ }
162
+ await this.sendPowerShellCommand(
163
+ /* ps1 */ `Stop-Process -Id ${pids} -Force -ErrorAction SilentlyContinue`);
164
+ const deadline = Date.now() + TERMINATE_TIMEOUT_MS;
165
+ killed = false;
166
+ while (Date.now() < deadline) {
167
+ await (0, util_1.sleep)(TERMINATE_POLL_INTERVAL_MS);
168
+ const stillRunning = await this.sendPowerShellCommand(
169
+ /* ps1 */ `
170
+ $pkg = Get-AppxPackage | Where-Object { $_.PackageFamilyName -eq ${safeFamily} }
171
+ if ($null -eq $pkg) { 'false' } else { ($null -ne (Get-Process | Where-Object { $_.Path -like ($pkg.InstallLocation + '\\*') } | Select-Object -First 1)).ToString().ToLower() }
172
+ `);
173
+ if (stillRunning.trim().toLowerCase() !== 'true') {
174
+ killed = true;
175
+ break;
176
+ }
177
+ }
178
+ }
179
+ else {
180
+ const normalizedPath = (0, node_path_1.normalize)(appId);
181
+ const parts = normalizedPath.toLowerCase().split('\\').flatMap((x) => x.split('/'));
182
+ const executable = parts[parts.length - 1];
183
+ const processName = (executable.endsWith('.exe') ? executable.slice(0, -4) : executable).replace(/'/g, "''");
184
+ const checkResult = await this.sendPowerShellCommand(
185
+ /* ps1 */ `$procs = Get-Process -Name '${processName}' -ErrorAction SilentlyContinue; if (@($procs).Count -eq 0) { Write-Output 'none' } else { ($procs | Select-Object -ExpandProperty Id) -join ',' }`);
186
+ const pids = checkResult.trim();
187
+ if (pids === 'none' || pids === '') {
188
+ await this.sendPowerShellCommand(/* ps1 */ `$rootElement = $null`).catch(() => { });
189
+ return false;
190
+ }
191
+ await this.sendPowerShellCommand(
192
+ /* ps1 */ `Stop-Process -Id ${pids} -Force -ErrorAction SilentlyContinue`);
193
+ const deadline = Date.now() + TERMINATE_TIMEOUT_MS;
194
+ killed = false;
195
+ while (Date.now() < deadline) {
196
+ await (0, util_1.sleep)(TERMINATE_POLL_INTERVAL_MS);
197
+ const stillRunning = await this.sendPowerShellCommand(
198
+ /* ps1 */ `(Get-Process -Name '${processName}' -ErrorAction SilentlyContinue).Count -gt 0`);
199
+ if (stillRunning.trim().toLowerCase() !== 'true') {
200
+ killed = true;
201
+ break;
202
+ }
203
+ }
204
+ }
205
+ await this.sendPowerShellCommand(/* ps1 */ `$rootElement = $null`).catch(() => { });
206
+ return killed;
207
+ }
208
+ async function isAppInstalled(appId) {
209
+ if (!appId) {
210
+ throw new base_driver_1.errors.InvalidArgumentError("'appId' or 'bundleId' must be provided.");
211
+ }
212
+ const isUwp = (0, util_1.isUwpAppId)(appId);
213
+ if (isUwp) {
214
+ const safeFamily = new powershell_1.PSString(appId.split('!')[0]).toString();
215
+ const result = await this.sendPowerShellCommand(
216
+ /* ps1 */ `if (@(Get-AppxPackage | Where-Object { $_.PackageFamilyName -eq ${safeFamily} }).Count -gt 0) { 'true' } else { 'false' }`);
217
+ return result.trim().toLowerCase() === 'true';
218
+ }
219
+ const hasPathSeparator = appId.includes('/') || appId.includes('\\');
220
+ if (hasPathSeparator) {
221
+ const safePath = new powershell_1.PSString(appId).toString();
222
+ const result = await this.sendPowerShellCommand(
223
+ /* ps1 */ `if (Test-Path -LiteralPath ${safePath}) { 'true' } else { 'false' }`);
224
+ return result.trim().toLowerCase() === 'true';
225
+ }
226
+ // Bare process name — search PATH
227
+ const safeName = new powershell_1.PSString(appId).toString();
228
+ const result = await this.sendPowerShellCommand(
229
+ /* ps1 */ `if (Get-Command -Name ${safeName} -ErrorAction SilentlyContinue) { 'true' } else { 'false' }`);
230
+ return result.trim().toLowerCase() === 'true';
231
+ }
232
+ // command: 'installApp'
233
+ // payloadParams: { required: ['appPath'], optional: ['options'] }
234
+ // command: 'removeApp'
235
+ // payloadParams: { required: [['appId'], ['bundleId']], optional: ['options'] }
236
+ //# sourceMappingURL=device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.js","sourceRoot":"","sources":["../../../lib/commands/device.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Element, Rect } from '@appium/types';
2
+ import { NovaWindowsDriver } from '../driver';
3
+ export declare function getProperty(this: NovaWindowsDriver, propertyName: string, elementId: string): Promise<string>;
4
+ export declare function getAttribute(this: NovaWindowsDriver, propertyName: string, elementId: string): Promise<string>;
5
+ export declare function active(this: NovaWindowsDriver): Promise<Element>;
6
+ export declare function getName(this: NovaWindowsDriver, elementId: string): Promise<string>;
7
+ export declare function getText(this: NovaWindowsDriver, elementId: string): Promise<string>;
8
+ export declare function clear(this: NovaWindowsDriver, elementId: string): Promise<void>;
9
+ export declare function setValue(this: NovaWindowsDriver, value: string | string[], elementId: string): Promise<void>;
10
+ export declare function getElementRect(this: NovaWindowsDriver, elementId: string): Promise<Rect>;
11
+ export declare function elementDisplayed(this: NovaWindowsDriver, elementId: string): Promise<boolean>;
12
+ export declare function elementSelected(this: NovaWindowsDriver, elementId: string): Promise<boolean>;
13
+ export declare function elementEnabled(this: NovaWindowsDriver, elementId: string): Promise<boolean>;
14
+ export declare function click(this: NovaWindowsDriver, elementId: string): Promise<void>;
15
+ export declare function getElementScreenshot(this: NovaWindowsDriver, elementId: string): Promise<string>;
16
+ //# sourceMappingURL=element.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../../lib/commands/element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAoB9C,wBAAsB,WAAW,CAAC,IAAI,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEnH;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,mBAGlG;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAEtE;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEzF;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEzF;AAED,wBAAsB,KAAK,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErF;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqHlH;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU9F;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGnG;AAGD,wBAAsB,eAAe,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQlG;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGjG;AAED,wBAAsB,KAAK,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4CrF;AAeD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQtG"}