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.
Files changed (234) hide show
  1. package/README.md +4 -4
  2. package/dist/agents/adapters/claude-code.d.ts.map +1 -1
  3. package/dist/agents/adapters/claude-code.js +1 -2
  4. package/dist/agents/adapters/claude-code.js.map +1 -1
  5. package/dist/agents/adapters/codex.d.ts.map +1 -1
  6. package/dist/agents/adapters/codex.js +3 -4
  7. package/dist/agents/adapters/codex.js.map +1 -1
  8. package/dist/agents/adapters/copilot-cli.d.ts.map +1 -1
  9. package/dist/agents/adapters/copilot-cli.js +1 -2
  10. package/dist/agents/adapters/copilot-cli.js.map +1 -1
  11. package/dist/agents/adapters/gemini-cli.d.ts.map +1 -1
  12. package/dist/agents/adapters/gemini-cli.js +1 -2
  13. package/dist/agents/adapters/gemini-cli.js.map +1 -1
  14. package/dist/agents/adapters/opencode.d.ts.map +1 -1
  15. package/dist/agents/adapters/opencode.js +1 -2
  16. package/dist/agents/adapters/opencode.js.map +1 -1
  17. package/dist/agents/adapters/qwen-code.d.ts.map +1 -1
  18. package/dist/agents/adapters/qwen-code.js +1 -2
  19. package/dist/agents/adapters/qwen-code.js.map +1 -1
  20. package/dist/agents/fetcher.d.ts.map +1 -1
  21. package/dist/agents/fetcher.js +1 -2
  22. package/dist/agents/fetcher.js.map +1 -1
  23. package/dist/common/src/ajv.d.ts +30 -0
  24. package/dist/common/src/ajv.d.ts.map +1 -0
  25. package/dist/common/src/ajv.js +131 -0
  26. package/dist/common/src/ajv.js.map +1 -0
  27. package/dist/common/src/detectTests.d.ts +2 -18
  28. package/dist/common/src/detectTests.d.ts.map +1 -1
  29. package/dist/common/src/detectTests.js +8 -77
  30. package/dist/common/src/detectTests.js.map +1 -1
  31. package/dist/common/src/schemas/referenced.d.ts +12 -0
  32. package/dist/common/src/schemas/referenced.d.ts.map +1 -0
  33. package/dist/common/src/schemas/referenced.js +10 -0
  34. package/dist/common/src/schemas/referenced.js.map +1 -0
  35. package/dist/common/src/schemas/schemas.json +2 -2
  36. package/dist/common/src/schemas/schemasReferenced.json +14871 -0
  37. package/dist/common/src/schemas/validators.cjs +509 -0
  38. package/dist/common/src/schemas/validatorsCheck.cjs +2 -0
  39. package/dist/common/src/textUtils.d.ts +25 -0
  40. package/dist/common/src/textUtils.d.ts.map +1 -0
  41. package/dist/common/src/textUtils.js +84 -0
  42. package/dist/common/src/textUtils.js.map +1 -0
  43. package/dist/common/src/types/generated/annotate_v3.d.ts.map +1 -1
  44. package/dist/common/src/types/generated/annotation_v3.d.ts.map +1 -1
  45. package/dist/common/src/types/generated/click_v3.d.ts +153 -0
  46. package/dist/common/src/types/generated/click_v3.d.ts.map +1 -1
  47. package/dist/common/src/types/generated/config_v3.d.ts +13753 -207
  48. package/dist/common/src/types/generated/config_v3.d.ts.map +1 -1
  49. package/dist/common/src/types/generated/dragAndDrop_v3.d.ts +72 -0
  50. package/dist/common/src/types/generated/dragAndDrop_v3.d.ts.map +1 -1
  51. package/dist/common/src/types/generated/find_v3.d.ts +632 -0
  52. package/dist/common/src/types/generated/find_v3.d.ts.map +1 -1
  53. package/dist/common/src/types/generated/goTo_v3.d.ts +31 -0
  54. package/dist/common/src/types/generated/goTo_v3.d.ts.map +1 -1
  55. package/dist/common/src/types/generated/httpRequest_v3.d.ts +181 -0
  56. package/dist/common/src/types/generated/httpRequest_v3.d.ts.map +1 -1
  57. package/dist/common/src/types/generated/loadCookie_v3.d.ts +30 -0
  58. package/dist/common/src/types/generated/loadCookie_v3.d.ts.map +1 -1
  59. package/dist/common/src/types/generated/report_v3.d.ts +28234 -321
  60. package/dist/common/src/types/generated/report_v3.d.ts.map +1 -1
  61. package/dist/common/src/types/generated/resolvedTests_v3.d.ts +42281 -822
  62. package/dist/common/src/types/generated/resolvedTests_v3.d.ts.map +1 -1
  63. package/dist/common/src/types/generated/saveCookie_v3.d.ts +35 -0
  64. package/dist/common/src/types/generated/saveCookie_v3.d.ts.map +1 -1
  65. package/dist/common/src/types/generated/screenshot_v3.d.ts +45 -0
  66. package/dist/common/src/types/generated/screenshot_v3.d.ts.map +1 -1
  67. package/dist/common/src/types/generated/spec_v3.d.ts +28188 -275
  68. package/dist/common/src/types/generated/spec_v3.d.ts.map +1 -1
  69. package/dist/common/src/types/generated/startSurface_v3.d.ts +63 -1
  70. package/dist/common/src/types/generated/startSurface_v3.d.ts.map +1 -1
  71. package/dist/common/src/types/generated/step_v3.d.ts +5186 -523
  72. package/dist/common/src/types/generated/step_v3.d.ts.map +1 -1
  73. package/dist/common/src/types/generated/test_v3.d.ts +13268 -3582
  74. package/dist/common/src/types/generated/test_v3.d.ts.map +1 -1
  75. package/dist/common/src/types/generated/type_v3.d.ts +62 -0
  76. package/dist/common/src/types/generated/type_v3.d.ts.map +1 -1
  77. package/dist/common/src/types/generated/waitUntil_v3.d.ts +62 -0
  78. package/dist/common/src/types/generated/waitUntil_v3.d.ts.map +1 -1
  79. package/dist/common/src/validate.d.ts +1 -1
  80. package/dist/common/src/validate.d.ts.map +1 -1
  81. package/dist/common/src/validate.js +29 -75
  82. package/dist/common/src/validate.js.map +1 -1
  83. package/dist/core/appium.d.ts +3 -2
  84. package/dist/core/appium.d.ts.map +1 -1
  85. package/dist/core/appium.js +63 -89
  86. package/dist/core/appium.js.map +1 -1
  87. package/dist/core/appiumReuse.d.ts +43 -0
  88. package/dist/core/appiumReuse.d.ts.map +1 -0
  89. package/dist/core/appiumReuse.js +226 -0
  90. package/dist/core/appiumReuse.js.map +1 -0
  91. package/dist/core/config.d.ts +10 -2
  92. package/dist/core/config.d.ts.map +1 -1
  93. package/dist/core/config.js +37 -7
  94. package/dist/core/config.js.map +1 -1
  95. package/dist/core/detectTests.d.ts.map +1 -1
  96. package/dist/core/detectTests.js +51 -17
  97. package/dist/core/detectTests.js.map +1 -1
  98. package/dist/core/files.d.ts.map +1 -1
  99. package/dist/core/files.js +3 -4
  100. package/dist/core/files.js.map +1 -1
  101. package/dist/core/index.d.ts +2 -2
  102. package/dist/core/index.d.ts.map +1 -1
  103. package/dist/core/index.js +132 -21
  104. package/dist/core/index.js.map +1 -1
  105. package/dist/core/integrations/heretto.d.ts +1 -1
  106. package/dist/core/integrations/heretto.d.ts.map +1 -1
  107. package/dist/core/integrations/heretto.js +7 -6
  108. package/dist/core/integrations/heretto.js.map +1 -1
  109. package/dist/core/lazyYaml.d.ts +2 -0
  110. package/dist/core/lazyYaml.d.ts.map +1 -0
  111. package/dist/core/lazyYaml.js +13 -0
  112. package/dist/core/lazyYaml.js.map +1 -0
  113. package/dist/core/resolveTests.js +1 -1
  114. package/dist/core/resolveTests.js.map +1 -1
  115. package/dist/core/telem.d.ts +1 -1
  116. package/dist/core/telem.d.ts.map +1 -1
  117. package/dist/core/telem.js +2 -11
  118. package/dist/core/telem.js.map +1 -1
  119. package/dist/core/telemLite.d.ts +10 -0
  120. package/dist/core/telemLite.d.ts.map +1 -0
  121. package/dist/core/telemLite.js +101 -0
  122. package/dist/core/telemLite.js.map +1 -0
  123. package/dist/core/tests/androidEmulator.d.ts +67 -4
  124. package/dist/core/tests/androidEmulator.d.ts.map +1 -1
  125. package/dist/core/tests/androidEmulator.js +366 -37
  126. package/dist/core/tests/androidEmulator.js.map +1 -1
  127. package/dist/core/tests/appSurface.d.ts +25 -6
  128. package/dist/core/tests/appSurface.d.ts.map +1 -1
  129. package/dist/core/tests/appSurface.js +88 -52
  130. package/dist/core/tests/appSurface.js.map +1 -1
  131. package/dist/core/tests/browserSessions.d.ts +2 -1
  132. package/dist/core/tests/browserSessions.d.ts.map +1 -1
  133. package/dist/core/tests/browserSessions.js +7 -1
  134. package/dist/core/tests/browserSessions.js.map +1 -1
  135. package/dist/core/tests/checkLink.d.ts +1 -0
  136. package/dist/core/tests/checkLink.d.ts.map +1 -1
  137. package/dist/core/tests/checkLink.js +14 -5
  138. package/dist/core/tests/checkLink.js.map +1 -1
  139. package/dist/core/tests/closeSurface.d.ts.map +1 -1
  140. package/dist/core/tests/closeSurface.js +4 -3
  141. package/dist/core/tests/closeSurface.js.map +1 -1
  142. package/dist/core/tests/findStrategies.d.ts.map +1 -1
  143. package/dist/core/tests/findStrategies.js +153 -116
  144. package/dist/core/tests/findStrategies.js.map +1 -1
  145. package/dist/core/tests/geckoDriver.d.ts +16 -0
  146. package/dist/core/tests/geckoDriver.d.ts.map +1 -0
  147. package/dist/core/tests/geckoDriver.js +127 -0
  148. package/dist/core/tests/geckoDriver.js.map +1 -0
  149. package/dist/core/tests/goTo.d.ts.map +1 -1
  150. package/dist/core/tests/goTo.js +12 -33
  151. package/dist/core/tests/goTo.js.map +1 -1
  152. package/dist/core/tests/httpRequest.d.ts.map +1 -1
  153. package/dist/core/tests/httpRequest.js +4 -3
  154. package/dist/core/tests/httpRequest.js.map +1 -1
  155. package/dist/core/tests/iosSimulator.d.ts +4 -1
  156. package/dist/core/tests/iosSimulator.d.ts.map +1 -1
  157. package/dist/core/tests/iosSimulator.js +49 -1
  158. package/dist/core/tests/iosSimulator.js.map +1 -1
  159. package/dist/core/tests/mobileBrowser.d.ts +2 -1
  160. package/dist/core/tests/mobileBrowser.d.ts.map +1 -1
  161. package/dist/core/tests/mobileBrowser.js +5 -2
  162. package/dist/core/tests/mobileBrowser.js.map +1 -1
  163. package/dist/core/tests/runCode.d.ts +9 -1
  164. package/dist/core/tests/runCode.d.ts.map +1 -1
  165. package/dist/core/tests/runCode.js +58 -2
  166. package/dist/core/tests/runCode.js.map +1 -1
  167. package/dist/core/tests/saveScreenshot.d.ts +18 -2
  168. package/dist/core/tests/saveScreenshot.d.ts.map +1 -1
  169. package/dist/core/tests/saveScreenshot.js +159 -4
  170. package/dist/core/tests/saveScreenshot.js.map +1 -1
  171. package/dist/core/tests/startRecording.d.ts.map +1 -1
  172. package/dist/core/tests/startRecording.js +6 -4
  173. package/dist/core/tests/startRecording.js.map +1 -1
  174. package/dist/core/tests/startSurface.d.ts.map +1 -1
  175. package/dist/core/tests/startSurface.js +8 -2
  176. package/dist/core/tests/startSurface.js.map +1 -1
  177. package/dist/core/tests.d.ts +21 -7
  178. package/dist/core/tests.d.ts.map +1 -1
  179. package/dist/core/tests.js +372 -121
  180. package/dist/core/tests.js.map +1 -1
  181. package/dist/core/utils.d.ts +68 -3
  182. package/dist/core/utils.d.ts.map +1 -1
  183. package/dist/core/utils.js +551 -18
  184. package/dist/core/utils.js.map +1 -1
  185. package/dist/core/verification.d.ts +17 -0
  186. package/dist/core/verification.d.ts.map +1 -0
  187. package/dist/core/verification.js +850 -0
  188. package/dist/core/verification.js.map +1 -0
  189. package/dist/debug/appium.js +2 -2
  190. package/dist/debug/appium.js.map +1 -1
  191. package/dist/debug/findings.js +2 -2
  192. package/dist/debug/findings.js.map +1 -1
  193. package/dist/debug/tools.d.ts +8 -0
  194. package/dist/debug/tools.d.ts.map +1 -1
  195. package/dist/debug/tools.js +60 -22
  196. package/dist/debug/tools.js.map +1 -1
  197. package/dist/hints/context.d.ts.map +1 -1
  198. package/dist/hints/context.js +2 -2
  199. package/dist/hints/context.js.map +1 -1
  200. package/dist/index.cjs +25777 -4
  201. package/dist/reporters/htmlReporter.js +1 -1
  202. package/dist/runtime/androidInstaller.d.ts +45 -0
  203. package/dist/runtime/androidInstaller.d.ts.map +1 -1
  204. package/dist/runtime/androidInstaller.js +88 -5
  205. package/dist/runtime/androidInstaller.js.map +1 -1
  206. package/dist/runtime/browsers.d.ts +87 -7
  207. package/dist/runtime/browsers.d.ts.map +1 -1
  208. package/dist/runtime/browsers.js +308 -41
  209. package/dist/runtime/browsers.js.map +1 -1
  210. package/dist/runtime/cacheDir.d.ts +1 -1
  211. package/dist/runtime/cacheDir.d.ts.map +1 -1
  212. package/dist/runtime/cacheDir.js +5 -2
  213. package/dist/runtime/cacheDir.js.map +1 -1
  214. package/dist/runtime/heavyDeps.d.ts.map +1 -1
  215. package/dist/runtime/heavyDeps.js.map +1 -1
  216. package/dist/runtime/installCommand.d.ts.map +1 -1
  217. package/dist/runtime/installCommand.js +23 -0
  218. package/dist/runtime/installCommand.js.map +1 -1
  219. package/dist/runtime/loader.d.ts +13 -0
  220. package/dist/runtime/loader.d.ts.map +1 -1
  221. package/dist/runtime/loader.js +50 -0
  222. package/dist/runtime/loader.js.map +1 -1
  223. package/dist/runtime/wdaProducts.d.ts +12 -1
  224. package/dist/runtime/wdaProducts.d.ts.map +1 -1
  225. package/dist/runtime/wdaProducts.js +27 -2
  226. package/dist/runtime/wdaProducts.js.map +1 -1
  227. package/dist/runtime/windowsBash.d.ts +6 -1
  228. package/dist/runtime/windowsBash.d.ts.map +1 -1
  229. package/dist/runtime/windowsBash.js +45 -4
  230. package/dist/runtime/windowsBash.js.map +1 -1
  231. package/dist/utils.d.ts.map +1 -1
  232. package/dist/utils.js +19 -5
  233. package/dist/utils.js.map +1 -1
  234. 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 { pickSystemImage, DEVICE_TYPE_PROFILES, DEFAULT_AVD_NAME, listInstalledSystemImages, winShellCommand, androidAvdHome, } from "../../runtime/androidInstaller.js";
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. `-no-snapshot-save`/`-no-boot-anim` keep CI runs
74
- // fast and deterministic; headless adds `-no-window -no-audio`.
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
- // Cold boot (no snapshot load/save) for a deterministic, clean start.
82
- args.push("-no-snapshot", "-no-boot-anim");
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. Effects injected.
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
- for (const entry of registry.values()) {
291
- if (!entry.bootedByUs)
292
- continue;
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
- continue;
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
- // Boot an emulator and poll sys.boot_completed until ready or timeout.
392
- async function realBootEmulator(emulatorPath, adbPath, desc, port, env, timeout = 180000) {
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 deadline = Date.now() + timeout;
419
- // Give adb a moment, then poll the boot flag.
420
- while (Date.now() < deadline) {
421
- await new Promise((r) => setTimeout(r, 3000));
422
- if (exited !== null) {
423
- const why = diag.trim() ? ` — ${diag.trim()}` : "";
424
- throw new Error(`Emulator "${desc.name}" exited (code ${exited}) before finishing boot` +
425
- ` (\`emulator ${bootArgs.join(" ")}\`)${why}`);
426
- }
427
- const { stdout } = await runTool(adbPath, ["-s", udid, "shell", "getprop", "sys.boot_completed"], 8000);
428
- if (stdout.trim() === "1")
429
- return { udid, process: child };
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
- try {
432
- child.kill();
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
- catch {
435
- /* ignore */
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
- async function realKillEmulator(adbPath, udid) {
440
- await runTool(adbPath, ["-s", udid, "emu", "kill"], 15000);
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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"}