swipium 1.5.0 → 2.0.1

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 (498) hide show
  1. package/CHANGELOG.md +183 -0
  2. package/README.md +173 -280
  3. package/THREAT_MODEL.md +223 -47
  4. package/dist/appMap/automationLink.js +30 -27
  5. package/dist/appMap/automationLink.js.map +1 -1
  6. package/dist/appMap/build.js +47 -21
  7. package/dist/appMap/build.js.map +1 -1
  8. package/dist/appMap/codeIndex.js +2 -2
  9. package/dist/appMap/codeIndex.js.map +1 -1
  10. package/dist/appMap/featureIndex.js +3 -3
  11. package/dist/appMap/featureIndex.js.map +1 -1
  12. package/dist/appMap/featureModel.js +2 -2
  13. package/dist/appMap/featureModel.js.map +1 -1
  14. package/dist/appMap/firstRunApply.js +2 -2
  15. package/dist/appMap/firstRunApply.js.map +1 -1
  16. package/dist/appMap/issues.js +10 -10
  17. package/dist/appMap/issues.js.map +1 -1
  18. package/dist/appMap/migrations.js +5 -5
  19. package/dist/appMap/migrations.js.map +1 -1
  20. package/dist/appMap/prelaunch.js +2 -2
  21. package/dist/appMap/prelaunch.js.map +1 -1
  22. package/dist/appMap/projectRegistry.js +77 -11
  23. package/dist/appMap/projectRegistry.js.map +1 -1
  24. package/dist/appMap/provenance.js +2 -2
  25. package/dist/appMap/provenance.js.map +1 -1
  26. package/dist/appMap/query.js +2 -2
  27. package/dist/appMap/query.js.map +1 -1
  28. package/dist/appMap/runtimeMerge.js +3 -3
  29. package/dist/appMap/runtimeMerge.js.map +1 -1
  30. package/dist/appMap/schema.js +1 -1
  31. package/dist/appMap/schema.js.map +1 -1
  32. package/dist/appMap/screenMatch.js +1 -1
  33. package/dist/appMap/screenMatch.js.map +1 -1
  34. package/dist/appMap/staticScan.js +17 -17
  35. package/dist/appMap/staticScan.js.map +1 -1
  36. package/dist/appMap/store.js +55 -7
  37. package/dist/appMap/store.js.map +1 -1
  38. package/dist/appMap/tsAstScan.js +3 -3
  39. package/dist/appMap/tsAstScan.js.map +1 -1
  40. package/dist/artifacts/bundletool.js +5 -5
  41. package/dist/artifacts/bundletool.js.map +1 -1
  42. package/dist/artifacts/resolve.js +10 -10
  43. package/dist/artifacts/resolve.js.map +1 -1
  44. package/dist/automation/capabilities.js +3 -3
  45. package/dist/automation/capabilities.js.map +1 -1
  46. package/dist/automation/gestures.js +1 -1
  47. package/dist/automation/gestures.js.map +1 -1
  48. package/dist/automation/plan.js +7 -7
  49. package/dist/automation/plan.js.map +1 -1
  50. package/dist/automation/report.js +3 -3
  51. package/dist/automation/report.js.map +1 -1
  52. package/dist/automation/selectors.js +14 -25
  53. package/dist/automation/selectors.js.map +1 -1
  54. package/dist/automation/types.js +1 -1
  55. package/dist/automation/types.js.map +1 -1
  56. package/dist/automation/waits.js +5 -5
  57. package/dist/automation/waits.js.map +1 -1
  58. package/dist/automation/webview.js +2 -2
  59. package/dist/automation/webview.js.map +1 -1
  60. package/dist/automationGen/appiumModel.js +13 -7
  61. package/dist/automationGen/appiumModel.js.map +1 -1
  62. package/dist/automationGen/ciEmitter.js +5 -5
  63. package/dist/automationGen/ciEmitter.js.map +1 -1
  64. package/dist/automationGen/identifiers.js +224 -0
  65. package/dist/automationGen/identifiers.js.map +1 -0
  66. package/dist/automationGen/jsEmitter.js +265 -106
  67. package/dist/automationGen/jsEmitter.js.map +1 -1
  68. package/dist/automationGen/packagePatch.js +2 -2
  69. package/dist/automationGen/packagePatch.js.map +1 -1
  70. package/dist/automationGen/platformResolve.js +36 -0
  71. package/dist/automationGen/platformResolve.js.map +1 -0
  72. package/dist/automationGen/projectProfile.js +71 -26
  73. package/dist/automationGen/projectProfile.js.map +1 -1
  74. package/dist/automationGen/pythonEmitter.js +276 -105
  75. package/dist/automationGen/pythonEmitter.js.map +1 -1
  76. package/dist/automationGen/readmeEmitter.js +7 -6
  77. package/dist/automationGen/readmeEmitter.js.map +1 -1
  78. package/dist/{tools/automationGenerate.js → automationGen/run.js} +72 -113
  79. package/dist/automationGen/run.js.map +1 -0
  80. package/dist/automationGen/suitePlan.js +6 -4
  81. package/dist/automationGen/suitePlan.js.map +1 -1
  82. package/dist/automationGen/validation.js +20 -8
  83. package/dist/automationGen/validation.js.map +1 -1
  84. package/dist/build/parseBuildLog.js +2 -2
  85. package/dist/build/parseBuildLog.js.map +1 -1
  86. package/dist/build/plan.js +7 -7
  87. package/dist/build/plan.js.map +1 -1
  88. package/dist/ci/preflight.js +13 -4
  89. package/dist/ci/preflight.js.map +1 -1
  90. package/dist/cli/gc.js +74 -0
  91. package/dist/cli/gc.js.map +1 -0
  92. package/dist/cli/init.js +217 -26
  93. package/dist/cli/init.js.map +1 -1
  94. package/dist/cli/main.js +50 -0
  95. package/dist/cli/main.js.map +1 -0
  96. package/dist/cli/report.js +218 -0
  97. package/dist/cli/report.js.map +1 -0
  98. package/dist/cli/scan.js +35 -14
  99. package/dist/cli/scan.js.map +1 -1
  100. package/dist/cli/suite.js +6 -6
  101. package/dist/cli/suite.js.map +1 -1
  102. package/dist/cli/verify.js +7 -7
  103. package/dist/cli/verify.js.map +1 -1
  104. package/dist/consent/consent.js +162 -5
  105. package/dist/consent/consent.js.map +1 -1
  106. package/dist/context/detect.js +45 -14
  107. package/dist/context/detect.js.map +1 -1
  108. package/dist/context/findApps.js +6 -6
  109. package/dist/context/findApps.js.map +1 -1
  110. package/dist/context/projectRoot.js +174 -19
  111. package/dist/context/projectRoot.js.map +1 -1
  112. package/dist/context/scan.js +1 -1
  113. package/dist/context/scan.js.map +1 -1
  114. package/dist/core/capabilityGroups.js +90 -0
  115. package/dist/core/capabilityGroups.js.map +1 -0
  116. package/dist/core/target.js +3 -3
  117. package/dist/core/target.js.map +1 -1
  118. package/dist/core/targetPlan.js +65 -62
  119. package/dist/core/targetPlan.js.map +1 -1
  120. package/dist/drivers/DirectDriver.js +300 -36
  121. package/dist/drivers/DirectDriver.js.map +1 -1
  122. package/dist/drivers/SimctlDriver.js +120 -7
  123. package/dist/drivers/SimctlDriver.js.map +1 -1
  124. package/dist/drivers/WdaDriver.js +350 -50
  125. package/dist/drivers/WdaDriver.js.map +1 -1
  126. package/dist/explore/candidates.js +2 -2
  127. package/dist/explore/candidates.js.map +1 -1
  128. package/dist/explore/graph.js +5 -5
  129. package/dist/explore/graph.js.map +1 -1
  130. package/dist/explore/policy.js +5 -5
  131. package/dist/explore/policy.js.map +1 -1
  132. package/dist/explore/runner.js +301 -284
  133. package/dist/explore/runner.js.map +1 -1
  134. package/dist/explore/signatures.js +1 -1
  135. package/dist/featureTesting/executionBootstrap.js +29 -30
  136. package/dist/featureTesting/executionBootstrap.js.map +1 -1
  137. package/dist/featureTesting/featureMap.js +2 -2
  138. package/dist/featureTesting/featureMap.js.map +1 -1
  139. package/dist/featureTesting/featureScope.js +12 -12
  140. package/dist/featureTesting/featureScope.js.map +1 -1
  141. package/dist/featureTesting/mapFeatureScope.js +7 -7
  142. package/dist/featureTesting/mapFeatureScope.js.map +1 -1
  143. package/dist/featureTesting/objectiveModel.js +10 -10
  144. package/dist/featureTesting/objectiveModel.js.map +1 -1
  145. package/dist/featureTesting/resultMerge.js +6 -6
  146. package/dist/featureTesting/resultMerge.js.map +1 -1
  147. package/dist/featureTesting/sources.js +4 -4
  148. package/dist/featureTesting/sources.js.map +1 -1
  149. package/dist/featureTesting/suiteBridge.js +1 -1
  150. package/dist/featureTesting/suiteBridge.js.map +1 -1
  151. package/dist/featureTesting/synonyms.js +1 -1
  152. package/dist/featureTesting/synonyms.js.map +1 -1
  153. package/dist/featureTesting/testCaseFactory.js +11 -11
  154. package/dist/featureTesting/testCaseFactory.js.map +1 -1
  155. package/dist/featureTesting/testPlan.js +3 -3
  156. package/dist/featureTesting/testPlan.js.map +1 -1
  157. package/dist/firstRun/authStateMachine.js +1 -1
  158. package/dist/firstRun/authStateMachine.js.map +1 -1
  159. package/dist/firstRun/classifyScreen.js +5 -5
  160. package/dist/firstRun/classifyScreen.js.map +1 -1
  161. package/dist/firstRun/firstRunPlanner.js +11 -11
  162. package/dist/firstRun/firstRunPlanner.js.map +1 -1
  163. package/dist/firstRun/firstRunRunner.js +8 -8
  164. package/dist/firstRun/firstRunRunner.js.map +1 -1
  165. package/dist/firstRun/generatedDataPolicy.js +9 -9
  166. package/dist/firstRun/generatedDataPolicy.js.map +1 -1
  167. package/dist/firstRun/inputPlanner.js +5 -5
  168. package/dist/firstRun/inputPlanner.js.map +1 -1
  169. package/dist/firstRun/onboardingStateMachine.js +1 -1
  170. package/dist/firstRun/onboardingStateMachine.js.map +1 -1
  171. package/dist/firstRun/paywallPolicy.js +3 -3
  172. package/dist/firstRun/paywallPolicy.js.map +1 -1
  173. package/dist/firstRun/types.js +1 -1
  174. package/dist/firstRun/types.js.map +1 -1
  175. package/dist/fixtures/catalog.js +33 -3
  176. package/dist/fixtures/catalog.js.map +1 -1
  177. package/dist/fixtures/load.js +50 -0
  178. package/dist/fixtures/load.js.map +1 -0
  179. package/dist/flows/discover.js +2 -2
  180. package/dist/flows/discover.js.map +1 -1
  181. package/dist/flows/generate.js +20 -10
  182. package/dist/flows/generate.js.map +1 -1
  183. package/dist/flows/pack.js +3 -3
  184. package/dist/flows/pack.js.map +1 -1
  185. package/dist/flows/paths.js +57 -0
  186. package/dist/flows/paths.js.map +1 -0
  187. package/dist/flows/repair.js +111 -23
  188. package/dist/flows/repair.js.map +1 -1
  189. package/dist/flows/run.js +153 -57
  190. package/dist/flows/run.js.map +1 -1
  191. package/dist/flows/schema.js +50 -5
  192. package/dist/flows/schema.js.map +1 -1
  193. package/dist/flows/seedExec.js +4 -4
  194. package/dist/flows/seedExec.js.map +1 -1
  195. package/dist/flows/templates.js +5 -5
  196. package/dist/index.js +50 -8
  197. package/dist/index.js.map +1 -1
  198. package/dist/issues/classify.js +16 -16
  199. package/dist/issues/classify.js.map +1 -1
  200. package/dist/issues/fingerprint.js +24 -4
  201. package/dist/issues/fingerprint.js.map +1 -1
  202. package/dist/issues/index.js +94 -31
  203. package/dist/issues/index.js.map +1 -1
  204. package/dist/issues/metrics.js +4 -4
  205. package/dist/issues/metrics.js.map +1 -1
  206. package/dist/issues/recurrence.js +35 -8
  207. package/dist/issues/recurrence.js.map +1 -1
  208. package/dist/issues/report.js +4 -4
  209. package/dist/issues/report.js.map +1 -1
  210. package/dist/issues/reportBridge.js +4 -4
  211. package/dist/issues/reportBridge.js.map +1 -1
  212. package/dist/issues/schema.js +2 -2
  213. package/dist/issues/schema.js.map +1 -1
  214. package/dist/issues/sourceRevision.js +2 -2
  215. package/dist/issues/sourceRevision.js.map +1 -1
  216. package/dist/issues/store.js +110 -32
  217. package/dist/issues/store.js.map +1 -1
  218. package/dist/lib/abortScope.js +48 -0
  219. package/dist/lib/abortScope.js.map +1 -0
  220. package/dist/lib/android.js +75 -7
  221. package/dist/lib/android.js.map +1 -1
  222. package/dist/lib/coordSpace.js +1 -1
  223. package/dist/lib/coordSpace.js.map +1 -1
  224. package/dist/lib/device.js +32 -7
  225. package/dist/lib/device.js.map +1 -1
  226. package/dist/lib/gestures.js +141 -0
  227. package/dist/lib/gestures.js.map +1 -0
  228. package/dist/lib/gitignore.js +4 -3
  229. package/dist/lib/gitignore.js.map +1 -1
  230. package/dist/lib/image.js +1 -1
  231. package/dist/lib/image.js.map +1 -1
  232. package/dist/lib/lockfile.js +370 -31
  233. package/dist/lib/lockfile.js.map +1 -1
  234. package/dist/lib/needsInput.js +3 -3
  235. package/dist/lib/needsInput.js.map +1 -1
  236. package/dist/lib/png.js +2 -2
  237. package/dist/lib/png.js.map +1 -1
  238. package/dist/lib/redact.js +170 -9
  239. package/dist/lib/redact.js.map +1 -1
  240. package/dist/lib/result.js +79 -10
  241. package/dist/lib/result.js.map +1 -1
  242. package/dist/lib/schemaHash.js +3 -3
  243. package/dist/lib/schemaHash.js.map +1 -1
  244. package/dist/lib/sensitive.js +3 -2
  245. package/dist/lib/sensitive.js.map +1 -1
  246. package/dist/lib/simctl.js +3 -3
  247. package/dist/lib/simctl.js.map +1 -1
  248. package/dist/lib/spawn.js +52 -10
  249. package/dist/lib/spawn.js.map +1 -1
  250. package/dist/lib/toolAnnotations.js +114 -0
  251. package/dist/lib/toolAnnotations.js.map +1 -0
  252. package/dist/lib/wda.js +294 -15
  253. package/dist/lib/wda.js.map +1 -1
  254. package/dist/mobileAudit/checks.js +12 -12
  255. package/dist/mobileAudit/checks.js.map +1 -1
  256. package/dist/mobileAudit/evidence.js +4 -4
  257. package/dist/mobileAudit/evidence.js.map +1 -1
  258. package/dist/mobileAudit/profiles.js +1 -1
  259. package/dist/mobileAudit/profiles.js.map +1 -1
  260. package/dist/mobileAudit/results.js +3 -3
  261. package/dist/mobileAudit/results.js.map +1 -1
  262. package/dist/mobileAudit/runner.js +72 -18
  263. package/dist/mobileAudit/runner.js.map +1 -1
  264. package/dist/oracle/auth.js +1 -1
  265. package/dist/oracle/auth.js.map +1 -1
  266. package/dist/oracle/failures.js +219 -36
  267. package/dist/oracle/failures.js.map +1 -1
  268. package/dist/oracle/health.js +63 -17
  269. package/dist/oracle/health.js.map +1 -1
  270. package/dist/oracle/locator.js +13 -13
  271. package/dist/oracle/locator.js.map +1 -1
  272. package/dist/oracle/record.js +3 -3
  273. package/dist/oracle/record.js.map +1 -1
  274. package/dist/orchestration/envelope.js +2 -2
  275. package/dist/orchestration/envelope.js.map +1 -1
  276. package/dist/orchestration/goal.js +4 -4
  277. package/dist/orchestration/goal.js.map +1 -1
  278. package/dist/orchestration/testThis/execute.js +62 -21
  279. package/dist/orchestration/testThis/execute.js.map +1 -1
  280. package/dist/orchestration/testThis/pipeline.js +119 -30
  281. package/dist/orchestration/testThis/pipeline.js.map +1 -1
  282. package/dist/orchestration/testThis/plan.js +162 -73
  283. package/dist/orchestration/testThis/plan.js.map +1 -1
  284. package/dist/orchestration/testThis/sessionIntent.js +72 -0
  285. package/dist/orchestration/testThis/sessionIntent.js.map +1 -0
  286. package/dist/orchestration/testThis/terminal.js +34 -16
  287. package/dist/orchestration/testThis/terminal.js.map +1 -1
  288. package/dist/orchestration/testThis/types.js +1 -1
  289. package/dist/orchestration/testThis/types.js.map +1 -1
  290. package/dist/plan/plan.js +9 -9
  291. package/dist/plan/plan.js.map +1 -1
  292. package/dist/prompts/index.js +22 -22
  293. package/dist/prompts/index.js.map +1 -1
  294. package/dist/report/export.js +392 -37
  295. package/dist/report/export.js.map +1 -1
  296. package/dist/report/findingsDedupe.js +41 -0
  297. package/dist/report/findingsDedupe.js.map +1 -0
  298. package/dist/report/policy.js +7 -4
  299. package/dist/report/policy.js.map +1 -1
  300. package/dist/report/qaLevel.js +8 -8
  301. package/dist/report/qaLevel.js.map +1 -1
  302. package/dist/report/sarifSources.js +160 -0
  303. package/dist/report/sarifSources.js.map +1 -0
  304. package/dist/report/summary.js +2 -2
  305. package/dist/report/summary.js.map +1 -1
  306. package/dist/report/testCatalog.js +4 -4
  307. package/dist/report/testCatalog.js.map +1 -1
  308. package/dist/report/toolHealth.js +124 -0
  309. package/dist/report/toolHealth.js.map +1 -0
  310. package/dist/server.js +472 -45
  311. package/dist/server.js.map +1 -1
  312. package/dist/services/automationGenerate.js +8 -2
  313. package/dist/services/automationGenerate.js.map +1 -1
  314. package/dist/services/build.js +2 -2
  315. package/dist/services/build.js.map +1 -1
  316. package/dist/{tools → services}/flowGenerate.js +29 -13
  317. package/dist/services/flowGenerate.js.map +1 -0
  318. package/dist/services/preflight.js +4 -4
  319. package/dist/services/preflight.js.map +1 -1
  320. package/dist/services/prepareAndroid.js +46 -8
  321. package/dist/services/prepareAndroid.js.map +1 -1
  322. package/dist/services/prepareIos.js +24 -9
  323. package/dist/services/prepareIos.js.map +1 -1
  324. package/dist/services/report.js +100 -45
  325. package/dist/services/report.js.map +1 -1
  326. package/dist/services/smoke.js +32 -16
  327. package/dist/services/smoke.js.map +1 -1
  328. package/dist/services/suiteGenerate.js +28 -3
  329. package/dist/services/suiteGenerate.js.map +1 -1
  330. package/dist/services/testSuiteKnowledge.js +40 -27
  331. package/dist/services/testSuiteKnowledge.js.map +1 -1
  332. package/dist/session/attach.js +270 -6
  333. package/dist/session/attach.js.map +1 -1
  334. package/dist/session/processRegistry.js +317 -48
  335. package/dist/session/processRegistry.js.map +1 -1
  336. package/dist/session/progress.js +1 -1
  337. package/dist/session/retention.js +201 -0
  338. package/dist/session/retention.js.map +1 -0
  339. package/dist/session/store.js +275 -48
  340. package/dist/session/store.js.map +1 -1
  341. package/dist/snapshot/overlays.js +53 -8
  342. package/dist/snapshot/overlays.js.map +1 -1
  343. package/dist/snapshot/parse.js +28 -4
  344. package/dist/snapshot/parse.js.map +1 -1
  345. package/dist/snapshot/present.js +11 -5
  346. package/dist/snapshot/present.js.map +1 -1
  347. package/dist/snapshot/settle.js +39 -9
  348. package/dist/snapshot/settle.js.map +1 -1
  349. package/dist/state/consent.js +99 -0
  350. package/dist/state/consent.js.map +1 -0
  351. package/dist/state/profile.js +46 -2
  352. package/dist/state/profile.js.map +1 -1
  353. package/dist/suite/compile.js +9 -5
  354. package/dist/suite/compile.js.map +1 -1
  355. package/dist/suite/lint.js +4 -4
  356. package/dist/suite/lint.js.map +1 -1
  357. package/dist/suite/pom.js +50 -41
  358. package/dist/suite/pom.js.map +1 -1
  359. package/dist/suite/secretGuard.js +266 -0
  360. package/dist/suite/secretGuard.js.map +1 -0
  361. package/dist/suite/testcase.js +9 -7
  362. package/dist/suite/testcase.js.map +1 -1
  363. package/dist/testSuite/exporter.js +4 -4
  364. package/dist/testSuite/exporter.js.map +1 -1
  365. package/dist/testSuite/generator.js +13 -9
  366. package/dist/testSuite/generator.js.map +1 -1
  367. package/dist/testSuite/history.js +1 -1
  368. package/dist/testSuite/history.js.map +1 -1
  369. package/dist/testSuite/issueLinks.js +3 -3
  370. package/dist/testSuite/issueLinks.js.map +1 -1
  371. package/dist/testSuite/lint.js +4 -4
  372. package/dist/testSuite/lint.js.map +1 -1
  373. package/dist/testSuite/merge.js +5 -5
  374. package/dist/testSuite/merge.js.map +1 -1
  375. package/dist/testSuite/schema.js +5 -5
  376. package/dist/testSuite/schema.js.map +1 -1
  377. package/dist/testSuite/store.js +3 -3
  378. package/dist/testSuite/store.js.map +1 -1
  379. package/dist/testSuite/traceability.js +2 -2
  380. package/dist/testSuite/traceability.js.map +1 -1
  381. package/dist/tools/act.js +794 -164
  382. package/dist/tools/act.js.map +1 -1
  383. package/dist/tools/agent.js +451 -128
  384. package/dist/tools/agent.js.map +1 -1
  385. package/dist/tools/appControl.js +69 -19
  386. package/dist/tools/appControl.js.map +1 -1
  387. package/dist/tools/appMap.js +188 -130
  388. package/dist/tools/appMap.js.map +1 -1
  389. package/dist/tools/build.js +32 -42
  390. package/dist/tools/build.js.map +1 -1
  391. package/dist/tools/bundletool.js +21 -31
  392. package/dist/tools/bundletool.js.map +1 -1
  393. package/dist/tools/clearOverlay.js +55 -12
  394. package/dist/tools/clearOverlay.js.map +1 -1
  395. package/dist/tools/device.js +76 -24
  396. package/dist/tools/device.js.map +1 -1
  397. package/dist/tools/doctor.js +68 -28
  398. package/dist/tools/doctor.js.map +1 -1
  399. package/dist/tools/explore.js +41 -47
  400. package/dist/tools/explore.js.map +1 -1
  401. package/dist/tools/featureTesting.js +31 -48
  402. package/dist/tools/featureTesting.js.map +1 -1
  403. package/dist/tools/firstRun.js +34 -41
  404. package/dist/tools/firstRun.js.map +1 -1
  405. package/dist/tools/flow.js +183 -103
  406. package/dist/tools/flow.js.map +1 -1
  407. package/dist/tools/flowRepair.js +25 -13
  408. package/dist/tools/flowRepair.js.map +1 -1
  409. package/dist/tools/generate.js +52 -89
  410. package/dist/tools/generate.js.map +1 -1
  411. package/dist/tools/getArtifact.js +16 -5
  412. package/dist/tools/getArtifact.js.map +1 -1
  413. package/dist/tools/health.js +15 -12
  414. package/dist/tools/health.js.map +1 -1
  415. package/dist/tools/ios.js +45 -223
  416. package/dist/tools/ios.js.map +1 -1
  417. package/dist/tools/issues.js +251 -35
  418. package/dist/tools/issues.js.map +1 -1
  419. package/dist/tools/jobs.js +41 -16
  420. package/dist/tools/jobs.js.map +1 -1
  421. package/dist/tools/metro.js +36 -35
  422. package/dist/tools/metro.js.map +1 -1
  423. package/dist/tools/mobileAudit.js +50 -45
  424. package/dist/tools/mobileAudit.js.map +1 -1
  425. package/dist/tools/network.js +31 -14
  426. package/dist/tools/network.js.map +1 -1
  427. package/dist/tools/note.js +26 -26
  428. package/dist/tools/note.js.map +1 -1
  429. package/dist/tools/prepareIosTarget.js +10 -16
  430. package/dist/tools/prepareIosTarget.js.map +1 -1
  431. package/dist/tools/prepareTarget.js +117 -50
  432. package/dist/tools/prepareTarget.js.map +1 -1
  433. package/dist/tools/report.js +11 -22
  434. package/dist/tools/report.js.map +1 -1
  435. package/dist/tools/resolveArtifact.js +11 -15
  436. package/dist/tools/resolveArtifact.js.map +1 -1
  437. package/dist/tools/resolveTarget.js +78 -24
  438. package/dist/tools/resolveTarget.js.map +1 -1
  439. package/dist/tools/screenRecord.js +23 -21
  440. package/dist/tools/screenRecord.js.map +1 -1
  441. package/dist/tools/screenshot.js +23 -16
  442. package/dist/tools/screenshot.js.map +1 -1
  443. package/dist/tools/smoke.js +20 -16
  444. package/dist/tools/smoke.js.map +1 -1
  445. package/dist/tools/snapshot.js +155 -118
  446. package/dist/tools/snapshot.js.map +1 -1
  447. package/dist/tools/startSession.js +104 -116
  448. package/dist/tools/startSession.js.map +1 -1
  449. package/dist/tools/suite.js +72 -43
  450. package/dist/tools/suite.js.map +1 -1
  451. package/dist/tools/testSuite.js +30 -20
  452. package/dist/tools/testSuite.js.map +1 -1
  453. package/dist/tools/testThis.js +24 -28
  454. package/dist/tools/testThis.js.map +1 -1
  455. package/dist/tools/visual.js +686 -210
  456. package/dist/tools/visual.js.map +1 -1
  457. package/dist/tools/wait.js +9 -38
  458. package/dist/tools/wait.js.map +1 -1
  459. package/dist/tools/wda.js +187 -57
  460. package/dist/tools/wda.js.map +1 -1
  461. package/dist/version.js +31 -22
  462. package/dist/version.js.map +1 -1
  463. package/dist/visual/ocr.js +53 -6
  464. package/dist/visual/ocr.js.map +1 -1
  465. package/dist/visual/provider.js +80 -12
  466. package/dist/visual/provider.js.map +1 -1
  467. package/docs/README.md +24 -10
  468. package/docs/ci-reports.md +328 -0
  469. package/docs/concepts.md +227 -0
  470. package/docs/flows.md +153 -0
  471. package/docs/mcp-server.md +194 -128
  472. package/docs/physical-devices.md +84 -0
  473. package/docs/tools.md +812 -152
  474. package/package.json +3 -2
  475. package/dist/tools/assertVisual.js +0 -84
  476. package/dist/tools/assertVisual.js.map +0 -1
  477. package/dist/tools/automationGenerate.js.map +0 -1
  478. package/dist/tools/capabilities.js +0 -179
  479. package/dist/tools/capabilities.js.map +0 -1
  480. package/dist/tools/detectContext.js +0 -41
  481. package/dist/tools/detectContext.js.map +0 -1
  482. package/dist/tools/flowGenerate.js.map +0 -1
  483. package/dist/tools/history.js +0 -86
  484. package/dist/tools/history.js.map +0 -1
  485. package/dist/tools/locator.js +0 -85
  486. package/dist/tools/locator.js.map +0 -1
  487. package/dist/tools/permissions.js +0 -174
  488. package/dist/tools/permissions.js.map +0 -1
  489. package/dist/tools/plan.js +0 -52
  490. package/dist/tools/plan.js.map +0 -1
  491. package/dist/tools/screenInfo.js +0 -76
  492. package/dist/tools/screenInfo.js.map +0 -1
  493. package/dist/tools/seed.js +0 -133
  494. package/dist/tools/seed.js.map +0 -1
  495. package/dist/tools/state.js +0 -217
  496. package/dist/tools/state.js.map +0 -1
  497. package/dist/tools/visualText.js +0 -106
  498. package/dist/tools/visualText.js.map +0 -1
@@ -2,16 +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
+ }
6
105
  /** TEST SEAM (P1 §6). When set, getDriver() binds the driver this factory returns instead of
7
- * discovering a real device — so handler-level tests can drive tools with a fake driver and no
106
+ * discovering a real device, so handler-level tests can drive tools with a fake driver and no
8
107
  * adb. Never set in production code paths; a no-op unless a test installs it. */
9
108
  let testDriverFactory;
10
109
  export function setDriverFactoryForTests(factory) {
11
110
  testDriverFactory = factory;
12
111
  }
13
112
  export async function resolveDevice(session, prefer) {
14
- // Test-isolation hook (SWIPIUM-REQ-08 regression requirement): when set, device auto-discovery is
113
+ // Test-isolation hook: when set, device auto-discovery is
15
114
  // disabled so "no device" tests assert no-device behavior even on a machine with a live emulator.
16
115
  if (process.env.SWIPIUM_DISABLE_DEVICE_DISCOVERY) {
17
116
  return { sessionDevice: undefined, available: [], effective: undefined, needSelection: false, source: 'none' };
@@ -39,10 +138,20 @@ export function bindDevice(session, serial) {
39
138
  return driver;
40
139
  }
41
140
  export async function getDriver(session) {
42
- 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
+ }
43
151
  return { driver: session.driver, rehydrated: false };
152
+ }
44
153
  if (testDriverFactory) {
45
- // Tests own device resolution entirely — never fall through to real adb discovery.
154
+ // Tests own device resolution entirely. Never fall through to real adb discovery.
46
155
  const driver = testDriverFactory(session);
47
156
  if (!driver)
48
157
  return { driver: undefined, rehydrated: false, needSelection: false };
@@ -50,14 +159,169 @@ export async function getDriver(session) {
50
159
  session.device = session.device ?? driver.currentDevice() ?? 'test-device';
51
160
  return { driver, rehydrated: false };
52
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);
53
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
+ }
54
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 };
55
193
  bindDevice(session, res.effective);
56
194
  session.lastSnapshot = undefined; // refs invalid after (re)bind
57
195
  return { driver: session.driver, rehydrated: true };
58
196
  }
59
197
  return { driver: undefined, rehydrated: false, needSelection: res.needSelection };
60
198
  }
61
- export const REHYDRATE_NOTE = 'Note: reattached the device transport after a restart — the app may not be in the ' +
62
- '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).';
63
327
  //# sourceMappingURL=attach.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../src/session/attach.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../src/session/attach.ts"],"names":[],"mappings":"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"}