doc-detective 4.38.0 → 4.41.4
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/README.md +4 -4
- package/dist/agents/adapters/claude-code.d.ts.map +1 -1
- package/dist/agents/adapters/claude-code.js +1 -2
- package/dist/agents/adapters/claude-code.js.map +1 -1
- package/dist/agents/adapters/codex.d.ts.map +1 -1
- package/dist/agents/adapters/codex.js +3 -4
- package/dist/agents/adapters/codex.js.map +1 -1
- package/dist/agents/adapters/copilot-cli.d.ts.map +1 -1
- package/dist/agents/adapters/copilot-cli.js +1 -2
- package/dist/agents/adapters/copilot-cli.js.map +1 -1
- package/dist/agents/adapters/gemini-cli.d.ts.map +1 -1
- package/dist/agents/adapters/gemini-cli.js +1 -2
- package/dist/agents/adapters/gemini-cli.js.map +1 -1
- package/dist/agents/adapters/opencode.d.ts.map +1 -1
- package/dist/agents/adapters/opencode.js +1 -2
- package/dist/agents/adapters/opencode.js.map +1 -1
- package/dist/agents/adapters/qwen-code.d.ts.map +1 -1
- package/dist/agents/adapters/qwen-code.js +1 -2
- package/dist/agents/adapters/qwen-code.js.map +1 -1
- package/dist/agents/fetcher.d.ts.map +1 -1
- package/dist/agents/fetcher.js +1 -2
- package/dist/agents/fetcher.js.map +1 -1
- package/dist/common/src/ajv.d.ts +30 -0
- package/dist/common/src/ajv.d.ts.map +1 -0
- package/dist/common/src/ajv.js +131 -0
- package/dist/common/src/ajv.js.map +1 -0
- package/dist/common/src/detectTests.d.ts +2 -18
- package/dist/common/src/detectTests.d.ts.map +1 -1
- package/dist/common/src/detectTests.js +8 -77
- package/dist/common/src/detectTests.js.map +1 -1
- package/dist/common/src/schemas/referenced.d.ts +12 -0
- package/dist/common/src/schemas/referenced.d.ts.map +1 -0
- package/dist/common/src/schemas/referenced.js +10 -0
- package/dist/common/src/schemas/referenced.js.map +1 -0
- package/dist/common/src/schemas/schemas.json +2 -2
- package/dist/common/src/schemas/schemasReferenced.json +14871 -0
- package/dist/common/src/schemas/validators.cjs +509 -0
- package/dist/common/src/schemas/validatorsCheck.cjs +2 -0
- package/dist/common/src/textUtils.d.ts +25 -0
- package/dist/common/src/textUtils.d.ts.map +1 -0
- package/dist/common/src/textUtils.js +84 -0
- package/dist/common/src/textUtils.js.map +1 -0
- package/dist/common/src/types/generated/annotate_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/annotation_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/click_v3.d.ts +153 -0
- package/dist/common/src/types/generated/click_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/config_v3.d.ts +13753 -207
- package/dist/common/src/types/generated/config_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/dragAndDrop_v3.d.ts +72 -0
- package/dist/common/src/types/generated/dragAndDrop_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/find_v3.d.ts +632 -0
- package/dist/common/src/types/generated/find_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/goTo_v3.d.ts +31 -0
- package/dist/common/src/types/generated/goTo_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/httpRequest_v3.d.ts +181 -0
- package/dist/common/src/types/generated/httpRequest_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/loadCookie_v3.d.ts +30 -0
- package/dist/common/src/types/generated/loadCookie_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/report_v3.d.ts +28234 -321
- package/dist/common/src/types/generated/report_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/resolvedTests_v3.d.ts +42281 -822
- package/dist/common/src/types/generated/resolvedTests_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/saveCookie_v3.d.ts +35 -0
- package/dist/common/src/types/generated/saveCookie_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/screenshot_v3.d.ts +45 -0
- package/dist/common/src/types/generated/screenshot_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/spec_v3.d.ts +28188 -275
- package/dist/common/src/types/generated/spec_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/startSurface_v3.d.ts +63 -1
- package/dist/common/src/types/generated/startSurface_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/step_v3.d.ts +5186 -523
- package/dist/common/src/types/generated/step_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/test_v3.d.ts +13268 -3582
- package/dist/common/src/types/generated/test_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/type_v3.d.ts +62 -0
- package/dist/common/src/types/generated/type_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/waitUntil_v3.d.ts +62 -0
- package/dist/common/src/types/generated/waitUntil_v3.d.ts.map +1 -1
- package/dist/common/src/validate.d.ts +1 -1
- package/dist/common/src/validate.d.ts.map +1 -1
- package/dist/common/src/validate.js +29 -75
- package/dist/common/src/validate.js.map +1 -1
- package/dist/core/appium.d.ts +3 -2
- package/dist/core/appium.d.ts.map +1 -1
- package/dist/core/appium.js +63 -89
- package/dist/core/appium.js.map +1 -1
- package/dist/core/appiumReuse.d.ts +43 -0
- package/dist/core/appiumReuse.d.ts.map +1 -0
- package/dist/core/appiumReuse.js +226 -0
- package/dist/core/appiumReuse.js.map +1 -0
- package/dist/core/config.d.ts +10 -2
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +37 -7
- package/dist/core/config.js.map +1 -1
- package/dist/core/detectTests.d.ts.map +1 -1
- package/dist/core/detectTests.js +51 -17
- package/dist/core/detectTests.js.map +1 -1
- package/dist/core/files.d.ts.map +1 -1
- package/dist/core/files.js +3 -4
- package/dist/core/files.js.map +1 -1
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +132 -21
- package/dist/core/index.js.map +1 -1
- package/dist/core/integrations/heretto.d.ts +1 -1
- package/dist/core/integrations/heretto.d.ts.map +1 -1
- package/dist/core/integrations/heretto.js +7 -6
- package/dist/core/integrations/heretto.js.map +1 -1
- package/dist/core/lazyYaml.d.ts +2 -0
- package/dist/core/lazyYaml.d.ts.map +1 -0
- package/dist/core/lazyYaml.js +13 -0
- package/dist/core/lazyYaml.js.map +1 -0
- package/dist/core/resolveTests.js +1 -1
- package/dist/core/resolveTests.js.map +1 -1
- package/dist/core/telem.d.ts +1 -1
- package/dist/core/telem.d.ts.map +1 -1
- package/dist/core/telem.js +2 -11
- package/dist/core/telem.js.map +1 -1
- package/dist/core/telemLite.d.ts +10 -0
- package/dist/core/telemLite.d.ts.map +1 -0
- package/dist/core/telemLite.js +101 -0
- package/dist/core/telemLite.js.map +1 -0
- package/dist/core/tests/androidEmulator.d.ts +67 -4
- package/dist/core/tests/androidEmulator.d.ts.map +1 -1
- package/dist/core/tests/androidEmulator.js +366 -37
- package/dist/core/tests/androidEmulator.js.map +1 -1
- package/dist/core/tests/appSurface.d.ts +25 -6
- package/dist/core/tests/appSurface.d.ts.map +1 -1
- package/dist/core/tests/appSurface.js +88 -52
- package/dist/core/tests/appSurface.js.map +1 -1
- package/dist/core/tests/browserSessions.d.ts +2 -1
- package/dist/core/tests/browserSessions.d.ts.map +1 -1
- package/dist/core/tests/browserSessions.js +7 -1
- package/dist/core/tests/browserSessions.js.map +1 -1
- package/dist/core/tests/checkLink.d.ts +1 -0
- package/dist/core/tests/checkLink.d.ts.map +1 -1
- package/dist/core/tests/checkLink.js +14 -5
- package/dist/core/tests/checkLink.js.map +1 -1
- package/dist/core/tests/closeSurface.d.ts.map +1 -1
- package/dist/core/tests/closeSurface.js +4 -3
- package/dist/core/tests/closeSurface.js.map +1 -1
- package/dist/core/tests/findStrategies.d.ts.map +1 -1
- package/dist/core/tests/findStrategies.js +153 -116
- package/dist/core/tests/findStrategies.js.map +1 -1
- package/dist/core/tests/geckoDriver.d.ts +16 -0
- package/dist/core/tests/geckoDriver.d.ts.map +1 -0
- package/dist/core/tests/geckoDriver.js +127 -0
- package/dist/core/tests/geckoDriver.js.map +1 -0
- package/dist/core/tests/goTo.d.ts.map +1 -1
- package/dist/core/tests/goTo.js +12 -33
- package/dist/core/tests/goTo.js.map +1 -1
- package/dist/core/tests/httpRequest.d.ts.map +1 -1
- package/dist/core/tests/httpRequest.js +4 -3
- package/dist/core/tests/httpRequest.js.map +1 -1
- package/dist/core/tests/iosSimulator.d.ts +4 -1
- package/dist/core/tests/iosSimulator.d.ts.map +1 -1
- package/dist/core/tests/iosSimulator.js +49 -1
- package/dist/core/tests/iosSimulator.js.map +1 -1
- package/dist/core/tests/mobileBrowser.d.ts +2 -1
- package/dist/core/tests/mobileBrowser.d.ts.map +1 -1
- package/dist/core/tests/mobileBrowser.js +5 -2
- package/dist/core/tests/mobileBrowser.js.map +1 -1
- package/dist/core/tests/runCode.d.ts +9 -1
- package/dist/core/tests/runCode.d.ts.map +1 -1
- package/dist/core/tests/runCode.js +58 -2
- package/dist/core/tests/runCode.js.map +1 -1
- package/dist/core/tests/saveScreenshot.d.ts +18 -2
- package/dist/core/tests/saveScreenshot.d.ts.map +1 -1
- package/dist/core/tests/saveScreenshot.js +159 -4
- package/dist/core/tests/saveScreenshot.js.map +1 -1
- package/dist/core/tests/startRecording.d.ts.map +1 -1
- package/dist/core/tests/startRecording.js +6 -4
- package/dist/core/tests/startRecording.js.map +1 -1
- package/dist/core/tests/startSurface.d.ts.map +1 -1
- package/dist/core/tests/startSurface.js +8 -2
- package/dist/core/tests/startSurface.js.map +1 -1
- package/dist/core/tests.d.ts +21 -7
- package/dist/core/tests.d.ts.map +1 -1
- package/dist/core/tests.js +372 -121
- package/dist/core/tests.js.map +1 -1
- package/dist/core/utils.d.ts +68 -3
- package/dist/core/utils.d.ts.map +1 -1
- package/dist/core/utils.js +551 -18
- package/dist/core/utils.js.map +1 -1
- package/dist/core/verification.d.ts +17 -0
- package/dist/core/verification.d.ts.map +1 -0
- package/dist/core/verification.js +850 -0
- package/dist/core/verification.js.map +1 -0
- package/dist/debug/appium.js +2 -2
- package/dist/debug/appium.js.map +1 -1
- package/dist/debug/findings.js +2 -2
- package/dist/debug/findings.js.map +1 -1
- package/dist/debug/tools.d.ts +8 -0
- package/dist/debug/tools.d.ts.map +1 -1
- package/dist/debug/tools.js +60 -22
- package/dist/debug/tools.js.map +1 -1
- package/dist/hints/context.d.ts.map +1 -1
- package/dist/hints/context.js +2 -2
- package/dist/hints/context.js.map +1 -1
- package/dist/index.cjs +25777 -4
- package/dist/reporters/htmlReporter.js +1 -1
- package/dist/runtime/androidInstaller.d.ts +45 -0
- package/dist/runtime/androidInstaller.d.ts.map +1 -1
- package/dist/runtime/androidInstaller.js +88 -5
- package/dist/runtime/androidInstaller.js.map +1 -1
- package/dist/runtime/browsers.d.ts +87 -7
- package/dist/runtime/browsers.d.ts.map +1 -1
- package/dist/runtime/browsers.js +308 -41
- package/dist/runtime/browsers.js.map +1 -1
- package/dist/runtime/cacheDir.d.ts +1 -1
- package/dist/runtime/cacheDir.d.ts.map +1 -1
- package/dist/runtime/cacheDir.js +5 -2
- package/dist/runtime/cacheDir.js.map +1 -1
- package/dist/runtime/heavyDeps.d.ts.map +1 -1
- package/dist/runtime/heavyDeps.js.map +1 -1
- package/dist/runtime/installCommand.d.ts.map +1 -1
- package/dist/runtime/installCommand.js +23 -0
- package/dist/runtime/installCommand.js.map +1 -1
- package/dist/runtime/loader.d.ts +13 -0
- package/dist/runtime/loader.d.ts.map +1 -1
- package/dist/runtime/loader.js +50 -0
- package/dist/runtime/loader.js.map +1 -1
- package/dist/runtime/wdaProducts.d.ts +12 -1
- package/dist/runtime/wdaProducts.d.ts.map +1 -1
- package/dist/runtime/wdaProducts.js +27 -2
- package/dist/runtime/wdaProducts.js.map +1 -1
- package/dist/runtime/windowsBash.d.ts +6 -1
- package/dist/runtime/windowsBash.d.ts.map +1 -1
- package/dist/runtime/windowsBash.js +45 -4
- package/dist/runtime/windowsBash.js.map +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +19 -5
- package/dist/utils.js.map +1 -1
- package/package.json +43 -41
|
@@ -5,14 +5,17 @@
|
|
|
5
5
|
// registry and `acquireDevice`, whose effects (adb/emulator spawns, boot
|
|
6
6
|
// polling) are all injected so the orchestration is testable with fakes.
|
|
7
7
|
import { execFile, spawn, spawnSync } from "node:child_process";
|
|
8
|
-
import
|
|
8
|
+
import treeKill from "tree-kill";
|
|
9
|
+
import fs from "node:fs";
|
|
10
|
+
import path from "node:path";
|
|
11
|
+
import { pickSystemImage, DEVICE_TYPE_PROFILES, DEFAULT_AVD_NAME, listInstalledSystemImages, winShellCommand, androidAvdHome, CLEAN_SNAPSHOT_NAME, hasCleanSnapshot, discardCleanSnapshot, readCleanSnapshotMeta, writeCleanSnapshotMeta, } from "../../runtime/androidInstaller.js";
|
|
9
12
|
import { normalizeDeviceDescriptor } from "./mobileDevice.js";
|
|
10
13
|
export { parseAdbDevices, parseEmuAvdName, parseListAvds, parseAccelCheck,
|
|
11
14
|
// Re-exported from the shared mobileDevice module so existing importers
|
|
12
15
|
// (appSurface.ts) keep resolving it here.
|
|
13
16
|
normalizeDeviceDescriptor, emulatorBootArgs, nextEmulatorPort, udidForPort, planDeviceAcquisition, planAndroidToolchain, createDeviceRegistry, acquireDevice, teardownDeviceRegistry,
|
|
14
17
|
// Effectful helpers + the deps builder that wires them for a detected SDK.
|
|
15
|
-
buildAcquireDeviceDeps, checkEmulatorAcceleration, hostHasKvm, };
|
|
18
|
+
buildAcquireDeviceDeps, checkEmulatorAcceleration, hostHasKvm, bootWithCleanSnapshot, isCleanSnapshotStale, findUia2Helpers, bakeHelpersWith, bestEffort, cleanSnapshotSaveCommands, saveCleanSnapshotWith, CLEAN_SNAPSHOT_NAME, waitForBootCompleted, waitForProcessExit, shutdownEmulatorWith, shutdownEmulator, adbPathForSdkRoot, };
|
|
16
19
|
// --- Output parsers (pure) ---
|
|
17
20
|
// Parse `adb devices` into attached devices. The first line is a header; each
|
|
18
21
|
// subsequent non-empty line is "<serial>\t<state>".
|
|
@@ -54,6 +57,94 @@ function parseAccelCheck({ code, text = "", }) {
|
|
|
54
57
|
return false;
|
|
55
58
|
return !/not installed|not usable|is not/i.test(text);
|
|
56
59
|
}
|
|
60
|
+
// --- Appium helpers baked into the clean snapshot (ADR 01108) ---
|
|
61
|
+
// The UiAutomator2 driver version and the helper APKs it installs on a device
|
|
62
|
+
// (the io.appium.settings helper and the UiAutomator2 server + test APKs),
|
|
63
|
+
// found beside the driver package (nested or hoisted node_modules). Null when
|
|
64
|
+
// the driver or its APKs aren't there.
|
|
65
|
+
function findUia2Helpers(driverRoot) {
|
|
66
|
+
let driverVersion;
|
|
67
|
+
try {
|
|
68
|
+
driverVersion = JSON.parse(fs.readFileSync(path.join(driverRoot, "package.json"), "utf8")).version;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
const apks = [];
|
|
74
|
+
for (const pkg of ["io.appium.settings", "appium-uiautomator2-server"]) {
|
|
75
|
+
const before = apks.length;
|
|
76
|
+
for (const nodeModules of [path.join(driverRoot, "node_modules"), path.dirname(driverRoot)]) {
|
|
77
|
+
const dir = path.join(nodeModules, pkg, "apks");
|
|
78
|
+
let files;
|
|
79
|
+
try {
|
|
80
|
+
files = fs.readdirSync(dir);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
apks.push(...files.filter((f) => f.endsWith(".apk")).map((f) => path.join(dir, f)));
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
// Both packages or nothing: a partial set would be stamped as a complete
|
|
89
|
+
// bake and keep a stale server on the snapshot.
|
|
90
|
+
if (apks.length === before)
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
return driverVersion ? { driverVersion, apks } : null;
|
|
94
|
+
}
|
|
95
|
+
// Install every helper APK on the device (`adb install -r -g`). Returns the
|
|
96
|
+
// driver version they were baked for only once ALL succeed; a failed install
|
|
97
|
+
// throws, so the snapshot never records a version its helpers don't match.
|
|
98
|
+
async function bakeHelpersWith(run, udid, found) {
|
|
99
|
+
for (const apk of found.apks) {
|
|
100
|
+
const { stdout } = await run(["-s", udid, "install", "-r", "-g", apk]);
|
|
101
|
+
if (!/Success/.test(stdout)) {
|
|
102
|
+
throw new Error(`adb install ${path.basename(apk)}: ${stdout.trim()}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return found.driverVersion;
|
|
106
|
+
}
|
|
107
|
+
// Snapshot housekeeping must never abort a boot, but a silent failure leaves
|
|
108
|
+
// slow boots unexplained — so log it. Returns whether the step succeeded.
|
|
109
|
+
async function bestEffort(step, log, what) {
|
|
110
|
+
try {
|
|
111
|
+
await step();
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
log?.(`Couldn't ${what}: ${error?.message ?? error}`);
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// A clean snapshot built for another driver version holds stale helpers (an
|
|
120
|
+
// old UiAutomator2 server Appium won't replace), so it must be retaken. With
|
|
121
|
+
// no known driver version there's nothing to compare — keep the snapshot.
|
|
122
|
+
function isCleanSnapshotStale(meta, driverVersion) {
|
|
123
|
+
if (!driverVersion)
|
|
124
|
+
return false;
|
|
125
|
+
return meta?.driverVersion !== driverVersion;
|
|
126
|
+
}
|
|
127
|
+
// The adb commands that save the clean snapshot. Delete it through the
|
|
128
|
+
// console first: a directory-only delete (reset, discard) leaves the
|
|
129
|
+
// qcow2-internal snapshot behind, and re-saving the name over it produced a
|
|
130
|
+
// snapshot that never resumed on windowed (host-GPU) emulators.
|
|
131
|
+
function cleanSnapshotSaveCommands(udid) {
|
|
132
|
+
return [
|
|
133
|
+
["-s", udid, "emu", "avd", "snapshot", "delete", CLEAN_SNAPSHOT_NAME],
|
|
134
|
+
["-s", udid, "emu", "avd", "snapshot", "save", CLEAN_SNAPSHOT_NAME],
|
|
135
|
+
];
|
|
136
|
+
}
|
|
137
|
+
// Run the save, but only after the console confirms the delete (it answers
|
|
138
|
+
// OK even when there's nothing to delete). An unconfirmed delete may have
|
|
139
|
+
// left the stale copy behind, so skip the save: the next boot is cold and
|
|
140
|
+
// retakes it, rather than resuming a snapshot that can't. Returns whether
|
|
141
|
+
// the console confirmed the save.
|
|
142
|
+
async function saveCleanSnapshotWith(run, udid) {
|
|
143
|
+
const [deleteArgs, saveArgs] = cleanSnapshotSaveCommands(udid);
|
|
144
|
+
if (!/\bOK\b/.test((await run(deleteArgs)).stdout))
|
|
145
|
+
return false;
|
|
146
|
+
return /\bOK\b/.test((await run(saveArgs)).stdout);
|
|
147
|
+
}
|
|
57
148
|
// --- Descriptor / boot computation (pure) ---
|
|
58
149
|
// The AVD emulator serial for a console port (even ports 5554..5680).
|
|
59
150
|
function udidForPort(port) {
|
|
@@ -70,16 +161,22 @@ function nextEmulatorPort(usedPorts) {
|
|
|
70
161
|
/* c8 ignore next */
|
|
71
162
|
throw new Error("No free emulator console port in 5554-5680.");
|
|
72
163
|
}
|
|
73
|
-
// Emulator boot arguments
|
|
74
|
-
|
|
75
|
-
function emulatorBootArgs(desc, port) {
|
|
164
|
+
// Emulator boot arguments; headless adds `-no-window -no-audio`.
|
|
165
|
+
function emulatorBootArgs(desc, port, { snapshot = false } = {}) {
|
|
76
166
|
const args = ["-avd", String(desc.name), "-port", String(port)];
|
|
77
167
|
// Headless needs a software renderer — a windowless emulator with the default
|
|
78
168
|
// (host) GPU has no surface and exits immediately on a headless CI runner.
|
|
79
169
|
if (desc.headless)
|
|
80
170
|
args.push("-no-window", "-no-audio", "-gpu", "swiftshader_indirect");
|
|
81
|
-
//
|
|
82
|
-
|
|
171
|
+
// Snapshot boots resume the clean snapshot, never save over it, and exit
|
|
172
|
+
// (instead of silently cold booting) when it can't load. Otherwise cold boot.
|
|
173
|
+
if (snapshot) {
|
|
174
|
+
args.push("-snapshot", CLEAN_SNAPSHOT_NAME, "-no-snapshot-save", "-force-snapshot-load");
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
args.push("-no-snapshot");
|
|
178
|
+
}
|
|
179
|
+
args.push("-no-boot-anim");
|
|
83
180
|
return args;
|
|
84
181
|
}
|
|
85
182
|
// Whether a boot should be headless: an explicit `headless` wins, otherwise
|
|
@@ -176,6 +273,123 @@ function planDeviceAcquisition(desc, { running, avds, installedImages, abi, java
|
|
|
176
273
|
DEVICE_TYPE_PROFILES.phone;
|
|
177
274
|
return { action: "create-boot", name, systemImage, device };
|
|
178
275
|
}
|
|
276
|
+
// Resolve true once `proc` has exited (or was never there), false if it's
|
|
277
|
+
// still running after `timeoutMs`. A signal-terminated child (e.g. after a
|
|
278
|
+
// SIGKILL tree-kill) has a null exitCode and a set signalCode, and its exit
|
|
279
|
+
// event may already have fired — check both before waiting on the event.
|
|
280
|
+
function waitForProcessExit(proc, timeoutMs) {
|
|
281
|
+
if (!proc || proc.exitCode !== null || proc.signalCode)
|
|
282
|
+
return Promise.resolve(true);
|
|
283
|
+
return new Promise((resolve) => {
|
|
284
|
+
const timer = setTimeout(() => resolve(false), timeoutMs);
|
|
285
|
+
proc.once("exit", () => {
|
|
286
|
+
clearTimeout(timer);
|
|
287
|
+
resolve(true);
|
|
288
|
+
});
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
// The emulator shutdown policy (ADR 01106), effects injected: ask the
|
|
292
|
+
// emulator to exit through its console and wait, so qemu flushes its disk
|
|
293
|
+
// images (a hard kill can leave them — and the clean snapshot inside them —
|
|
294
|
+
// inconsistent). An accepted kill arms the emulator's own watchdog, which ends
|
|
295
|
+
// qemu within 20s even when adb clients stall its exit — so a slow exit is
|
|
296
|
+
// left to it rather than waited on or hard-killed. Force-kill only when the
|
|
297
|
+
// console refused the kill (no watchdog). Then release our stdio pipes: the
|
|
298
|
+
// watchdog inherits them and would hold the run open until it fires.
|
|
299
|
+
async function shutdownEmulatorWith({ flush, consoleKill, waitExit, forceKill, release, }) {
|
|
300
|
+
// `emu kill` halts the VM without an Android shutdown, so writes still in
|
|
301
|
+
// the guest's page cache never reach /data. Flush them first.
|
|
302
|
+
try {
|
|
303
|
+
await flush();
|
|
304
|
+
}
|
|
305
|
+
catch {
|
|
306
|
+
/* best-effort: a wedged guest can't sync; shut down anyway */
|
|
307
|
+
}
|
|
308
|
+
let accepted = false;
|
|
309
|
+
try {
|
|
310
|
+
accepted = await consoleKill();
|
|
311
|
+
}
|
|
312
|
+
catch {
|
|
313
|
+
/* fall through to the wait and the force-kill fallback */
|
|
314
|
+
}
|
|
315
|
+
try {
|
|
316
|
+
const graceful = await waitExit();
|
|
317
|
+
if (!graceful && !accepted)
|
|
318
|
+
await forceKill();
|
|
319
|
+
return graceful ? "graceful" : accepted ? "watchdog" : "forced";
|
|
320
|
+
}
|
|
321
|
+
finally {
|
|
322
|
+
release();
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
// --- Boot wait (effects injected) ---
|
|
326
|
+
// Sub-second so a resumed snapshot is noticed promptly; each probe is a cheap
|
|
327
|
+
// `adb shell getprop`.
|
|
328
|
+
export const BOOT_POLL_INTERVAL_MS = 500;
|
|
329
|
+
// Poll `probe` (sys.boot_completed == 1) until it reports booted, the emulator
|
|
330
|
+
// process exits, or `timeoutMs` elapses. Probes immediately — no leading sleep
|
|
331
|
+
// — and checks for an exit around every probe so a crashed emulator fails fast
|
|
332
|
+
// instead of burning the timeout. The caller formats the outcome.
|
|
333
|
+
async function waitForBootCompleted({ probe, exitCode, timeoutMs, intervalMs = BOOT_POLL_INTERVAL_MS, sleep = (ms) => new Promise((r) => setTimeout(r, ms)), now = Date.now, }) {
|
|
334
|
+
const deadline = now() + timeoutMs;
|
|
335
|
+
while (true) {
|
|
336
|
+
let code = exitCode();
|
|
337
|
+
if (code !== null)
|
|
338
|
+
return { exited: code };
|
|
339
|
+
if (await probe())
|
|
340
|
+
return "booted";
|
|
341
|
+
code = exitCode();
|
|
342
|
+
if (code !== null)
|
|
343
|
+
return { exited: code };
|
|
344
|
+
if (now() >= deadline)
|
|
345
|
+
return "timeout";
|
|
346
|
+
await sleep(intervalMs);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
// The clean-snapshot boot policy (ADR 01106), effects injected. With a
|
|
350
|
+
// snapshot on disk, force-load it (the emulator EXITS when it can't load, so
|
|
351
|
+
// we always know which boot happened). A snapshot that won't load — or loads
|
|
352
|
+
// but never finishes booting — is bad: discard it, so a bad snapshot never
|
|
353
|
+
// fails a test or costs more than one run. Then (or with no snapshot)
|
|
354
|
+
// cold-boot and take the snapshot before any test touches the device. Settle
|
|
355
|
+
// first: a snapshot taken mid boot-time work makes every resume replay that
|
|
356
|
+
// work. Discard, settle, and save are best-effort — a failed save just means
|
|
357
|
+
// the next boot is cold again.
|
|
358
|
+
async function bootWithCleanSnapshot({ hasSnapshot, attempt, discard, settle, prepare, save, }) {
|
|
359
|
+
if (hasSnapshot) {
|
|
360
|
+
const fromSnapshot = await attempt({ snapshot: true });
|
|
361
|
+
if (fromSnapshot.outcome === "booted")
|
|
362
|
+
return fromSnapshot;
|
|
363
|
+
try {
|
|
364
|
+
await discard();
|
|
365
|
+
}
|
|
366
|
+
catch {
|
|
367
|
+
/* best-effort: the cold boot below still runs */
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
const cold = await attempt({ snapshot: false });
|
|
371
|
+
if (cold.outcome === "booted") {
|
|
372
|
+
try {
|
|
373
|
+
await settle();
|
|
374
|
+
}
|
|
375
|
+
catch {
|
|
376
|
+
/* best-effort: snapshot the unsettled device */
|
|
377
|
+
}
|
|
378
|
+
try {
|
|
379
|
+
await prepare();
|
|
380
|
+
}
|
|
381
|
+
catch {
|
|
382
|
+
/* best-effort: without baked helpers Appium installs them per session */
|
|
383
|
+
}
|
|
384
|
+
try {
|
|
385
|
+
await save();
|
|
386
|
+
}
|
|
387
|
+
catch {
|
|
388
|
+
/* best-effort */
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
return cold;
|
|
392
|
+
}
|
|
179
393
|
function createDeviceRegistry() {
|
|
180
394
|
return new Map();
|
|
181
395
|
}
|
|
@@ -285,11 +499,13 @@ async function acquireDevice({ desc, registry, sdkRoot, deps, }) {
|
|
|
285
499
|
return { entry: placeholder };
|
|
286
500
|
}
|
|
287
501
|
// Run-end sweep: kill only devices Doc Detective booted (launch-ownership),
|
|
288
|
-
// leaving pre-existing emulators running.
|
|
502
|
+
// leaving pre-existing emulators running. Shutdowns run concurrently: each
|
|
503
|
+
// graceful one takes seconds, and a multi-device run shouldn't pay their sum.
|
|
504
|
+
// Effects injected.
|
|
289
505
|
async function teardownDeviceRegistry(registry, kill) {
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
506
|
+
await Promise.all([...registry.values()]
|
|
507
|
+
.filter((entry) => entry.bootedByUs)
|
|
508
|
+
.map(async (entry) => {
|
|
293
509
|
// A warm-phase boot can still be in flight at run end (the warm task
|
|
294
510
|
// resolves at boot initiation). Await it so the entry carries its real
|
|
295
511
|
// process/udid before the kill — sweeping mid-boot would no-op on the
|
|
@@ -300,7 +516,7 @@ async function teardownDeviceRegistry(registry, kill) {
|
|
|
300
516
|
await entry.ready;
|
|
301
517
|
}
|
|
302
518
|
catch {
|
|
303
|
-
|
|
519
|
+
return;
|
|
304
520
|
}
|
|
305
521
|
}
|
|
306
522
|
try {
|
|
@@ -309,9 +525,15 @@ async function teardownDeviceRegistry(registry, kill) {
|
|
|
309
525
|
catch {
|
|
310
526
|
// best-effort; a stuck emulator shouldn't fail the run's teardown
|
|
311
527
|
}
|
|
312
|
-
}
|
|
528
|
+
}));
|
|
313
529
|
registry.clear();
|
|
314
530
|
}
|
|
531
|
+
// The adb a shutdown should use: the SDK's platform-tools copy when it's
|
|
532
|
+
// there, else adb on PATH — the same fallback boot uses (`sdk.adb ?? "adb"`).
|
|
533
|
+
function adbPathForSdkRoot(sdkRoot) {
|
|
534
|
+
const adb = path.join(sdkRoot, "platform-tools", process.platform === "win32" ? "adb.exe" : "adb");
|
|
535
|
+
return fs.existsSync(adb) ? adb : "adb";
|
|
536
|
+
}
|
|
315
537
|
// --- Real effects (c8-ignored: exercised on the CI emulator legs and dev
|
|
316
538
|
// boxes, not the unit suite, which injects all of these). ---
|
|
317
539
|
/* c8 ignore start */
|
|
@@ -388,13 +610,13 @@ async function realCreateAvd(avdmanagerPath, { name, systemImage, device, }, env
|
|
|
388
610
|
child.stdin?.end();
|
|
389
611
|
});
|
|
390
612
|
}
|
|
391
|
-
//
|
|
392
|
-
async function
|
|
613
|
+
// One emulator spawn, polled until sys.boot_completed, an exit, or timeout.
|
|
614
|
+
async function bootEmulatorOnce(emulatorPath, adbPath, desc, port, env, timeout, snapshot) {
|
|
393
615
|
const udid = udidForPort(port);
|
|
394
616
|
// Force headless when there's no display (CI) so a windowed emulator doesn't
|
|
395
617
|
// exit immediately on a headless runner.
|
|
396
618
|
const bootDesc = { ...desc, headless: effectiveHeadless(desc) };
|
|
397
|
-
const bootArgs = emulatorBootArgs(bootDesc, port);
|
|
619
|
+
const bootArgs = emulatorBootArgs(bootDesc, port, { snapshot });
|
|
398
620
|
// Capture stdout AND stderr so an emulator that dies on boot reports WHY
|
|
399
621
|
// (missing accel, bad AVD config, …) instead of an opaque "exited (code 1)".
|
|
400
622
|
// The emulator writes most fatal errors to stdout, not stderr.
|
|
@@ -415,33 +637,141 @@ async function realBootEmulator(emulatorPath, adbPath, desc, port, env, timeout
|
|
|
415
637
|
child.on("exit", (code) => {
|
|
416
638
|
exited = code ?? 0;
|
|
417
639
|
});
|
|
418
|
-
const
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
640
|
+
const outcome = await waitForBootCompleted({
|
|
641
|
+
probe: async () => {
|
|
642
|
+
const { stdout } = await runTool(adbPath, ["-s", udid, "shell", "getprop", "sys.boot_completed"], 8000);
|
|
643
|
+
return stdout.trim() === "1";
|
|
644
|
+
},
|
|
645
|
+
exitCode: () => exited,
|
|
646
|
+
timeoutMs: timeout,
|
|
647
|
+
});
|
|
648
|
+
if (outcome === "timeout") {
|
|
649
|
+
// Tree-kill the launcher so its qemu child goes with it. The console
|
|
650
|
+
// can't be trusted here — a wedged guest can ignore `emu kill` — and
|
|
651
|
+
// killing only the launcher orphans qemu on Windows, which keeps the AVD
|
|
652
|
+
// lock and port and fails every later boot of this AVD in the run.
|
|
653
|
+
await new Promise((resolve) => {
|
|
654
|
+
if (!child.pid)
|
|
655
|
+
return resolve();
|
|
656
|
+
treeKill(child.pid, "SIGKILL", () => resolve());
|
|
657
|
+
});
|
|
658
|
+
// SIGKILL lands in milliseconds; 30s is a generous bound. If the process
|
|
659
|
+
// somehow outlives it, the caller's cold retry reuses this port and fails
|
|
660
|
+
// cleanly on the held AVD lock (ADR 01106) rather than waiting forever.
|
|
661
|
+
await waitForProcessExit(child, 30000);
|
|
662
|
+
// Like the graceful shutdown: a straggling helper that inherited these
|
|
663
|
+
// pipes must not hold the run open.
|
|
664
|
+
child.stdout?.destroy();
|
|
665
|
+
child.stderr?.destroy();
|
|
666
|
+
child.unref?.();
|
|
430
667
|
}
|
|
431
|
-
|
|
432
|
-
|
|
668
|
+
return { outcome, child, diag, bootArgs };
|
|
669
|
+
}
|
|
670
|
+
// A healthy resume reaches sys.boot_completed in seconds; past this, the
|
|
671
|
+
// snapshot is treated as bad (discarded and replaced by a cold boot).
|
|
672
|
+
const SNAPSHOT_RESUME_TIMEOUT_MS = 60000;
|
|
673
|
+
// Boot an emulator from its clean snapshot (or cold, taking the snapshot).
|
|
674
|
+
async function realBootEmulator(emulatorPath, adbPath, desc, port, env, timeout = 180000, log,
|
|
675
|
+
// Lazy: in the warm phase the driver may still be installing at boot start.
|
|
676
|
+
helpers) {
|
|
677
|
+
const udid = udidForPort(port);
|
|
678
|
+
const avdHome = env.ANDROID_AVD_HOME ?? androidAvdHome();
|
|
679
|
+
const name = String(desc.name);
|
|
680
|
+
let hasSnapshot = hasCleanSnapshot(name, { avdHome });
|
|
681
|
+
if (hasSnapshot &&
|
|
682
|
+
isCleanSnapshotStale(readCleanSnapshotMeta(name, { avdHome }), helpers?.()?.driverVersion)) {
|
|
683
|
+
log?.(`The clean snapshot of "${name}" predates the current Appium driver; retaking it.`);
|
|
684
|
+
// Cold-boot either way; the retake's save replaces whatever is left.
|
|
685
|
+
await bestEffort(() => discardCleanSnapshot(name, { avdHome }), log, `discard the stale clean snapshot of "${name}"`);
|
|
686
|
+
hasSnapshot = false;
|
|
433
687
|
}
|
|
434
|
-
|
|
435
|
-
|
|
688
|
+
let bakedVersion;
|
|
689
|
+
const result = await bootWithCleanSnapshot({
|
|
690
|
+
hasSnapshot,
|
|
691
|
+
attempt: ({ snapshot }) => {
|
|
692
|
+
log?.(snapshot
|
|
693
|
+
? `Resuming "${desc.name}" from its clean snapshot.`
|
|
694
|
+
: `Cold-booting "${desc.name}"; its clean snapshot is taken once it boots.`);
|
|
695
|
+
return bootEmulatorOnce(emulatorPath, adbPath, desc, port, env, snapshot ? Math.min(timeout, SNAPSHOT_RESUME_TIMEOUT_MS) : timeout, snapshot);
|
|
696
|
+
},
|
|
697
|
+
discard: async () => {
|
|
698
|
+
log?.(`The clean snapshot of "${desc.name}" didn't resume; discarding it.`);
|
|
699
|
+
discardCleanSnapshot(String(desc.name), { avdHome });
|
|
700
|
+
},
|
|
701
|
+
// Boot-completed receivers keep the CPU pinned for ~10s after
|
|
702
|
+
// sys.boot_completed; this returns once their broadcast queues drain.
|
|
703
|
+
// Unsupported on old Android versions, where it exits immediately.
|
|
704
|
+
settle: async () => {
|
|
705
|
+
await runTool(adbPath, ["-s", udid, "shell", "am", "wait-for-broadcast-idle"], 60000);
|
|
706
|
+
},
|
|
707
|
+
// Fresh, intact copies of the driver's helper APKs, so every resume has
|
|
708
|
+
// them at the driver's version (Appium can't upgrade an installed server
|
|
709
|
+
// without aapt2, and past hard kills left some corrupted).
|
|
710
|
+
prepare: async () => {
|
|
711
|
+
const found = helpers?.();
|
|
712
|
+
if (!found)
|
|
713
|
+
return;
|
|
714
|
+
// Set only after every install succeeds (bakeHelpersWith throws first).
|
|
715
|
+
// A failed bake still saves the snapshot; Appium then installs the
|
|
716
|
+
// helpers per session, as before ADR 01108.
|
|
717
|
+
await bestEffort(async () => {
|
|
718
|
+
bakedVersion = await bakeHelpersWith((args) => runTool(adbPath, args, 120000), udid, found);
|
|
719
|
+
}, log, `bake Appium's helpers into the clean snapshot of "${desc.name}"`);
|
|
720
|
+
},
|
|
721
|
+
save: async () => {
|
|
722
|
+
// Best-effort: an unconfirmed save leaves no snapshot, so the next boot
|
|
723
|
+
// is cold again and retakes it. Say so, or slow boots look unexplained —
|
|
724
|
+
// and write no metadata for a snapshot that wasn't taken.
|
|
725
|
+
const saved = await saveCleanSnapshotWith((args) => runTool(adbPath, args, 120000), udid);
|
|
726
|
+
if (!saved) {
|
|
727
|
+
log?.(`Couldn't save the clean snapshot of "${desc.name}"; its next boot will be cold.`);
|
|
728
|
+
}
|
|
729
|
+
else if (bakedVersion) {
|
|
730
|
+
// Without it the next boot sees no driver version and retakes the
|
|
731
|
+
// snapshot, so say why that happened.
|
|
732
|
+
await bestEffort(() => writeCleanSnapshotMeta(name, { driverVersion: bakedVersion }, { avdHome }), log, `record the clean snapshot's driver version for "${desc.name}"`);
|
|
733
|
+
}
|
|
734
|
+
},
|
|
735
|
+
});
|
|
736
|
+
if (result.outcome === "booted")
|
|
737
|
+
return { udid, process: result.child };
|
|
738
|
+
if (typeof result.outcome === "object") {
|
|
739
|
+
const why = result.diag.trim() ? ` — ${result.diag.trim()}` : "";
|
|
740
|
+
throw new Error(`Emulator "${desc.name}" exited (code ${result.outcome.exited}) before finishing boot` +
|
|
741
|
+
` (\`emulator ${result.bootArgs.join(" ")}\`)${why}`);
|
|
436
742
|
}
|
|
437
743
|
throw new Error(`Emulator "${desc.name}" did not finish booting within ${timeout}ms.`);
|
|
438
744
|
}
|
|
439
|
-
|
|
440
|
-
|
|
745
|
+
// Shut down an emulator Doc Detective booted and wait for it to exit, so the
|
|
746
|
+
// run never ends while it's still flushing its disk images (which hold the
|
|
747
|
+
// clean snapshot). A shutdown that stalls gets tree-killed.
|
|
748
|
+
async function shutdownEmulator(entry) {
|
|
749
|
+
const adbPath = adbPathForSdkRoot(entry.sdkRoot);
|
|
750
|
+
await shutdownEmulatorWith({
|
|
751
|
+
// ~0.2s; bounded so an unresponsive guest can't stall teardown.
|
|
752
|
+
flush: () => runTool(adbPath, ["-s", entry.udid, "shell", "sync"], 15000),
|
|
753
|
+
// The console answers "OK: killing emulator, bye bye".
|
|
754
|
+
consoleKill: async () => {
|
|
755
|
+
const { stdout } = await runTool(adbPath, ["-s", entry.udid, "emu", "kill"], 15000);
|
|
756
|
+
return /\bOK\b/.test(stdout);
|
|
757
|
+
},
|
|
758
|
+
// A clean exit takes 1-4s; past that, an accepted kill is the watchdog's.
|
|
759
|
+
waitExit: () => waitForProcessExit(entry.process, 8000),
|
|
760
|
+
forceKill: () => new Promise((resolve) => {
|
|
761
|
+
if (!entry.process?.pid)
|
|
762
|
+
return resolve();
|
|
763
|
+
treeKill(entry.process.pid, "SIGKILL", () => resolve());
|
|
764
|
+
}),
|
|
765
|
+
release: () => {
|
|
766
|
+
entry.process?.stdout?.destroy();
|
|
767
|
+
entry.process?.stderr?.destroy();
|
|
768
|
+
entry.process?.unref?.();
|
|
769
|
+
},
|
|
770
|
+
});
|
|
441
771
|
}
|
|
442
772
|
// Assemble the injected effect bundle for acquireDevice from a detected SDK.
|
|
443
773
|
// The runContext wiring calls this; unit tests pass their own bundle instead.
|
|
444
|
-
function buildAcquireDeviceDeps(sdk, abi, log) {
|
|
774
|
+
function buildAcquireDeviceDeps(sdk, abi, log, helpers) {
|
|
445
775
|
const adb = sdk.adb ?? "adb";
|
|
446
776
|
const emulator = sdk.emulator ?? "emulator";
|
|
447
777
|
const avdmanager = sdk.avdmanager ?? "avdmanager";
|
|
@@ -467,8 +797,7 @@ function buildAcquireDeviceDeps(sdk, abi, log) {
|
|
|
467
797
|
javaPresent,
|
|
468
798
|
abi,
|
|
469
799
|
createAvd: (a) => realCreateAvd(avdmanager, a, env),
|
|
470
|
-
boot: (desc, port) => realBootEmulator(emulator, adb, desc, port, env),
|
|
471
|
-
kill: (entry) => realKillEmulator(adb, entry.udid),
|
|
800
|
+
boot: (desc, port) => realBootEmulator(emulator, adb, desc, port, env, undefined, log, helpers),
|
|
472
801
|
log,
|
|
473
802
|
};
|
|
474
803
|
}
|
|
@@ -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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"}
|