swipium 1.4.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (541) hide show
  1. package/CHANGELOG.md +313 -0
  2. package/README.md +175 -219
  3. package/THREAT_MODEL.md +223 -47
  4. package/dist/appMap/automationLink.js +39 -26
  5. package/dist/appMap/automationLink.js.map +1 -1
  6. package/dist/appMap/build.js +68 -20
  7. package/dist/appMap/build.js.map +1 -1
  8. package/dist/appMap/codeIndex.js +31 -5
  9. package/dist/appMap/codeIndex.js.map +1 -1
  10. package/dist/appMap/featureIndex.js +23 -5
  11. package/dist/appMap/featureIndex.js.map +1 -1
  12. package/dist/appMap/featureModel.js +44 -8
  13. package/dist/appMap/featureModel.js.map +1 -1
  14. package/dist/appMap/firstRunApply.js +24 -6
  15. package/dist/appMap/firstRunApply.js.map +1 -1
  16. package/dist/appMap/fsWalk.js +19 -2
  17. package/dist/appMap/fsWalk.js.map +1 -1
  18. package/dist/appMap/issues.js +10 -30
  19. package/dist/appMap/issues.js.map +1 -1
  20. package/dist/appMap/migrations.js +6 -6
  21. package/dist/appMap/migrations.js.map +1 -1
  22. package/dist/appMap/prelaunch.js +2 -2
  23. package/dist/appMap/prelaunch.js.map +1 -1
  24. package/dist/appMap/projectRegistry.js +83 -11
  25. package/dist/appMap/projectRegistry.js.map +1 -1
  26. package/dist/appMap/provenance.js +2 -2
  27. package/dist/appMap/provenance.js.map +1 -1
  28. package/dist/appMap/query.js +21 -5
  29. package/dist/appMap/query.js.map +1 -1
  30. package/dist/appMap/runtimeMerge.js +12 -5
  31. package/dist/appMap/runtimeMerge.js.map +1 -1
  32. package/dist/appMap/schema.js +1 -1
  33. package/dist/appMap/schema.js.map +1 -1
  34. package/dist/appMap/screenMatch.js +6 -2
  35. package/dist/appMap/screenMatch.js.map +1 -1
  36. package/dist/appMap/staticScan.js +151 -39
  37. package/dist/appMap/staticScan.js.map +1 -1
  38. package/dist/appMap/store.js +58 -85
  39. package/dist/appMap/store.js.map +1 -1
  40. package/dist/appMap/tsAstScan.js +34 -12
  41. package/dist/appMap/tsAstScan.js.map +1 -1
  42. package/dist/artifacts/bundletool.js +49 -12
  43. package/dist/artifacts/bundletool.js.map +1 -1
  44. package/dist/artifacts/resolve.js +41 -14
  45. package/dist/artifacts/resolve.js.map +1 -1
  46. package/dist/automation/capabilities.js +112 -30
  47. package/dist/automation/capabilities.js.map +1 -1
  48. package/dist/automation/gestures.js +6 -2
  49. package/dist/automation/gestures.js.map +1 -1
  50. package/dist/automation/plan.js +71 -23
  51. package/dist/automation/plan.js.map +1 -1
  52. package/dist/automation/report.js +15 -5
  53. package/dist/automation/report.js.map +1 -1
  54. package/dist/automation/selectors.js +22 -28
  55. package/dist/automation/selectors.js.map +1 -1
  56. package/dist/automation/types.js +1 -1
  57. package/dist/automation/types.js.map +1 -1
  58. package/dist/automation/waits.js +14 -8
  59. package/dist/automation/waits.js.map +1 -1
  60. package/dist/automation/webview.js +9 -3
  61. package/dist/automation/webview.js.map +1 -1
  62. package/dist/automationGen/appiumModel.js +16 -8
  63. package/dist/automationGen/appiumModel.js.map +1 -1
  64. package/dist/automationGen/ciEmitter.js +6 -6
  65. package/dist/automationGen/ciEmitter.js.map +1 -1
  66. package/dist/automationGen/identifiers.js +224 -0
  67. package/dist/automationGen/identifiers.js.map +1 -0
  68. package/dist/automationGen/jsEmitter.js +288 -121
  69. package/dist/automationGen/jsEmitter.js.map +1 -1
  70. package/dist/automationGen/packagePatch.js +2 -2
  71. package/dist/automationGen/packagePatch.js.map +1 -1
  72. package/dist/automationGen/platformResolve.js +36 -0
  73. package/dist/automationGen/platformResolve.js.map +1 -0
  74. package/dist/automationGen/projectProfile.js +76 -27
  75. package/dist/automationGen/projectProfile.js.map +1 -1
  76. package/dist/automationGen/pythonEmitter.js +278 -107
  77. package/dist/automationGen/pythonEmitter.js.map +1 -1
  78. package/dist/automationGen/readmeEmitter.js +7 -6
  79. package/dist/automationGen/readmeEmitter.js.map +1 -1
  80. package/dist/automationGen/run.js +388 -0
  81. package/dist/automationGen/run.js.map +1 -0
  82. package/dist/automationGen/suitePlan.js +17 -10
  83. package/dist/automationGen/suitePlan.js.map +1 -1
  84. package/dist/automationGen/validation.js +52 -12
  85. package/dist/automationGen/validation.js.map +1 -1
  86. package/dist/build/parseBuildLog.js +235 -31
  87. package/dist/build/parseBuildLog.js.map +1 -1
  88. package/dist/build/plan.js +39 -18
  89. package/dist/build/plan.js.map +1 -1
  90. package/dist/ci/preflight.js +13 -4
  91. package/dist/ci/preflight.js.map +1 -1
  92. package/dist/cli/gc.js +74 -0
  93. package/dist/cli/gc.js.map +1 -0
  94. package/dist/cli/init.js +217 -26
  95. package/dist/cli/init.js.map +1 -1
  96. package/dist/cli/main.js +50 -0
  97. package/dist/cli/main.js.map +1 -0
  98. package/dist/cli/report.js +218 -0
  99. package/dist/cli/report.js.map +1 -0
  100. package/dist/cli/scan.js +36 -15
  101. package/dist/cli/scan.js.map +1 -1
  102. package/dist/cli/suite.js +7 -7
  103. package/dist/cli/suite.js.map +1 -1
  104. package/dist/cli/verify.js +7 -7
  105. package/dist/cli/verify.js.map +1 -1
  106. package/dist/consent/consent.js +162 -5
  107. package/dist/consent/consent.js.map +1 -1
  108. package/dist/context/detect.js +55 -18
  109. package/dist/context/detect.js.map +1 -1
  110. package/dist/context/findApps.js +22 -8
  111. package/dist/context/findApps.js.map +1 -1
  112. package/dist/context/projectRoot.js +174 -19
  113. package/dist/context/projectRoot.js.map +1 -1
  114. package/dist/context/scan.js +1 -1
  115. package/dist/context/scan.js.map +1 -1
  116. package/dist/core/capabilityGroups.js +90 -0
  117. package/dist/core/capabilityGroups.js.map +1 -0
  118. package/dist/core/target.js +10 -8
  119. package/dist/core/target.js.map +1 -1
  120. package/dist/core/targetPlan.js +160 -39
  121. package/dist/core/targetPlan.js.map +1 -1
  122. package/dist/drivers/DirectDriver.js +317 -43
  123. package/dist/drivers/DirectDriver.js.map +1 -1
  124. package/dist/drivers/SimctlDriver.js +124 -8
  125. package/dist/drivers/SimctlDriver.js.map +1 -1
  126. package/dist/drivers/WdaDriver.js +365 -55
  127. package/dist/drivers/WdaDriver.js.map +1 -1
  128. package/dist/explore/candidates.js +7 -3
  129. package/dist/explore/candidates.js.map +1 -1
  130. package/dist/explore/graph.js +15 -6
  131. package/dist/explore/graph.js.map +1 -1
  132. package/dist/explore/memory.js +4 -1
  133. package/dist/explore/memory.js.map +1 -1
  134. package/dist/explore/planner.js +54 -9
  135. package/dist/explore/planner.js.map +1 -1
  136. package/dist/explore/policy.js +11 -6
  137. package/dist/explore/policy.js.map +1 -1
  138. package/dist/explore/runner.js +363 -190
  139. package/dist/explore/runner.js.map +1 -1
  140. package/dist/explore/signatures.js +4 -2
  141. package/dist/explore/signatures.js.map +1 -1
  142. package/dist/explore/suite.js +3 -1
  143. package/dist/explore/suite.js.map +1 -1
  144. package/dist/featureTesting/executionBootstrap.js +137 -29
  145. package/dist/featureTesting/executionBootstrap.js.map +1 -1
  146. package/dist/featureTesting/featureMap.js +6 -3
  147. package/dist/featureTesting/featureMap.js.map +1 -1
  148. package/dist/featureTesting/featureScope.js +101 -20
  149. package/dist/featureTesting/featureScope.js.map +1 -1
  150. package/dist/featureTesting/mapFeatureScope.js +44 -15
  151. package/dist/featureTesting/mapFeatureScope.js.map +1 -1
  152. package/dist/featureTesting/objectiveModel.js +15 -11
  153. package/dist/featureTesting/objectiveModel.js.map +1 -1
  154. package/dist/featureTesting/resultMerge.js +16 -8
  155. package/dist/featureTesting/resultMerge.js.map +1 -1
  156. package/dist/featureTesting/sources.js +8 -5
  157. package/dist/featureTesting/sources.js.map +1 -1
  158. package/dist/featureTesting/suiteBridge.js +8 -2
  159. package/dist/featureTesting/suiteBridge.js.map +1 -1
  160. package/dist/featureTesting/synonyms.js +32 -4
  161. package/dist/featureTesting/synonyms.js.map +1 -1
  162. package/dist/featureTesting/testCaseFactory.js +27 -15
  163. package/dist/featureTesting/testCaseFactory.js.map +1 -1
  164. package/dist/featureTesting/testPlan.js +34 -12
  165. package/dist/featureTesting/testPlan.js.map +1 -1
  166. package/dist/firstRun/authStateMachine.js +1 -1
  167. package/dist/firstRun/authStateMachine.js.map +1 -1
  168. package/dist/firstRun/classifyScreen.js +9 -6
  169. package/dist/firstRun/classifyScreen.js.map +1 -1
  170. package/dist/firstRun/firstRunPlanner.js +16 -13
  171. package/dist/firstRun/firstRunPlanner.js.map +1 -1
  172. package/dist/firstRun/firstRunRunner.js +92 -31
  173. package/dist/firstRun/firstRunRunner.js.map +1 -1
  174. package/dist/firstRun/generatedDataPolicy.js +25 -15
  175. package/dist/firstRun/generatedDataPolicy.js.map +1 -1
  176. package/dist/firstRun/inputPlanner.js +45 -11
  177. package/dist/firstRun/inputPlanner.js.map +1 -1
  178. package/dist/firstRun/onboardingStateMachine.js +1 -1
  179. package/dist/firstRun/onboardingStateMachine.js.map +1 -1
  180. package/dist/firstRun/paywallPolicy.js +3 -3
  181. package/dist/firstRun/paywallPolicy.js.map +1 -1
  182. package/dist/firstRun/types.js +1 -1
  183. package/dist/firstRun/types.js.map +1 -1
  184. package/dist/fixtures/catalog.js +72 -9
  185. package/dist/fixtures/catalog.js.map +1 -1
  186. package/dist/fixtures/load.js +50 -0
  187. package/dist/fixtures/load.js.map +1 -0
  188. package/dist/flows/discover.js +2 -2
  189. package/dist/flows/discover.js.map +1 -1
  190. package/dist/flows/generate.js +68 -17
  191. package/dist/flows/generate.js.map +1 -1
  192. package/dist/flows/lint.js +88 -14
  193. package/dist/flows/lint.js.map +1 -1
  194. package/dist/flows/pack.js +21 -5
  195. package/dist/flows/pack.js.map +1 -1
  196. package/dist/flows/paths.js +57 -0
  197. package/dist/flows/paths.js.map +1 -0
  198. package/dist/flows/repair.js +176 -37
  199. package/dist/flows/repair.js.map +1 -1
  200. package/dist/flows/run.js +308 -99
  201. package/dist/flows/run.js.map +1 -1
  202. package/dist/flows/schema.js +107 -25
  203. package/dist/flows/schema.js.map +1 -1
  204. package/dist/flows/seedExec.js +8 -4
  205. package/dist/flows/seedExec.js.map +1 -1
  206. package/dist/flows/templates.js +5 -5
  207. package/dist/index.js +50 -8
  208. package/dist/index.js.map +1 -1
  209. package/dist/ios/signing.js +32 -3
  210. package/dist/ios/signing.js.map +1 -1
  211. package/dist/issues/classify.js +28 -20
  212. package/dist/issues/classify.js.map +1 -1
  213. package/dist/issues/fingerprint.js +35 -9
  214. package/dist/issues/fingerprint.js.map +1 -1
  215. package/dist/issues/index.js +93 -46
  216. package/dist/issues/index.js.map +1 -1
  217. package/dist/issues/metrics.js +6 -5
  218. package/dist/issues/metrics.js.map +1 -1
  219. package/dist/issues/recurrence.js +35 -8
  220. package/dist/issues/recurrence.js.map +1 -1
  221. package/dist/issues/report.js +12 -8
  222. package/dist/issues/report.js.map +1 -1
  223. package/dist/issues/reportBridge.js +40 -9
  224. package/dist/issues/reportBridge.js.map +1 -1
  225. package/dist/issues/schema.js +2 -2
  226. package/dist/issues/schema.js.map +1 -1
  227. package/dist/issues/sourceRevision.js +2 -2
  228. package/dist/issues/sourceRevision.js.map +1 -1
  229. package/dist/issues/store.js +110 -32
  230. package/dist/issues/store.js.map +1 -1
  231. package/dist/lib/abortScope.js +48 -0
  232. package/dist/lib/abortScope.js.map +1 -0
  233. package/dist/lib/android.js +84 -8
  234. package/dist/lib/android.js.map +1 -1
  235. package/dist/lib/coordSpace.js +1 -1
  236. package/dist/lib/coordSpace.js.map +1 -1
  237. package/dist/lib/device.js +53 -12
  238. package/dist/lib/device.js.map +1 -1
  239. package/dist/lib/gestures.js +141 -0
  240. package/dist/lib/gestures.js.map +1 -0
  241. package/dist/lib/gitignore.js +4 -3
  242. package/dist/lib/gitignore.js.map +1 -1
  243. package/dist/lib/image.js +12 -3
  244. package/dist/lib/image.js.map +1 -1
  245. package/dist/lib/lockfile.js +399 -0
  246. package/dist/lib/lockfile.js.map +1 -0
  247. package/dist/lib/needsInput.js +9 -6
  248. package/dist/lib/needsInput.js.map +1 -1
  249. package/dist/lib/png.js +4 -3
  250. package/dist/lib/png.js.map +1 -1
  251. package/dist/lib/redact.js +170 -9
  252. package/dist/lib/redact.js.map +1 -1
  253. package/dist/lib/result.js +94 -10
  254. package/dist/lib/result.js.map +1 -1
  255. package/dist/lib/schemaHash.js +7 -5
  256. package/dist/lib/schemaHash.js.map +1 -1
  257. package/dist/lib/sensitive.js +6 -3
  258. package/dist/lib/sensitive.js.map +1 -1
  259. package/dist/lib/simctl.js +3 -3
  260. package/dist/lib/simctl.js.map +1 -1
  261. package/dist/lib/spawn.js +78 -17
  262. package/dist/lib/spawn.js.map +1 -1
  263. package/dist/lib/toolAnnotations.js +114 -0
  264. package/dist/lib/toolAnnotations.js.map +1 -0
  265. package/dist/lib/wda.js +321 -25
  266. package/dist/lib/wda.js.map +1 -1
  267. package/dist/lib/wdaConfig.js +12 -5
  268. package/dist/lib/wdaConfig.js.map +1 -1
  269. package/dist/lib/wdaTune.js +52 -23
  270. package/dist/lib/wdaTune.js.map +1 -1
  271. package/dist/mobileAudit/checks.js +150 -28
  272. package/dist/mobileAudit/checks.js.map +1 -1
  273. package/dist/mobileAudit/evidence.js +4 -4
  274. package/dist/mobileAudit/evidence.js.map +1 -1
  275. package/dist/mobileAudit/profiles.js +121 -20
  276. package/dist/mobileAudit/profiles.js.map +1 -1
  277. package/dist/mobileAudit/results.js +9 -4
  278. package/dist/mobileAudit/results.js.map +1 -1
  279. package/dist/mobileAudit/runner.js +214 -35
  280. package/dist/mobileAudit/runner.js.map +1 -1
  281. package/dist/oracle/auth.js +1 -1
  282. package/dist/oracle/auth.js.map +1 -1
  283. package/dist/oracle/failures.js +1085 -145
  284. package/dist/oracle/failures.js.map +1 -1
  285. package/dist/oracle/health.js +148 -26
  286. package/dist/oracle/health.js.map +1 -1
  287. package/dist/oracle/locator.js +148 -19
  288. package/dist/oracle/locator.js.map +1 -1
  289. package/dist/oracle/record.js +3 -3
  290. package/dist/oracle/record.js.map +1 -1
  291. package/dist/orchestration/envelope.js +2 -2
  292. package/dist/orchestration/envelope.js.map +1 -1
  293. package/dist/orchestration/goal.js +7 -13
  294. package/dist/orchestration/goal.js.map +1 -1
  295. package/dist/orchestration/testThis/execute.js +167 -0
  296. package/dist/orchestration/testThis/execute.js.map +1 -0
  297. package/dist/orchestration/testThis/pipeline.js +413 -0
  298. package/dist/orchestration/testThis/pipeline.js.map +1 -0
  299. package/dist/orchestration/testThis/plan.js +519 -0
  300. package/dist/orchestration/testThis/plan.js.map +1 -0
  301. package/dist/orchestration/testThis/sessionIntent.js +72 -0
  302. package/dist/orchestration/testThis/sessionIntent.js.map +1 -0
  303. package/dist/orchestration/testThis/terminal.js +136 -0
  304. package/dist/orchestration/testThis/terminal.js.map +1 -0
  305. package/dist/orchestration/testThis/types.js +12 -0
  306. package/dist/orchestration/testThis/types.js.map +1 -0
  307. package/dist/plan/plan.js +9 -9
  308. package/dist/plan/plan.js.map +1 -1
  309. package/dist/prompts/index.js +24 -24
  310. package/dist/prompts/index.js.map +1 -1
  311. package/dist/report/coverage.js +0 -1
  312. package/dist/report/coverage.js.map +1 -1
  313. package/dist/report/evidence.js.map +1 -1
  314. package/dist/report/export.js +449 -72
  315. package/dist/report/export.js.map +1 -1
  316. package/dist/report/findingsDedupe.js +41 -0
  317. package/dist/report/findingsDedupe.js.map +1 -0
  318. package/dist/report/flake.js +13 -14
  319. package/dist/report/flake.js.map +1 -1
  320. package/dist/report/history.js +72 -38
  321. package/dist/report/history.js.map +1 -1
  322. package/dist/report/policy.js +18 -7
  323. package/dist/report/policy.js.map +1 -1
  324. package/dist/report/qaLevel.js +10 -16
  325. package/dist/report/qaLevel.js.map +1 -1
  326. package/dist/report/readiness.js +42 -12
  327. package/dist/report/readiness.js.map +1 -1
  328. package/dist/report/sarifSources.js +160 -0
  329. package/dist/report/sarifSources.js.map +1 -0
  330. package/dist/report/summary.js +2 -2
  331. package/dist/report/summary.js.map +1 -1
  332. package/dist/report/testCatalog.js +4 -4
  333. package/dist/report/testCatalog.js.map +1 -1
  334. package/dist/report/timing.js +23 -23
  335. package/dist/report/timing.js.map +1 -1
  336. package/dist/report/toolHealth.js +124 -0
  337. package/dist/report/toolHealth.js.map +1 -0
  338. package/dist/server.js +501 -69
  339. package/dist/server.js.map +1 -1
  340. package/dist/services/automationGenerate.js +8 -2
  341. package/dist/services/automationGenerate.js.map +1 -1
  342. package/dist/services/build.js +10 -4
  343. package/dist/services/build.js.map +1 -1
  344. package/dist/services/flowGenerate.js +75 -0
  345. package/dist/services/flowGenerate.js.map +1 -0
  346. package/dist/services/preflight.js +40 -8
  347. package/dist/services/preflight.js.map +1 -1
  348. package/dist/services/prepareAndroid.js +92 -18
  349. package/dist/services/prepareAndroid.js.map +1 -1
  350. package/dist/services/prepareIos.js +94 -17
  351. package/dist/services/prepareIos.js.map +1 -1
  352. package/dist/services/report.js +271 -80
  353. package/dist/services/report.js.map +1 -1
  354. package/dist/services/smoke.js +68 -22
  355. package/dist/services/smoke.js.map +1 -1
  356. package/dist/services/suiteGenerate.js +43 -6
  357. package/dist/services/suiteGenerate.js.map +1 -1
  358. package/dist/services/testSuiteKnowledge.js +78 -33
  359. package/dist/services/testSuiteKnowledge.js.map +1 -1
  360. package/dist/session/attach.js +284 -4
  361. package/dist/session/attach.js.map +1 -1
  362. package/dist/session/processRegistry.js +433 -0
  363. package/dist/session/processRegistry.js.map +1 -0
  364. package/dist/session/progress.js +1 -1
  365. package/dist/session/progress.js.map +1 -1
  366. package/dist/session/retention.js +201 -0
  367. package/dist/session/retention.js.map +1 -0
  368. package/dist/session/store.js +459 -59
  369. package/dist/session/store.js.map +1 -1
  370. package/dist/snapshot/overlays.js +60 -10
  371. package/dist/snapshot/overlays.js.map +1 -1
  372. package/dist/snapshot/parse.js +30 -12
  373. package/dist/snapshot/parse.js.map +1 -1
  374. package/dist/snapshot/present.js +36 -6
  375. package/dist/snapshot/present.js.map +1 -1
  376. package/dist/snapshot/settle.js +39 -9
  377. package/dist/snapshot/settle.js.map +1 -1
  378. package/dist/state/consent.js +99 -0
  379. package/dist/state/consent.js.map +1 -0
  380. package/dist/state/profile.js +82 -11
  381. package/dist/state/profile.js.map +1 -1
  382. package/dist/suite/compile.js +15 -6
  383. package/dist/suite/compile.js.map +1 -1
  384. package/dist/suite/lint.js +22 -4
  385. package/dist/suite/lint.js.map +1 -1
  386. package/dist/suite/pom.js +75 -44
  387. package/dist/suite/pom.js.map +1 -1
  388. package/dist/suite/secretGuard.js +266 -0
  389. package/dist/suite/secretGuard.js.map +1 -0
  390. package/dist/suite/testcase.js +15 -11
  391. package/dist/suite/testcase.js.map +1 -1
  392. package/dist/testSuite/exporter.js +7 -3
  393. package/dist/testSuite/exporter.js.map +1 -1
  394. package/dist/testSuite/generator.js +43 -14
  395. package/dist/testSuite/generator.js.map +1 -1
  396. package/dist/testSuite/history.js +1 -1
  397. package/dist/testSuite/history.js.map +1 -1
  398. package/dist/testSuite/issueLinks.js +3 -3
  399. package/dist/testSuite/issueLinks.js.map +1 -1
  400. package/dist/testSuite/lint.js +4 -4
  401. package/dist/testSuite/lint.js.map +1 -1
  402. package/dist/testSuite/merge.js +13 -7
  403. package/dist/testSuite/merge.js.map +1 -1
  404. package/dist/testSuite/schema.js +21 -16
  405. package/dist/testSuite/schema.js.map +1 -1
  406. package/dist/testSuite/store.js +12 -4
  407. package/dist/testSuite/store.js.map +1 -1
  408. package/dist/testSuite/traceability.js +2 -2
  409. package/dist/testSuite/traceability.js.map +1 -1
  410. package/dist/tools/act.js +868 -174
  411. package/dist/tools/act.js.map +1 -1
  412. package/dist/tools/agent.js +521 -112
  413. package/dist/tools/agent.js.map +1 -1
  414. package/dist/tools/appControl.js +82 -19
  415. package/dist/tools/appControl.js.map +1 -1
  416. package/dist/tools/appMap.js +393 -189
  417. package/dist/tools/appMap.js.map +1 -1
  418. package/dist/tools/build.js +92 -51
  419. package/dist/tools/build.js.map +1 -1
  420. package/dist/tools/bundletool.js +141 -40
  421. package/dist/tools/bundletool.js.map +1 -1
  422. package/dist/tools/clearOverlay.js +98 -18
  423. package/dist/tools/clearOverlay.js.map +1 -1
  424. package/dist/tools/device.js +108 -19
  425. package/dist/tools/device.js.map +1 -1
  426. package/dist/tools/doctor.js +98 -35
  427. package/dist/tools/doctor.js.map +1 -1
  428. package/dist/tools/explore.js +110 -42
  429. package/dist/tools/explore.js.map +1 -1
  430. package/dist/tools/featureTesting.js +152 -130
  431. package/dist/tools/featureTesting.js.map +1 -1
  432. package/dist/tools/firstRun.js +94 -66
  433. package/dist/tools/firstRun.js.map +1 -1
  434. package/dist/tools/flow.js +347 -132
  435. package/dist/tools/flow.js.map +1 -1
  436. package/dist/tools/flowRepair.js +42 -10
  437. package/dist/tools/flowRepair.js.map +1 -1
  438. package/dist/tools/generate.js +199 -0
  439. package/dist/tools/generate.js.map +1 -0
  440. package/dist/tools/getArtifact.js +37 -8
  441. package/dist/tools/getArtifact.js.map +1 -1
  442. package/dist/tools/health.js +17 -12
  443. package/dist/tools/health.js.map +1 -1
  444. package/dist/tools/ios.js +148 -194
  445. package/dist/tools/ios.js.map +1 -1
  446. package/dist/tools/issues.js +256 -171
  447. package/dist/tools/issues.js.map +1 -1
  448. package/dist/tools/jobs.js +55 -11
  449. package/dist/tools/jobs.js.map +1 -1
  450. package/dist/tools/metro.js +84 -38
  451. package/dist/tools/metro.js.map +1 -1
  452. package/dist/tools/mobileAudit.js +83 -26
  453. package/dist/tools/mobileAudit.js.map +1 -1
  454. package/dist/tools/network.js +36 -14
  455. package/dist/tools/network.js.map +1 -1
  456. package/dist/tools/note.js +31 -17
  457. package/dist/tools/note.js.map +1 -1
  458. package/dist/tools/prepareIosTarget.js +31 -14
  459. package/dist/tools/prepareIosTarget.js.map +1 -1
  460. package/dist/tools/prepareTarget.js +193 -47
  461. package/dist/tools/prepareTarget.js.map +1 -1
  462. package/dist/tools/report.js +16 -8
  463. package/dist/tools/report.js.map +1 -1
  464. package/dist/tools/resolveArtifact.js +12 -12
  465. package/dist/tools/resolveArtifact.js.map +1 -1
  466. package/dist/tools/resolveTarget.js +81 -18
  467. package/dist/tools/resolveTarget.js.map +1 -1
  468. package/dist/tools/screenRecord.js +85 -20
  469. package/dist/tools/screenRecord.js.map +1 -1
  470. package/dist/tools/screenshot.js +42 -18
  471. package/dist/tools/screenshot.js.map +1 -1
  472. package/dist/tools/smoke.js +29 -12
  473. package/dist/tools/smoke.js.map +1 -1
  474. package/dist/tools/snapshot.js +157 -107
  475. package/dist/tools/snapshot.js.map +1 -1
  476. package/dist/tools/startSession.js +117 -84
  477. package/dist/tools/startSession.js.map +1 -1
  478. package/dist/tools/suite.js +391 -310
  479. package/dist/tools/suite.js.map +1 -1
  480. package/dist/tools/testSuite.js +112 -36
  481. package/dist/tools/testSuite.js.map +1 -1
  482. package/dist/tools/testThis.js +35 -802
  483. package/dist/tools/testThis.js.map +1 -1
  484. package/dist/tools/visual.js +698 -116
  485. package/dist/tools/visual.js.map +1 -1
  486. package/dist/tools/wait.js +9 -23
  487. package/dist/tools/wait.js.map +1 -1
  488. package/dist/tools/wda.js +312 -54
  489. package/dist/tools/wda.js.map +1 -1
  490. package/dist/version.js +37 -64
  491. package/dist/version.js.map +1 -1
  492. package/dist/visual/ocr.js +65 -8
  493. package/dist/visual/ocr.js.map +1 -1
  494. package/dist/visual/provider.js +87 -15
  495. package/dist/visual/provider.js.map +1 -1
  496. package/docs/README.md +24 -10
  497. package/docs/ci-reports.md +328 -0
  498. package/docs/concepts.md +227 -0
  499. package/docs/flows.md +153 -0
  500. package/docs/mcp-server.md +210 -104
  501. package/docs/physical-devices.md +84 -0
  502. package/docs/tools.md +808 -217
  503. package/package.json +16 -6
  504. package/dist/appMap/diff.js +0 -60
  505. package/dist/appMap/diff.js.map +0 -1
  506. package/dist/automation/maestroIr.js +0 -282
  507. package/dist/automation/maestroIr.js.map +0 -1
  508. package/dist/interop/maestro.js +0 -151
  509. package/dist/interop/maestro.js.map +0 -1
  510. package/dist/tools/assertVisual.js +0 -74
  511. package/dist/tools/assertVisual.js.map +0 -1
  512. package/dist/tools/automationGenerate.js +0 -394
  513. package/dist/tools/automationGenerate.js.map +0 -1
  514. package/dist/tools/capabilities.js +0 -209
  515. package/dist/tools/capabilities.js.map +0 -1
  516. package/dist/tools/detectContext.js +0 -41
  517. package/dist/tools/detectContext.js.map +0 -1
  518. package/dist/tools/flowGenerate.js +0 -55
  519. package/dist/tools/flowGenerate.js.map +0 -1
  520. package/dist/tools/history.js +0 -56
  521. package/dist/tools/history.js.map +0 -1
  522. package/dist/tools/idling.js +0 -104
  523. package/dist/tools/idling.js.map +0 -1
  524. package/dist/tools/inputCapabilities.js +0 -30
  525. package/dist/tools/inputCapabilities.js.map +0 -1
  526. package/dist/tools/locator.js +0 -57
  527. package/dist/tools/locator.js.map +0 -1
  528. package/dist/tools/maestro.js +0 -78
  529. package/dist/tools/maestro.js.map +0 -1
  530. package/dist/tools/permissions.js +0 -149
  531. package/dist/tools/permissions.js.map +0 -1
  532. package/dist/tools/plan.js +0 -49
  533. package/dist/tools/plan.js.map +0 -1
  534. package/dist/tools/screenInfo.js +0 -70
  535. package/dist/tools/screenInfo.js.map +0 -1
  536. package/dist/tools/seed.js +0 -101
  537. package/dist/tools/seed.js.map +0 -1
  538. package/dist/tools/state.js +0 -170
  539. package/dist/tools/state.js.map +0 -1
  540. package/dist/tools/visualText.js +0 -61
  541. package/dist/tools/visualText.js.map +0 -1
@@ -1,56 +1,78 @@
1
- // Vision Gap Fix 9 — the single "suite knowledge merge" service. The vision requires the persistent
1
+ // Vision Gap Fix 9: the single "suite knowledge merge" service. The vision requires the persistent
2
2
  // suite (.swipium/test-suite.json) to stay current after EVERY flow that observes or creates QA
3
- // knowledge — exploration, automation generation, and report — without depending on
3
+ // knowledge (exploration, automation generation, and report) without depending on
4
4
  // a later qa_report or a manual suite generation. Each flow funnels its cases through here so stable
5
5
  // ids, dedup, provenance, and the run ledger are enforced in ONE place (store.applyMerge), and a merge
6
6
  // failure is returned as a WARNING (best-effort) rather than failing an otherwise-valid QA run.
7
7
  import { applyMerge, suiteDelta, suiteResourceUri, suiteJsonPath, loadSuite } from '../testSuite/store.js';
8
- import { loadAppMap, saveAppMap } from '../appMap/store.js';
8
+ import { loadAppMap, saveAppMap, withAppMapLock } from '../appMap/store.js';
9
9
  import { detectFramework } from '../context/detect.js';
10
10
  import { casesFromExploration, caseFromPom } from '../testSuite/generator.js';
11
11
  import { pomForSession } from './suiteGenerate.js';
12
12
  import { join } from 'node:path';
13
13
  import { log } from '../lib/logger.js';
14
+ import { redactDeep } from '../lib/redact.js';
15
+ import { generatedOutputRedactor, structuralLiterals } from '../suite/secretGuard.js';
14
16
  const EMPTY = { ok: true, created: [], updated: [], deprecated: [], written: [], caseIds: [] };
15
17
  function fallbackProject(root) {
16
18
  const fw = detectFramework(root);
17
- return { root, gitRemote: null, packageName: null, workspaceTarget: null, framework: fw, platforms: fw === 'native-android' ? ['android'] : fw === 'native-ios' ? ['ios'] : ['android', 'ios'] };
19
+ return {
20
+ root,
21
+ gitRemote: null,
22
+ packageName: null,
23
+ workspaceTarget: null,
24
+ framework: fw,
25
+ platforms: fw === 'native-android' ? ['android'] : fw === 'native-ios' ? ['ios'] : ['android', 'ios'],
26
+ };
18
27
  }
19
28
  /**
20
29
  * Mirror a COMPACT index of the persistent suite into the app map's testSuite section so the durable
21
- * map (and qa_app_map_query / feature scoping) reflect the growing suite — the "map + suite as one
30
+ * map (and qa_app_map_query / feature scoping) reflect the growing suite: the "map + suite as one
22
31
  * growing QA business context" loop the vision requires. Best-effort: no map yet ⇒ no-op.
23
32
  */
24
33
  function mirrorSuiteIndexToMap(root, now) {
25
34
  try {
26
- const loaded = loadAppMap(root, fallbackProject(root), now);
27
- if (!loaded.map)
28
- return; // no durable map yet — feature scope still reads the suite directly
29
- const suite = loadSuite(root);
30
- const refs = suite.cases.map((c) => ({
31
- id: c.id,
32
- title: c.title,
33
- featureId: c.featureId,
34
- status: c.actualResult.status,
35
- source: 'test-suite',
36
- lastRun: c.actualResult.lastRunAt,
37
- stale: c.status === 'deprecated',
38
- }));
39
- loaded.map.testSuite = { cases: refs };
40
- loaded.map.coverage.staleTests = refs.filter((r) => r.stale).length;
41
- loaded.map.updatedAt = now;
42
- saveAppMap(root, loaded.map);
35
+ // Synchronous load > mutate > save cycle, held under the cross-process app-map lock (see store.ts).
36
+ withAppMapLock(root, () => {
37
+ const loaded = loadAppMap(root, fallbackProject(root), now);
38
+ if (!loaded.map)
39
+ return; // no durable map yet, feature scope still reads the suite directly
40
+ const suite = loadSuite(root);
41
+ const refs = suite.cases.map((c) => ({
42
+ id: c.id,
43
+ title: c.title,
44
+ featureId: c.featureId,
45
+ status: c.actualResult.status,
46
+ source: 'test-suite',
47
+ lastRun: c.actualResult.lastRunAt,
48
+ stale: c.status === 'deprecated',
49
+ }));
50
+ loaded.map.testSuite = { cases: refs };
51
+ loaded.map.coverage.staleTests = refs.filter((r) => r.stale).length;
52
+ loaded.map.updatedAt = now;
53
+ saveAppMap(root, loaded.map);
54
+ });
43
55
  }
44
56
  catch {
45
57
  /* best-effort: a mirror failure never fails the suite merge */
46
58
  }
47
59
  }
48
- /** Core: merge already-canonical cases into the suite. Best-effort — never throws. */
60
+ /** Core: merge already-canonical cases into the suite. Best-effort, never throws. */
49
61
  export function mergeCanonical(root, cases, ctx) {
50
62
  if (!cases.length)
51
63
  return EMPTY;
64
+ // Defense in depth: no registered secret value may reach the persistent suite files.
65
+ if (ctx.secrets)
66
+ cases = redactDeep(cases, generatedOutputRedactor(ctx.secrets, ctx.structural));
52
67
  try {
53
- const applied = applyMerge(root, cases, { source: ctx.source, mode: ctx.mode ?? 'update', now: ctx.now, runId: ctx.runId, sourceUri: ctx.sourceUri, liveFeatureIds: ctx.liveFeatureIds }, ctx.appId);
68
+ const applied = applyMerge(root, cases, {
69
+ source: ctx.source,
70
+ mode: ctx.mode ?? 'update',
71
+ now: ctx.now,
72
+ runId: ctx.runId,
73
+ sourceUri: ctx.sourceUri,
74
+ liveFeatureIds: ctx.liveFeatureIds,
75
+ }, ctx.appId);
54
76
  const delta = suiteDelta(applied.result.suite, applied.result);
55
77
  const caseIds = [...applied.result.created, ...applied.result.updated];
56
78
  // Keep the durable app map's suite index in sync with the persistent suite (Fix #3).
@@ -80,7 +102,7 @@ export function mergeFromExploration(root, exploration, ctx) {
80
102
  cases = casesFromExploration({ exploration, source: 'exploration', now: ctx.now, appId: ctx.appId });
81
103
  }
82
104
  catch (e) {
83
- return { ...EMPTY, ok: false, warning: `exploration→canonical conversion failed: ${String(e)}` };
105
+ return { ...EMPTY, ok: false, warning: `exploration > canonical conversion failed: ${String(e)}` };
84
106
  }
85
107
  return mergeCanonical(root, cases, { ...ctx, source: 'exploration' });
86
108
  }
@@ -94,10 +116,10 @@ function readinessGrade(brittlePct) {
94
116
  return 'D';
95
117
  }
96
118
  /**
97
- * Fix 7 — merge automation metadata into the persistent suite. Converts the generated POM smoke flow
119
+ * Fix 7: merge automation metadata into the persistent suite. Converts the generated POM smoke flow
98
120
  * into a canonical case carrying the real page-object/test-file paths, framework, locator readiness and
99
121
  * automation status, AND (Fix #4) upgrades the automation link of EXISTING suite cases whose app-map
100
- * feature/screen links overlap the generated suite — so a prior feature case is marked automated
122
+ * feature/screen links overlap the generated suite, so a prior feature case is marked automated
101
123
  * instead of a parallel POM-only case silently superseding it.
102
124
  */
103
125
  export function mergeFromAutomation(root, session, input, ctx) {
@@ -108,10 +130,26 @@ export function mergeFromAutomation(root, session, input, ctx) {
108
130
  const pageObjects = assembled.files.filter((f) => /page|screen|pages\//i.test(f.path)).map((f) => join(assembled.outputDir, f.path));
109
131
  const testFiles = assembled.files.filter((f) => /test|spec|smoke|\.e2e\./i.test(f.path)).map((f) => join(assembled.outputDir, f.path));
110
132
  const status = !input.validationOk ? 'partial' : assembled.model.audit.brittle > 0 ? 'partial' : 'automated';
111
- const automation = { status, framework, pageObjects, testFiles, locatorReadiness: readinessGrade(assembled.model.audit.brittlePct), replayStatus: 'not_replayed' };
133
+ const automation = {
134
+ status,
135
+ framework,
136
+ pageObjects,
137
+ testFiles,
138
+ locatorReadiness: readinessGrade(assembled.model.audit.brittlePct),
139
+ replayStatus: 'not_replayed',
140
+ };
112
141
  const { pom } = pomForSession(session);
113
- const platforms = [assembled.profile.platforms.android.level !== 'none' ? 'android' : null, assembled.profile.platforms.ios.level !== 'none' ? 'ios' : null].filter(Boolean);
114
- const base = caseFromPom({ pom, appId: session.appId, source: 'generate', now: ctx.now, platforms: platforms.length ? platforms : ['android'] });
142
+ const platforms = [
143
+ assembled.profile.platforms.android.level !== 'none' ? 'android' : null,
144
+ assembled.profile.platforms.ios.level !== 'none' ? 'ios' : null,
145
+ ].filter(Boolean);
146
+ const base = caseFromPom({
147
+ pom,
148
+ appId: session.appId,
149
+ source: 'generate',
150
+ now: ctx.now,
151
+ platforms: platforms.length ? platforms : ['android'],
152
+ });
115
153
  if (!base)
116
154
  return EMPTY;
117
155
  // Group the POM case under the linked map feature so it doesn't fork from existing feature cases.
@@ -135,7 +173,9 @@ export function mergeFromAutomation(root, session, input, ctx) {
135
173
  for (const c of suite.cases) {
136
174
  if (c.status === 'deprecated' || c.id === base.id)
137
175
  continue;
138
- const overlaps = feat.has(c.featureId) || c.mapLinks.some((l) => (l.kind === 'feature' && feat.has(l.id)) || ((l.kind === 'screen' || l.kind === 'static_screen' || l.kind === 'runtime_screen') && scr.has(l.id)));
176
+ const overlaps = feat.has(c.featureId) ||
177
+ c.mapLinks.some((l) => (l.kind === 'feature' && feat.has(l.id)) ||
178
+ ((l.kind === 'screen' || l.kind === 'static_screen' || l.kind === 'runtime_screen') && scr.has(l.id)));
139
179
  if (!overlaps)
140
180
  continue;
141
181
  cases.push({ ...c, automation, provenance: [] });
@@ -143,8 +183,13 @@ export function mergeFromAutomation(root, session, input, ctx) {
143
183
  }
144
184
  }
145
185
  catch (e) {
146
- return { ...EMPTY, ok: false, warning: `automation→canonical conversion failed: ${String(e)}` };
186
+ return { ...EMPTY, ok: false, warning: `automation > canonical conversion failed: ${String(e)}` };
147
187
  }
148
- return mergeCanonical(root, cases, { ...ctx, source: 'generate' });
188
+ return mergeCanonical(root, cases, {
189
+ ...ctx,
190
+ source: 'generate',
191
+ secrets: ctx.secrets ?? session.secrets,
192
+ structural: ctx.structural ?? structuralLiterals(session.recordedActions),
193
+ });
149
194
  }
150
195
  //# sourceMappingURL=testSuiteKnowledge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"testSuiteKnowledge.js","sourceRoot":"","sources":["../../src/services/testSuiteKnowledge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testSuiteKnowledge.js","sourceRoot":"","sources":["../../src/services/testSuiteKnowledge.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,115 @@
2
2
  // "which device" so qa_doctor / qa_prepare_target / UI tools
3
3
  // all agree: a session-bound device, the single online device, or "needs selection".
4
4
  import { adbDevices } from '../lib/android.js';
5
+ import { run } from '../lib/spawn.js';
5
6
  import { DirectDriver } from '../drivers/DirectDriver.js';
7
+ import { SimctlDriver } from '../drivers/SimctlDriver.js';
8
+ import { WdaDriver } from '../drivers/WdaDriver.js';
9
+ import { listSimulators } from '../lib/simctl.js';
10
+ import { checkWda } from '../lib/wda.js';
11
+ import { loadWdaConfig } from '../lib/wdaConfig.js';
12
+ import { isEmulatorSerial } from '../core/targetPlan.js';
13
+ import { qaError } from '../lib/result.js';
14
+ /** PURE: parse `adb shell getprop` output (`[key]: [value]` lines). */
15
+ export function parseGetprop(stdout) {
16
+ const out = {};
17
+ for (const m of stdout.matchAll(/^\[([^\]]+)\]:\s*\[([^\]]*)\]/gm))
18
+ out[m[1]] = m[2];
19
+ return out;
20
+ }
21
+ /** PURE: emulator/boot verdict from a serial + its properties. Emulator = the adb serial
22
+ * pattern OR the qemu flags (`localhost:5555`, `127.0.0.1:NNNN` emulators) OR Genymotion. */
23
+ export function classifyAndroidProps(serial, props) {
24
+ const emulator = isEmulatorSerial(serial) ||
25
+ props['ro.kernel.qemu'] === '1' ||
26
+ props['ro.boot.qemu'] === '1' ||
27
+ /^(goldfish|ranchu)$/.test(props['ro.hardware'] ?? '') ||
28
+ !!props['ro.genymotion.version'] ||
29
+ /^genymotion$/i.test(props['ro.product.manufacturer'] ?? '');
30
+ return { emulator, booted: props['sys.boot_completed'] === '1' };
31
+ }
32
+ /** One `getprop` call > emulator + boot state. */
33
+ export async function probeAndroidDevice(serial) {
34
+ try {
35
+ const r = await run('adb', ['-s', serial, 'shell', 'getprop'], { timeoutMs: 8000 });
36
+ const props = parseGetprop(r.stdout);
37
+ if (r.code !== 0 || Object.keys(props).length === 0) {
38
+ return { serial, propsRead: false, emulator: isEmulatorSerial(serial), booted: false };
39
+ }
40
+ return { serial, propsRead: true, ...classifyAndroidProps(serial, props) };
41
+ }
42
+ catch {
43
+ return { serial, propsRead: false, emulator: isEmulatorSerial(serial), booted: false };
44
+ }
45
+ }
46
+ /** Split online serials by policy. Callers of planTarget pass `emulators` as
47
+ * TargetInputs.android.emulators so non-`emulator-N` emulators are not refused as physical. */
48
+ export async function classifyAndroidSerials(serials) {
49
+ const probes = await Promise.all(serials.map(probeAndroidDevice));
50
+ return {
51
+ emulators: probes.filter((p) => p.emulator).map((p) => p.serial),
52
+ physical: probes.filter((p) => p.propsRead && !p.emulator).map((p) => p.serial),
53
+ booting: probes.filter((p) => p.propsRead && p.emulator && !p.booted).map((p) => p.serial),
54
+ unknown: probes.filter((p) => !p.propsRead).map((p) => p.serial),
55
+ };
56
+ }
57
+ /** Emulator serials among `online`: `emulator-N` directly, any other serial via one getprop
58
+ * probe (ro.kernel.qemu / ro.boot.qemu / Genymotion). Feed to TargetInputs.android.emulators. */
59
+ export async function verifiedEmulatorSerials(online) {
60
+ const verdicts = await Promise.all(online.map(async (s) => isEmulatorSerial(s) || (await probeAndroidDevice(s)).emulator));
61
+ return online.filter((_, i) => verdicts[i]);
62
+ }
63
+ /** Shared "why is there no driver" answer for tools: the typed refusal when getDriver saw an
64
+ * online device it may not bind (physical / still booting), else undefined so the caller's
65
+ * generic "No device attached" stands. Usage: `return blockedDeviceResult(blocked) ?? qaError(…)`. */
66
+ export function blockedDeviceResult(blocked) {
67
+ if (!blocked)
68
+ return undefined;
69
+ const notReady = blocked.failureCode === 'DEVICE_NOT_READY';
70
+ return qaError({
71
+ what: blocked.detail,
72
+ changedState: false,
73
+ retrySafe: notReady,
74
+ failureCode: blocked.failureCode,
75
+ nextSteps: blocked.nextSteps?.length
76
+ ? blocked.nextSteps
77
+ : notReady
78
+ ? ['Wait for the emulator to finish booting, then retry.']
79
+ : ['Start an Android emulator (qa_prepare_target boots one), then retry.'],
80
+ });
81
+ }
82
+ /** PURE: the typed refusal for a probed device, or null when it may be bound. Same policy
83
+ * as core/targetPlan (PHYSICAL_DEVICE_UNSUPPORTED) plus a boot-completed gate. */
84
+ export function attachBlocker(p) {
85
+ if (!p.propsRead) {
86
+ return {
87
+ failureCode: 'DEVICE_NOT_READY',
88
+ detail: `Could not read device properties from ${p.serial} (offline, unauthorized, or still starting). Wait for it to come online, then retry.`,
89
+ };
90
+ }
91
+ if (!p.emulator) {
92
+ return {
93
+ failureCode: 'PHYSICAL_DEVICE_UNSUPPORTED',
94
+ detail: `Physical device ${p.serial} is online but refused: Swipium is simulator/emulator-only by policy (docs/physical-devices.md). Use an emulator.`,
95
+ };
96
+ }
97
+ if (!p.booted) {
98
+ return {
99
+ failureCode: 'DEVICE_NOT_READY',
100
+ detail: `Emulator ${p.serial} is still booting (sys.boot_completed != 1). Wait for boot to finish, then retry.`,
101
+ };
102
+ }
103
+ return null;
104
+ }
105
+ /** TEST SEAM (P1 §6). When set, getDriver() binds the driver this factory returns instead of
106
+ * discovering a real device, so handler-level tests can drive tools with a fake driver and no
107
+ * adb. Never set in production code paths; a no-op unless a test installs it. */
108
+ let testDriverFactory;
109
+ export function setDriverFactoryForTests(factory) {
110
+ testDriverFactory = factory;
111
+ }
6
112
  export async function resolveDevice(session, prefer) {
7
- // Test-isolation hook (SWIPIUM-REQ-08 regression requirement): when set, device auto-discovery is
113
+ // Test-isolation hook: when set, device auto-discovery is
8
114
  // disabled so "no device" tests assert no-device behavior even on a machine with a live emulator.
9
115
  if (process.env.SWIPIUM_DISABLE_DEVICE_DISCOVERY) {
10
116
  return { sessionDevice: undefined, available: [], effective: undefined, needSelection: false, source: 'none' };
@@ -32,16 +138,190 @@ export function bindDevice(session, serial) {
32
138
  return driver;
33
139
  }
34
140
  export async function getDriver(session) {
35
- if (session.driver)
141
+ if (session.driver) {
142
+ // A rehydrated WDA session running on the simctl fallback retries WDA (throttled). A brief
143
+ // outage during rehydrate must not leave the session downgraded for its whole life.
144
+ if (session.transportFallback && session.driver.kind !== 'simulator')
145
+ session.transportFallback = undefined; // re-attached explicitly
146
+ if (session.transportFallback) {
147
+ const upgraded = await retryWdaTransport(session);
148
+ if (upgraded)
149
+ return { driver: upgraded, rehydrated: true, note: WDA_RESTORED_NOTE };
150
+ }
36
151
  return { driver: session.driver, rehydrated: false };
152
+ }
153
+ if (testDriverFactory) {
154
+ // Tests own device resolution entirely. Never fall through to real adb discovery.
155
+ const driver = testDriverFactory(session);
156
+ if (!driver)
157
+ return { driver: undefined, rehydrated: false, needSelection: false };
158
+ session.driver = driver;
159
+ session.device = session.device ?? driver.currentDevice() ?? 'test-device';
160
+ return { driver, rehydrated: false };
161
+ }
162
+ // A session that already has a device is only ever re-bound to THAT device (and platform):
163
+ // an iOS simulator UDID never falls through to adb discovery (which would bind a lone Android
164
+ // emulator and overwrite session.device), and an offline Android serial never silently
165
+ // becomes a different online one.
166
+ // The persisted transport (state.json driverKind) is authoritative; the UDID shape is the fallback
167
+ // for sessions persisted before driverKind existed.
168
+ const persistedIos = session.driverKind === 'wda' || session.driverKind === 'simulator';
169
+ const persistedAndroid = session.driverKind === 'direct';
170
+ if (session.device && (persistedIos || (!persistedAndroid && isSimulatorUdid(session.device))))
171
+ return rebindIosSimulator(session, session.device);
37
172
  const res = await resolveDevice(session);
173
+ if (session.device && res.effective && res.effective !== session.device) {
174
+ return {
175
+ driver: undefined,
176
+ rehydrated: false,
177
+ needSelection: false,
178
+ blocked: {
179
+ failureCode: 'DEVICE_NOT_READY',
180
+ detail: `This session's device ${session.device} is not online. It was NOT re-bound to ${res.effective} (a different device).`,
181
+ nextSteps: [
182
+ `Bring ${session.device} back online, or switch deliberately with qa_prepare_target device="${res.effective}" (or start a new session).`,
183
+ ],
184
+ },
185
+ };
186
+ }
38
187
  if (res.effective) {
188
+ // H6: never auto-bind a physical phone or a still-booting emulator (same policy as
189
+ // planTarget, enforced here too because this path bypasses the target planner).
190
+ const blocked = attachBlocker(await probeAndroidDevice(res.effective));
191
+ if (blocked)
192
+ return { driver: undefined, rehydrated: false, needSelection: false, blocked };
39
193
  bindDevice(session, res.effective);
40
194
  session.lastSnapshot = undefined; // refs invalid after (re)bind
41
195
  return { driver: session.driver, rehydrated: true };
42
196
  }
43
197
  return { driver: undefined, rehydrated: false, needSelection: res.needSelection };
44
198
  }
45
- export const REHYDRATE_NOTE = 'Note: reattached the device transport after a restart — the app may not be in the ' +
46
- 'foreground (relaunch with qa_prepare_target) and previous @eN refs are invalid (re-run qa_snapshot).';
199
+ const SIMULATOR_UDID_RE = /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i;
200
+ /** iOS simulator UDIDs are UUIDs; adb serials never are. */
201
+ export function isSimulatorUdid(device) {
202
+ return !!device && SIMULATOR_UDID_RE.test(device);
203
+ }
204
+ /** Test seams for the iOS rebind (listSimulators / WDA reachability). */
205
+ let iosProbe = {
206
+ listSimulators,
207
+ wdaReachable: async (url) => !!(await checkWda(url, 1500).catch(() => ({ reachable: false }))).reachable,
208
+ };
209
+ export function setIosProbeForTests(probe) {
210
+ iosProbe = {
211
+ listSimulators: probe?.listSimulators ?? listSimulators,
212
+ wdaReachable: probe?.wdaReachable ?? (async (url) => !!(await checkWda(url, 1500).catch(() => ({ reachable: false }))).reachable),
213
+ };
214
+ }
215
+ /** The WDA URL this session last attached successfully for `udid` (persisted mutation ledger). */
216
+ function lastWdaUrlFor(session, udid) {
217
+ for (let i = session.mutations.length - 1; i >= 0; i--) {
218
+ const m = session.mutations[i];
219
+ if (m.action !== 'wda_attach' || m.status !== 'executed')
220
+ continue;
221
+ const t = (m.target ?? {});
222
+ if (typeof t.webDriverAgentUrl !== 'string')
223
+ continue;
224
+ if (t.udid != null && t.udid !== udid)
225
+ continue;
226
+ return t.webDriverAgentUrl;
227
+ }
228
+ return undefined;
229
+ }
230
+ /** Re-bind a rehydrated iOS session to ITS simulator: WDA (structured) when the session had
231
+ * attached WDA and that endpoint is reachable again, else SimctlDriver (visual/lifecycle). A
232
+ * simulator that is not booted is a typed DEVICE_NOT_READY, never a fallback to another device. */
233
+ async function rebindIosSimulator(session, udid) {
234
+ const sims = await iosProbe.listSimulators().catch(() => []);
235
+ const sim = sims.find((x) => x.udid.toUpperCase() === udid.toUpperCase());
236
+ if (!sim || !/^booted$/i.test(sim.state)) {
237
+ return {
238
+ driver: undefined,
239
+ rehydrated: false,
240
+ needSelection: false,
241
+ blocked: {
242
+ failureCode: 'DEVICE_NOT_READY',
243
+ detail: sim
244
+ ? `iOS simulator ${sim.name} (${udid}) is not booted (state: ${sim.state}). This session stays bound to it; nothing else was attached.`
245
+ : `iOS simulator ${udid} was not found among available simulators. This session stays bound to it; nothing else was attached.`,
246
+ nextSteps: [`Boot it with qa_ios action:"boot" device:"${udid}" (or qa_prepare_ios_target), then retry.`],
247
+ },
248
+ };
249
+ }
250
+ // Persisted transport first: a session that ran on WDA re-binds to ITS persisted WDA URL; one that
251
+ // ran on simctl stays on simctl. Only a legacy state.json (no driverKind) falls back to the ledger.
252
+ const wdaUrl = session.driverKind === 'wda'
253
+ ? (session.wdaUrl ?? lastWdaUrlFor(session, udid))
254
+ : session.driverKind === 'simulator'
255
+ ? undefined
256
+ : lastWdaUrlFor(session, udid);
257
+ let driver;
258
+ let note;
259
+ if (wdaUrl && (await iosProbe.wdaReachable(wdaUrl))) {
260
+ driver = wdaDriverFor(session, wdaUrl, udid);
261
+ session.transportFallback = undefined;
262
+ }
263
+ else {
264
+ driver = new SimctlDriver(udid);
265
+ if (session.driverKind === 'wda' && wdaUrl) {
266
+ // Persisted transport is WDA but it is unreachable right now: run on simctl for the moment,
267
+ // but keep driverKind/wdaUrl as persisted (store.writeState skips the sync while this is
268
+ // set) and retry WDA on the next getDriver calls.
269
+ const now = Date.now();
270
+ session.transportFallback = { wanted: 'wda', wdaUrl, since: now, lastProbeAt: now };
271
+ note = wdaFallbackNote(wdaUrl);
272
+ if (!session.workarounds.includes(note))
273
+ session.workarounds.push(note);
274
+ }
275
+ }
276
+ session.driver = driver;
277
+ session.lastSnapshot = undefined; // refs invalid after (re)bind
278
+ return { driver, rehydrated: true, ...(note ? { note } : {}) };
279
+ }
280
+ // reuseRunningApp > forceAppLaunch:false + shouldTerminateApp:false: a rehydrate must never
281
+ // terminate + relaunch the app under test (see createWdaSession).
282
+ function wdaDriverFor(session, wdaUrl, udid) {
283
+ const cfg = loadWdaConfig(session.root);
284
+ return new WdaDriver(wdaUrl, {
285
+ udid,
286
+ bundleId: session.appId,
287
+ capabilities: cfg?.capabilities,
288
+ settings: cfg?.settings,
289
+ reuseRunningApp: true,
290
+ });
291
+ }
292
+ /** Minimum gap between WDA re-probes while a session runs on the simctl fallback. */
293
+ export const WDA_RETRY_INTERVAL_MS = 10_000;
294
+ const wdaFallbackNote = (wdaUrl) => `WDA at ${wdaUrl} was unreachable when this iOS session was re-attached; running on the simctl fallback ` +
295
+ `(visual/lifecycle only; no structured snapshot). The session stays a WDA session and WDA is retried ` +
296
+ `automatically; or re-attach with qa_wda.`;
297
+ export const WDA_RESTORED_NOTE = 'WDA is reachable again. This session is back on its WDA transport (previous @eN refs are invalid).';
298
+ /** Re-probe the persisted WDA endpoint of a fallback session (throttled); rebind on success. */
299
+ async function retryWdaTransport(session) {
300
+ const fb = session.transportFallback;
301
+ if (!fb || !session.device)
302
+ return undefined;
303
+ const now = Date.now();
304
+ if (now - fb.lastProbeAt < WDA_RETRY_INTERVAL_MS)
305
+ return undefined;
306
+ fb.lastProbeAt = now;
307
+ if (!(await iosProbe.wdaReachable(fb.wdaUrl).catch(() => false)))
308
+ return undefined;
309
+ const driver = wdaDriverFor(session, fb.wdaUrl, session.device);
310
+ session.driver = driver;
311
+ session.transportFallback = undefined;
312
+ session.lastSnapshot = undefined;
313
+ return driver;
314
+ }
315
+ /** Post-restart reattach note, platform-aware: iOS sessions relaunch via qa_prepare_ios_target
316
+ * (qa_prepare_target is the Android/Expo path). iOS = an iOS driver (simctl / WDA) or a
317
+ * simulator-UDID device. */
318
+ export function rehydrateNote(session) {
319
+ const driver = session?.driver;
320
+ const ios = driver instanceof SimctlDriver || driver instanceof WdaDriver || isSimulatorUdid(session?.device);
321
+ return ('Note: reattached the device transport after a restart. The app may not be in the ' +
322
+ `foreground (relaunch with ${ios ? 'qa_prepare_ios_target' : 'qa_prepare_target'}) and previous @eN refs are invalid (re-run qa_snapshot).`);
323
+ }
324
+ /** Platform-neutral form for callers without the session at hand (prefer rehydrateNote(session)). */
325
+ export const REHYDRATE_NOTE = 'Note: reattached the device transport after a restart. The app may not be in the ' +
326
+ 'foreground (relaunch with qa_prepare_target on Android, qa_prepare_ios_target on iOS) and previous @eN refs are invalid (re-run qa_snapshot).';
47
327
  //# sourceMappingURL=attach.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../src/session/attach.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,6DAA6D;AAC7D,qFAAqF;AAErF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAY1D,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAgB,EAAE,MAAe;IACnE,kGAAkG;IAClG,kGAAkG;IAClG,IAAI,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,CAAC;QACjD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjH,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,UAAU,EAAE,CAAC;IACrC,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACxG,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC/B,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;YACtF,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC/F,CAAC;IACD,IAAI,aAAa;QAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC1H,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IACxI,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACzH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAClG,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,UAAU,CAAC,OAAgB,EAAE,MAAc;IACzD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IACxB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAgB;IAC9C,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACzE,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAClB,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QACnC,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC,8BAA8B;QAChE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACtD,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC;AACpF,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GACzB,oFAAoF;IACpF,sGAAsG,CAAC"}
1
+ {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../src/session/attach.ts"],"names":[],"mappings":"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"}