doc-detective 4.21.0 → 4.23.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.
- package/dist/common/src/schemas/schemas.json +538 -338
- package/dist/common/src/types/generated/config_v3.d.ts +5 -5
- package/dist/common/src/types/generated/context_v3.d.ts +5 -5
- package/dist/common/src/types/generated/report_v3.d.ts +5 -5
- package/dist/common/src/types/generated/resolvedTests_v3.d.ts +10 -10
- package/dist/common/src/types/generated/spec_v3.d.ts +5 -5
- package/dist/common/src/types/generated/startSurface_v3.d.ts +7 -7
- package/dist/common/src/types/generated/step_v3.d.ts +7 -7
- package/dist/common/src/types/generated/test_v3.d.ts +19 -19
- package/dist/core/appium.d.ts +2 -1
- package/dist/core/appium.d.ts.map +1 -1
- package/dist/core/appium.js +47 -13
- package/dist/core/appium.js.map +1 -1
- package/dist/core/ptyProbeWorker.d.ts +2 -0
- package/dist/core/ptyProbeWorker.d.ts.map +1 -0
- package/dist/core/ptyProbeWorker.js +61 -0
- package/dist/core/ptyProbeWorker.js.map +1 -0
- package/dist/core/ptyWatchdog.d.ts +77 -0
- package/dist/core/ptyWatchdog.d.ts.map +1 -0
- package/dist/core/ptyWatchdog.js +179 -0
- package/dist/core/ptyWatchdog.js.map +1 -0
- package/dist/core/resolveTests.d.ts.map +1 -1
- package/dist/core/resolveTests.js +16 -4
- package/dist/core/resolveTests.js.map +1 -1
- package/dist/core/tests/androidEmulator.d.ts +2 -12
- package/dist/core/tests/androidEmulator.d.ts.map +1 -1
- package/dist/core/tests/androidEmulator.js +5 -17
- package/dist/core/tests/androidEmulator.js.map +1 -1
- package/dist/core/tests/appSurface.d.ts +55 -2
- package/dist/core/tests/appSurface.d.ts.map +1 -1
- package/dist/core/tests/appSurface.js +279 -23
- package/dist/core/tests/appSurface.js.map +1 -1
- package/dist/core/tests/browserWait.d.ts +1 -1
- package/dist/core/tests/browserWait.d.ts.map +1 -1
- package/dist/core/tests/browserWait.js +108 -84
- package/dist/core/tests/browserWait.js.map +1 -1
- package/dist/core/tests/findElement.d.ts.map +1 -1
- package/dist/core/tests/findElement.js +16 -5
- package/dist/core/tests/findElement.js.map +1 -1
- package/dist/core/tests/iosSimulator.d.ts +89 -0
- package/dist/core/tests/iosSimulator.d.ts.map +1 -0
- package/dist/core/tests/iosSimulator.js +453 -0
- package/dist/core/tests/iosSimulator.js.map +1 -0
- package/dist/core/tests/mobileBrowser.d.ts +46 -0
- package/dist/core/tests/mobileBrowser.d.ts.map +1 -0
- package/dist/core/tests/mobileBrowser.js +140 -0
- package/dist/core/tests/mobileBrowser.js.map +1 -0
- package/dist/core/tests/mobileDevice.d.ts +15 -0
- package/dist/core/tests/mobileDevice.d.ts.map +1 -0
- package/dist/core/tests/mobileDevice.js +24 -0
- package/dist/core/tests/mobileDevice.js.map +1 -0
- package/dist/core/tests/mobilePlatform.d.ts +1 -8
- package/dist/core/tests/mobilePlatform.d.ts.map +1 -1
- package/dist/core/tests/mobilePlatform.js +5 -26
- package/dist/core/tests/mobilePlatform.js.map +1 -1
- package/dist/core/tests.d.ts +7 -1
- package/dist/core/tests.d.ts.map +1 -1
- package/dist/core/tests.js +344 -61
- package/dist/core/tests.js.map +1 -1
- package/dist/core/utils.d.ts.map +1 -1
- package/dist/core/utils.js +26 -1
- package/dist/core/utils.js.map +1 -1
- package/dist/index.cjs +1835 -691
- package/dist/runtime/heavyDeps.d.ts +1 -1
- package/dist/runtime/heavyDeps.d.ts.map +1 -1
- package/dist/runtime/heavyDeps.js +1 -0
- package/dist/runtime/heavyDeps.js.map +1 -1
- package/dist/runtime/installCommand.d.ts +1 -1
- package/dist/runtime/installCommand.d.ts.map +1 -1
- package/dist/runtime/installCommand.js +21 -4
- package/dist/runtime/installCommand.js.map +1 -1
- package/dist/runtime/iosInstaller.d.ts +23 -0
- package/dist/runtime/iosInstaller.d.ts.map +1 -0
- package/dist/runtime/iosInstaller.js +104 -0
- package/dist/runtime/iosInstaller.js.map +1 -0
- package/dist/runtime/loader.d.ts.map +1 -1
- package/dist/runtime/loader.js +76 -0
- package/dist/runtime/loader.js.map +1 -1
- package/package.json +2 -1
|
@@ -6,7 +6,11 @@
|
|
|
6
6
|
// polling) are all injected so the orchestration is testable with fakes.
|
|
7
7
|
import { execFile, spawn, spawnSync } from "node:child_process";
|
|
8
8
|
import { pickSystemImage, DEVICE_TYPE_PROFILES, DEFAULT_AVD_NAME, listInstalledSystemImages, winShellCommand, androidAvdHome, } from "../../runtime/androidInstaller.js";
|
|
9
|
-
|
|
9
|
+
import { normalizeDeviceDescriptor } from "./mobileDevice.js";
|
|
10
|
+
export { parseAdbDevices, parseEmuAvdName, parseListAvds, parseAccelCheck,
|
|
11
|
+
// Re-exported from the shared mobileDevice module so existing importers
|
|
12
|
+
// (appSurface.ts) keep resolving it here.
|
|
13
|
+
normalizeDeviceDescriptor, emulatorBootArgs, nextEmulatorPort, udidForPort, planDeviceAcquisition, planAndroidToolchain, createDeviceRegistry, acquireDevice, teardownDeviceRegistry,
|
|
10
14
|
// Effectful helpers + the deps builder that wires them for a detected SDK.
|
|
11
15
|
buildAcquireDeviceDeps, checkEmulatorAcceleration, hostHasKvm, };
|
|
12
16
|
// --- Output parsers (pure) ---
|
|
@@ -51,22 +55,6 @@ function parseAccelCheck({ code, text = "", }) {
|
|
|
51
55
|
return !/not installed|not usable|is not/i.test(text);
|
|
52
56
|
}
|
|
53
57
|
// --- Descriptor / boot computation (pure) ---
|
|
54
|
-
// Normalize a context default device merged with a step-level device override.
|
|
55
|
-
// A string is shorthand for `{ name }`. The step wins field-by-field; platform
|
|
56
|
-
// comes from whichever supplies it (the mobile context, normally).
|
|
57
|
-
function normalizeDeviceDescriptor({ contextDevice, stepDevice, platform, }) {
|
|
58
|
-
const asObj = (d) => typeof d === "string" ? { name: d.trim() } : d ? { ...d } : {};
|
|
59
|
-
const ctx = asObj(contextDevice);
|
|
60
|
-
const step = asObj(stepDevice);
|
|
61
|
-
const merged = { ...ctx, ...step };
|
|
62
|
-
// Drop undefined step keys so they don't clobber context values.
|
|
63
|
-
for (const k of Object.keys(step)) {
|
|
64
|
-
if (step[k] === undefined && ctx[k] !== undefined)
|
|
65
|
-
merged[k] = ctx[k];
|
|
66
|
-
}
|
|
67
|
-
merged.platform = step.platform ?? ctx.platform ?? platform;
|
|
68
|
-
return merged;
|
|
69
|
-
}
|
|
70
58
|
// The AVD emulator serial for a console port (even ports 5554..5680).
|
|
71
59
|
function udidForPort(port) {
|
|
72
60
|
return `emulator-${port}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"androidEmulator.js","sourceRoot":"","sources":["../../../src/core/tests/androidEmulator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"androidEmulator.js","sourceRoot":"","sources":["../../../src/core/tests/androidEmulator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { resolveHeavyDepPath, resolveHeavyDepPathInCache, resolveHeavyDepSource, ensureRuntimeInstalled } from "../../runtime/loader.js";
|
|
2
|
-
export { classifyAppIdentifier, defaultAppSurfaceName, classifyNativeSelector, buildUiaLocator, buildAxLocator, buildUiAutomator2Locator, createAppSessionState, appSurfacePreflight, probeMacAccessibility, isAppDriverRequired, stepTargetsAppSurface, resolveAppSurfaceRef, ensureAppForeground, startAppSurface, findAppElement, buildAppLocator, closeAppSurface, teardownAppSession, invalidateStaleAppiumManifest, };
|
|
2
|
+
export { classifyAppIdentifier, defaultAppSurfaceName, classifyNativeSelector, buildUiaLocator, buildAxLocator, buildUiAutomator2Locator, buildXCUITestLocator, createAppSessionState, appSurfacePreflight, probeMacAccessibility, isAppDriverRequired, stepTargetsAppSurface, resolveAppSurfaceRef, ensureAppForeground, startAppSurface, findAppElement, buildAppLocator, closeAppSurface, teardownAppSession, snapshotAppServerDescendants, reapConsoleOrphans, listWindowsDescendantPids, invalidateStaleAppiumManifest, probeIosToolchain, };
|
|
3
3
|
export type { AppSessionState, AppSurfaceEntry };
|
|
4
4
|
type AppIdentifierKind = "path" | "aumid" | "id";
|
|
5
5
|
declare function classifyAppIdentifier(app: string): AppIdentifierKind;
|
|
@@ -45,6 +45,19 @@ declare function buildUiAutomator2Locator(criteria: {
|
|
|
45
45
|
strategy: string;
|
|
46
46
|
value: string;
|
|
47
47
|
} | null;
|
|
48
|
+
declare function buildXCUITestLocator(criteria: {
|
|
49
|
+
elementText?: string;
|
|
50
|
+
elementId?: string;
|
|
51
|
+
elementTestId?: string;
|
|
52
|
+
elementAria?: {
|
|
53
|
+
role?: string;
|
|
54
|
+
name?: string;
|
|
55
|
+
} | string;
|
|
56
|
+
[key: string]: any;
|
|
57
|
+
}): {
|
|
58
|
+
strategy: string;
|
|
59
|
+
value: string;
|
|
60
|
+
} | null;
|
|
48
61
|
interface AppSurfaceEntry {
|
|
49
62
|
name: string;
|
|
50
63
|
appId: string;
|
|
@@ -76,6 +89,8 @@ interface AppSessionState {
|
|
|
76
89
|
androidSdkRoot?: string;
|
|
77
90
|
androidDeviceRegistry?: any;
|
|
78
91
|
androidDeviceDeps?: any;
|
|
92
|
+
iosSimulatorRegistry?: any;
|
|
93
|
+
iosSimulatorDeps?: any;
|
|
79
94
|
}
|
|
80
95
|
declare function createAppSessionState(): AppSessionState;
|
|
81
96
|
declare function isAppDriverRequired({ test }: {
|
|
@@ -89,6 +104,19 @@ declare function resolveAppSurfaceRef(surface: any, appSession?: AppSessionState
|
|
|
89
104
|
} | null;
|
|
90
105
|
declare function invalidateStaleAppiumManifest(home: string, driverPackage: string): void;
|
|
91
106
|
declare function probeMacAccessibility(): Promise<boolean | null>;
|
|
107
|
+
declare function probeIosToolchain(deps?: {
|
|
108
|
+
platform?: NodeJS.Platform;
|
|
109
|
+
run?: (command: string, args: string[]) => {
|
|
110
|
+
status: number | null;
|
|
111
|
+
stdout?: string;
|
|
112
|
+
stderr?: string;
|
|
113
|
+
};
|
|
114
|
+
}): {
|
|
115
|
+
ok: true;
|
|
116
|
+
} | {
|
|
117
|
+
ok: false;
|
|
118
|
+
reason: string;
|
|
119
|
+
};
|
|
92
120
|
declare function appSurfacePreflight({ config, platform, deps, }: {
|
|
93
121
|
config: any;
|
|
94
122
|
platform: string;
|
|
@@ -98,6 +126,12 @@ declare function appSurfacePreflight({ config, platform, deps, }: {
|
|
|
98
126
|
resolvePathInCache?: typeof resolveHeavyDepPathInCache;
|
|
99
127
|
ensureInstalled?: typeof ensureRuntimeInstalled;
|
|
100
128
|
probeAccessibility?: () => Promise<boolean | null>;
|
|
129
|
+
probeIosToolchain?: () => {
|
|
130
|
+
ok: true;
|
|
131
|
+
} | {
|
|
132
|
+
ok: false;
|
|
133
|
+
reason: string;
|
|
134
|
+
};
|
|
101
135
|
};
|
|
102
136
|
}): Promise<{
|
|
103
137
|
ok: true;
|
|
@@ -153,5 +187,24 @@ declare function closeAppSurface({ entry, appSession, }: {
|
|
|
153
187
|
entry: AppSurfaceEntry;
|
|
154
188
|
appSession: AppSessionState;
|
|
155
189
|
}): Promise<void>;
|
|
156
|
-
|
|
190
|
+
interface ConsoleOrphanTools {
|
|
191
|
+
/** Rows of the OS process table as {pid, ppid}. */
|
|
192
|
+
runQuery?: () => Promise<Array<{
|
|
193
|
+
pid: number;
|
|
194
|
+
ppid: number;
|
|
195
|
+
}>>;
|
|
196
|
+
/** Descendant pids of `rootPid` (overrides runQuery-based walking). */
|
|
197
|
+
listDescendants?: (rootPid: number) => Promise<Set<number>>;
|
|
198
|
+
/** Whether a pid still refers to a live process. */
|
|
199
|
+
isAlive?: (pid: number) => boolean;
|
|
200
|
+
/** Force-terminate a single pid. */
|
|
201
|
+
forceKill?: (pid: number) => void;
|
|
202
|
+
}
|
|
203
|
+
declare function listWindowsDescendantPids(rootPid: number, runQuery: () => Promise<Array<{
|
|
204
|
+
pid: number;
|
|
205
|
+
ppid: number;
|
|
206
|
+
}>>): Promise<Set<number>>;
|
|
207
|
+
declare function snapshotAppServerDescendants(serverPid: number | undefined, tools?: ConsoleOrphanTools): Promise<Set<number>>;
|
|
208
|
+
declare function reapConsoleOrphans(pids: Iterable<number>, tools?: ConsoleOrphanTools): Promise<number[]>;
|
|
209
|
+
declare function teardownAppSession(appSession: AppSessionState | undefined, killServer: (pid: number | undefined) => Promise<void>, tools?: ConsoleOrphanTools): Promise<void>;
|
|
157
210
|
//# sourceMappingURL=appSurface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appSurface.d.ts","sourceRoot":"","sources":["../../../src/core/tests/appSurface.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"appSurface.d.ts","sourceRoot":"","sources":["../../../src/core/tests/appSurface.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,22 +9,23 @@
|
|
|
9
9
|
// screenshot / closeSurface.
|
|
10
10
|
import fs from "node:fs";
|
|
11
11
|
import path from "node:path";
|
|
12
|
-
import { execFile } from "node:child_process";
|
|
12
|
+
import { execFile, spawnSync } from "node:child_process";
|
|
13
13
|
import { resolveHeavyDepPath, resolveHeavyDepPathInCache, resolveHeavyDepSource, ensureRuntimeInstalled, } from "../../runtime/loader.js";
|
|
14
14
|
import { appiumHomeForDriverPath } from "../appium.js";
|
|
15
15
|
import { getRuntimeDir } from "../../runtime/cacheDir.js";
|
|
16
16
|
import { log } from "../utils.js";
|
|
17
17
|
import { resolveCropGeometry } from "./ffmpegRecorder.js";
|
|
18
18
|
import { normalizeDeviceDescriptor } from "./androidEmulator.js";
|
|
19
|
+
import { isMobileTargetPlatform } from "./mobilePlatform.js";
|
|
19
20
|
import { validate } from "../../common/src/validate.js";
|
|
20
|
-
export { classifyAppIdentifier, defaultAppSurfaceName, classifyNativeSelector, buildUiaLocator, buildAxLocator, buildUiAutomator2Locator, createAppSessionState, appSurfacePreflight,
|
|
21
|
+
export { classifyAppIdentifier, defaultAppSurfaceName, classifyNativeSelector, buildUiaLocator, buildAxLocator, buildUiAutomator2Locator, buildXCUITestLocator, createAppSessionState, appSurfacePreflight,
|
|
21
22
|
// Exported as a test seam: the JXA probe must return a definitive boolean
|
|
22
23
|
// on a real macOS host (a null there means the AXIsProcessTrusted bind
|
|
23
24
|
// regressed), which the injectable `deps.probeAccessibility` can't catch.
|
|
24
|
-
probeMacAccessibility, isAppDriverRequired, stepTargetsAppSurface, resolveAppSurfaceRef, ensureAppForeground, startAppSurface, findAppElement, buildAppLocator, closeAppSurface, teardownAppSession,
|
|
25
|
+
probeMacAccessibility, isAppDriverRequired, stepTargetsAppSurface, resolveAppSurfaceRef, ensureAppForeground, startAppSurface, findAppElement, buildAppLocator, closeAppSurface, teardownAppSession, snapshotAppServerDescendants, reapConsoleOrphans, listWindowsDescendantPids,
|
|
25
26
|
// Exported as a test seam: the manifest-staleness rules are load-bearing
|
|
26
27
|
// (a stale manifest makes the lazily-installed driver invisible to Appium).
|
|
27
|
-
invalidateStaleAppiumManifest, };
|
|
28
|
+
invalidateStaleAppiumManifest, probeIosToolchain, };
|
|
28
29
|
// Classify an `app` identifier by syntax — never by a user-supplied type enum:
|
|
29
30
|
// a `!` marks a UWP AppUserModelID, a path separator (or drive prefix) marks a
|
|
30
31
|
// filesystem path, a reverse-DNS token marks a bundle/package/desktop-file id,
|
|
@@ -285,6 +286,12 @@ function buildUiAutomator2Locator(criteria) {
|
|
|
285
286
|
const predicate = predicates.length ? `[${predicates.join(" and ")}]` : "";
|
|
286
287
|
return { strategy: "xpath", value: `//${tag ?? "*"}${predicate}` };
|
|
287
288
|
}
|
|
289
|
+
// Build an iOS (XCUITest) locator from the shared semantic element fields.
|
|
290
|
+
// XCUITest shares the XCUI role taxonomy with Mac2, so this column reuses the
|
|
291
|
+
// AX/XCUI mapping semantics for role/name/text while running against iOS.
|
|
292
|
+
function buildXCUITestLocator(criteria) {
|
|
293
|
+
return buildAxLocator(criteria);
|
|
294
|
+
}
|
|
288
295
|
// `device`, `install`, and `activity` are Android-only descriptor fields. Now
|
|
289
296
|
// that Android ships (phase A3), the desktop rows reject them here — moved out
|
|
290
297
|
// of a blanket phase-gate in startAppSurface — so the rejection travels with
|
|
@@ -427,6 +434,71 @@ const APP_DRIVER_PLATFORMS = {
|
|
|
427
434
|
},
|
|
428
435
|
],
|
|
429
436
|
},
|
|
437
|
+
ios: {
|
|
438
|
+
driverPackage: "appium-xcuitest-driver",
|
|
439
|
+
driverLabel: "iOS app driver",
|
|
440
|
+
platformName: "iOS",
|
|
441
|
+
automationName: "XCUITest",
|
|
442
|
+
buildLocator: (criteria) => buildXCUITestLocator(criteria),
|
|
443
|
+
// iOS maps text/name through the same XCUI naming surface as macOS.
|
|
444
|
+
nameFieldsCollide: true,
|
|
445
|
+
buildCapabilities(descriptor, appId, extras) {
|
|
446
|
+
const capabilities = {
|
|
447
|
+
platformName: "iOS",
|
|
448
|
+
"appium:automationName": "XCUITest",
|
|
449
|
+
"appium:newCommandTimeout": 600,
|
|
450
|
+
"wdio:enforceWebDriverClassic": true,
|
|
451
|
+
};
|
|
452
|
+
if (classifyAppIdentifier(appId) === "id") {
|
|
453
|
+
capabilities["appium:bundleId"] = appId;
|
|
454
|
+
}
|
|
455
|
+
else {
|
|
456
|
+
capabilities["appium:app"] = path.resolve(appId);
|
|
457
|
+
}
|
|
458
|
+
// Installable payload overrides app path for install-before-launch.
|
|
459
|
+
if (descriptor.install) {
|
|
460
|
+
capabilities["appium:app"] = path.resolve(descriptor.install);
|
|
461
|
+
}
|
|
462
|
+
if (extras?.udid)
|
|
463
|
+
capabilities["appium:udid"] = extras.udid;
|
|
464
|
+
const timeout = descriptor.timeout ?? 60000;
|
|
465
|
+
capabilities["appium:wdaLaunchTimeout"] = Math.max(timeout, 120000);
|
|
466
|
+
capabilities["appium:wdaConnectionTimeout"] = Math.max(timeout, 120000);
|
|
467
|
+
// Persisting WebDriverAgent's Xcode build products across sessions/runs
|
|
468
|
+
// turns the cold ~10-minute WDA compile into a fast incremental build.
|
|
469
|
+
// Opt-in via env so a shared derivedDataPath is only used where the caller
|
|
470
|
+
// manages it (e.g. a CI cache keyed by driver + Xcode version); unset by
|
|
471
|
+
// default, appium uses a throwaway per-session temp dir. A caller sharing
|
|
472
|
+
// one path across concurrent iOS sessions owns serializing them.
|
|
473
|
+
const derivedDataPath = process.env.DOC_DETECTIVE_IOS_WDA_DERIVED_DATA_PATH;
|
|
474
|
+
if (derivedDataPath && derivedDataPath.trim()) {
|
|
475
|
+
capabilities["appium:derivedDataPath"] = derivedDataPath.trim();
|
|
476
|
+
}
|
|
477
|
+
return capabilities;
|
|
478
|
+
},
|
|
479
|
+
unsupportedFields: [
|
|
480
|
+
{
|
|
481
|
+
field: "activity",
|
|
482
|
+
isSet: (value) => value !== undefined,
|
|
483
|
+
guidance: "`activity` is Android-only; iOS launches by bundle identifier or installed app payload.",
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
field: "args",
|
|
487
|
+
isSet: (value) => Array.isArray(value) && value.length > 0,
|
|
488
|
+
guidance: "The iOS driver does not honor desktop-style process arguments for AUT launch.",
|
|
489
|
+
},
|
|
490
|
+
{
|
|
491
|
+
field: "workingDirectory",
|
|
492
|
+
isSet: (value) => value !== undefined && value !== ".",
|
|
493
|
+
guidance: "A working directory is not meaningful for iOS app launches.",
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
field: "env",
|
|
497
|
+
isSet: (value) => value !== undefined,
|
|
498
|
+
guidance: "Use driverOptions for iOS-specific launch controls; app environment overrides are not supported here.",
|
|
499
|
+
},
|
|
500
|
+
],
|
|
501
|
+
},
|
|
430
502
|
};
|
|
431
503
|
// The System Settings walkthrough for macOS Accessibility (TCC) — used by
|
|
432
504
|
// both the preflight probe and accessibility-shaped launch failures.
|
|
@@ -528,6 +600,64 @@ async function probeMacAccessibility() {
|
|
|
528
600
|
});
|
|
529
601
|
});
|
|
530
602
|
}
|
|
603
|
+
// Probe the iOS simulator toolchain: a macOS host, a configured Xcode
|
|
604
|
+
// (`xcode-select -p`), and a working `xcrun simctl`. Effects are injected
|
|
605
|
+
// (platform + a command runner) so every branch is unit-testable on any host —
|
|
606
|
+
// the same seam iosInstaller uses. The default runner gives `xcrun simctl` a
|
|
607
|
+
// generous timeout: the FIRST cold `simctl` call on a runner with many Xcodes
|
|
608
|
+
// and simulator runtimes launches CoreSimulatorService and can take far longer
|
|
609
|
+
// than a warm call (a 20s ceiling spuriously reported it "unavailable" on
|
|
610
|
+
// hosted macos-latest). A failure surfaces the selected developer dir and the
|
|
611
|
+
// command's own diagnostic so the skip is actionable, not opaque.
|
|
612
|
+
function probeIosToolchain(deps = {}) {
|
|
613
|
+
const platform = deps.platform ?? process.platform;
|
|
614
|
+
const run = deps.run ??
|
|
615
|
+
((command, args) => {
|
|
616
|
+
const result = spawnSync(command, args, {
|
|
617
|
+
encoding: "utf8",
|
|
618
|
+
windowsHide: true,
|
|
619
|
+
// xcrun/simctl gets 2 minutes for the cold CoreSimulator warm-up;
|
|
620
|
+
// xcode-select is a cheap path lookup.
|
|
621
|
+
timeout: command === "xcrun" ? 120000 : 15000,
|
|
622
|
+
maxBuffer: 32 * 1024 * 1024,
|
|
623
|
+
});
|
|
624
|
+
return {
|
|
625
|
+
status: result.status,
|
|
626
|
+
stdout: typeof result.stdout === "string" ? result.stdout : "",
|
|
627
|
+
stderr: typeof result.stderr === "string" ? result.stderr : "",
|
|
628
|
+
};
|
|
629
|
+
});
|
|
630
|
+
if (platform !== "darwin") {
|
|
631
|
+
return {
|
|
632
|
+
ok: false,
|
|
633
|
+
reason: "Skipping context on 'ios': iOS app surfaces require a macOS host with Xcode and Simulator tooling.",
|
|
634
|
+
};
|
|
635
|
+
}
|
|
636
|
+
const xcodeSelect = run("xcode-select", ["-p"]);
|
|
637
|
+
if (xcodeSelect.status !== 0) {
|
|
638
|
+
return {
|
|
639
|
+
ok: false,
|
|
640
|
+
reason: "Skipping context on 'ios': Xcode command-line tools are not configured. Install Xcode and run `xcode-select --install`.",
|
|
641
|
+
};
|
|
642
|
+
}
|
|
643
|
+
const developerDir = String(xcodeSelect.stdout ?? "").trim();
|
|
644
|
+
const simctl = run("xcrun", ["simctl", "list", "devices", "available"]);
|
|
645
|
+
if (simctl.status !== 0) {
|
|
646
|
+
const detail = String(simctl.stderr ?? "")
|
|
647
|
+
.trim()
|
|
648
|
+
.split(/\r?\n/)
|
|
649
|
+
.filter(Boolean)
|
|
650
|
+
.pop() ||
|
|
651
|
+
(simctl.status === null
|
|
652
|
+
? "the command timed out"
|
|
653
|
+
: `exit ${simctl.status}`);
|
|
654
|
+
return {
|
|
655
|
+
ok: false,
|
|
656
|
+
reason: `Skipping context on 'ios': \`xcrun simctl\` is unavailable (developer dir: ${developerDir || "unset"}; ${detail}). If \`xcode-select -p\` points at CommandLineTools, run \`sudo xcode-select -s /Applications/Xcode.app\`; otherwise open Xcode once to finish simulator components and rerun.`,
|
|
657
|
+
};
|
|
658
|
+
}
|
|
659
|
+
return { ok: true };
|
|
660
|
+
}
|
|
531
661
|
// Preflight for app surfaces: platform support, driver availability, and (on
|
|
532
662
|
// macOS) the Accessibility permission. Returns { ok: true } or a skip reason
|
|
533
663
|
// — an unmet environment is a gating fact (SKIPPED), never a FAIL, matching
|
|
@@ -539,9 +669,19 @@ async function appSurfacePreflight({ config, platform, deps = {}, }) {
|
|
|
539
669
|
if (!platformDriver) {
|
|
540
670
|
return {
|
|
541
671
|
ok: false,
|
|
542
|
-
reason: `Skipping context on '${platform}': native app surfaces run on Windows and
|
|
672
|
+
reason: `Skipping context on '${platform}': native app surfaces run on Windows, macOS, Android, and iOS in this phase. Gate the test with runOn platforms so this skip is intentional.`,
|
|
543
673
|
};
|
|
544
674
|
}
|
|
675
|
+
if (platform === "ios") {
|
|
676
|
+
const probe = deps.probeIosToolchain ?? probeIosToolchain;
|
|
677
|
+
const ios = probe();
|
|
678
|
+
if (!ios.ok) {
|
|
679
|
+
return {
|
|
680
|
+
ok: false,
|
|
681
|
+
reason: ios.reason,
|
|
682
|
+
};
|
|
683
|
+
}
|
|
684
|
+
}
|
|
545
685
|
if (platform === "mac") {
|
|
546
686
|
const probe = deps.probeAccessibility ?? probeMacAccessibility;
|
|
547
687
|
let trusted = null;
|
|
@@ -726,7 +866,7 @@ async function startAppSurface({ config, step, appSession, platform, serverDeps,
|
|
|
726
866
|
const platformDriver = APP_DRIVER_PLATFORMS[platform];
|
|
727
867
|
if (!platformDriver) {
|
|
728
868
|
result.status = "FAIL";
|
|
729
|
-
result.description = `startSurface (app) runs on Windows and macOS desktops
|
|
869
|
+
result.description = `startSurface (app) runs on Windows and macOS desktops plus Android and iOS mobile targets in this phase. Gate the test with runOn platforms (["windows"], ["mac"], ["android"], or ["ios"]).`;
|
|
730
870
|
return result;
|
|
731
871
|
}
|
|
732
872
|
// Per-platform unsupported fields (desktop rows reject the mobile-only
|
|
@@ -767,11 +907,13 @@ async function startAppSurface({ config, step, appSession, platform, serverDeps,
|
|
|
767
907
|
}
|
|
768
908
|
let driver;
|
|
769
909
|
let deviceName;
|
|
770
|
-
if (platform
|
|
771
|
-
// Android: multiple app surfaces on one
|
|
772
|
-
// session (switch by activateApp), so the
|
|
773
|
-
// per-app. Resolve the device (context default
|
|
774
|
-
// override) and acquire it (boot/create as needed).
|
|
910
|
+
if (isMobileTargetPlatform(platform)) {
|
|
911
|
+
// Mobile (Android emulator / iOS simulator): multiple app surfaces on one
|
|
912
|
+
// device share a single driver session (switch by activateApp), so the
|
|
913
|
+
// driver is per-device, not per-app. Resolve the device (context default
|
|
914
|
+
// merged with the step override) and acquire it (boot/create as needed).
|
|
915
|
+
// `targetNoun` keeps guidance honest per platform.
|
|
916
|
+
const targetNoun = platform === "ios" ? "simulator" : "device";
|
|
775
917
|
const desc = normalizeDeviceDescriptor({
|
|
776
918
|
contextDevice: appSession.defaultDevice,
|
|
777
919
|
stepDevice: descriptor.device,
|
|
@@ -779,8 +921,7 @@ async function startAppSurface({ config, step, appSession, platform, serverDeps,
|
|
|
779
921
|
});
|
|
780
922
|
if (!serverDeps.acquireDevice) {
|
|
781
923
|
result.status = "FAIL";
|
|
782
|
-
result.description =
|
|
783
|
-
"Android app session is missing its device layer; this is a runner bug (runContext must wire serverDeps.acquireDevice).";
|
|
924
|
+
result.description = `The ${platformDriver.driverLabel} session is missing its ${targetNoun} layer; this is a runner bug (runContext must wire serverDeps.acquireDevice).`;
|
|
784
925
|
return result;
|
|
785
926
|
}
|
|
786
927
|
let acquired;
|
|
@@ -789,14 +930,14 @@ async function startAppSurface({ config, step, appSession, platform, serverDeps,
|
|
|
789
930
|
}
|
|
790
931
|
catch (error) {
|
|
791
932
|
result.status = "FAIL";
|
|
792
|
-
result.description = `Couldn't acquire the
|
|
933
|
+
result.description = `Couldn't acquire the ${targetNoun} for "${appId}": ${error?.message ?? error}`;
|
|
793
934
|
return result;
|
|
794
935
|
}
|
|
795
936
|
// The preflight already validated resolvability, so an acquire-time skip is
|
|
796
937
|
// a real runtime failure (e.g. the device died between preflight and now).
|
|
797
938
|
if ("skip" in acquired) {
|
|
798
939
|
result.status = "FAIL";
|
|
799
|
-
result.description = `Couldn't acquire the
|
|
940
|
+
result.description = `Couldn't acquire the ${targetNoun} for "${appId}": ${acquired.skip}`;
|
|
800
941
|
return result;
|
|
801
942
|
}
|
|
802
943
|
deviceName = acquired.entry.name;
|
|
@@ -814,7 +955,7 @@ async function startAppSurface({ config, step, appSession, platform, serverDeps,
|
|
|
814
955
|
}
|
|
815
956
|
catch (error) {
|
|
816
957
|
result.status = "FAIL";
|
|
817
|
-
result.description = `Couldn't launch app "${appId}" on the
|
|
958
|
+
result.description = `Couldn't launch app "${appId}" on the ${targetNoun} "${deviceName}": ${error?.message ?? error}.`;
|
|
818
959
|
return result;
|
|
819
960
|
}
|
|
820
961
|
sessions.set(deviceName, {
|
|
@@ -883,11 +1024,12 @@ async function startAppSurface({ config, step, appSession, platform, serverDeps,
|
|
|
883
1024
|
platform,
|
|
884
1025
|
});
|
|
885
1026
|
if (found.error) {
|
|
886
|
-
// On desktop the session is this app's alone, so end it. On
|
|
887
|
-
//
|
|
888
|
-
// sibling surfaces — so leave it;
|
|
889
|
-
//
|
|
890
|
-
|
|
1027
|
+
// On desktop the session is this app's alone, so end it. On mobile
|
|
1028
|
+
// (Android emulator / iOS simulator) the session is shared across the
|
|
1029
|
+
// device's apps — deleting it would kill sibling surfaces — so leave it;
|
|
1030
|
+
// the run-end device sweep handles the emulator/simulator, and no surface
|
|
1031
|
+
// was registered for this failed app.
|
|
1032
|
+
if (!isMobileTargetPlatform(platform)) {
|
|
891
1033
|
try {
|
|
892
1034
|
await driver.deleteSession();
|
|
893
1035
|
}
|
|
@@ -988,11 +1130,120 @@ async function closeAppSurface({ entry, appSession, }) {
|
|
|
988
1130
|
// Idempotent: the app/session may already be gone.
|
|
989
1131
|
}
|
|
990
1132
|
}
|
|
1133
|
+
// Whether `pid` is a live process. `process.kill(pid, 0)` sends no signal — it
|
|
1134
|
+
// throws ESRCH once the pid is gone; any other error (e.g. EPERM) means it
|
|
1135
|
+
// exists but is unsignalable, so treat only ESRCH as dead.
|
|
1136
|
+
function defaultIsAlive(pid) {
|
|
1137
|
+
try {
|
|
1138
|
+
process.kill(pid, 0);
|
|
1139
|
+
return true;
|
|
1140
|
+
}
|
|
1141
|
+
catch (error) {
|
|
1142
|
+
return error?.code !== "ESRCH";
|
|
1143
|
+
}
|
|
1144
|
+
}
|
|
1145
|
+
function defaultForceKill(pid) {
|
|
1146
|
+
try {
|
|
1147
|
+
process.kill(pid, "SIGKILL");
|
|
1148
|
+
}
|
|
1149
|
+
catch {
|
|
1150
|
+
// already gone / unsignalable — best-effort
|
|
1151
|
+
}
|
|
1152
|
+
}
|
|
1153
|
+
// Read the Windows process table as (pid, ppid) rows via a CIM query. CSV output
|
|
1154
|
+
// keeps parsing trivial and avoids wmic (removed on recent Windows). Best-effort:
|
|
1155
|
+
// rejects on failure, which the caller swallows into "no descendants".
|
|
1156
|
+
function queryWindowsProcessTable() {
|
|
1157
|
+
return new Promise((resolve, reject) => {
|
|
1158
|
+
const script = 'Get-CimInstance Win32_Process | ForEach-Object { "$($_.ProcessId),$($_.ParentProcessId)" }';
|
|
1159
|
+
execFile("powershell.exe", ["-NoProfile", "-NonInteractive", "-Command", script], { windowsHide: true, timeout: 10000, maxBuffer: 16 * 1024 * 1024 }, (error, stdout) => {
|
|
1160
|
+
if (error)
|
|
1161
|
+
return reject(error);
|
|
1162
|
+
const rows = [];
|
|
1163
|
+
for (const line of String(stdout).split(/\r?\n/)) {
|
|
1164
|
+
const m = line.trim().match(/^(\d+),(\d+)$/);
|
|
1165
|
+
if (m)
|
|
1166
|
+
rows.push({ pid: Number(m[1]), ppid: Number(m[2]) });
|
|
1167
|
+
}
|
|
1168
|
+
resolve(rows);
|
|
1169
|
+
});
|
|
1170
|
+
});
|
|
1171
|
+
}
|
|
1172
|
+
// All descendant pids of `rootPid`, walked from a (pid, ppid) table. Pure and
|
|
1173
|
+
// unit-testable given an injected table.
|
|
1174
|
+
async function listWindowsDescendantPids(rootPid, runQuery) {
|
|
1175
|
+
const out = new Set();
|
|
1176
|
+
let table;
|
|
1177
|
+
try {
|
|
1178
|
+
table = await runQuery();
|
|
1179
|
+
}
|
|
1180
|
+
catch {
|
|
1181
|
+
return out;
|
|
1182
|
+
}
|
|
1183
|
+
const childrenByParent = new Map();
|
|
1184
|
+
for (const { pid, ppid } of table) {
|
|
1185
|
+
const siblings = childrenByParent.get(ppid);
|
|
1186
|
+
if (siblings)
|
|
1187
|
+
siblings.push(pid);
|
|
1188
|
+
else
|
|
1189
|
+
childrenByParent.set(ppid, [pid]);
|
|
1190
|
+
}
|
|
1191
|
+
const stack = [rootPid];
|
|
1192
|
+
while (stack.length) {
|
|
1193
|
+
const parent = stack.pop();
|
|
1194
|
+
for (const child of childrenByParent.get(parent) ?? []) {
|
|
1195
|
+
if (!out.has(child)) {
|
|
1196
|
+
out.add(child);
|
|
1197
|
+
stack.push(child);
|
|
1198
|
+
}
|
|
1199
|
+
}
|
|
1200
|
+
}
|
|
1201
|
+
return out;
|
|
1202
|
+
}
|
|
1203
|
+
// #501 hygiene, phase 1: snapshot the app Appium server's descendant pids while
|
|
1204
|
+
// the server is still alive, so a descendant that DETACHES from the tree during
|
|
1205
|
+
// teardown (a reparented conhost/PowerShell the tree-kill then misses) is still
|
|
1206
|
+
// attributable to us and reapable afterward. Windows-only; a no-op (empty set)
|
|
1207
|
+
// elsewhere or when the server pid isn't live. Only ever records processes
|
|
1208
|
+
// descended from OUR server — never image-name matches across the box.
|
|
1209
|
+
async function snapshotAppServerDescendants(serverPid, tools = {}) {
|
|
1210
|
+
if (process.platform !== "win32" || !serverPid)
|
|
1211
|
+
return new Set();
|
|
1212
|
+
const isAlive = tools.isAlive ?? defaultIsAlive;
|
|
1213
|
+
// Skip the (subprocess) table query when the server isn't even alive.
|
|
1214
|
+
if (!isAlive(serverPid))
|
|
1215
|
+
return new Set();
|
|
1216
|
+
if (tools.listDescendants)
|
|
1217
|
+
return tools.listDescendants(serverPid);
|
|
1218
|
+
return listWindowsDescendantPids(serverPid, tools.runQuery ?? queryWindowsProcessTable);
|
|
1219
|
+
}
|
|
1220
|
+
// #501 hygiene, phase 2: force-terminate any snapshotted descendant still alive
|
|
1221
|
+
// after the server tree-kill (i.e. it detached and survived). Returns the pids
|
|
1222
|
+
// actually reaped. Safe: it only touches pids from a prior
|
|
1223
|
+
// snapshotAppServerDescendants call, never a broad image-name sweep.
|
|
1224
|
+
async function reapConsoleOrphans(pids, tools = {}) {
|
|
1225
|
+
const isAlive = tools.isAlive ?? defaultIsAlive;
|
|
1226
|
+
const forceKill = tools.forceKill ?? defaultForceKill;
|
|
1227
|
+
const reaped = [];
|
|
1228
|
+
for (const pid of pids) {
|
|
1229
|
+
if (isAlive(pid)) {
|
|
1230
|
+
forceKill(pid);
|
|
1231
|
+
reaped.push(pid);
|
|
1232
|
+
}
|
|
1233
|
+
}
|
|
1234
|
+
return reaped;
|
|
1235
|
+
}
|
|
991
1236
|
// Context teardown: close every remaining app surface, end each shared Android
|
|
992
1237
|
// device session, then stop the app session's Appium server. Killing only what
|
|
993
1238
|
// we launched is the driver's contract (deleteSession terminates driver-
|
|
994
1239
|
// launched apps; the run-level device registry sweeps the emulators).
|
|
995
|
-
|
|
1240
|
+
//
|
|
1241
|
+
// On Windows the server kill is bracketed by the #501 console-orphan sweep:
|
|
1242
|
+
// snapshot the server's descendants before the kill, then force-reap any that
|
|
1243
|
+
// detached and survived it. Hygiene for lingering conhost processes
|
|
1244
|
+
// (microsoft/terminal#4050), kept as defense-in-depth alongside the ConPTY
|
|
1245
|
+
// guards in src/core/ptyWatchdog (ADR 01024).
|
|
1246
|
+
async function teardownAppSession(appSession, killServer, tools = {}) {
|
|
996
1247
|
if (!appSession)
|
|
997
1248
|
return;
|
|
998
1249
|
for (const entry of [...appSession.surfaces.values()]) {
|
|
@@ -1010,8 +1261,13 @@ async function teardownAppSession(appSession, killServer) {
|
|
|
1010
1261
|
}
|
|
1011
1262
|
appSession.deviceSessions?.clear();
|
|
1012
1263
|
if (appSession.server) {
|
|
1013
|
-
|
|
1264
|
+
const serverPid = appSession.server.process?.pid;
|
|
1265
|
+
const orphanSnapshot = await snapshotAppServerDescendants(serverPid, tools);
|
|
1266
|
+
await killServer(serverPid);
|
|
1014
1267
|
appSession.server = undefined;
|
|
1268
|
+
if (orphanSnapshot.size) {
|
|
1269
|
+
await reapConsoleOrphans(orphanSnapshot, tools);
|
|
1270
|
+
}
|
|
1015
1271
|
}
|
|
1016
1272
|
}
|
|
1017
1273
|
//# sourceMappingURL=appSurface.js.map
|