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
@@ -1 +1 @@
1
- {"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/tools/health.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAEnE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,QAAsB;IAC3E,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,0PAA0P;QAC5P,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE;KACvC,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACtB,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC9E,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC;gBACb,IAAI,EAAE,oCAAoC;gBAC1C,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,CAAC,+BAA+B,CAAC;aAC7C,CAAC,CAAC;QACL,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB;QAC7G,MAAM,OAAO,GACX,kBAAkB,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,YAAY,EAAE,KAAK;YACjF,eAAe,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,iBAAiB,MAAM,CAAC,UAAU,IAAI;YACpJ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM;gBACrB,CAAC,CAAC,MAAM,CAAC,QAAQ;qBACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;qBAC/G,IAAI,CAAC,IAAI,CAAC;gBACf,CAAC,CAAC,aAAa,CAAC,CAAC;QACrB,OAAO,IAAI,CACT;YACE,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,EACD,OAAO,CACR,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/tools/health.ts"],"names":[],"mappings":"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"}
package/dist/tools/ios.js CHANGED
@@ -1,21 +1,30 @@
1
- // qa_ios (PHASE3-PLAN Phase 11) — iOS Simulator control via simctl. Boots/selects a simulator,
2
- // installs a .app, launches/terminates, opens deep links, resets privacy, erases, and captures
3
- // screenshots. Booting/launching binds a SimctlDriver into the session so the shared visual tools
4
- // (qa_screenshot, qa_assert_visual, qa_report) work on iOS unchanged. Structured
5
- // interaction (tap/type/snapshot) is intentionally unsupported here and reported as such.
1
+ // qa_ios: iOS Simulator control via simctl. Boots/selects a simulator,
2
+ // installs a .app, launches/terminates, opens deep links, resets privacy, and erases. Booting/
3
+ // launching binds a SimctlDriver into the session so the shared visual tools (qa_screenshot,
4
+ // qa_visual, qa_report) work on iOS unchanged. Screenshots go through qa_screenshot (secure-field
5
+ // guard + budget) and WebDriverAgent through qa_wda. qa_ios no longer duplicates either.
6
6
  import { z } from 'zod';
7
7
  import { existsSync } from 'node:fs';
8
8
  import { isAbsolute, join } from 'node:path';
9
- import { qaOk, qaError } from '../lib/result.js';
9
+ import { qaOk, qaError, unknownSessionError } from '../lib/result.js';
10
10
  import { requireConsent, consumeConsent } from '../consent/consent.js';
11
11
  import { sensitiveRefusal } from '../lib/sensitive.js';
12
- import { captureCoordinateSpace } from '../lib/coordSpace.js';
13
12
  import { SimctlDriver } from '../drivers/SimctlDriver.js';
14
- import { WdaDriver } from '../drivers/WdaDriver.js';
15
- import { checkWda, classifyWdaConnectionFailure, createWdaSession, wdaSessionUdidMismatch } from '../lib/wda.js';
16
- import { loadWdaConfig, wdaUrlAllowedByConfig } from '../lib/wdaConfig.js';
17
- import { recordWdaTiming } from '../lib/wdaTune.js';
18
13
  import * as sim from '../lib/simctl.js';
14
+ import { WdaDriver, invalidateWdaPageSource } from '../drivers/WdaDriver.js';
15
+ import { isSimulatorUdid } from '../session/attach.js';
16
+ /** The simulator UDID this session drives, whatever the iOS backend (SimctlDriver, or WdaDriver
17
+ * after qa_wda attach): session.device, else the driver's own device. Undefined when nothing is
18
+ * bound, or the bound device is not a simulator (an adb serial / a physical iOS device; simctl
19
+ * cannot drive either). Exported for tests. */
20
+ export function boundSimulatorUdid(session) {
21
+ const driver = session.driver;
22
+ const iosDriver = driver instanceof SimctlDriver || driver instanceof WdaDriver;
23
+ const udid = session.device ?? (iosDriver ? driver.currentDevice() : undefined);
24
+ if (!udid)
25
+ return undefined;
26
+ return isSimulatorUdid(udid) ? udid : undefined;
27
+ }
19
28
  /** Ensure a SimctlDriver is bound for `udid` and recorded on the session. */
20
29
  function bind(sessions, session, udid) {
21
30
  const driver = session.driver instanceof SimctlDriver ? session.driver : new SimctlDriver(udid);
@@ -25,47 +34,19 @@ function bind(sessions, session, udid) {
25
34
  sessions.persist(session);
26
35
  return driver;
27
36
  }
28
- function isLoopback(raw) {
29
- try {
30
- const u = new URL(raw);
31
- return u.protocol === 'http:' && ['127.0.0.1', 'localhost', '::1'].includes(u.hostname);
32
- }
33
- catch {
34
- return false;
35
- }
36
- }
37
37
  export function registerIos(server, sessions) {
38
38
  server.registerTool('qa_ios', {
39
39
  title: 'iOS simulator control',
40
- description: 'Control an iOS Simulator (macOS only) and attach an external WDA backend. actions: list (available simulators), boot (boot/select one — binds it to the session), install (a .app, consent-gated), launch (a bundle id), terminate, openurl (deep link), screenshot, logs, privacy_reset (consent-gated), erase (consent-gated, wipes the device), wda_status, wda_attach. After boot/launch, qa_screenshot / qa_assert_visual / qa_report work on the simulator. For structured iOS tap/type/snapshot, attach WDA with action:"wda_attach".',
40
+ description: 'Control an iOS Simulator (macOS only). actions: list, boot (binds it to the session), install (.app, consent-gated), launch, ' +
41
+ 'terminate, openurl (deep link), logs, privacy_reset (consent-gated), erase (consent-gated, wipes the simulator). Screenshots: ' +
42
+ 'qa_screenshot; WebDriverAgent (structured tap/type/snapshot): qa_wda.',
41
43
  inputSchema: {
42
44
  sessionId: z.string(),
43
- action: z.enum([
44
- 'list',
45
- 'boot',
46
- 'install',
47
- 'launch',
48
- 'terminate',
49
- 'openurl',
50
- 'screenshot',
51
- 'logs',
52
- 'privacy_reset',
53
- 'erase',
54
- 'wda_status',
55
- 'wda_attach',
56
- ]),
57
- device: z
58
- .string()
59
- .optional()
60
- .describe('Simulator udid or name substring (for boot/erase), or expected WDA device UDID for wda_attach.'),
45
+ action: z.enum(['list', 'boot', 'install', 'launch', 'terminate', 'openurl', 'logs', 'privacy_reset', 'erase']),
46
+ device: z.string().optional().describe('Simulator udid or name substring (for boot/erase).'),
61
47
  app: z.string().optional().describe('Path to a .app bundle (for install); absolute or relative to the project root.'),
62
- bundleId: z.string().optional().describe('App bundle id (for launch/terminate/privacy_reset/wda_attach).'),
48
+ bundleId: z.string().optional().describe('App bundle id (for launch/terminate/privacy_reset).'),
63
49
  url: z.string().optional().describe('Deep link (for openurl).'),
64
- webDriverAgentUrl: z
65
- .string()
66
- .optional()
67
- .describe('External WebDriverAgent base URL for wda_status/wda_attach. Defaults to http://127.0.0.1:8100.'),
68
- allowNonLoopback: z.boolean().optional().describe('Required to use a non-loopback WDA URL.'),
69
50
  last: z.string().optional().describe('Time range for logs, e.g. 5m, 30m, 1h. Defaults to 5m.'),
70
51
  service: z.string().optional().describe('Privacy service for privacy_reset (e.g. location, photos, camera, all).'),
71
52
  consentId: z.string().optional(),
@@ -75,158 +56,7 @@ export function registerIos(server, sessions) {
75
56
  const { sessionId, action } = args;
76
57
  const session = sessions.get(sessionId);
77
58
  if (!session) {
78
- return qaError({
79
- what: `Unknown sessionId ${sessionId}`,
80
- changedState: false,
81
- retrySafe: true,
82
- nextSteps: ['Call qa_start_session first.'],
83
- });
84
- }
85
- if (action === 'wda_status' || action === 'wda_attach') {
86
- const wdaConfig = loadWdaConfig(session.root);
87
- const url = (args.webDriverAgentUrl ?? wdaConfig.url).replace(/\/+$/, '');
88
- const loopback = isLoopback(url);
89
- const configAllowed = !loopback && wdaUrlAllowedByConfig(wdaConfig, url);
90
- if (!loopback && !args.allowNonLoopback && !configAllowed) {
91
- return qaError({
92
- what: 'Refused non-loopback WDA URL',
93
- changedState: false,
94
- retrySafe: false,
95
- failureCode: 'DESTRUCTIVE_REFUSED',
96
- nextSteps: [
97
- 'Use a localhost WDA URL, pass allowNonLoopback with explicit consent, or add this exact URL to ios.wda.allowNonLoopbackUrls for a trusted isolated automation network.',
98
- ],
99
- });
100
- }
101
- if (!loopback && !configAllowed) {
102
- const gate = consumeConsent(args.consentId, args.approve, { action: 'wda_non_loopback', affects: { url } });
103
- if (!gate.approved) {
104
- return requireConsent({
105
- action: 'wda_non_loopback',
106
- risk: 'medium',
107
- affects: { url },
108
- explain: `Use non-loopback WebDriverAgent URL ${url}? WDA is an automation server; only approve this on a trusted, isolated network.`,
109
- });
110
- }
111
- }
112
- const status = await checkWda(url);
113
- const targetUdid = args.device ?? session.device;
114
- const base = {
115
- webDriverAgentUrl: url,
116
- wda: status,
117
- device: targetUdid ?? null,
118
- sessionActive: session.driver instanceof WdaDriver,
119
- driverKind: session.driver?.kind ?? null,
120
- };
121
- if (action === 'wda_status') {
122
- return qaOk(base, `iOS WDA status: ${status.reachable ? 'reachable' : 'unreachable'} at ${url}${targetUdid ? ` device=${targetUdid}` : ''}`);
123
- }
124
- if (!targetUdid) {
125
- return qaError({
126
- what: 'Refused ambiguous WDA attach without a device UDID',
127
- changedState: false,
128
- retrySafe: true,
129
- failureCode: 'MULTIPLE_DEVICES',
130
- nextSteps: ['Pass device with the simulator/device UDID, or bind the session to a simulator first.'],
131
- }, base);
132
- }
133
- if (session.device && session.device !== targetUdid) {
134
- return qaError({
135
- what: `Refused ambiguous WDA/device mapping: session is bound to ${session.device}, but qa_ios wda_attach was asked to use ${targetUdid}`,
136
- changedState: false,
137
- retrySafe: false,
138
- failureCode: 'STALE_WDA_DEVICE',
139
- nextSteps: ['Use the session-bound device, or start a new session for the other WDA/device pair.'],
140
- }, base);
141
- }
142
- if (!status.reachable) {
143
- return qaError({
144
- what: `WDA server unavailable at ${url}`,
145
- changedState: false,
146
- retrySafe: true,
147
- failureCode: classifyWdaConnectionFailure(status.error ?? 'unreachable'),
148
- nextSteps: ['Start WebDriverAgent externally, confirm /status responds, then retry qa_ios wda_attach.'],
149
- }, base);
150
- }
151
- try {
152
- const bundleId = args.bundleId ?? session.appId ?? undefined;
153
- const sessionOptions = { bundleId, udid: targetUdid, capabilities: wdaConfig.capabilities, settings: wdaConfig.settings };
154
- const createStarted = Date.now();
155
- let created;
156
- try {
157
- created = await createWdaSession(url, sessionOptions);
158
- }
159
- finally {
160
- recordWdaTiming(session, 'session_create', Date.now() - createStarted, sessions);
161
- }
162
- const mismatchedUdid = wdaSessionUdidMismatch(created.capabilities, targetUdid);
163
- if (mismatchedUdid) {
164
- sessions.recordMutation(session, {
165
- tool: 'qa_ios',
166
- action: 'wda_attach',
167
- risk: 'medium',
168
- target: { webDriverAgentUrl: url, device: targetUdid, bundleId: bundleId ?? null, reportedDevice: mismatchedUdid },
169
- consent: { required: !loopback && !configAllowed, approved: !!configAllowed || loopback || !!args.approve },
170
- status: 'blocked',
171
- detail: 'WDA reported a different device',
172
- });
173
- return qaError({
174
- what: `Refused stale WDA session: WDA reported device ${mismatchedUdid}, but qa_ios wda_attach requested ${targetUdid}`,
175
- changedState: false,
176
- retrySafe: false,
177
- failureCode: 'STALE_WDA_DEVICE',
178
- nextSteps: ['Stop the stale WDA process or start a new WDA session for the intended UDID.'],
179
- }, { ...base, capabilities: created.capabilities ?? null, wdaSessionId: created.sessionId });
180
- }
181
- session.driver = new WdaDriver(url, {
182
- ...sessionOptions,
183
- sessionId: created.sessionId,
184
- onTiming: (kind, ms) => recordWdaTiming(session, kind, ms, sessions),
185
- });
186
- session.device = targetUdid;
187
- if (bundleId)
188
- session.appId = bundleId;
189
- sessions.persist(session);
190
- sessions.addEnvChange(session, `ios wda attach ${url} ${targetUdid}`);
191
- sessions.recordMutation(session, {
192
- tool: 'qa_ios',
193
- action: 'wda_attach',
194
- risk: 'medium',
195
- target: {
196
- webDriverAgentUrl: url,
197
- device: targetUdid,
198
- bundleId: bundleId ?? null,
199
- wdaSessionId: created.sessionId,
200
- capabilities: created.capabilities ?? null,
201
- },
202
- consent: { required: !loopback && !configAllowed, consentId: args.consentId, approved: true },
203
- status: 'executed',
204
- });
205
- return qaOk({ ...base, sessionActive: true, wdaSessionId: created.sessionId, capabilities: created.capabilities ?? null }, `attached WDA structured iOS backend at ${url}\nNext: qa_snapshot / qa_act / qa_flow_run can use WDA-backed structured operations.`);
206
- }
207
- catch (e) {
208
- const failureCode = classifyWdaConnectionFailure(String(e.message ?? e));
209
- sessions.recordMutation(session, {
210
- tool: 'qa_ios',
211
- action: 'wda_attach',
212
- risk: 'medium',
213
- target: { webDriverAgentUrl: url, device: targetUdid, bundleId: args.bundleId ?? session.appId ?? null },
214
- consent: {
215
- required: !loopback && !configAllowed,
216
- consentId: args.consentId,
217
- approved: !!configAllowed || loopback || !!args.approve,
218
- },
219
- status: 'blocked',
220
- detail: String(e.message ?? e),
221
- });
222
- return qaError({
223
- what: `WDA session creation failed: ${String(e.message ?? e)}`,
224
- changedState: false,
225
- retrySafe: true,
226
- failureCode,
227
- nextSteps: ['Confirm WDA is paired with the intended simulator/device and that the app bundle id is installed.'],
228
- }, base);
229
- }
59
+ return unknownSessionError(sessionId);
230
60
  }
231
61
  if (!(await sim.simctlAvailable())) {
232
62
  return qaError({
@@ -265,6 +95,7 @@ export function registerIos(server, sessions) {
265
95
  });
266
96
  try {
267
97
  sessions.milestone(session, 'simulator_boot_start');
98
+ invalidateWdaPageSource(pick.udid); // the screen changes outside WDA: drop cached page sources
268
99
  await sim.boot(pick.udid);
269
100
  sessions.milestone(session, 'simulator_boot_end');
270
101
  }
@@ -291,15 +122,18 @@ export function registerIos(server, sessions) {
291
122
  consent: { required: false, approved: true },
292
123
  status: 'executed',
293
124
  });
294
- return qaOk({ udid: pick.udid, name: pick.name, runtime: pick.runtime, bound: true }, `booted + bound ${pick.name} [${pick.runtime}]\nNext: qa_ios install/launch, then qa_screenshot / qa_assert_visual.`);
125
+ return qaOk({ udid: pick.udid, name: pick.name, runtime: pick.runtime, bound: true }, `booted + bound ${pick.name} [${pick.runtime}]\nNext: qa_ios install/launch, then qa_screenshot / qa_visual.`);
295
126
  }
296
127
  // everything below needs a bound simulator
297
- const udid = session.device;
298
- if (!udid || !(session.driver instanceof SimctlDriver)) {
128
+ // Any iOS backend works here: simctl drives the SIMULATOR, not the automation backend, so a
129
+ // session attached to WebDriverAgent (qa_wda attach) keeps launch/terminate/openurl/…
130
+ const udid = boundSimulatorUdid(session);
131
+ if (!udid) {
299
132
  return qaError({
300
133
  what: 'No simulator bound to this session',
301
134
  changedState: false,
302
135
  retrySafe: true,
136
+ failureCode: 'NO_DEVICE',
303
137
  nextSteps: ['Call qa_ios { action: "boot" } first.'],
304
138
  });
305
139
  }
@@ -343,6 +177,7 @@ export function registerIos(server, sessions) {
343
177
  });
344
178
  try {
345
179
  sessions.milestone(session, 'app_install_start');
180
+ invalidateWdaPageSource(udid); // the screen changes outside WDA: drop cached page sources
346
181
  await sim.installApp(udid, appPath);
347
182
  sessions.milestone(session, 'app_install_end');
348
183
  }
@@ -390,7 +225,9 @@ export function registerIos(server, sessions) {
390
225
  return e;
391
226
  try {
392
227
  sessions.milestone(session, 'app_launch_start');
228
+ invalidateWdaPageSource(udid); // the screen changes outside WDA: drop cached page sources
393
229
  await sim.launchApp(udid, bundleId);
230
+ invalidateWdaPageSource(udid); // …and anything a concurrent read cached mid-launch
394
231
  sessions.milestone(session, 'app_launch_end');
395
232
  }
396
233
  catch (err) {
@@ -412,14 +249,16 @@ export function registerIos(server, sessions) {
412
249
  consent: { required: false, approved: true },
413
250
  status: 'executed',
414
251
  });
415
- return qaOk({ launched: true, bundleId }, `launched ${bundleId}. Use qa_screenshot / qa_assert_visual to verify.`);
252
+ return qaOk({ launched: true, bundleId }, `launched ${bundleId}. Use qa_screenshot / qa_visual to verify.`);
416
253
  }
417
254
  if (action === 'terminate') {
418
255
  const bundleId = args.bundleId ?? session.appId;
419
256
  const e = need(bundleId ?? undefined, 'bundleId');
420
257
  if (e)
421
258
  return e;
259
+ invalidateWdaPageSource(udid); // the screen changes outside WDA: drop cached page sources
422
260
  await sim.terminateApp(udid, bundleId);
261
+ invalidateWdaPageSource(udid);
423
262
  sessions.recordMutation(session, {
424
263
  tool: 'qa_ios',
425
264
  action: 'ios_terminate',
@@ -435,6 +274,7 @@ export function registerIos(server, sessions) {
435
274
  if (e)
436
275
  return e;
437
276
  try {
277
+ invalidateWdaPageSource(udid); // the screen changes outside WDA: drop cached page sources
438
278
  await sim.openUrl(udid, args.url);
439
279
  }
440
280
  catch (err) {
@@ -456,26 +296,6 @@ export function registerIos(server, sessions) {
456
296
  });
457
297
  return qaOk({ opened: args.url }, `opened deep link ${args.url}`);
458
298
  }
459
- if (action === 'screenshot') {
460
- if (session.sensitive)
461
- return sensitiveRefusal('Screenshot');
462
- try {
463
- const png = await sim.screenshot(udid);
464
- const n = ++session.screenshotCount;
465
- const uri = sessions.saveArtifact(session, 'screenshot', `ios-${n}.png`, png, 'image/png', 'iOS simulator screenshot');
466
- sessions.bump(session, 'screenshots');
467
- const coordinateSpace = await captureCoordinateSpace(session.driver, png);
468
- return qaOk({ uri, bytes: png.length, coordinateSpace }, `screenshot → ${uri} (${coordinateSpace.screenshot?.width}x${coordinateSpace.screenshot?.height})`);
469
- }
470
- catch (err) {
471
- return qaError({
472
- what: `Screenshot failed: ${String(err)}`,
473
- changedState: false,
474
- retrySafe: true,
475
- nextSteps: ['Confirm the simulator is booted (qa_ios list).'],
476
- });
477
- }
478
- }
479
299
  if (action === 'logs') {
480
300
  if (session.sensitive)
481
301
  return sensitiveRefusal('iOS simulator logs');
@@ -483,7 +303,7 @@ export function registerIos(server, sessions) {
483
303
  try {
484
304
  const text = await sim.simulatorLogs(udid, { last: args.last, bundleId });
485
305
  const uri = sessions.saveArtifact(session, 'logs', `ios-simulator-${Date.now()}.log`, text.slice(-120_000), 'text/plain', `iOS simulator logs${bundleId ? ` for ${bundleId}` : ''}`);
486
- return qaOk({ uri, bytes: text.length, last: args.last ?? '5m', bundleId: bundleId ?? null }, `captured iOS simulator logs → ${uri}`);
306
+ return qaOk({ uri, bytes: text.length, last: args.last ?? '5m', bundleId: bundleId ?? null }, `captured iOS simulator logs > ${uri}`);
487
307
  }
488
308
  catch (err) {
489
309
  return qaError({
@@ -529,6 +349,7 @@ export function registerIos(server, sessions) {
529
349
  status: 'approved',
530
350
  });
531
351
  try {
352
+ invalidateWdaPageSource(udid); // the screen changes outside WDA: drop cached page sources
532
353
  await sim.privacyReset(udid, args.service, bundleId);
533
354
  }
534
355
  catch (err) {
@@ -589,6 +410,7 @@ export function registerIos(server, sessions) {
589
410
  status: 'approved',
590
411
  });
591
412
  try {
413
+ invalidateWdaPageSource(); // the screen changes outside WDA: drop cached page sources
592
414
  await sim.erase(target);
593
415
  }
594
416
  catch (err) {
@@ -617,7 +439,7 @@ export function registerIos(server, sessions) {
617
439
  consent: { required: true, consentId: args.consentId, approved: true },
618
440
  status: 'executed',
619
441
  });
620
- return qaOk({ erased: target }, `erased simulator ${target} (it is now shut down — qa_ios boot to use it again).`);
442
+ return qaOk({ erased: target }, `erased simulator ${target} (it is now shut down; qa_ios boot to use it again).`);
621
443
  }
622
444
  });
623
445
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ios.js","sourceRoot":"","sources":["../../src/tools/ios.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ios.js","sourceRoot":"","sources":["../../src/tools/ios.ts"],"names":[],"mappings":"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"}