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,11 +1,12 @@
1
- // SWIPIUM-REQ-04 — generated-code validation. Pure: validates emitted files WITHOUT a device.
2
- // Checks (REQ-04 §qa_automation_validate + acceptance criteria):
1
+ // Generated-code validation. Pure: validates emitted files WITHOUT a device.
2
+ // Checks (formerly qa_automation_validate; now run via qa_generate + acceptance criteria):
3
3
  // - no inlined secrets (env-only),
4
4
  // - locator durability threshold (fails on brittle-only above threshold unless candidate-only),
5
5
  // - capability config presence,
6
6
  // - lightweight syntax sanity (brace balance for JS/TS),
7
7
  // - no empty essential files.
8
- // password = "literal" / token: 'literal' etc. — but NOT process.env / os.environ references.
8
+ import { findSecretLeaks } from '../suite/secretGuard.js';
9
+ // password = "literal" / token: 'literal' etc., but NOT process.env / os.environ references.
9
10
  const SECRET_ASSIGN_RE = /(password|passwd|secret|token|api[_-]?key|apikey|bearer|credential|pwd)\s*[:=]\s*(["'])(?!\s*\2)([^"']{3,})\2/i;
10
11
  const ENV_REF_RE = /(process\.env|os\.environ|getenv|\$\{?env)/i;
11
12
  function scanSecrets(files, secrets) {
@@ -21,13 +22,23 @@ function scanSecrets(files, secrets) {
21
22
  return;
22
23
  const m = SECRET_ASSIGN_RE.exec(line);
23
24
  if (m) {
24
- findings.push({ code: 'INLINED_SECRET', severity: 'error', file: f.path, message: `possible inlined secret at line ${i + 1}: ${m[1]} assigned a literal — read from the environment instead` });
25
+ findings.push({
26
+ code: 'INLINED_SECRET',
27
+ severity: 'error',
28
+ file: f.path,
29
+ message: `possible inlined secret at line ${i + 1}: ${m[1]} assigned a literal; read from the environment instead`,
30
+ });
25
31
  }
26
32
  // Explicit: a known secret env-var name assigned a literal value.
27
33
  for (const s of secrets) {
28
34
  const re = new RegExp(`${s}\\s*[:=]\\s*["'][^"']+["']`);
29
35
  if (re.test(line) && !ENV_REF_RE.test(line)) {
30
- findings.push({ code: 'INLINED_SECRET', severity: 'error', file: f.path, message: `secret var ${s} assigned a literal at line ${i + 1}` });
36
+ findings.push({
37
+ code: 'INLINED_SECRET',
38
+ severity: 'error',
39
+ file: f.path,
40
+ message: `secret var ${s} assigned a literal at line ${i + 1}`,
41
+ });
31
42
  }
32
43
  }
33
44
  });
@@ -39,14 +50,23 @@ function braceBalance(files) {
39
50
  for (const f of files) {
40
51
  if (!/\.(ts|js)$/.test(f.path))
41
52
  continue;
42
- const pairs = [['{', '}', 'braces'], ['(', ')', 'parens'], ['[', ']', 'brackets']];
53
+ const pairs = [
54
+ ['{', '}', 'braces'],
55
+ ['(', ')', 'parens'],
56
+ ['[', ']', 'brackets'],
57
+ ];
43
58
  // Strip strings/comments crudely to avoid counting literals.
44
59
  const stripped = stripJs(f.content);
45
60
  for (const [open, close, name] of pairs) {
46
61
  const o = countChar(stripped, open);
47
62
  const c = countChar(stripped, close);
48
63
  if (o !== c)
49
- findings.push({ code: 'UNBALANCED_SYNTAX', severity: 'error', file: f.path, message: `unbalanced ${name} (${o} ${open} vs ${c} ${close})` });
64
+ findings.push({
65
+ code: 'UNBALANCED_SYNTAX',
66
+ severity: 'error',
67
+ file: f.path,
68
+ message: `unbalanced ${name} (${o} ${open} vs ${c} ${close})`,
69
+ });
50
70
  }
51
71
  }
52
72
  return findings;
@@ -97,8 +117,20 @@ function capabilityPresence(files) {
97
117
  if (!capFile) {
98
118
  return [{ code: 'NO_CAPABILITIES', severity: 'warning', message: 'no capabilities/conftest file found in the generated suite' }];
99
119
  }
100
- const ok = /platformName/i.test(capFile.content) && /(UiAutomator2|XCUITest)/.test(capFile.content);
101
- return ok ? [] : [{ code: 'INVALID_CAPABILITIES', severity: 'error', file: capFile.path, message: 'capability config missing platformName/automationName' }];
120
+ // JS/TS capabilities spell out `platformName`; Appium-Python-Client uses typed options objects
121
+ // (UiAutomator2Options / XCUITestOptions set platformName + automationName themselves).
122
+ const platformSet = /platformName|platform_name/i.test(capFile.content) || /\b(UiAutomator2Options|XCUITestOptions)\s*\(/.test(capFile.content);
123
+ const ok = platformSet && /(UiAutomator2|XCUITest)/.test(capFile.content);
124
+ return ok
125
+ ? []
126
+ : [
127
+ {
128
+ code: 'INVALID_CAPABILITIES',
129
+ severity: 'error',
130
+ file: capFile.path,
131
+ message: 'capability config missing platformName/automationName',
132
+ },
133
+ ];
102
134
  }
103
135
  function emptyEssentials(files) {
104
136
  const findings = [];
@@ -115,7 +147,15 @@ export function validateGeneratedSuite(files, opts = {}) {
115
147
  const brittleThreshold = opts.brittleThreshold ?? 40;
116
148
  const candidateOnly = opts.candidateOnly ?? false;
117
149
  const findings = [];
118
- const secretFindings = scanSecrets(files, opts.secrets ?? []);
150
+ const secretFindings = [
151
+ ...scanSecrets(files, opts.secrets ?? []),
152
+ ...findSecretLeaks(files, opts.secretValues, { structural: opts.structural }).map((l) => ({
153
+ code: 'SECRET_IN_GENERATED_OUTPUT',
154
+ severity: 'error',
155
+ file: l.path,
156
+ message: `registered secret value written in plaintext at line ${l.line}; must be an environment variable`,
157
+ })),
158
+ ];
119
159
  findings.push(...secretFindings);
120
160
  findings.push(...braceBalance(files));
121
161
  findings.push(...capabilityPresence(files));
@@ -126,14 +166,14 @@ export function validateGeneratedSuite(files, opts = {}) {
126
166
  findings.push({
127
167
  code: 'BRITTLE_OVER_THRESHOLD',
128
168
  severity: 'error',
129
- message: `brittle locators ${brittlePct}% exceed the ${brittleThreshold}% threshold — add durable locators or label the suite candidate-only`,
169
+ message: `brittle locators ${brittlePct}% exceed the ${brittleThreshold}% threshold; add durable locators or label the suite candidate-only`,
130
170
  });
131
171
  }
132
172
  else if (brittlePct > brittleThreshold && candidateOnly) {
133
173
  findings.push({
134
174
  code: 'BRITTLE_OVER_THRESHOLD',
135
175
  severity: 'warning',
136
- message: `brittle locators ${brittlePct}% exceed the ${brittleThreshold}% threshold — suite is labeled candidate-only`,
176
+ message: `brittle locators ${brittlePct}% exceed the ${brittleThreshold}% threshold; suite is labeled candidate-only`,
137
177
  });
138
178
  }
139
179
  const ok = !findings.some((f) => f.severity === 'error');
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/automationGen/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/automationGen/validation.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  // Build-failure log parsing (Dev2 plan §4 "framework-specific build log parsing"). A build
2
- // that exits non-zero is an ENVIRONMENT/BUILD failure, never an app QA failure — but "build
2
+ // that exits non-zero is an ENVIRONMENT/BUILD failure, never an app QA failure. But "build
3
3
  // failed" is useless to a developer. This module turns the captured build log into a typed
4
4
  // blocker with the LIKELY OWNER (app dev vs environment vs user) and a CONCRETE fix, plus the
5
5
  // relevant log tail (the lines that actually mention the error, not the whole transcript).
@@ -30,38 +30,192 @@ export function buildLogTool(step) {
30
30
  // Ordered most-specific-first. Expo/Flutter android builds delegate to Gradle, so Gradle
31
31
  // signatures are also consulted for those tools (see SIGNATURES_BY_TOOL wiring below).
32
32
  const GRADLE_SIGNATURES = [
33
- { name: 'sdk-location', test: /SDK location not found|ANDROID_HOME .* not|local\.properties/i, failureCode: 'GRADLE_FAILED', owner: 'environment', reason: 'Android SDK location not configured.', fix: 'Set ANDROID_HOME / sdk.dir (local.properties) to a valid Android SDK, then rebuild.' },
34
- { name: 'sdk-platform-missing', test: /Failed to find target with hash string|Failed to find Build Tools|Could not (?:find|determine) .*(?:platforms|build-tools)|install the (?:missing )?platform/i, failureCode: 'GRADLE_FAILED', owner: 'environment', reason: 'Required Android SDK platform/build-tools are missing.', fix: 'Install the required SDK platform + build-tools via Android Studio SDK Manager or `sdkmanager`, then rebuild.' },
35
- { name: 'sdk-license', test: /have not accepted the license|licenses? (?:have )?not.*accepted|to accept the SDK license/i, failureCode: 'GRADLE_FAILED', owner: 'environment', reason: 'Android SDK licenses are not accepted.', fix: 'Run `sdkmanager --licenses` (or accept licenses in Android Studio), then rebuild.' },
36
- { name: 'ndk-missing', test: /NDK (?:is )?not configured|No version of NDK matched|Failed to install the following Android SDK packages.*ndk/i, failureCode: 'GRADLE_FAILED', owner: 'environment', reason: 'Required Android NDK is missing.', fix: 'Install the NDK version the project requests (SDK Manager / ndkVersion), then rebuild.' },
37
- { name: 'signing', test: /Keystore file .* not found|Failed to read key .* from store|Could not (?:read|find) keystore|SigningConfig .* (?:is )?invalid|Failed to load signing config|keystore password was incorrect/i, failureCode: 'ANDROID_SIGNING_FAILED', owner: 'environment', reason: 'Gradle signing config (keystore) is missing or invalid.', fix: 'Provide a valid keystore + credentials, or build a debug variant (auto-signed with the debug keystore) for emulator QA.' },
38
- { name: 'dependency-resolve', test: /Could not resolve|Could not find [^\n]*\.(?:jar|aar|pom)|Could not download|Failed to resolve:|Could not GET/i, failureCode: 'GRADLE_FAILED', owner: 'app', reason: 'A Gradle dependency could not be resolved/downloaded.', fix: 'Check the missing coordinate/repository and network access; fix the dependency declaration, then rebuild.' },
39
- { name: 'compile', test: /error: cannot find symbol|Compilation (?:error|failed)|e: .*\.kt:|\.java:\d+: error:/i, failureCode: 'GRADLE_FAILED', owner: 'app', reason: 'A compile error in the app sources failed the Gradle build.', fix: 'Open the reported file/line in the log and fix the compile error, then rebuild.' },
33
+ {
34
+ name: 'sdk-location',
35
+ test: /SDK location not found|ANDROID_HOME .* not|local\.properties/i,
36
+ failureCode: 'GRADLE_FAILED',
37
+ owner: 'environment',
38
+ reason: 'Android SDK location not configured.',
39
+ fix: 'Set ANDROID_HOME / sdk.dir (local.properties) to a valid Android SDK, then rebuild.',
40
+ },
41
+ {
42
+ name: 'sdk-platform-missing',
43
+ test: /Failed to find target with hash string|Failed to find Build Tools|Could not (?:find|determine) .*(?:platforms|build-tools)|install the (?:missing )?platform/i,
44
+ failureCode: 'GRADLE_FAILED',
45
+ owner: 'environment',
46
+ reason: 'Required Android SDK platform/build-tools are missing.',
47
+ fix: 'Install the required SDK platform + build-tools via Android Studio SDK Manager or `sdkmanager`, then rebuild.',
48
+ },
49
+ {
50
+ name: 'sdk-license',
51
+ test: /have not accepted the license|licenses? (?:have )?not.*accepted|to accept the SDK license/i,
52
+ failureCode: 'GRADLE_FAILED',
53
+ owner: 'environment',
54
+ reason: 'Android SDK licenses are not accepted.',
55
+ fix: 'Run `sdkmanager --licenses` (or accept licenses in Android Studio), then rebuild.',
56
+ },
57
+ {
58
+ name: 'ndk-missing',
59
+ test: /NDK (?:is )?not configured|No version of NDK matched|Failed to install the following Android SDK packages.*ndk/i,
60
+ failureCode: 'GRADLE_FAILED',
61
+ owner: 'environment',
62
+ reason: 'Required Android NDK is missing.',
63
+ fix: 'Install the NDK version the project requests (SDK Manager / ndkVersion), then rebuild.',
64
+ },
65
+ {
66
+ name: 'signing',
67
+ test: /Keystore file .* not found|Failed to read key .* from store|Could not (?:read|find) keystore|SigningConfig .* (?:is )?invalid|Failed to load signing config|keystore password was incorrect/i,
68
+ failureCode: 'ANDROID_SIGNING_FAILED',
69
+ owner: 'environment',
70
+ reason: 'Gradle signing config (keystore) is missing or invalid.',
71
+ fix: 'Provide a valid keystore + credentials, or build a debug variant (auto-signed with the debug keystore) for emulator QA.',
72
+ },
73
+ {
74
+ name: 'dependency-resolve',
75
+ test: /Could not resolve|Could not find [^\n]*\.(?:jar|aar|pom)|Could not download|Failed to resolve:|Could not GET/i,
76
+ failureCode: 'GRADLE_FAILED',
77
+ owner: 'app',
78
+ reason: 'A Gradle dependency could not be resolved/downloaded.',
79
+ fix: 'Check the missing coordinate/repository and network access; fix the dependency declaration, then rebuild.',
80
+ },
81
+ {
82
+ name: 'compile',
83
+ test: /error: cannot find symbol|Compilation (?:error|failed)|e: .*\.kt:|\.java:\d+: error:/i,
84
+ failureCode: 'GRADLE_FAILED',
85
+ owner: 'app',
86
+ reason: 'A compile error in the app sources failed the Gradle build.',
87
+ fix: 'Open the reported file/line in the log and fix the compile error, then rebuild.',
88
+ },
40
89
  ];
41
90
  const XCODE_SIGNATURES = [
42
- { name: 'scheme-missing', test: /does not contain a scheme named|Scheme .* is not currently configured|The project .* does not contain a scheme/i, failureCode: 'XCODEBUILD_FAILED', owner: 'environment', reason: 'The requested Xcode scheme was not found.', fix: 'Pass the correct -scheme/-workspace (run `xcodebuild -list` to see schemes), then rebuild.' },
43
- { name: 'signing', test: /Code Sign(?:ing)? error|requires a (?:development team|provisioning profile)|No (?:signing certificate|profiles for|account for team)|Signing for .* requires a development team/i, failureCode: 'XCODEBUILD_FAILED', owner: 'user', reason: 'Xcode code signing / provisioning is not configured.', fix: 'Set a development team and provisioning settings only if your simulator build configuration requires them.' },
44
- { name: 'simulator-runtime', test: /Unable to find a destination|no simulator runtime|cannot be located on disk.*iphonesimulator|iOS \d+\.\d+ (?:simulator )?runtime (?:is )?not (?:installed|available)|Unsupported SDK/i, failureCode: 'SIMULATOR_RUNTIME_MISSING', owner: 'environment', reason: 'No usable iOS simulator runtime/destination for the build.', fix: 'Install a matching iOS simulator runtime in Xcode (Settings → Platforms) or pick an available destination, then rebuild.' },
45
- { name: 'compile', test: /error: .*\.(?:m|mm|swift|h|c|cpp):|Command CompileC failed|Swift Compiler Error|fatal error: '.*' file not found/i, failureCode: 'XCODEBUILD_FAILED', owner: 'app', reason: 'A compile error in the iOS sources failed the build.', fix: 'Open the reported file/line in the xcodebuild log and fix the compile error, then rebuild.' },
91
+ {
92
+ name: 'scheme-missing',
93
+ test: /does not contain a scheme named|Scheme .* is not currently configured|The project .* does not contain a scheme/i,
94
+ failureCode: 'XCODEBUILD_FAILED',
95
+ owner: 'environment',
96
+ reason: 'The requested Xcode scheme was not found.',
97
+ fix: 'Pass the correct -scheme/-workspace (run `xcodebuild -list` to see schemes), then rebuild.',
98
+ },
99
+ {
100
+ name: 'signing',
101
+ test: /Code Sign(?:ing)? error|requires a (?:development team|provisioning profile)|No (?:signing certificate|profiles for|account for team)|Signing for .* requires a development team/i,
102
+ failureCode: 'XCODEBUILD_FAILED',
103
+ owner: 'user',
104
+ reason: 'Xcode code signing / provisioning is not configured.',
105
+ fix: 'Set a development team and provisioning settings only if your simulator build configuration requires them.',
106
+ },
107
+ {
108
+ name: 'simulator-runtime',
109
+ test: /Unable to find a destination|no simulator runtime|cannot be located on disk.*iphonesimulator|iOS \d+\.\d+ (?:simulator )?runtime (?:is )?not (?:installed|available)|Unsupported SDK/i,
110
+ failureCode: 'SIMULATOR_RUNTIME_MISSING',
111
+ owner: 'environment',
112
+ reason: 'No usable iOS simulator runtime/destination for the build.',
113
+ fix: 'Install a matching iOS simulator runtime in Xcode (Settings > Platforms) or pick an available destination, then rebuild.',
114
+ },
115
+ {
116
+ name: 'compile',
117
+ test: /error: .*\.(?:m|mm|swift|h|c|cpp):|Command CompileC failed|Swift Compiler Error|fatal error: '.*' file not found/i,
118
+ failureCode: 'XCODEBUILD_FAILED',
119
+ owner: 'app',
120
+ reason: 'A compile error in the iOS sources failed the build.',
121
+ fix: 'Open the reported file/line in the xcodebuild log and fix the compile error, then rebuild.',
122
+ },
46
123
  ];
47
124
  const COCOAPODS_SIGNATURES = [
48
- { name: 'pods-incompatible', test: /CocoaPods could not find compatible versions|Unable to find a specification for|could not find compatible versions for pod/i, failureCode: 'DEPENDENCY_INSTALL_REQUIRED', owner: 'app', reason: 'CocoaPods could not resolve compatible pod versions.', fix: 'Run `pod repo update` then `pod install`; adjust the Podfile constraints if the conflict persists.' },
49
- { name: 'pods-out-of-sync', test: /sandbox is not in sync|run .?pod install.?|The .* Pods directory/i, failureCode: 'DEPENDENCY_INSTALL_REQUIRED', owner: 'environment', reason: 'CocoaPods sandbox is out of sync with the Podfile.', fix: 'Run `pod install` in the ios/ directory, then rebuild.' },
125
+ {
126
+ name: 'pods-incompatible',
127
+ test: /CocoaPods could not find compatible versions|Unable to find a specification for|could not find compatible versions for pod/i,
128
+ failureCode: 'DEPENDENCY_INSTALL_REQUIRED',
129
+ owner: 'app',
130
+ reason: 'CocoaPods could not resolve compatible pod versions.',
131
+ fix: 'Run `pod repo update` then `pod install`; adjust the Podfile constraints if the conflict persists.',
132
+ },
133
+ {
134
+ name: 'pods-out-of-sync',
135
+ test: /sandbox is not in sync|run .?pod install.?|The .* Pods directory/i,
136
+ failureCode: 'DEPENDENCY_INSTALL_REQUIRED',
137
+ owner: 'environment',
138
+ reason: 'CocoaPods sandbox is out of sync with the Podfile.',
139
+ fix: 'Run `pod install` in the ios/ directory, then rebuild.',
140
+ },
50
141
  ];
51
142
  const FLUTTER_SIGNATURES = [
52
- { name: 'sdk-missing', test: /Flutter SDK not found|command not found: flutter|Unable to locate the Flutter SDK|flutter: command not found/i, failureCode: 'BUILD_COMMAND_UNAVAILABLE', owner: 'environment', reason: 'The Flutter SDK is not available on PATH.', fix: 'Install Flutter and ensure `flutter` is on PATH (`flutter doctor`), then rebuild.' },
53
- { name: 'pub-solve', test: /version solving failed|Because .* depends on|pub get failed|Could not (?:resolve|find package)/i, failureCode: 'DEPENDENCY_INSTALL_REQUIRED', owner: 'app', reason: 'Dart/Flutter package resolution (pub get) failed.', fix: 'Fix the pubspec.yaml version constraints, run `flutter pub get`, then rebuild.' },
54
- { name: 'gradle-delegate', test: /Gradle task assemble\w+ failed|A problem occurred (?:configuring|evaluating) (?:root )?project/i, failureCode: 'GRADLE_FAILED', owner: 'app', reason: 'The Android Gradle build inside `flutter build` failed.', fix: 'Open the Gradle output in the log, fix the Android build error (SDK/dependency/signing), then rebuild.' },
143
+ {
144
+ name: 'sdk-missing',
145
+ test: /Flutter SDK not found|command not found: flutter|Unable to locate the Flutter SDK|flutter: command not found/i,
146
+ failureCode: 'BUILD_COMMAND_UNAVAILABLE',
147
+ owner: 'environment',
148
+ reason: 'The Flutter SDK is not available on PATH.',
149
+ fix: 'Install Flutter and ensure `flutter` is on PATH (`flutter doctor`), then rebuild.',
150
+ },
151
+ {
152
+ name: 'pub-solve',
153
+ test: /version solving failed|Because .* depends on|pub get failed|Could not (?:resolve|find package)/i,
154
+ failureCode: 'DEPENDENCY_INSTALL_REQUIRED',
155
+ owner: 'app',
156
+ reason: 'Dart/Flutter package resolution (pub get) failed.',
157
+ fix: 'Fix the pubspec.yaml version constraints, run `flutter pub get`, then rebuild.',
158
+ },
159
+ {
160
+ name: 'gradle-delegate',
161
+ test: /Gradle task assemble\w+ failed|A problem occurred (?:configuring|evaluating) (?:root )?project/i,
162
+ failureCode: 'GRADLE_FAILED',
163
+ owner: 'app',
164
+ reason: 'The Android Gradle build inside `flutter build` failed.',
165
+ fix: 'Open the Gradle output in the log, fix the Android build error (SDK/dependency/signing), then rebuild.',
166
+ },
55
167
  ];
56
168
  const EXPO_SIGNATURES = [
57
- { name: 'prebuild-required', test: /No native (?:android|ios) (?:project|directory)|run (?:npx )?expo prebuild|CNG|Continuous Native Generation|android.*directory.*(?:missing|not exist)/i, failureCode: 'EXPO_PREBUILD_REQUIRED', owner: 'swipium', reason: 'Expo project has no native directory to build.', fix: 'Run `npx expo prebuild` (or `npx expo run:*`, which prebuilds) to generate the native project, then rebuild.' },
58
- { name: 'metro', test: /Unable to resolve module|Metro (?:bundler )?(?:has )?encountered|Cannot find module .* from .* Metro|Bundling failed/i, failureCode: 'METRO_FAILED', owner: 'app', reason: 'Metro bundling failed during the Expo build.', fix: 'Fix the unresolved module / bundling error (check imports + `node_modules`), then rebuild.' },
59
- { name: 'config', test: /Invalid (?:app\.json|app config|Expo config)|ConfigError|Failed to read the app config/i, failureCode: 'BUILD_FAILED', owner: 'app', reason: 'Expo app config (app.json/app.config) is invalid.', fix: 'Fix the Expo config error reported in the log, then rebuild.' },
169
+ {
170
+ name: 'prebuild-required',
171
+ test: /No native (?:android|ios) (?:project|directory)|run (?:npx )?expo prebuild|CNG|Continuous Native Generation|android.*directory.*(?:missing|not exist)/i,
172
+ failureCode: 'EXPO_PREBUILD_REQUIRED',
173
+ owner: 'swipium',
174
+ reason: 'Expo project has no native directory to build.',
175
+ fix: 'Run `npx expo prebuild` (or `npx expo run:*`, which prebuilds) to generate the native project, then rebuild.',
176
+ },
177
+ {
178
+ name: 'metro',
179
+ test: /Unable to resolve module|Metro (?:bundler )?(?:has )?encountered|Cannot find module .* from .* Metro|Bundling failed/i,
180
+ failureCode: 'METRO_FAILED',
181
+ owner: 'app',
182
+ reason: 'Metro bundling failed during the Expo build.',
183
+ fix: 'Fix the unresolved module / bundling error (check imports + `node_modules`), then rebuild.',
184
+ },
185
+ {
186
+ name: 'config',
187
+ test: /Invalid (?:app\.json|app config|Expo config)|ConfigError|Failed to read the app config/i,
188
+ failureCode: 'BUILD_FAILED',
189
+ owner: 'app',
190
+ reason: 'Expo app config (app.json/app.config) is invalid.',
191
+ fix: 'Fix the Expo config error reported in the log, then rebuild.',
192
+ },
60
193
  ];
61
194
  const NODE_INSTALL_SIGNATURES = [
62
- { name: 'peer-conflict', test: /ERESOLVE|peer dep|unable to resolve dependency tree/i, failureCode: 'DEPENDENCY_INSTALL_REQUIRED', owner: 'app', reason: 'JS dependency resolution failed (peer/version conflict).', fix: 'Resolve the dependency conflict (align versions, or install with the appropriate flag), then re-run.' },
63
- { name: 'network', test: /ETIMEDOUT|ENOTFOUND|network.*(?:error|timeout)|registry\.npmjs\.org/i, failureCode: 'DEPENDENCY_INSTALL_REQUIRED', owner: 'environment', reason: 'JS dependency install failed to reach the registry.', fix: 'Restore network/registry access, then re-run the dependency install.' },
64
- { name: 'generic', test: /npm ERR!|error Command failed|ERR_PNPM|Cannot find module/i, failureCode: 'DEPENDENCY_INSTALL_REQUIRED', owner: 'environment', reason: 'JS dependency install failed.', fix: 'Read the install error in the log, fix it, then re-run the dependency install.' },
195
+ {
196
+ name: 'peer-conflict',
197
+ test: /ERESOLVE|peer dep|unable to resolve dependency tree/i,
198
+ failureCode: 'DEPENDENCY_INSTALL_REQUIRED',
199
+ owner: 'app',
200
+ reason: 'JS dependency resolution failed (peer/version conflict).',
201
+ fix: 'Resolve the dependency conflict (align versions, or install with the appropriate flag), then re-run.',
202
+ },
203
+ {
204
+ name: 'network',
205
+ test: /ETIMEDOUT|ENOTFOUND|network.*(?:error|timeout)|registry\.npmjs\.org/i,
206
+ failureCode: 'DEPENDENCY_INSTALL_REQUIRED',
207
+ owner: 'environment',
208
+ reason: 'JS dependency install failed to reach the registry.',
209
+ fix: 'Restore network/registry access, then re-run the dependency install.',
210
+ },
211
+ {
212
+ name: 'generic',
213
+ test: /npm ERR!|error Command failed|ERR_PNPM|Cannot find module/i,
214
+ failureCode: 'DEPENDENCY_INSTALL_REQUIRED',
215
+ owner: 'environment',
216
+ reason: 'JS dependency install failed.',
217
+ fix: 'Read the install error in the log, fix it, then re-run the dependency install.',
218
+ },
65
219
  ];
66
220
  const SIGNATURES_BY_TOOL = {
67
221
  gradle: GRADLE_SIGNATURES,
@@ -77,13 +231,55 @@ const SIGNATURES_BY_TOOL = {
77
231
  /** Tool-default code/owner/fix when no specific signature matched. */
78
232
  function toolDefault(tool) {
79
233
  switch (tool) {
80
- case 'gradle': return { failureCode: 'GRADLE_FAILED', owner: 'app', reason: 'Gradle build failed.', fix: 'Open the Gradle log artifact and fix the reported error (SDK/dependency/compile/signing), then rebuild.' };
81
- case 'xcodebuild': return { failureCode: 'XCODEBUILD_FAILED', owner: 'app', reason: 'xcodebuild failed.', fix: 'Open the xcodebuild log artifact and fix the reported error (scheme/signing/simulator/compile), then rebuild.' };
82
- case 'flutter': return { failureCode: 'FLUTTER_BUILD_FAILED', owner: 'app', reason: 'flutter build failed.', fix: 'Open the flutter build log artifact and fix the reported error, then rebuild.' };
83
- case 'cocoapods': return { failureCode: 'DEPENDENCY_INSTALL_REQUIRED', owner: 'environment', reason: 'CocoaPods install failed.', fix: 'Run `pod install` in the ios/ directory and resolve the reported error, then rebuild.' };
84
- case 'expo': return { failureCode: 'BUILD_FAILED', owner: 'app', reason: 'Expo build failed.', fix: 'Open the build log artifact and fix the reported error, then rebuild.' };
85
- case 'node-install': return { failureCode: 'DEPENDENCY_INSTALL_REQUIRED', owner: 'environment', reason: 'Dependency install failed.', fix: 'Read the install error in the log, fix it, then re-run.' };
86
- default: return { failureCode: 'BUILD_FAILED', owner: 'app', reason: 'Build from source failed.', fix: 'Open the build log artifact, fix the compile/config error, then re-run. A build failure is NOT a test failure.' };
234
+ case 'gradle':
235
+ return {
236
+ failureCode: 'GRADLE_FAILED',
237
+ owner: 'app',
238
+ reason: 'Gradle build failed.',
239
+ fix: 'Open the Gradle log artifact and fix the reported error (SDK/dependency/compile/signing), then rebuild.',
240
+ };
241
+ case 'xcodebuild':
242
+ return {
243
+ failureCode: 'XCODEBUILD_FAILED',
244
+ owner: 'app',
245
+ reason: 'xcodebuild failed.',
246
+ fix: 'Open the xcodebuild log artifact and fix the reported error (scheme/signing/simulator/compile), then rebuild.',
247
+ };
248
+ case 'flutter':
249
+ return {
250
+ failureCode: 'FLUTTER_BUILD_FAILED',
251
+ owner: 'app',
252
+ reason: 'flutter build failed.',
253
+ fix: 'Open the flutter build log artifact and fix the reported error, then rebuild.',
254
+ };
255
+ case 'cocoapods':
256
+ return {
257
+ failureCode: 'DEPENDENCY_INSTALL_REQUIRED',
258
+ owner: 'environment',
259
+ reason: 'CocoaPods install failed.',
260
+ fix: 'Run `pod install` in the ios/ directory and resolve the reported error, then rebuild.',
261
+ };
262
+ case 'expo':
263
+ return {
264
+ failureCode: 'BUILD_FAILED',
265
+ owner: 'app',
266
+ reason: 'Expo build failed.',
267
+ fix: 'Open the build log artifact and fix the reported error, then rebuild.',
268
+ };
269
+ case 'node-install':
270
+ return {
271
+ failureCode: 'DEPENDENCY_INSTALL_REQUIRED',
272
+ owner: 'environment',
273
+ reason: 'Dependency install failed.',
274
+ fix: 'Read the install error in the log, fix it, then re-run.',
275
+ };
276
+ default:
277
+ return {
278
+ failureCode: 'BUILD_FAILED',
279
+ owner: 'app',
280
+ reason: 'Build from source failed.',
281
+ fix: 'Open the build log artifact, fix the compile/config error, then re-run. A build failure is NOT a test failure.',
282
+ };
87
283
  }
88
284
  }
89
285
  /**
@@ -106,7 +302,15 @@ export function analyzeBuildFailure(opts) {
106
302
  const tool = buildLogTool(opts.step);
107
303
  const relevantTail = relevantLogTail(opts.log);
108
304
  if (opts.timedOut) {
109
- return { failureCode: 'BUILD_TIMED_OUT', owner: 'environment', reason: 'Build exceeded its time budget.', tool, signal: 'timeout', relevantTail, fix: 'Increase the build timeout, warm caches, or build once manually then re-run against the artifact.' };
305
+ return {
306
+ failureCode: 'BUILD_TIMED_OUT',
307
+ owner: 'environment',
308
+ reason: 'Build exceeded its time budget.',
309
+ tool,
310
+ signal: 'timeout',
311
+ relevantTail,
312
+ fix: 'Increase the build timeout, warm caches, or build once manually then re-run against the artifact.',
313
+ };
110
314
  }
111
315
  for (const sig of SIGNATURES_BY_TOOL[tool]) {
112
316
  if (sig.test.test(opts.log)) {
@@ -1 +1 @@
1
- {"version":3,"file":"parseBuildLog.js","sourceRoot":"","sources":["../../src/build/parseBuildLog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parseBuildLog.js","sourceRoot":"","sources":["../../src/build/parseBuildLog.ts"],"names":[],"mappings":"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"}