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,5 +1,5 @@
1
- function sec(ms) {
2
- return ms == null ? null : Math.round((ms / 1000) * 10) / 10;
1
+ function msOrNull(ms) {
2
+ return ms == null ? null : Math.round(ms);
3
3
  }
4
4
  const WDA_TIMING_KEYS = {
5
5
  session_create: 'wda_session_create_ms',
@@ -20,37 +20,66 @@ export function recordWdaTiming(session, kind, ms, sessions) {
20
20
  return;
21
21
  session.milestones[key] = (session.milestones[key] ?? 0) + ms;
22
22
  }
23
+ // Structured output uses *Ms fields in milliseconds (1.5.0 unit normalization).
23
24
  export function wdaTimingSummary(session) {
24
25
  return {
25
- sessionCreateSec: sec(session.milestones.wda_session_create_ms),
26
- buildSec: sec(session.milestones.wda_build_end && session.milestones.wda_build_start ? session.milestones.wda_build_end - session.milestones.wda_build_start : undefined),
27
- startSec: sec(session.milestones.wda_start_end && session.milestones.wda_start_start ? session.milestones.wda_start_end - session.milestones.wda_start_start : undefined),
28
- startupWaitSec: sec(session.milestones.wda_startup_wait_ms),
29
- reuseCheckSec: sec(session.milestones.wda_reuse_check_ms),
30
- sourceSec: sec(session.milestones.wda_source_ms),
31
- findElementSec: sec(session.milestones.wda_find_element_ms),
32
- tapSec: sec(session.milestones.wda_tap_ms),
33
- typeSec: sec(session.milestones.wda_type_ms),
34
- clearSec: sec(session.milestones.wda_clear_ms),
35
- screenshotSec: sec(session.milestones.wda_screenshot_ms),
36
- flowRuntimeSec: sec(session.milestones.flow_runtime_ms),
37
- waitSec: sec(session.milestones.wait_ms),
26
+ sessionCreateMs: msOrNull(session.milestones.wda_session_create_ms),
27
+ buildMs: msOrNull(session.milestones.wda_build_end && session.milestones.wda_build_start
28
+ ? session.milestones.wda_build_end - session.milestones.wda_build_start
29
+ : undefined),
30
+ startMs: msOrNull(session.milestones.wda_start_end && session.milestones.wda_start_start
31
+ ? session.milestones.wda_start_end - session.milestones.wda_start_start
32
+ : undefined),
33
+ startupWaitMs: msOrNull(session.milestones.wda_startup_wait_ms),
34
+ reuseCheckMs: msOrNull(session.milestones.wda_reuse_check_ms),
35
+ sourceMs: msOrNull(session.milestones.wda_source_ms),
36
+ findElementMs: msOrNull(session.milestones.wda_find_element_ms),
37
+ tapMs: msOrNull(session.milestones.wda_tap_ms),
38
+ typeMs: msOrNull(session.milestones.wda_type_ms),
39
+ clearMs: msOrNull(session.milestones.wda_clear_ms),
40
+ screenshotMs: msOrNull(session.milestones.wda_screenshot_ms),
41
+ flowRuntimeMs: msOrNull(session.milestones.flow_runtime_ms),
42
+ waitMs: msOrNull(session.milestones.wait_ms),
38
43
  };
39
44
  }
40
45
  export function wdaRecommendations(config, session) {
41
46
  const timings = session ? wdaTimingSummary(session) : {};
42
47
  const out = [];
43
48
  const hasPageSourceExcludedAttributes = 'pageSourceExcludedAttributes' in config.settings;
44
- if (timings.startupWaitSec != null && timings.startupWaitSec > 30)
45
- out.push({ setting: 'reduceMotion', value: true, reason: 'WDA startup/idle wait is slow; reduce motion can lower XCTest idle delays.', failureCode: 'WDA_APP_NOT_IDLE' });
46
- if ((timings.waitSec != null && timings.waitSec > 20) || (timings.sourceSec != null && timings.sourceSec > 10))
47
- out.push({ setting: 'snapshotMaxDepth', value: config.settings.snapshotMaxDepth ?? 30, reason: 'Large/slow snapshots detected; cap snapshot depth for deeply nested accessibility trees.', failureCode: 'WDA_HIERARCHY_TOO_LARGE' });
48
- if (timings.findElementSec != null && timings.findElementSec > 10)
49
- out.push({ setting: 'pageSourceExcludedAttributes', value: config.settings.pageSourceExcludedAttributes ?? 'visible,accessible', reason: 'Slow WDA element lookup detected; prefer accessibility id/predicate/class chain and keep page-source attributes lean.', failureCode: 'WDA_SOURCE_SLOW' });
49
+ if (timings.startupWaitMs != null && timings.startupWaitMs > 30_000)
50
+ out.push({
51
+ setting: 'reduceMotion',
52
+ value: true,
53
+ reason: 'WDA startup/idle wait is slow; reduce motion can lower XCTest idle delays.',
54
+ failureCode: 'WDA_APP_NOT_IDLE',
55
+ });
56
+ if ((timings.waitMs != null && timings.waitMs > 20_000) || (timings.sourceMs != null && timings.sourceMs > 10_000))
57
+ out.push({
58
+ setting: 'snapshotMaxDepth',
59
+ value: config.settings.snapshotMaxDepth ?? 30,
60
+ reason: 'Large/slow snapshots detected; cap snapshot depth for deeply nested accessibility trees.',
61
+ failureCode: 'WDA_HIERARCHY_TOO_LARGE',
62
+ });
63
+ if (timings.findElementMs != null && timings.findElementMs > 10_000)
64
+ out.push({
65
+ setting: 'pageSourceExcludedAttributes',
66
+ value: config.settings.pageSourceExcludedAttributes ?? 'visible,accessible',
67
+ reason: 'Slow WDA element lookup detected; prefer accessibility id/predicate/class chain and keep page-source attributes lean.',
68
+ failureCode: 'WDA_SOURCE_SLOW',
69
+ });
50
70
  else if (!hasPageSourceExcludedAttributes)
51
- out.push({ setting: 'pageSourceExcludedAttributes', value: 'visible,accessible', reason: 'Avoid expensive page-source attributes unless a flow explicitly needs them.', failureCode: 'WDA_SOURCE_SLOW' });
71
+ out.push({
72
+ setting: 'pageSourceExcludedAttributes',
73
+ value: 'visible,accessible',
74
+ reason: 'Avoid expensive page-source attributes unless a flow explicitly needs them.',
75
+ failureCode: 'WDA_SOURCE_SLOW',
76
+ });
52
77
  if (!('maxTypingFrequency' in config.settings))
53
- out.push({ setting: 'maxTypingFrequency', value: 30, reason: 'Expose a conservative typing frequency for apps with flaky text entry.' });
78
+ out.push({
79
+ setting: 'maxTypingFrequency',
80
+ value: 30,
81
+ reason: 'Expose a conservative typing frequency for apps with flaky text entry.',
82
+ });
54
83
  if (!('respectSystemAlerts' in config.settings))
55
84
  out.push({ setting: 'respectSystemAlerts', value: true, reason: 'System alerts can block interaction; make alert handling explicit.' });
56
85
  return out;
@@ -1 +1 @@
1
- {"version":3,"file":"wdaTune.js","sourceRoot":"","sources":["../../src/lib/wdaTune.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wdaTune.js","sourceRoot":"","sources":["../../src/lib/wdaTune.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- // SWIPIUM-REQ-08 — executable mobile-audit checks. Each check observes the device through the
1
+ // Executable mobile-audit checks. Each check observes the device through the
2
2
  // Driver + evidence helpers and returns an honest result: it only reports `pass` when Swipium
3
3
  // actually observed the evidence; otherwise `blocked`/`not_applicable`/`skipped`/`fail`. The runner
4
4
  // (runner.ts) wraps these with id/title/profile and records issues for fail/blocked outcomes.
@@ -14,20 +14,33 @@ const skip = (reason) => ({ status: 'skipped', reason, evidenceUris: [] });
14
14
  // ---- smoke ---------------------------------------------------------------------------------
15
15
  export async function checkLaunch(ctx) {
16
16
  if (!ctx.appId)
17
- return skip('no app id known — cannot drive launch; relying on the current foreground app');
17
+ return skip('no app id known, cannot drive launch; relying on the current foreground app');
18
18
  try {
19
19
  await ctx.driver.terminateApp(ctx.appId).catch(() => { });
20
20
  await ctx.driver.launchApp(ctx.appId);
21
21
  }
22
22
  catch (e) {
23
- return { status: 'fail', category: 'app_bug', severity: 'blocker', reason: `app failed to launch: ${String(e.message ?? e)}`, evidenceUris: [], nextStep: 'Confirm the app is installed and (for debug builds) Metro is reachable.' };
23
+ return {
24
+ status: 'fail',
25
+ category: 'app_bug',
26
+ severity: 'blocker',
27
+ reason: `app failed to launch: ${String(e.message ?? e)}`,
28
+ evidenceUris: [],
29
+ nextStep: 'Confirm the app is installed and (for debug builds) Metro is reachable.',
30
+ };
24
31
  }
25
32
  const fg = await foreground(ctx);
26
33
  const shot = await captureScreenshot(ctx, 'audit launch');
27
34
  const evidence = shot ? [shot] : [];
28
35
  if (fg && ctx.appId && fg.includes(ctx.appId.split('/')[0]))
29
36
  return ok(`launched, foreground=${fg}`, evidence);
30
- return { status: 'fail', category: 'app_bug', severity: 'high', reason: `expected ${ctx.appId} foreground, saw ${fg}`, evidenceUris: evidence };
37
+ return {
38
+ status: 'fail',
39
+ category: 'app_bug',
40
+ severity: 'high',
41
+ reason: `expected ${ctx.appId} foreground, saw ${fg}`,
42
+ evidenceUris: evidence,
43
+ };
31
44
  }
32
45
  export async function checkHealthScan(ctx) {
33
46
  const h = await health(ctx);
@@ -35,10 +48,23 @@ export async function checkHealthScan(ctx) {
35
48
  const evidence = shot ? [shot] : [];
36
49
  if (!h.nativeHealthy) {
37
50
  const crash = h.nativeStatus === 'native_crash' || h.nativeStatus === 'anr';
38
- return { status: 'fail', category: 'blocker_app_bug', severity: 'blocker', reason: `native ${h.nativeStatus}`, evidenceUris: evidence, nextStep: crash ? 'Capture the crash/ANR log and fix it; do not blindly retry.' : undefined };
51
+ return {
52
+ status: 'fail',
53
+ category: 'blocker_app_bug',
54
+ severity: 'blocker',
55
+ reason: `native ${h.nativeStatus}`,
56
+ evidenceUris: evidence,
57
+ nextStep: crash ? 'Capture the crash/ANR log and fix it; do not blindly retry.' : undefined,
58
+ };
39
59
  }
40
60
  if (h.appStatus === 'error')
41
- return { status: 'fail', category: 'blocker_app_bug', severity: 'blocker', reason: 'app error surface (RedBox/error boundary)', evidenceUris: evidence };
61
+ return {
62
+ status: 'fail',
63
+ category: 'blocker_app_bug',
64
+ severity: 'blocker',
65
+ reason: 'app error surface (RedBox/error boundary)',
66
+ evidenceUris: evidence,
67
+ };
42
68
  if (h.appStatus === 'degraded')
43
69
  return { status: 'fail', category: 'app_bug', severity: 'medium', reason: 'recoverable app warning (LogBox)', evidenceUris: evidence };
44
70
  return ok(`healthy (foreground=${h.foreground})`, evidence);
@@ -53,7 +79,15 @@ export async function checkNavigation(ctx) {
53
79
  }
54
80
  let elements;
55
81
  try {
56
- elements = parseSnapshot(xml).allNodes.map((n, i) => ({ ref: `@n${i}`, role: n.cls, label: n.desc || undefined, text: n.text || undefined, id: n.id || undefined, clickable: n.clickable === true, bounds: n.bounds }));
82
+ elements = parseSnapshot(xml).allNodes.map((n, i) => ({
83
+ ref: `@n${i}`,
84
+ role: n.cls,
85
+ label: n.desc || undefined,
86
+ text: n.text || undefined,
87
+ id: n.id || undefined,
88
+ clickable: n.clickable === true,
89
+ bounds: n.bounds,
90
+ }));
57
91
  }
58
92
  catch {
59
93
  return skip('could not parse the UI tree');
@@ -71,9 +105,15 @@ export async function checkNavigation(ctx) {
71
105
  }
72
106
  const h = await health(ctx);
73
107
  if (!h.healthy)
74
- return { status: 'fail', category: 'app_bug', severity: 'high', reason: `navigation tap "${safe.label ?? ''}" produced ${h.nativeStatus}/${h.appStatus}`, evidenceUris: [] };
108
+ return {
109
+ status: 'fail',
110
+ category: 'app_bug',
111
+ severity: 'high',
112
+ reason: `navigation tap "${safe.label ?? ''}" produced ${h.nativeStatus}/${h.appStatus}`,
113
+ evidenceUris: [],
114
+ };
75
115
  const after = await foreground(ctx);
76
- return ok(`navigated safely via "${safe.label ?? safe.locator?.value ?? 'control'}" (${before}→${after})`);
116
+ return ok(`navigated safely via "${safe.label ?? safe.locator?.value ?? 'control'}" (${before} > ${after})`);
77
117
  }
78
118
  // ---- store compliance ----------------------------------------------------------------------
79
119
  function found(text, ...needles) {
@@ -83,21 +123,41 @@ export async function checkPrivacyLink(ctx, text) {
83
123
  const shot = await captureScreenshot(ctx, 'audit privacy');
84
124
  if (found(text, 'privacy policy', 'privacy notice'))
85
125
  return ok('Privacy Policy surface found', shot ? [shot] : []);
86
- return { status: 'fail', category: 'store_compliance', severity: 'high', reason: 'no Privacy Policy link found on the inspected screens', evidenceUris: shot ? [shot] : [], nextStep: 'Expose a Privacy Policy link (required for app stores).' };
126
+ return {
127
+ status: 'fail',
128
+ category: 'store_compliance',
129
+ severity: 'high',
130
+ reason: 'no Privacy Policy link found on the inspected screens',
131
+ evidenceUris: shot ? [shot] : [],
132
+ nextStep: 'Expose a Privacy Policy link (required for app stores).',
133
+ };
87
134
  }
88
135
  export async function checkTermsLink(ctx, text) {
89
136
  const shot = await captureScreenshot(ctx, 'audit terms');
90
137
  if (found(text, 'terms of service', 'terms of use', 'terms and conditions', 'terms'))
91
138
  return ok('Terms surface found', shot ? [shot] : []);
92
- return { status: 'fail', category: 'store_compliance', severity: 'medium', reason: 'no Terms link found on the inspected screens', evidenceUris: shot ? [shot] : [] };
139
+ return {
140
+ status: 'fail',
141
+ category: 'store_compliance',
142
+ severity: 'medium',
143
+ reason: 'no Terms link found on the inspected screens',
144
+ evidenceUris: shot ? [shot] : [],
145
+ };
93
146
  }
94
147
  export async function checkAccountDeletion(ctx, text) {
95
148
  const hasAccountContext = found(text, 'account', 'profile', 'sign out', 'log out', 'settings');
96
149
  if (!hasAccountContext)
97
- return na('no account/profile surface observed — account deletion not applicable here');
150
+ return na('no account/profile surface observed, account deletion not applicable here');
98
151
  if (found(text, 'delete account', 'delete your account', 'data deletion', 'close account', 'remove account'))
99
152
  return ok('account deletion / data-deletion path found');
100
- return { status: 'fail', category: 'store_compliance', severity: 'high', reason: 'account surface present but no delete-account / data-deletion path found', evidenceUris: [], nextStep: 'Expose an account/data deletion flow (required where the app has accounts).' };
153
+ return {
154
+ status: 'fail',
155
+ category: 'store_compliance',
156
+ severity: 'high',
157
+ reason: 'account surface present but no delete-account / data-deletion path found',
158
+ evidenceUris: [],
159
+ nextStep: 'Expose an account/data deletion flow (required where the app has accounts).',
160
+ };
101
161
  }
102
162
  export async function checkSubscriptionManagement(ctx, text) {
103
163
  const hasSub = found(text, 'subscribe', 'subscription', 'premium', 'free trial', 'upgrade');
@@ -105,7 +165,13 @@ export async function checkSubscriptionManagement(ctx, text) {
105
165
  return na('no subscription/paywall surface observed');
106
166
  if (found(text, 'restore purchase', 'restore purchases', 'manage subscription', 'manage your subscription'))
107
167
  return ok('restore / manage-subscription path found');
108
- return { status: 'fail', category: 'store_compliance', severity: 'medium', reason: 'subscription surface present but no restore-purchase / manage-subscription path found', evidenceUris: [] };
168
+ return {
169
+ status: 'fail',
170
+ category: 'store_compliance',
171
+ severity: 'medium',
172
+ reason: 'subscription surface present but no restore-purchase / manage-subscription path found',
173
+ evidenceUris: [],
174
+ };
109
175
  }
110
176
  export async function checkPaywall(ctx, text) {
111
177
  const isPaywall = found(text, 'subscribe', 'free trial', 'start trial', 'unlock premium', 'upgrade to');
@@ -114,10 +180,17 @@ export async function checkPaywall(ctx, text) {
114
180
  const hasFreePath = found(text, 'not now', 'maybe later', 'skip', 'continue free', 'no thanks', 'close', 'dismiss');
115
181
  if (hasFreePath)
116
182
  return ok('soft paywall with a free/dismiss path');
117
- return { status: 'blocked', category: 'hard_gate', severity: 'medium', reason: 'hard paywall with no permitted test path — recorded without purchase', evidenceUris: [], nextStep: 'A hard gate stops only this workflow, not the whole run.' };
183
+ return {
184
+ status: 'blocked',
185
+ category: 'hard_gate',
186
+ severity: 'medium',
187
+ reason: 'hard paywall with no permitted test path, recorded without purchase',
188
+ evidenceUris: [],
189
+ nextStep: 'A hard gate stops only this workflow, not the whole run.',
190
+ };
118
191
  }
119
192
  export function checkExternalLinks() {
120
- return skip('external links are not auto-opened for safety — verify manually');
193
+ return skip('external links are not auto-opened for safety; verify manually');
121
194
  }
122
195
  // ---- resilience ----------------------------------------------------------------------------
123
196
  const OFFLINE_COPY = ['no internet', 'no connection', 'offline', 'check your connection', 'network unavailable', 'no network'];
@@ -133,7 +206,13 @@ export async function checkOfflineEntry(ctx) {
133
206
  const shot = await captureScreenshot(ctx, 'audit offline');
134
207
  const evidence = shot ? [shot] : [];
135
208
  if (!h.healthy)
136
- return { status: 'fail', category: 'app_bug', severity: 'high', reason: `app unhealthy offline (${h.nativeStatus}/${h.appStatus})`, evidenceUris: evidence };
209
+ return {
210
+ status: 'fail',
211
+ category: 'app_bug',
212
+ severity: 'high',
213
+ reason: `app unhealthy offline (${h.nativeStatus}/${h.appStatus})`,
214
+ evidenceUris: evidence,
215
+ };
137
216
  if (found(text, ...OFFLINE_COPY))
138
217
  return ok('app shows an expected offline state', evidence);
139
218
  return ok('app stayed healthy offline (no explicit offline message observed)', evidence);
@@ -147,33 +226,51 @@ export async function checkNetworkRestoration(ctx) {
147
226
  }
148
227
  const h = await health(ctx);
149
228
  if (!h.healthy)
150
- return { status: 'fail', category: 'app_bug', severity: 'high', reason: `app did not recover after connectivity returned (${h.nativeStatus}/${h.appStatus})`, evidenceUris: [] };
229
+ return {
230
+ status: 'fail',
231
+ category: 'app_bug',
232
+ severity: 'high',
233
+ reason: `app did not recover after connectivity returned (${h.nativeStatus}/${h.appStatus})`,
234
+ evidenceUris: [],
235
+ };
151
236
  return ok('app recovered after network restoration');
152
237
  }
153
238
  export async function checkProcessRelaunch(ctx) {
154
239
  if (!ctx.appId)
155
- return skip('no app id known — cannot drive a kill/relaunch');
240
+ return skip('no app id known, cannot drive a kill/relaunch');
156
241
  try {
157
242
  await ctx.driver.terminateApp(ctx.appId);
158
243
  await ctx.driver.launchApp(ctx.appId);
159
244
  }
160
245
  catch (e) {
161
- return { status: 'fail', category: 'app_bug', severity: 'high', reason: `relaunch failed: ${String(e.message ?? e)}`, evidenceUris: [] };
246
+ return {
247
+ status: 'fail',
248
+ category: 'app_bug',
249
+ severity: 'high',
250
+ reason: `relaunch failed: ${String(e.message ?? e)}`,
251
+ evidenceUris: [],
252
+ };
162
253
  }
163
254
  const h = await health(ctx);
164
255
  const shot = await captureScreenshot(ctx, 'audit relaunch');
165
256
  if (!h.healthy)
166
- return { status: 'fail', category: 'app_bug', severity: 'high', reason: `app unhealthy after relaunch (${h.nativeStatus}/${h.appStatus})`, evidenceUris: shot ? [shot] : [] };
257
+ return {
258
+ status: 'fail',
259
+ category: 'app_bug',
260
+ severity: 'high',
261
+ reason: `app unhealthy after relaunch (${h.nativeStatus}/${h.appStatus})`,
262
+ evidenceUris: shot ? [shot] : [],
263
+ };
167
264
  return ok('app returned to a sane state after kill/relaunch', shot ? [shot] : []);
168
265
  }
169
266
  export function checkRotation() {
170
- return skip('rotation is not driven automatically — verify manually where supported');
267
+ return skip('rotation is not driven automatically; verify manually where supported');
171
268
  }
172
269
  /**
173
270
  * Find and tap a "Log out" control on the current screen, gated by the controlled account-cycle
174
271
  * policy (logout permitted only on a disposable account; delete/pay/send stay refused). Returns the
175
272
  * post-logout screen text so the caller can check the forgot-password entrypoint on the LOGGED-OUT
176
- * surface — without a full exploration that would auto-re-login via stored credentials.
273
+ * surface, without a full exploration that would auto-re-login via stored credentials.
177
274
  */
178
275
  export async function findAndTapLogout(ctx, disposableAccount) {
179
276
  let xml = '';
@@ -212,16 +309,34 @@ export async function findAndTapLogout(ctx, disposableAccount) {
212
309
  * Evaluate the forgot-password entrypoint from the LOGGED-OUT auth surface (captured right after
213
310
  * logout, before any re-login). Pass when a forgot/reset link is present; a confirmed login screen
214
311
  * without one is an improvement; if logout couldn't reach an auth surface, return blocked rather than
215
- * falsely failing (REQ-08 account-cycle bug fix).
312
+ * falsely failing (account-cycle bug fix).
216
313
  */
217
314
  export function checkForgotPassword(loggedOutText) {
218
315
  const isAuthSurface = /sign\s?in|log\s?in|email|password|username|forgot|create account/.test(loggedOutText);
219
316
  const hasForgot = /forgot.?password|reset.?password|forgot your password|trouble signing in/.test(loggedOutText);
220
317
  if (hasForgot)
221
- return { status: 'pass', reason: 'forgot-password entrypoint is present on the logged-out auth surface (not exercised — Swipium never consumes email/OTP)', evidenceUris: [], workflow: 'account_cycle' };
318
+ return {
319
+ status: 'pass',
320
+ reason: 'forgot-password entrypoint is present on the logged-out auth surface (not exercised: Swipium never consumes email/OTP)',
321
+ evidenceUris: [],
322
+ workflow: 'account_cycle',
323
+ };
222
324
  if (isAuthSurface)
223
- return { status: 'fail', category: 'improvement', severity: 'low', reason: 'no forgot-password entrypoint on the logged-out login screen', evidenceUris: [], workflow: 'account_cycle', nextStep: 'Add a forgot/reset-password entrypoint on the login screen.' };
224
- return { status: 'blocked', reason: 'logout not confirmed — could not reach the logged-out auth surface to check the forgot-password entrypoint', evidenceUris: [], workflow: 'account_cycle' };
325
+ return {
326
+ status: 'fail',
327
+ category: 'improvement',
328
+ severity: 'low',
329
+ reason: 'no forgot-password entrypoint on the logged-out login screen',
330
+ evidenceUris: [],
331
+ workflow: 'account_cycle',
332
+ nextStep: 'Add a forgot/reset-password entrypoint on the login screen.',
333
+ };
334
+ return {
335
+ status: 'blocked',
336
+ reason: 'logout not confirmed: could not reach the logged-out auth surface to check the forgot-password entrypoint',
337
+ evidenceUris: [],
338
+ workflow: 'account_cycle',
339
+ };
225
340
  }
226
341
  // ---- readiness -----------------------------------------------------------------------------
227
342
  export async function checkLocatorReadiness(ctx) {
@@ -246,6 +361,13 @@ export async function checkLocatorReadiness(ctx) {
246
361
  const pct = Math.round((durable.length / clickable.length) * 100);
247
362
  if (pct >= 70)
248
363
  return ok(`${pct}% of interactive controls have durable locators`);
249
- return { status: 'fail', category: 'accessibility_readiness', severity: 'low', reason: `only ${pct}% of interactive controls have durable locators (testID/accessibility id)`, evidenceUris: [], nextStep: 'Add accessibility identifiers / testIDs to important controls.' };
364
+ return {
365
+ status: 'fail',
366
+ category: 'accessibility_readiness',
367
+ severity: 'low',
368
+ reason: `only ${pct}% of interactive controls have durable locators (testID/accessibility id)`,
369
+ evidenceUris: [],
370
+ nextStep: 'Add accessibility identifiers / testIDs to important controls.',
371
+ };
250
372
  }
251
373
  //# sourceMappingURL=checks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checks.js","sourceRoot":"","sources":["../../src/mobileAudit/checks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checks.js","sourceRoot":"","sources":["../../src/mobileAudit/checks.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- // SWIPIUM-REQ-08 — evidence + observation helpers for the executable mobile audit.
1
+ // Evidence + observation helpers for the executable mobile audit.
2
2
  //
3
3
  // Thin wrappers over the Driver + SessionStore so audit checks can capture a screenshot, read the
4
4
  // current screen's visible text, and run a health check without each check duplicating that plumbing.
5
- // Sensitive-mode aware (no pixels when session.sensitive). Best-effort — never throws.
5
+ // Sensitive-mode aware (no pixels when session.sensitive). Best-effort, never throws.
6
6
  import { parseSnapshot } from '../snapshot/parse.js';
7
7
  import { checkHealth } from '../oracle/health.js';
8
8
  /** Capture an evidence screenshot (sensitive-mode aware). Returns the artifact URI or undefined. */
@@ -17,7 +17,7 @@ export async function captureScreenshot(ctx, label) {
17
17
  return undefined;
18
18
  }
19
19
  }
20
- /** Read the current screen's visible text (lowercased, joined). Best-effort → '' on failure. */
20
+ /** Read the current screen's visible text (lowercased, joined). Best-effort: '' on failure. */
21
21
  export async function snapshotText(ctx) {
22
22
  try {
23
23
  const xml = await ctx.driver.dumpXml();
@@ -37,7 +37,7 @@ export async function snapshotText(ctx) {
37
37
  export async function health(ctx) {
38
38
  return checkHealth(ctx.driver, ctx.appId);
39
39
  }
40
- /** Current foreground app/owner. Best-effort → 'unknown'. */
40
+ /** Current foreground app/owner. Best-effort: 'unknown'. */
41
41
  export async function foreground(ctx) {
42
42
  try {
43
43
  return await ctx.driver.foregroundOwner();
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/mobileAudit/evidence.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,EAAE;AACF,kGAAkG;AAClG,sGAAsG;AACtG,uFAAuF;AAEvF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAqB,MAAM,qBAAqB,CAAC;AAWrE,oGAAoG;AACpG,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAqB,EAAE,KAAa;IAC1E,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1C,OAAO,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IAClH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,gGAAgG;AAChG,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAqB;IACtD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC1C,OAAO,KAAK;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;aAC3D,IAAI,CAAC,IAAI,CAAC;aACV,WAAW,EAAE,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,GAAqB;IAChD,OAAO,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAqB;IACpD,IAAI,CAAC;QACH,OAAO,MAAM,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/mobileAudit/evidence.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,kGAAkG;AAClG,sGAAsG;AACtG,sFAAsF;AAEtF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAqB,MAAM,qBAAqB,CAAC;AAWrE,oGAAoG;AACpG,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAqB,EAAE,KAAa;IAC1E,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1C,OAAO,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IAClH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,+FAA+F;AAC/F,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAqB;IACtD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC1C,OAAO,KAAK;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;aAC3D,IAAI,CAAC,IAAI,CAAC;aACV,WAAW,EAAE,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,GAAqB;IAChD,OAAO,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,4DAA4D;AAC5D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAqB;IACpD,IAAI,CAAC;QACH,OAAO,MAAM,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}