appium-novawindows2-driver 1.1.9 → 1.1.11
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.
- package/build/lib/commands/index.d.ts +3 -3
- package/build/lib/commands/powershell.d.ts +13 -0
- package/build/lib/commands/powershell.d.ts.map +1 -1
- package/build/lib/commands/powershell.js +287 -111
- package/build/lib/commands/powershell.js.map +1 -1
- package/build/lib/commands/screen-recorder.d.ts.map +1 -1
- package/build/lib/commands/screen-recorder.js +26 -4
- package/build/lib/commands/screen-recorder.js.map +1 -1
- package/build/lib/constraints.d.ts +3 -0
- package/build/lib/constraints.d.ts.map +1 -1
- package/build/lib/constraints.js +9 -1
- package/build/lib/constraints.js.map +1 -1
- package/build/lib/driver.d.ts +2 -2
- package/build/lib/driver.d.ts.map +1 -1
- package/build/lib/driver.js +5 -2
- package/build/lib/driver.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -2
|
@@ -53,11 +53,11 @@ declare const commands: {
|
|
|
53
53
|
patternRestore(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element): Promise<void>;
|
|
54
54
|
patternClose(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element): Promise<void>;
|
|
55
55
|
focusElement(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element): Promise<void>;
|
|
56
|
-
getClipboardBase64(this: import("../driver").NovaWindows2Driver, contentType?: ("
|
|
57
|
-
contentType?: "
|
|
56
|
+
getClipboardBase64(this: import("../driver").NovaWindows2Driver, contentType?: ("image" | "plaintext") | {
|
|
57
|
+
contentType?: "image" | "plaintext";
|
|
58
58
|
}): Promise<string>;
|
|
59
59
|
setClipboardFromBase64(this: import("../driver").NovaWindows2Driver, args: {
|
|
60
|
-
contentType?: "
|
|
60
|
+
contentType?: "image" | "plaintext";
|
|
61
61
|
b64Content: string;
|
|
62
62
|
}): Promise<string>;
|
|
63
63
|
executePowerShellScript(this: import("../driver").NovaWindows2Driver, script: string | {
|
|
@@ -1,4 +1,17 @@
|
|
|
1
1
|
import { NovaWindows2Driver } from '../driver';
|
|
2
|
+
/**
|
|
3
|
+
* Holds the in-flight command's accumulated stdout/stderr plus the unique
|
|
4
|
+
* marker used to detect command completion. The driver-level stdout/stderr
|
|
5
|
+
* listeners (installed once in startPowerShellSession) push chunks into the
|
|
6
|
+
* active context and call check() so waitForCommandCompletion can re-test
|
|
7
|
+
* the buffers for the completion markers.
|
|
8
|
+
*/
|
|
9
|
+
export interface CommandContext {
|
|
10
|
+
stdout: string;
|
|
11
|
+
stderr: string;
|
|
12
|
+
marker: string;
|
|
13
|
+
check: () => void;
|
|
14
|
+
}
|
|
2
15
|
/**
|
|
3
16
|
* Executes a PowerShell command in the persistent session
|
|
4
17
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"powershell.d.ts","sourceRoot":"","sources":["../../../lib/commands/powershell.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"powershell.d.ts","sourceRoot":"","sources":["../../../lib/commands/powershell.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AA+B/C;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,IAAI,CAAC;CACrB;AA8RD;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAoCtG;AAED;;GAEG;AACH,wBAAsB,6BAA6B,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA2B9G;AAuBD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgHpF;AAuCD,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4CxF"}
|
|
@@ -5,36 +5,33 @@ exports.sendIsolatedPowerShellCommand = sendIsolatedPowerShellCommand;
|
|
|
5
5
|
exports.startPowerShellSession = startPowerShellSession;
|
|
6
6
|
exports.terminatePowerShellSession = terminatePowerShellSession;
|
|
7
7
|
const node_child_process_1 = require("node:child_process");
|
|
8
|
+
const node_crypto_1 = require("node:crypto");
|
|
8
9
|
const base_driver_1 = require("@appium/base-driver");
|
|
9
10
|
const functions_1 = require("./functions");
|
|
10
11
|
const win32_1 = require("../powershell/win32");
|
|
11
12
|
const core_1 = require("../powershell/core");
|
|
12
13
|
const SET_UTF8_ENCODING = /* ps1 */ `$OutputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8`;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
// Add-Type -AssemblyName System.Windows.Forms
|
|
20
|
-
// `;
|
|
21
|
-
const ADD_NECESSARY_ASSEMBLIES = /* ps1 */ `
|
|
22
|
-
Add-Type -AssemblyName UIAutomationClient
|
|
23
|
-
#Add-Type -AssemblyName UIAutomationTypes
|
|
24
|
-
Add-Type -AssemblyName System.Drawing
|
|
25
|
-
Add-Type -AssemblyName PresentationCore
|
|
26
|
-
Add-Type -AssemblyName System.Windows.Forms
|
|
14
|
+
const ADD_NECESSARY_ASSEMBLIES = /* ps1 */ `
|
|
15
|
+
Add-Type -AssemblyName UIAutomationClient
|
|
16
|
+
#Add-Type -AssemblyName UIAutomationTypes
|
|
17
|
+
Add-Type -AssemblyName System.Drawing
|
|
18
|
+
Add-Type -AssemblyName PresentationCore
|
|
19
|
+
Add-Type -AssemblyName System.Windows.Forms
|
|
27
20
|
`;
|
|
28
21
|
const USE_UI_AUTOMATION_CLIENT = /* ps1 */ `using namespace System.Windows.Automation`;
|
|
29
|
-
const INIT_CACHE_REQUEST = /* ps1 */ `
|
|
30
|
-
$cacheRequest = New-Object System.Windows.Automation.CacheRequest
|
|
31
|
-
$cacheRequest.TreeFilter = [AndCondition]::new([Automation]::ControlViewCondition, [NotCondition]::new([PropertyCondition]::new([AutomationElement]::FrameworkIdProperty, 'Chrome')));
|
|
32
|
-
$cacheRequest.Push()
|
|
22
|
+
const INIT_CACHE_REQUEST = /* ps1 */ `
|
|
23
|
+
$cacheRequest = New-Object System.Windows.Automation.CacheRequest
|
|
24
|
+
$cacheRequest.TreeFilter = [AndCondition]::new([Automation]::ControlViewCondition, [NotCondition]::new([PropertyCondition]::new([AutomationElement]::FrameworkIdProperty, 'Chrome')));
|
|
25
|
+
$cacheRequest.Push()
|
|
33
26
|
`;
|
|
34
27
|
const INIT_ROOT_ELEMENT = /* ps1 */ `$rootElement = [AutomationElement]::RootElement`;
|
|
35
28
|
const NULL_ROOT_ELEMENT = /* ps1 */ `$rootElement = $null`;
|
|
36
29
|
const INIT_ELEMENT_TABLE = /* ps1 */ `$elementTable = New-Object System.Collections.Generic.Dictionary[[string]\`,[AutomationElement]]`;
|
|
37
|
-
const
|
|
30
|
+
const MARKER_PREFIX = '___NOVA_END_';
|
|
31
|
+
const MARKER_SUFFIX = '___';
|
|
32
|
+
function newMarker() {
|
|
33
|
+
return `${MARKER_PREFIX}${(0, node_crypto_1.randomUUID)().replace(/-/g, '')}${MARKER_SUFFIX}`;
|
|
34
|
+
}
|
|
38
35
|
// ============================================================================
|
|
39
36
|
// Helper Functions
|
|
40
37
|
// ============================================================================
|
|
@@ -65,8 +62,8 @@ function ensureSessionReady(driver) {
|
|
|
65
62
|
}
|
|
66
63
|
/**
|
|
67
64
|
* Forcefully kills a process and all its children on Windows.
|
|
68
|
-
*
|
|
69
|
-
*
|
|
65
|
+
* Critical because COM/UIA calls can hang the PS thread in a way that a
|
|
66
|
+
* plain TerminateProcess doesn't clean up spawned children.
|
|
70
67
|
*/
|
|
71
68
|
function killProcessTree(pid, log) {
|
|
72
69
|
try {
|
|
@@ -78,18 +75,82 @@ function killProcessTree(pid, log) {
|
|
|
78
75
|
}
|
|
79
76
|
}
|
|
80
77
|
/**
|
|
81
|
-
*
|
|
78
|
+
* Sends a command through the framing protocol and resolves when both the
|
|
79
|
+
* stdout AND stderr completion markers have been observed (or rejects on
|
|
80
|
+
* stderr, timeout, or process death).
|
|
81
|
+
*
|
|
82
|
+
* The dual-marker design solves the stdout/stderr ordering race: PS may
|
|
83
|
+
* write to stderr AFTER it writes the stdout marker, so resolving on the
|
|
84
|
+
* stdout marker alone risks reporting "success" while error text is still
|
|
85
|
+
* in flight (and would later bleed into the next command's buffer).
|
|
82
86
|
*/
|
|
83
|
-
function waitForCommandCompletion(driver, powerShell,
|
|
87
|
+
function waitForCommandCompletion(driver, powerShell, command, timeoutMs) {
|
|
84
88
|
return new Promise((resolve, reject) => {
|
|
85
|
-
|
|
89
|
+
const marker = newMarker();
|
|
90
|
+
let settled = false;
|
|
91
|
+
const startedAt = Date.now();
|
|
92
|
+
const ctx = {
|
|
93
|
+
stdout: '',
|
|
94
|
+
stderr: '',
|
|
95
|
+
marker,
|
|
96
|
+
check: () => check(),
|
|
97
|
+
};
|
|
86
98
|
const cleanup = () => {
|
|
99
|
+
settled = true;
|
|
87
100
|
clearTimeout(timeout);
|
|
88
|
-
powerShell.stdout.off('data', onData);
|
|
89
101
|
powerShell.off('close', onClose);
|
|
102
|
+
if (driver.powerShellCommandContext === ctx) {
|
|
103
|
+
driver.powerShellCommandContext = undefined;
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
const stripMarker = (text) => text.replace(marker, '').trimEnd();
|
|
107
|
+
const check = () => {
|
|
108
|
+
if (settled)
|
|
109
|
+
return;
|
|
110
|
+
if (!ctx.stdout.includes(marker))
|
|
111
|
+
return;
|
|
112
|
+
if (!ctx.stderr.includes(marker))
|
|
113
|
+
return;
|
|
114
|
+
cleanup();
|
|
115
|
+
const stderrText = stripMarker(ctx.stderr);
|
|
116
|
+
const stdoutText = stripMarker(ctx.stdout).trim();
|
|
117
|
+
const elapsedMs = Date.now() - startedAt;
|
|
118
|
+
const shortCmd = `${command.slice(0, 80)}${command.length > 80 ? '…' : ''}`;
|
|
119
|
+
// Native-exe failure: our $LASTEXITCODE injection emitted
|
|
120
|
+
// "[NativeExit] N" on stderr. ALWAYS a failure regardless of
|
|
121
|
+
// treatStderrAsError — caller asked PS to run a native exe and
|
|
122
|
+
// it exited non-zero, that's unambiguously bad.
|
|
123
|
+
const nativeExitMatch = stderrText.match(/^\[NativeExit\]\s+(-?\d+)\s*$/m);
|
|
124
|
+
if (nativeExitMatch) {
|
|
125
|
+
const nativeCode = nativeExitMatch[1];
|
|
126
|
+
const otherStderr = stderrText
|
|
127
|
+
.replace(/^\[NativeExit\]\s+-?\d+\s*$/m, '')
|
|
128
|
+
.trim();
|
|
129
|
+
const msg = otherStderr
|
|
130
|
+
? `Native command exited with code ${nativeCode}. stderr: ${otherStderr}`
|
|
131
|
+
: `Native command exited with code ${nativeCode}`;
|
|
132
|
+
driver.log.debug(`[PS Command Failed] (${elapsedMs}ms) ${shortCmd}`);
|
|
133
|
+
driver.log.debug(`[PowerShell Raw Command] \n${(0, core_1.decodePwsh)(command)}`);
|
|
134
|
+
reject(new base_driver_1.errors.UnknownError(msg));
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
if (stderrText) {
|
|
138
|
+
const treatAsError = driver.caps.treatStderrAsError !== false;
|
|
139
|
+
if (treatAsError) {
|
|
140
|
+
driver.log.debug(`[PS Command Failed] (${elapsedMs}ms) ${shortCmd}`);
|
|
141
|
+
driver.log.debug(`[PowerShell Error] ${stderrText}`);
|
|
142
|
+
driver.log.debug(`[PowerShell Raw Command] \n${(0, core_1.decodePwsh)(command)}`);
|
|
143
|
+
reject(new base_driver_1.errors.UnknownError(stderrText));
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
driver.log.debug(`[PS stderr ignored, treatStderrAsError=false] ${stderrText}`);
|
|
147
|
+
}
|
|
148
|
+
driver.log.debug(`[PS Command OK] (${elapsedMs}ms) ${shortCmd}`);
|
|
149
|
+
resolve(stdoutText);
|
|
90
150
|
};
|
|
91
151
|
const timeout = setTimeout(() => {
|
|
92
|
-
|
|
152
|
+
if (settled)
|
|
153
|
+
return;
|
|
93
154
|
cleanup();
|
|
94
155
|
driver.log.warn(`PowerShell command timed out after ${timeoutMs}ms`);
|
|
95
156
|
try {
|
|
@@ -103,50 +164,84 @@ function waitForCommandCompletion(driver, powerShell, timeoutMs, command) {
|
|
|
103
164
|
}
|
|
104
165
|
reject(new base_driver_1.errors.TimeoutError(`PowerShell command timed out after ${timeoutMs}ms`));
|
|
105
166
|
}, timeoutMs);
|
|
106
|
-
const onData = (chunk) => {
|
|
107
|
-
// driver.log.debug(`[PS Output] ${chunk.toString().trim()}`);
|
|
108
|
-
if (chunk.toString().includes(COMMAND_END_MARKER)) {
|
|
109
|
-
cleanup();
|
|
110
|
-
// driver.log.debug(`[PS Output] \n${driver.powerShellStdOut}`);
|
|
111
|
-
// driver.log.debug(`[PS Error] \n${driver.powerShellStdErr}`);
|
|
112
|
-
if (driver.powerShellStdErr) {
|
|
113
|
-
// Many PS pattern calls (SetFocus, InvokePattern, etc.) legitimately
|
|
114
|
-
// fail and the caller catches and falls back. The full stderr is
|
|
115
|
-
// already attached to the rejected promise; logging it at error
|
|
116
|
-
// level was just noise. Demoted to debug.
|
|
117
|
-
driver.log.debug(`[PowerShell Error] ${driver.powerShellStdErr}`);
|
|
118
|
-
const decodedCommand = (0, core_1.decodePwsh)(command || '');
|
|
119
|
-
driver.log.debug(`[PowerShell Raw Command] \n${decodedCommand}`);
|
|
120
|
-
reject(new base_driver_1.errors.UnknownError(driver.powerShellStdErr));
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
const result = driver.powerShellStdOut.replace(COMMAND_END_MARKER, '').trim();
|
|
124
|
-
resolve(result);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
};
|
|
128
167
|
const onClose = (code) => {
|
|
129
|
-
if (
|
|
168
|
+
if (settled)
|
|
130
169
|
return;
|
|
131
170
|
cleanup();
|
|
132
171
|
if (driver.powerShell === powerShell) {
|
|
133
172
|
driver.powerShell = undefined;
|
|
134
173
|
}
|
|
135
|
-
if (
|
|
136
|
-
|
|
137
|
-
|
|
174
|
+
if (driver.powerShellTerminating) {
|
|
175
|
+
// Intentional teardown - the rejection here would float up as
|
|
176
|
+
// an unhandled rejection. Resolve silently.
|
|
177
|
+
driver.log.debug('PowerShell process closed during session teardown');
|
|
178
|
+
resolve('');
|
|
179
|
+
return;
|
|
138
180
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
181
|
+
// Code 0 mid-command: PS exited cleanly without ever emitting
|
|
182
|
+
// the markers. Either the user issued `exit 0` in their command,
|
|
183
|
+
// or stdin was closed externally. Still a failure of THIS
|
|
184
|
+
// command (the markers never arrived), but the previous log
|
|
185
|
+
// line "[PowerShell Error] Exited with code 0" was misleading.
|
|
186
|
+
if (code === 0) {
|
|
187
|
+
const msg = 'PowerShell process exited cleanly mid-command before completion markers arrived';
|
|
188
|
+
driver.log.warn(msg);
|
|
145
189
|
reject(new base_driver_1.errors.UnknownError(msg));
|
|
190
|
+
return;
|
|
146
191
|
}
|
|
192
|
+
const codeDisplay = code !== null
|
|
193
|
+
? `${code} (0x${(code >>> 0).toString(16).toUpperCase()})`
|
|
194
|
+
: 'killed by signal';
|
|
195
|
+
const errorMsg = ctx.stderr || 'No error details';
|
|
196
|
+
const msg = `[PowerShell Error] Exited with code ${codeDisplay}. stderr: \n${errorMsg}`;
|
|
197
|
+
driver.log.error(msg);
|
|
198
|
+
reject(new base_driver_1.errors.UnknownError(msg));
|
|
147
199
|
};
|
|
148
|
-
|
|
200
|
+
// Install context BEFORE writing so we don't miss any output that may
|
|
201
|
+
// already be in the OS pipe from earlier inter-command bytes.
|
|
202
|
+
driver.powerShellCommandContext = ctx;
|
|
149
203
|
powerShell.once('close', onClose);
|
|
204
|
+
// Write the framed command as five lines:
|
|
205
|
+
// 1. $LASTEXITCODE = 0 - reset the native-exit slot so we
|
|
206
|
+
// don't pick up a stale value from
|
|
207
|
+
// an earlier command in the session.
|
|
208
|
+
// 2. & { <user command> } - subshell wrap prevents an open
|
|
209
|
+
// pipe/brace from absorbing the
|
|
210
|
+
// marker lines.
|
|
211
|
+
// 3. if ($LASTEXITCODE -ne 0) { ... } - if the user command
|
|
212
|
+
// invoked a native exe that exited
|
|
213
|
+
// non-zero, surface that as a
|
|
214
|
+
// "[NativeExit] N" line on stderr so
|
|
215
|
+
// check() can detect it. PS cmdlet
|
|
216
|
+
// failures don't touch
|
|
217
|
+
// $LASTEXITCODE; they already write
|
|
218
|
+
// to stderr.
|
|
219
|
+
// 4. Write-Output "<marker>" - stdout completion marker.
|
|
220
|
+
// 5. [Console]::Error.WriteLine("<marker>") - stderr completion
|
|
221
|
+
// marker; resolving on both ensures
|
|
222
|
+
// any stderr from the command is
|
|
223
|
+
// flushed before we return.
|
|
224
|
+
//
|
|
225
|
+
// EPIPE on any of these writes lands on the stdin 'error' handler
|
|
226
|
+
// installed in startPowerShellSession, which clears driver.powerShell.
|
|
227
|
+
// The pending command then surfaces the failure via onClose or the
|
|
228
|
+
// command timeout — no per-write callback needed.
|
|
229
|
+
try {
|
|
230
|
+
powerShell.stdin.write(`$LASTEXITCODE = 0\n`);
|
|
231
|
+
powerShell.stdin.write(`& { ${command} }\n`);
|
|
232
|
+
powerShell.stdin.write(`if ($LASTEXITCODE -and $LASTEXITCODE -ne 0) { [Console]::Error.WriteLine("[NativeExit] $LASTEXITCODE") }\n`);
|
|
233
|
+
powerShell.stdin.write(`Write-Output "${marker}"\n`);
|
|
234
|
+
powerShell.stdin.write(`[Console]::Error.WriteLine("${marker}")\n`);
|
|
235
|
+
}
|
|
236
|
+
catch (e) {
|
|
237
|
+
if (!settled) {
|
|
238
|
+
cleanup();
|
|
239
|
+
if (driver.powerShell === powerShell) {
|
|
240
|
+
driver.powerShell = undefined;
|
|
241
|
+
}
|
|
242
|
+
reject(new base_driver_1.errors.UnknownError(`Failed to write to PowerShell: ${e?.message ?? e}`));
|
|
243
|
+
}
|
|
244
|
+
}
|
|
150
245
|
});
|
|
151
246
|
}
|
|
152
247
|
// ============================================================================
|
|
@@ -170,6 +265,12 @@ function isPowerShellAlive(driver) {
|
|
|
170
265
|
* IDs surface as NoSuchElement on the next access, which is correct.
|
|
171
266
|
*/
|
|
172
267
|
async function ensurePowerShellSession(driver) {
|
|
268
|
+
// Refuse to restart during teardown. Without this, queued commands that
|
|
269
|
+
// arrive after terminatePowerShellSession would happily respawn a fresh
|
|
270
|
+
// PS process, defeating the session delete.
|
|
271
|
+
if (driver.powerShellTerminating) {
|
|
272
|
+
throw new base_driver_1.errors.NoSuchDriverError('PowerShell session is being terminated; refusing to start a new one');
|
|
273
|
+
}
|
|
173
274
|
if (isPowerShellAlive(driver))
|
|
174
275
|
return;
|
|
175
276
|
if (driver.powerShellRestartPromise) {
|
|
@@ -204,24 +305,21 @@ async function sendPowerShellCommand(command) {
|
|
|
204
305
|
this.commandQueue = this.commandQueue.catch((err) => {
|
|
205
306
|
this.log.debug(`[Command Queue] Previous command failed, proceeding with next command. Error: ${err?.message || err}`);
|
|
206
307
|
}).then(async () => {
|
|
207
|
-
//
|
|
208
|
-
//
|
|
209
|
-
|
|
210
|
-
|
|
308
|
+
// Teardown may have started while we were waiting our turn in the
|
|
309
|
+
// queue. Bail before doing any I/O so we don't trigger an auto-
|
|
310
|
+
// restart of the very process the session is trying to terminate.
|
|
311
|
+
if (this.powerShellTerminating) {
|
|
312
|
+
throw new base_driver_1.errors.NoSuchDriverError('PowerShell session is being terminated');
|
|
211
313
|
}
|
|
314
|
+
// If PS died between our pre-queue check and our turn, fail this
|
|
315
|
+
// single command. The next sendPowerShellCommand call will hit
|
|
316
|
+
// ensurePowerShellSession (pre-queue) and restart cleanly — which
|
|
317
|
+
// avoids the deadlock that would occur if we tried to restart from
|
|
318
|
+
// inside the queue (startPowerShellSession's own init commands
|
|
319
|
+
// await the queue we are currently holding).
|
|
212
320
|
ensureSessionReady(this);
|
|
213
|
-
this.powerShellStdOut = '';
|
|
214
|
-
this.powerShellStdErr = '';
|
|
215
|
-
const writeError = await new Promise((res) => {
|
|
216
|
-
this.powerShell.stdin.write(`${command}\n`, (err) => err ? res(err) : res(null));
|
|
217
|
-
});
|
|
218
|
-
if (writeError) {
|
|
219
|
-
this.powerShell = undefined;
|
|
220
|
-
throw new base_driver_1.errors.UnknownError(`Failed to write to PowerShell: ${writeError.message}`);
|
|
221
|
-
}
|
|
222
|
-
this.powerShell.stdin.write(`Write-Output "${COMMAND_END_MARKER}"\n`);
|
|
223
321
|
const timeoutMs = this.caps.powerShellCommandTimeout || 60000;
|
|
224
|
-
return await waitForCommandCompletion(this, this.powerShell,
|
|
322
|
+
return await waitForCommandCompletion(this, this.powerShell, command, timeoutMs);
|
|
225
323
|
});
|
|
226
324
|
return await this.commandQueue;
|
|
227
325
|
}
|
|
@@ -235,16 +333,21 @@ async function sendIsolatedPowerShellCommand(command) {
|
|
|
235
333
|
powerShell.stdout.on('data', chunk => stdout += chunk.toString());
|
|
236
334
|
powerShell.stderr.on('data', chunk => stderr += chunk.toString());
|
|
237
335
|
return new Promise((resolve, reject) => {
|
|
336
|
+
powerShell.on('error', (err) => {
|
|
337
|
+
this.log.error(`Isolated PowerShell spawn error: ${err.message}`);
|
|
338
|
+
reject(new base_driver_1.errors.UnknownError(`Failed to spawn PowerShell: ${err.message}`));
|
|
339
|
+
});
|
|
238
340
|
powerShell.on('close', (code) => {
|
|
239
341
|
if (code === 0) {
|
|
240
342
|
resolve(stdout.trim());
|
|
241
343
|
}
|
|
242
344
|
else {
|
|
243
|
-
const
|
|
244
|
-
|
|
345
|
+
const codeDisplay = code !== null
|
|
346
|
+
? `${code} (0x${(code >>> 0).toString(16).toUpperCase()})`
|
|
347
|
+
: 'killed by signal';
|
|
245
348
|
const error = stderr || 'No error details';
|
|
246
|
-
this.log.error(`Isolated PowerShell exited with
|
|
247
|
-
reject(new base_driver_1.errors.UnknownError(`PowerShell exited with
|
|
349
|
+
this.log.error(`Isolated PowerShell exited with ${codeDisplay}. stderr: ${error}`);
|
|
350
|
+
reject(new base_driver_1.errors.UnknownError(`PowerShell exited with ${codeDisplay}`));
|
|
248
351
|
}
|
|
249
352
|
});
|
|
250
353
|
});
|
|
@@ -252,20 +355,58 @@ async function sendIsolatedPowerShellCommand(command) {
|
|
|
252
355
|
// ============================================================================
|
|
253
356
|
// Session Management
|
|
254
357
|
// ============================================================================
|
|
358
|
+
/**
|
|
359
|
+
* Init script broken into named stages. Each stage is sent as its own framed
|
|
360
|
+
* command so a failure surfaces with the stage name, and per-stage timing
|
|
361
|
+
* shows up in the debug log.
|
|
362
|
+
*/
|
|
363
|
+
const INIT_STAGES = [
|
|
364
|
+
{ name: 'utf8-encoding', script: SET_UTF8_ENCODING },
|
|
365
|
+
{ name: 'using-namespace', script: USE_UI_AUTOMATION_CLIENT },
|
|
366
|
+
{ name: 'add-assemblies', script: ADD_NECESSARY_ASSEMBLIES },
|
|
367
|
+
{ name: 'win32-helper', script: win32_1.WIN32_HELPER_SCRIPT },
|
|
368
|
+
{ name: 'cache-request', script: INIT_CACHE_REQUEST },
|
|
369
|
+
{ name: 'element-table', script: INIT_ELEMENT_TABLE },
|
|
370
|
+
{ name: 'page-source', script: functions_1.PAGE_SOURCE },
|
|
371
|
+
{ name: 'find-children', script: functions_1.FIND_CHILDREN_RECURSIVELY },
|
|
372
|
+
{ name: 'find-descendants', script: functions_1.FIND_DESCENDANTS_FUNCTIONS },
|
|
373
|
+
];
|
|
255
374
|
async function startPowerShellSession() {
|
|
256
375
|
this.log.debug('Starting PowerShell session...');
|
|
257
|
-
//
|
|
258
|
-
|
|
376
|
+
// -NoExit is intentionally OMITTED: with `-Command -` we want PS to exit
|
|
377
|
+
// when stdin closes, which is how terminatePowerShellSession requests a
|
|
378
|
+
// graceful shutdown. Earlier code had -NoExit, which kept PS alive past
|
|
379
|
+
// stdin EOF and forced every shutdown down the SIGKILL fallback path.
|
|
380
|
+
const powerShell = (0, node_child_process_1.spawn)('powershell.exe', ['-NoProfile', '-Command', '-']);
|
|
259
381
|
powerShell.stdout.setEncoding('utf8');
|
|
260
382
|
powerShell.stderr.setEncoding('utf8');
|
|
383
|
+
// Driver-level dispatchers: route every chunk into the active command's
|
|
384
|
+
// context. Output between commands (none expected in normal flow) is
|
|
385
|
+
// logged for diagnostics rather than silently discarded.
|
|
261
386
|
powerShell.stdout.on('data', (chunk) => {
|
|
262
|
-
|
|
387
|
+
const text = chunk.toString();
|
|
388
|
+
const ctx = this.powerShellCommandContext;
|
|
389
|
+
if (ctx) {
|
|
390
|
+
ctx.stdout += text;
|
|
391
|
+
ctx.check();
|
|
392
|
+
}
|
|
393
|
+
else if (text.trim()) {
|
|
394
|
+
this.log.debug(`[PS inter-command stdout] ${text.trim()}`);
|
|
395
|
+
}
|
|
263
396
|
});
|
|
264
397
|
powerShell.stderr.on('data', (chunk) => {
|
|
265
|
-
|
|
398
|
+
const text = chunk.toString();
|
|
399
|
+
const ctx = this.powerShellCommandContext;
|
|
400
|
+
if (ctx) {
|
|
401
|
+
ctx.stderr += text;
|
|
402
|
+
ctx.check();
|
|
403
|
+
}
|
|
404
|
+
else if (text.trim()) {
|
|
405
|
+
this.log.debug(`[PS inter-command stderr] ${text.trim()}`);
|
|
406
|
+
}
|
|
266
407
|
});
|
|
267
408
|
// Prevent unhandled 'error' events (e.g. EPIPE when PS crashes mid-session)
|
|
268
|
-
// from taking down the Node process. ensureSessionReady()
|
|
409
|
+
// from taking down the Node process. ensureSessionReady() catches the
|
|
269
410
|
// broken state on the next command.
|
|
270
411
|
powerShell.stdin.on('error', (err) => {
|
|
271
412
|
this.log.warn(`PowerShell stdin error (${err.code}): ${err.message}`);
|
|
@@ -273,6 +414,14 @@ async function startPowerShellSession() {
|
|
|
273
414
|
this.powerShell = undefined;
|
|
274
415
|
}
|
|
275
416
|
});
|
|
417
|
+
// Process-level 'error' (spawn failure, ENOENT for powershell.exe, etc.).
|
|
418
|
+
// Without a listener this would crash the Node process.
|
|
419
|
+
powerShell.on('error', (err) => {
|
|
420
|
+
this.log.error(`PowerShell process error: ${err.message}`);
|
|
421
|
+
if (this.powerShell === powerShell) {
|
|
422
|
+
this.powerShell = undefined;
|
|
423
|
+
}
|
|
424
|
+
});
|
|
276
425
|
// Detect unexpected process exit between commands.
|
|
277
426
|
powerShell.on('exit', (code, signal) => {
|
|
278
427
|
if (this.powerShell === powerShell) {
|
|
@@ -281,33 +430,51 @@ async function startPowerShellSession() {
|
|
|
281
430
|
}
|
|
282
431
|
});
|
|
283
432
|
this.powerShell = powerShell;
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
this.caps.appWorkingDir
|
|
288
|
-
|
|
433
|
+
this.powerShellTerminating = false;
|
|
434
|
+
try {
|
|
435
|
+
// Set working directory if specified
|
|
436
|
+
if (this.caps.appWorkingDir) {
|
|
437
|
+
const expandedDir = expandEnvironmentVariables(this.caps.appWorkingDir, this.log);
|
|
438
|
+
this.caps.appWorkingDir = expandedDir;
|
|
439
|
+
await sendPowerShellCommand.call(this, `Set-Location -Path '${expandedDir}'`);
|
|
440
|
+
}
|
|
441
|
+
// Initialise PS environment one stage at a time. Failures point to
|
|
442
|
+
// the offending stage; timings highlight slow ones.
|
|
443
|
+
this.log.info('Initializing PowerShell environment...');
|
|
444
|
+
const initStart = Date.now();
|
|
445
|
+
for (const stage of INIT_STAGES) {
|
|
446
|
+
const stageStart = Date.now();
|
|
447
|
+
try {
|
|
448
|
+
await sendPowerShellCommand.call(this, stage.script);
|
|
449
|
+
}
|
|
450
|
+
catch (e) {
|
|
451
|
+
throw new base_driver_1.errors.UnknownError(`PowerShell init stage '${stage.name}' failed: ${e?.message ?? e}`);
|
|
452
|
+
}
|
|
453
|
+
this.log.debug(` init stage '${stage.name}' completed in ${Date.now() - stageStart}ms`);
|
|
454
|
+
}
|
|
455
|
+
this.log.debug(`PowerShell environment initialized in ${Date.now() - initStart}ms`);
|
|
456
|
+
// Setup root element based on capabilities
|
|
457
|
+
await setupRootElement.call(this);
|
|
458
|
+
this.log.debug('PowerShell session initialization completed');
|
|
459
|
+
}
|
|
460
|
+
catch (e) {
|
|
461
|
+
// Init or root-element setup failed. Tear down the spawned PS process
|
|
462
|
+
// so this.powerShell doesn't point at a half-initialised session that
|
|
463
|
+
// the next sendPowerShellCommand would happily try to use.
|
|
464
|
+
this.log.warn(`PowerShell session init failed, cleaning up: ${e?.message ?? e}`);
|
|
465
|
+
try {
|
|
466
|
+
if (powerShell.pid) {
|
|
467
|
+
killProcessTree(powerShell.pid, this.log);
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
catch {
|
|
471
|
+
// best effort
|
|
472
|
+
}
|
|
473
|
+
if (this.powerShell === powerShell) {
|
|
474
|
+
this.powerShell = undefined;
|
|
475
|
+
}
|
|
476
|
+
throw e;
|
|
289
477
|
}
|
|
290
|
-
// Initialize PowerShell environment
|
|
291
|
-
// Combine all scripts into one for faster execution
|
|
292
|
-
// 'using namespace' must be at the beginning of the script, so USE_UI_AUTOMATION_CLIENT comes first
|
|
293
|
-
const combinedScript = [
|
|
294
|
-
USE_UI_AUTOMATION_CLIENT,
|
|
295
|
-
SET_UTF8_ENCODING,
|
|
296
|
-
ADD_NECESSARY_ASSEMBLIES,
|
|
297
|
-
win32_1.WIN32_HELPER_SCRIPT,
|
|
298
|
-
INIT_CACHE_REQUEST,
|
|
299
|
-
INIT_ELEMENT_TABLE,
|
|
300
|
-
functions_1.PAGE_SOURCE,
|
|
301
|
-
functions_1.FIND_CHILDREN_RECURSIVELY,
|
|
302
|
-
functions_1.FIND_DESCENDANTS_FUNCTIONS
|
|
303
|
-
].join('\n');
|
|
304
|
-
this.log.info('Initializing PowerShell environment...');
|
|
305
|
-
const start = Date.now();
|
|
306
|
-
await sendPowerShellCommand.call(this, combinedScript);
|
|
307
|
-
this.log.debug(`PowerShell environment initialized in ${Date.now() - start}ms`);
|
|
308
|
-
// Setup root element based on capabilities
|
|
309
|
-
await setupRootElement.call(this);
|
|
310
|
-
this.log.debug('PowerShell session initialization completed');
|
|
311
478
|
}
|
|
312
479
|
/**
|
|
313
480
|
* Sets up the root UI element based on capabilities
|
|
@@ -347,13 +514,22 @@ async function terminatePowerShellSession() {
|
|
|
347
514
|
return;
|
|
348
515
|
}
|
|
349
516
|
this.log.debug('Terminating PowerShell session...');
|
|
517
|
+
this.powerShellTerminating = true;
|
|
350
518
|
const powerShell = this.powerShell;
|
|
351
519
|
this.powerShell = undefined;
|
|
352
520
|
return new Promise((resolve) => {
|
|
353
521
|
const timeout = setTimeout(() => {
|
|
354
|
-
this.log.warn('PowerShell did not terminate gracefully, killing process');
|
|
522
|
+
this.log.warn('PowerShell did not terminate gracefully, killing process tree');
|
|
355
523
|
try {
|
|
356
|
-
powerShell.
|
|
524
|
+
if (powerShell.pid) {
|
|
525
|
+
// taskkill /T kills the whole tree, which is the right
|
|
526
|
+
// thing to do here: PS may have spawned child exes that
|
|
527
|
+
// a plain TerminateProcess on the PS host would orphan.
|
|
528
|
+
killProcessTree(powerShell.pid, this.log);
|
|
529
|
+
}
|
|
530
|
+
else {
|
|
531
|
+
powerShell.kill('SIGKILL');
|
|
532
|
+
}
|
|
357
533
|
}
|
|
358
534
|
catch (e) {
|
|
359
535
|
this.log.warn(`Failed to kill PowerShell: ${e}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"powershell.js","sourceRoot":"","sources":["../../../lib/commands/powershell.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"powershell.js","sourceRoot":"","sources":["../../../lib/commands/powershell.ts"],"names":[],"mappings":"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"}
|