@sun-asterisk/sungen 1.0.19 → 1.0.21

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 (295) hide show
  1. package/README.md +3 -3
  2. package/dist/cli/commands/add.d.ts +3 -0
  3. package/dist/cli/commands/add.d.ts.map +1 -0
  4. package/dist/cli/commands/add.js +27 -0
  5. package/dist/cli/commands/add.js.map +1 -0
  6. package/dist/cli/commands/cache-clear.d.ts +3 -0
  7. package/dist/cli/commands/cache-clear.d.ts.map +1 -0
  8. package/dist/cli/commands/cache-clear.js +24 -0
  9. package/dist/cli/commands/cache-clear.js.map +1 -0
  10. package/dist/cli/commands/full.d.ts +3 -0
  11. package/dist/cli/commands/full.d.ts.map +1 -0
  12. package/dist/cli/commands/full.js +37 -0
  13. package/dist/cli/commands/full.js.map +1 -0
  14. package/dist/cli/commands/generate.d.ts +3 -0
  15. package/dist/cli/commands/generate.d.ts.map +1 -0
  16. package/dist/cli/commands/generate.js +53 -0
  17. package/dist/cli/commands/generate.js.map +1 -0
  18. package/dist/cli/commands/init.d.ts +3 -0
  19. package/dist/cli/commands/init.d.ts.map +1 -0
  20. package/dist/cli/commands/init.js +20 -0
  21. package/dist/cli/commands/init.js.map +1 -0
  22. package/dist/cli/commands/live-scan.d.ts +3 -0
  23. package/dist/cli/commands/live-scan.d.ts.map +1 -0
  24. package/dist/cli/commands/{live-scan-command.js → live-scan.js} +22 -16
  25. package/dist/cli/commands/live-scan.js.map +1 -0
  26. package/dist/cli/commands/makeauth.d.ts +3 -0
  27. package/dist/cli/commands/makeauth.d.ts.map +1 -0
  28. package/dist/cli/commands/makeauth.js +76 -0
  29. package/dist/cli/commands/makeauth.js.map +1 -0
  30. package/dist/cli/commands/map.d.ts +3 -0
  31. package/dist/cli/commands/map.d.ts.map +1 -0
  32. package/dist/cli/commands/map.js +93 -0
  33. package/dist/cli/commands/map.js.map +1 -0
  34. package/dist/cli/commands/validate.d.ts +3 -0
  35. package/dist/cli/commands/validate.d.ts.map +1 -0
  36. package/dist/cli/commands/validate.js +43 -0
  37. package/dist/cli/commands/validate.js.map +1 -0
  38. package/dist/cli/index.js +29 -442
  39. package/dist/cli/index.js.map +1 -1
  40. package/dist/cli/types.d.ts +9 -0
  41. package/dist/cli/types.d.ts.map +1 -0
  42. package/dist/cli/types.js +7 -0
  43. package/dist/cli/types.js.map +1 -0
  44. package/dist/cli/utils.d.ts +6 -0
  45. package/dist/cli/utils.d.ts.map +1 -0
  46. package/dist/cli/utils.js +101 -0
  47. package/dist/cli/utils.js.map +1 -0
  48. package/dist/core/live-scanner/matrix-reader.d.ts.map +1 -1
  49. package/dist/core/live-scanner/matrix-reader.js +2 -40
  50. package/dist/core/live-scanner/matrix-reader.js.map +1 -1
  51. package/dist/core/live-scanner/scanner.d.ts.map +1 -1
  52. package/dist/core/live-scanner/scanner.js +22 -4
  53. package/dist/core/live-scanner/scanner.js.map +1 -1
  54. package/dist/core/live-scanner/step-replayer.d.ts +1 -1
  55. package/dist/core/live-scanner/step-replayer.d.ts.map +1 -1
  56. package/dist/core/live-scanner/step-replayer.js +107 -6
  57. package/dist/core/live-scanner/step-replayer.js.map +1 -1
  58. package/dist/core/live-scanner/types.d.ts +1 -0
  59. package/dist/core/live-scanner/types.d.ts.map +1 -1
  60. package/dist/core/validator/selector-validator.d.ts.map +1 -1
  61. package/dist/core/validator/selector-validator.js +2 -1
  62. package/dist/core/validator/selector-validator.js.map +1 -1
  63. package/dist/generators/scaffold-generator/index.d.ts +2 -1
  64. package/dist/generators/scaffold-generator/index.d.ts.map +1 -1
  65. package/dist/generators/scaffold-generator/index.js +21 -1
  66. package/dist/generators/scaffold-generator/index.js.map +1 -1
  67. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/click-select-action.hbs +2 -0
  68. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/wait-for-role-with-data.hbs +1 -0
  69. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/wait-for-role.hbs +1 -0
  70. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/checked-assertion.hbs +2 -1
  71. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/column-cell-assertion.hbs +3 -0
  72. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/contain-text-assertion.hbs +2 -1
  73. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/count-assertion.hbs +2 -1
  74. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/disabled-assertion.hbs +2 -1
  75. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/disabled-with-filter-assertion.hbs +2 -1
  76. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/disabled-with-role-variable-assertion.hbs +4 -3
  77. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/disabled-with-variable-assertion.hbs +2 -1
  78. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/empty-assertion.hbs +2 -1
  79. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/enabled-assertion.hbs +2 -1
  80. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/focused-assertion.hbs +2 -1
  81. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/have-text-assertion.hbs +2 -1
  82. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/hidden-dialog-heading-assertion.hbs +2 -0
  83. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/hidden-with-filter-assertion.hbs +2 -1
  84. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/hidden-with-role-variable-assertion.hbs +4 -3
  85. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/hidden-with-variable-assertion.hbs +2 -1
  86. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/is-hidden-assertion.hbs +1 -0
  87. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/list-item-count-assertion.hbs +2 -1
  88. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/not-checked-assertion.hbs +2 -1
  89. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/page-assertion.hbs +1 -0
  90. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-assertion.hbs +2 -1
  91. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-dialog-heading-assertion.hbs +2 -0
  92. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-locator-variable-assertion.hbs +2 -1
  93. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-role-variable-assertion.hbs +4 -3
  94. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-value-assertion.hbs +2 -1
  95. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-variable-assertion.hbs +1 -0
  96. package/dist/generators/test-generator/adapters/playwright/templates/steps/navigation/navigation.hbs +1 -1
  97. package/dist/generators/test-generator/adapters/playwright/templates/steps/navigation/wait-for-element-with-text.hbs +1 -1
  98. package/dist/generators/test-generator/patterns/assertion-patterns.d.ts.map +1 -1
  99. package/dist/generators/test-generator/patterns/assertion-patterns.js +95 -58
  100. package/dist/generators/test-generator/patterns/assertion-patterns.js.map +1 -1
  101. package/dist/generators/test-generator/patterns/form-patterns.d.ts +0 -2
  102. package/dist/generators/test-generator/patterns/form-patterns.d.ts.map +1 -1
  103. package/dist/generators/test-generator/patterns/form-patterns.js +34 -47
  104. package/dist/generators/test-generator/patterns/form-patterns.js.map +1 -1
  105. package/dist/generators/test-generator/patterns/index.d.ts +3 -1
  106. package/dist/generators/test-generator/patterns/index.d.ts.map +1 -1
  107. package/dist/generators/test-generator/patterns/index.js +20 -3
  108. package/dist/generators/test-generator/patterns/index.js.map +1 -1
  109. package/dist/generators/test-generator/patterns/interaction-patterns.d.ts +0 -1
  110. package/dist/generators/test-generator/patterns/interaction-patterns.d.ts.map +1 -1
  111. package/dist/generators/test-generator/patterns/interaction-patterns.js +44 -85
  112. package/dist/generators/test-generator/patterns/interaction-patterns.js.map +1 -1
  113. package/dist/generators/test-generator/patterns/legacy-patterns.d.ts +7 -0
  114. package/dist/generators/test-generator/patterns/legacy-patterns.d.ts.map +1 -0
  115. package/dist/generators/test-generator/patterns/legacy-patterns.js +98 -0
  116. package/dist/generators/test-generator/patterns/legacy-patterns.js.map +1 -0
  117. package/dist/generators/test-generator/patterns/navigation-patterns.d.ts +0 -2
  118. package/dist/generators/test-generator/patterns/navigation-patterns.d.ts.map +1 -1
  119. package/dist/generators/test-generator/patterns/navigation-patterns.js +14 -42
  120. package/dist/generators/test-generator/patterns/navigation-patterns.js.map +1 -1
  121. package/dist/generators/test-generator/patterns/setup-patterns.d.ts +0 -1
  122. package/dist/generators/test-generator/patterns/setup-patterns.d.ts.map +1 -1
  123. package/dist/generators/test-generator/patterns/setup-patterns.js +23 -35
  124. package/dist/generators/test-generator/patterns/setup-patterns.js.map +1 -1
  125. package/dist/generators/test-generator/patterns/types.d.ts +18 -3
  126. package/dist/generators/test-generator/patterns/types.d.ts.map +1 -1
  127. package/dist/generators/test-generator/step-mapper.d.ts +0 -15
  128. package/dist/generators/test-generator/step-mapper.d.ts.map +1 -1
  129. package/dist/generators/test-generator/step-mapper.js +4 -106
  130. package/dist/generators/test-generator/step-mapper.js.map +1 -1
  131. package/dist/{executor/test-generator.d.ts → generators/test-generator/types.d.ts} +4 -25
  132. package/dist/generators/test-generator/types.d.ts.map +1 -0
  133. package/dist/generators/test-generator/types.js +106 -0
  134. package/dist/generators/test-generator/types.js.map +1 -0
  135. package/dist/generators/test-generator/utils/data-resolver.d.ts.map +1 -1
  136. package/dist/generators/test-generator/utils/data-resolver.js +8 -17
  137. package/dist/generators/test-generator/utils/data-resolver.js.map +1 -1
  138. package/dist/generators/test-generator/utils/selector-resolver.d.ts.map +1 -1
  139. package/dist/generators/test-generator/utils/selector-resolver.js +10 -18
  140. package/dist/generators/test-generator/utils/selector-resolver.js.map +1 -1
  141. package/dist/orchestrator/cache-manager.d.ts +1 -23
  142. package/dist/orchestrator/cache-manager.d.ts.map +1 -1
  143. package/dist/orchestrator/cache-manager.js +1 -87
  144. package/dist/orchestrator/cache-manager.js.map +1 -1
  145. package/dist/orchestrator/pipeline.d.ts +11 -28
  146. package/dist/orchestrator/pipeline.d.ts.map +1 -1
  147. package/dist/orchestrator/pipeline.js +52 -371
  148. package/dist/orchestrator/pipeline.js.map +1 -1
  149. package/dist/orchestrator/reporter.d.ts +1 -1
  150. package/dist/orchestrator/reporter.d.ts.map +1 -1
  151. package/dist/orchestrator/screen-manager.js +1 -1
  152. package/dist/orchestrator/screen-manager.js.map +1 -1
  153. package/dist/utils/feature-finder.d.ts +9 -0
  154. package/dist/utils/feature-finder.d.ts.map +1 -0
  155. package/dist/utils/feature-finder.js +67 -0
  156. package/dist/utils/feature-finder.js.map +1 -0
  157. package/dist/utils/screen-paths.d.ts +10 -0
  158. package/dist/utils/screen-paths.d.ts.map +1 -0
  159. package/dist/utils/screen-paths.js +73 -0
  160. package/dist/utils/screen-paths.js.map +1 -0
  161. package/dist/utils/selector-loader.d.ts +6 -0
  162. package/dist/utils/selector-loader.d.ts.map +1 -0
  163. package/dist/utils/selector-loader.js +20 -0
  164. package/dist/utils/selector-loader.js.map +1 -0
  165. package/dist/utils/selector-types.d.ts +7 -0
  166. package/dist/utils/selector-types.d.ts.map +1 -0
  167. package/dist/utils/selector-types.js +19 -0
  168. package/dist/utils/selector-types.js.map +1 -0
  169. package/dist/utils/test-data-loader.d.ts +6 -0
  170. package/dist/utils/test-data-loader.d.ts.map +1 -0
  171. package/dist/utils/test-data-loader.js +20 -0
  172. package/dist/utils/test-data-loader.js.map +1 -0
  173. package/dist/utils/yaml-io.d.ts +14 -0
  174. package/dist/utils/yaml-io.d.ts.map +1 -0
  175. package/dist/utils/yaml-io.js +72 -0
  176. package/dist/utils/yaml-io.js.map +1 -0
  177. package/package.json +1 -1
  178. package/src/cli/commands/add.ts +25 -0
  179. package/src/cli/commands/cache-clear.ts +22 -0
  180. package/src/cli/commands/full.ts +35 -0
  181. package/src/cli/commands/generate.ts +55 -0
  182. package/src/cli/commands/init.ts +17 -0
  183. package/src/cli/commands/{live-scan-command.ts → live-scan.ts} +21 -18
  184. package/src/cli/commands/makeauth.ts +77 -0
  185. package/src/cli/commands/map.ts +97 -0
  186. package/src/cli/commands/validate.ts +43 -0
  187. package/src/cli/index.ts +32 -473
  188. package/src/cli/types.ts +9 -0
  189. package/src/cli/utils.ts +106 -0
  190. package/src/core/live-scanner/matrix-reader.ts +2 -8
  191. package/src/core/live-scanner/scanner.ts +27 -4
  192. package/src/core/live-scanner/step-replayer.ts +92 -6
  193. package/src/core/live-scanner/types.ts +1 -0
  194. package/src/core/validator/selector-validator.ts +3 -2
  195. package/src/generators/scaffold-generator/index.ts +23 -2
  196. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/click-select-action.hbs +2 -0
  197. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/wait-for-role-with-data.hbs +1 -0
  198. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/wait-for-role.hbs +1 -0
  199. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/checked-assertion.hbs +2 -1
  200. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/column-cell-assertion.hbs +3 -0
  201. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/contain-text-assertion.hbs +2 -1
  202. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/count-assertion.hbs +2 -1
  203. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/disabled-assertion.hbs +2 -1
  204. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/disabled-with-filter-assertion.hbs +2 -1
  205. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/disabled-with-role-variable-assertion.hbs +4 -3
  206. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/disabled-with-variable-assertion.hbs +2 -1
  207. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/empty-assertion.hbs +2 -1
  208. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/enabled-assertion.hbs +2 -1
  209. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/focused-assertion.hbs +2 -1
  210. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/have-text-assertion.hbs +2 -1
  211. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/hidden-dialog-heading-assertion.hbs +2 -0
  212. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/hidden-with-filter-assertion.hbs +2 -1
  213. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/hidden-with-role-variable-assertion.hbs +4 -3
  214. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/hidden-with-variable-assertion.hbs +2 -1
  215. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/is-hidden-assertion.hbs +1 -0
  216. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/list-item-count-assertion.hbs +2 -1
  217. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/not-checked-assertion.hbs +2 -1
  218. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/page-assertion.hbs +1 -0
  219. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-assertion.hbs +2 -1
  220. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-dialog-heading-assertion.hbs +2 -0
  221. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-locator-variable-assertion.hbs +2 -1
  222. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-role-variable-assertion.hbs +4 -3
  223. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-value-assertion.hbs +2 -1
  224. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-variable-assertion.hbs +1 -0
  225. package/src/generators/test-generator/adapters/playwright/templates/steps/navigation/navigation.hbs +1 -1
  226. package/src/generators/test-generator/adapters/playwright/templates/steps/navigation/wait-for-element-with-text.hbs +1 -1
  227. package/src/generators/test-generator/patterns/assertion-patterns.ts +102 -62
  228. package/src/generators/test-generator/patterns/form-patterns.ts +38 -60
  229. package/src/generators/test-generator/patterns/index.ts +22 -4
  230. package/src/generators/test-generator/patterns/interaction-patterns.ts +47 -107
  231. package/src/generators/test-generator/patterns/legacy-patterns.ts +104 -0
  232. package/src/generators/test-generator/patterns/navigation-patterns.ts +27 -69
  233. package/src/generators/test-generator/patterns/setup-patterns.ts +23 -41
  234. package/src/generators/test-generator/patterns/types.ts +26 -9
  235. package/src/generators/test-generator/step-mapper.ts +4 -124
  236. package/src/generators/test-generator/types.ts +131 -0
  237. package/src/generators/test-generator/utils/data-resolver.ts +8 -13
  238. package/src/generators/test-generator/utils/selector-resolver.ts +15 -17
  239. package/src/orchestrator/cache-manager.ts +1 -107
  240. package/src/orchestrator/pipeline.ts +58 -433
  241. package/src/orchestrator/reporter.ts +1 -1
  242. package/src/orchestrator/screen-manager.ts +1 -1
  243. package/src/utils/feature-finder.ts +33 -0
  244. package/src/utils/screen-paths.ts +37 -0
  245. package/src/utils/selector-loader.ts +23 -0
  246. package/src/utils/selector-types.ts +17 -0
  247. package/src/utils/test-data-loader.ts +23 -0
  248. package/src/utils/yaml-io.ts +33 -0
  249. package/dist/cli/commands/auto-tag-command.d.ts +0 -8
  250. package/dist/cli/commands/auto-tag-command.d.ts.map +0 -1
  251. package/dist/cli/commands/auto-tag-command.js +0 -104
  252. package/dist/cli/commands/auto-tag-command.js.map +0 -1
  253. package/dist/cli/commands/live-scan-command.d.ts +0 -9
  254. package/dist/cli/commands/live-scan-command.d.ts.map +0 -1
  255. package/dist/cli/commands/live-scan-command.js.map +0 -1
  256. package/dist/executor/playwright/playwright-generator.d.ts +0 -33
  257. package/dist/executor/playwright/playwright-generator.d.ts.map +0 -1
  258. package/dist/executor/playwright/playwright-generator.js +0 -136
  259. package/dist/executor/playwright/playwright-generator.js.map +0 -1
  260. package/dist/executor/test-generator.d.ts.map +0 -1
  261. package/dist/executor/test-generator.js +0 -30
  262. package/dist/executor/test-generator.js.map +0 -1
  263. package/dist/generators/cli.d.ts +0 -7
  264. package/dist/generators/cli.d.ts.map +0 -1
  265. package/dist/generators/cli.js +0 -570
  266. package/dist/generators/cli.js.map +0 -1
  267. package/dist/input/cli-adapter.d.ts +0 -75
  268. package/dist/input/cli-adapter.d.ts.map +0 -1
  269. package/dist/input/cli-adapter.js +0 -218
  270. package/dist/input/cli-adapter.js.map +0 -1
  271. package/dist/input/config-adapter.d.ts +0 -25
  272. package/dist/input/config-adapter.d.ts.map +0 -1
  273. package/dist/input/config-adapter.js +0 -70
  274. package/dist/input/config-adapter.js.map +0 -1
  275. package/dist/input/input-adapter.d.ts +0 -28
  276. package/dist/input/input-adapter.d.ts.map +0 -1
  277. package/dist/input/input-adapter.js +0 -17
  278. package/dist/input/input-adapter.js.map +0 -1
  279. package/dist/input/vscode-adapter.d.ts +0 -62
  280. package/dist/input/vscode-adapter.d.ts.map +0 -1
  281. package/dist/input/vscode-adapter.js +0 -64
  282. package/dist/input/vscode-adapter.js.map +0 -1
  283. package/dist/tools/auto-tagger.d.ts +0 -107
  284. package/dist/tools/auto-tagger.d.ts.map +0 -1
  285. package/dist/tools/auto-tagger.js +0 -502
  286. package/dist/tools/auto-tagger.js.map +0 -1
  287. package/src/cli/commands/auto-tag-command.ts +0 -80
  288. package/src/executor/playwright/playwright-generator.ts +0 -125
  289. package/src/executor/test-generator.ts +0 -90
  290. package/src/generators/cli.ts +0 -640
  291. package/src/input/cli-adapter.ts +0 -233
  292. package/src/input/config-adapter.ts +0 -71
  293. package/src/input/input-adapter.ts +0 -32
  294. package/src/input/vscode-adapter.ts +0 -90
  295. package/src/tools/auto-tagger.ts +0 -572
@@ -1,233 +0,0 @@
1
- /**
2
- * CLI Input Adapter
3
- * Parses command-line arguments into CLIOptions
4
- */
5
-
6
- import { Command } from 'commander';
7
- import { CLIOptions } from '../config/config-schema';
8
- import { InputAdapter, InputSource } from './input-adapter';
9
-
10
- export class CLIAdapter implements InputAdapter {
11
- name = InputSource.CLI;
12
-
13
- /**
14
- * Parse CLI arguments into options
15
- */
16
- parse(argv?: string[]): CLIOptions {
17
- // This will be called by commander when parsing CLI
18
- // For now, return empty options (will be populated by commander)
19
- return {};
20
- }
21
-
22
- /**
23
- * Validate CLI arguments format
24
- */
25
- validate(): boolean {
26
- // Commander handles validation
27
- return true;
28
- }
29
-
30
- /**
31
- * Create commander program with all commands
32
- */
33
- createProgram(): Command {
34
- const program = new Command();
35
-
36
- program
37
- .name('sungen')
38
- .description('AI-Native E2E Test Generator - Generate Playwright tests from Gherkin features')
39
- .version('1.0.19');
40
-
41
- // Global options
42
- program
43
- .option('-c, --config <path>', 'Path to custom config file')
44
- .option('-v, --verbose', 'Enable verbose logging')
45
- .option('-f, --force', 'Force regeneration, bypass cache');
46
-
47
- return program;
48
- }
49
-
50
- /**
51
- * Add discover command
52
- */
53
- addDiscoverCommand(program: Command): Command {
54
- return program
55
- .command('discover')
56
- .description('Discover UI elements and generate UI model')
57
- .requiredOption('-s, --screen <name>', 'Screen name to discover')
58
- .option('-d, --depth <number>', 'Component scan depth (default: unlimited)', '999')
59
- .option('-f, --force', 'Force rescan, bypass cache')
60
- .option('--mode <type>', 'Mapping mode: hybrid, ai-only, heuristic-only')
61
- .option('--ai-only', 'Force AI-only mapping (bypass heuristics)')
62
- .option('--heuristic-only', 'Force heuristic-only mapping (no AI fallback)');
63
- }
64
-
65
- /**
66
- * Add generate-tests command
67
- */
68
- addGenerateTestsCommand(program: Command): Command {
69
- return program
70
- .command('generate-tests')
71
- .description('Generate E2E test scripts from Gherkin features')
72
- .option('--ai-mapper', 'Enable AI fallback for unknown Gherkin patterns')
73
- .option('--framework <name>', 'Test framework (playwright, appium, integration)', 'playwright');
74
- }
75
-
76
- /**
77
- * Add map command (generate selector and test-data YAML from Gherkin)
78
- */
79
- addMapCommand(program: Command): Command {
80
- return program
81
- .command('map')
82
- .description('Generate selector and test-data YAML from Gherkin feature files')
83
- .option('-s, --screen <name>', 'Screen name (reads from qa/screens/<name>/features/)')
84
- .option('--file <path>', 'Single feature file path (generates selectors next to features folder)')
85
- .option('-o, --output <dir>', 'Output directory for generated files')
86
- .option('-f, --force', 'Force overwrite existing YAML files')
87
- .option('--scan-live', 'Run live-scan before mapping to detect real selectors')
88
- .option('--headed', 'Launch browser in headed mode (only with --scan-live)', false)
89
- .option('--auth-dir <path>', 'Auth storage state directory (only with --scan-live)', 'specs/.auth')
90
- .option('-v, --verbose', 'Detailed output');
91
- }
92
-
93
- /**
94
- * Add generate command (test code generation)
95
- */
96
- addGenerateCommand(program: Command): Command {
97
- return program
98
- .command('generate')
99
- .description('Generate Playwright test code from features')
100
- .option('--ai-mapper', 'Enable AI fallback for unknown Gherkin patterns')
101
- .option('--framework <name>', 'Test framework (playwright, appium, integration)', 'playwright')
102
- .option('-s, --screen <name>', 'Filter generation to specific screen')
103
- .option('-f, --force', 'Force regeneration, bypass cache')
104
- .option('--skip-validation', 'Skip validation before generation');
105
- }
106
-
107
- /**
108
- * Add full command
109
- */
110
- addFullCommand(program: Command): Command {
111
- return program
112
- .command('full')
113
- .description('Run full pipeline (discover + map + generate)')
114
- .option('-s, --screen <name>', 'Process specific screen (optional)')
115
- .option('-d, --depth <number>', 'Component scan depth (default: unlimited)', '999')
116
- .option('-f, --force', 'Force regeneration, bypass cache')
117
- .option('--mode <type>', 'Mapping mode: hybrid, ai-only, heuristic-only')
118
- .option('--ai-only', 'Force AI-only mapping (bypass heuristics)')
119
- .option('--heuristic-only', 'Force heuristic-only mapping (no AI fallback)');
120
- }
121
-
122
- /**
123
- * Add init command
124
- */
125
- addInitCommand(program: Command): Command {
126
- return program
127
- .command('init [projectName]')
128
- .description('Initialize Sungen project (optionally create and initialize in a new project folder)');
129
- }
130
-
131
- /**
132
- * Add cache-clear command
133
- */
134
- addCacheCommand(program: Command): Command {
135
- return program
136
- .command('cache-clear')
137
- .description('Clear all caches');
138
- }
139
-
140
- /**
141
- * Add auto-tag command
142
- */
143
- addAutoTagCommand(program: Command): Command {
144
- return program
145
- .command('auto-tag')
146
- .description('Auto-inject stable data-testid attributes into source code')
147
- .option('-s, --screen <name>', 'Tag specific screen (optional, defaults to all)')
148
- .option('--dry-run', 'Preview changes without modifying files')
149
- .option('--force', 'Overwrite existing data-testid attributes')
150
- .option('-v, --verbose', 'Show detailed output');
151
- }
152
-
153
- /**
154
- * Add live-scan command
155
- */
156
- addLiveScanCommand(program: Command): Command {
157
- return program
158
- .command('live-scan')
159
- .description('Scan a live site to discover real selectors for Gherkin element references')
160
- .requiredOption('-s, --screen <name>', 'Screen name to scan')
161
- .option('--url <baseUrl>', 'Base URL of the running site')
162
- .option('--headed', 'Launch browser in headed (visible) mode')
163
- .option('--auth-dir <path>', 'Directory containing auth storage state files (default: specs/.auth)');
164
- }
165
-
166
- /**
167
- * Add add --screen command
168
- */
169
- addAddScreenCommand(program: Command): Command {
170
- return program
171
- .command('add')
172
- .description('Add screen definition with scaffolded files')
173
- .requiredOption('--screen <name>', 'Screen name')
174
- .option('-p, --path <path>', 'Screen route path')
175
- .option('-d, --description <text>', 'Screen description');
176
- }
177
-
178
- /**
179
- * Add validate command
180
- */
181
- addValidateCommand(program: Command): Command {
182
- return program
183
- .command('validate')
184
- .description('Validate Gherkin features and selector/test-data mappings')
185
- .option('-s, --screen <name>', 'Validate specific screen (optional, defaults to all)')
186
- .option('--json', 'Output results as JSON')
187
- .option('-v, --verbose', 'Show all checks, not just failures');
188
- }
189
-
190
- /**
191
- * Add makeauth command - Generate auth state for E2E tests
192
- */
193
- addMakeAuthCommand(program: Command): Command {
194
- return program
195
- .command('makeauth <name>')
196
- .description('Generate auth state by opening browser for manual SSO login')
197
- .option('-u, --url <url>', 'Base URL of the application')
198
- .option('-p, --path <path>', 'Login page path (default: /login)')
199
- .option('-o, --output <dir>', 'Output directory (default: specs/.auth)')
200
- .option('-t, --timeout <ms>', 'Overall timeout in milliseconds (default: 180000)')
201
- .option('--nav-timeout <ms>', 'Navigation timeout in milliseconds (default: 180000)')
202
- .option('--stability-wait <ms>', 'URL stability wait in milliseconds (default: 5000)')
203
- .option('--headless', 'Run browser in headless mode')
204
- .option('--verify', 'Verify existing auth state instead of creating new')
205
- .option('--list', 'List all existing auth states')
206
- .option('--export', 'Export auth state as base64 for CI');
207
- }
208
-
209
- /**
210
- * Extract options from commander Command
211
- */
212
- extractOptions(command: Command): CLIOptions {
213
- const opts = command.opts();
214
-
215
- // Determine mode from flags
216
- let mode: 'hybrid' | 'ai-only' | 'heuristic-only' | undefined = opts.mode;
217
- if (opts.aiOnly) mode = 'ai-only';
218
- if (opts.heuristicOnly) mode = 'heuristic-only';
219
-
220
- return {
221
- screen: opts.screen,
222
- depth: opts.depth ? parseInt(opts.depth, 10) : undefined,
223
- force: opts.force,
224
- aiMapper: opts.aiMapper,
225
- framework: opts.framework,
226
- mode,
227
- aiOnly: opts.aiOnly,
228
- heuristicOnly: opts.heuristicOnly,
229
- verbose: opts.verbose,
230
- config: opts.config
231
- };
232
- }
233
- }
@@ -1,71 +0,0 @@
1
- /**
2
- * Config File Input Adapter
3
- * Parses configuration from YAML/JSON files
4
- */
5
-
6
- import fs from 'fs';
7
- import path from 'path';
8
- import yaml from 'yaml';
9
- import { CLIOptions } from '../config/config-schema';
10
- import { InputAdapter, InputSource } from './input-adapter';
11
-
12
- export class ConfigAdapter implements InputAdapter {
13
- name = InputSource.FILE;
14
- private configPath: string;
15
-
16
- constructor(configPath: string) {
17
- this.configPath = path.resolve(configPath);
18
- }
19
-
20
- /**
21
- * Parse config file into CLIOptions
22
- * Note: Full config is loaded by ConfigLoader, this just validates the file
23
- */
24
- parse(): CLIOptions {
25
- if (!this.validate()) {
26
- throw new Error(`Invalid config file: ${this.configPath}`);
27
- }
28
-
29
- // Return empty options - actual config loading is done by ConfigLoader
30
- // This adapter is mainly for validation
31
- return {
32
- config: this.configPath
33
- };
34
- }
35
-
36
- /**
37
- * Validate config file exists and is valid YAML/JSON
38
- */
39
- validate(): boolean {
40
- try {
41
- if (!fs.existsSync(this.configPath)) {
42
- console.error(`Config file not found: ${this.configPath}`);
43
- return false;
44
- }
45
-
46
- const content = fs.readFileSync(this.configPath, 'utf-8');
47
- const ext = path.extname(this.configPath);
48
-
49
- if (ext === '.yaml' || ext === '.yml') {
50
- yaml.parse(content);
51
- } else if (ext === '.json') {
52
- JSON.parse(content);
53
- } else {
54
- console.error(`Unsupported config file format: ${ext}`);
55
- return false;
56
- }
57
-
58
- return true;
59
- } catch (error) {
60
- console.error(`Config file validation failed: ${error}`);
61
- return false;
62
- }
63
- }
64
-
65
- /**
66
- * Get config file path
67
- */
68
- getPath(): string {
69
- return this.configPath;
70
- }
71
- }
@@ -1,32 +0,0 @@
1
- /**
2
- * Input Adapter Interface
3
- * Defines how input sources provide configuration and commands
4
- */
5
-
6
- import { CLIOptions } from '../config/config-schema';
7
-
8
- export interface InputAdapter {
9
- /**
10
- * Adapter name (for logging/debugging)
11
- */
12
- name: string;
13
-
14
- /**
15
- * Parse input and return CLI options
16
- */
17
- parse(...args: any[]): CLIOptions;
18
-
19
- /**
20
- * Validate input format
21
- */
22
- validate(): boolean;
23
- }
24
-
25
- /**
26
- * Input source types
27
- */
28
- export enum InputSource {
29
- CLI = 'cli',
30
- FILE = 'file',
31
- VSCODE = 'vscode'
32
- }
@@ -1,90 +0,0 @@
1
- /**
2
- * VS Code Extension Input Adapter
3
- * Handles input from VS Code extension commands
4
- *
5
- * This is a placeholder for future VS Code extension integration
6
- * The extension will call framework methods directly via this adapter
7
- */
8
-
9
- import { CLIOptions } from '../config/config-schema';
10
- import { InputAdapter, InputSource } from './input-adapter';
11
-
12
- export class VSCodeAdapter implements InputAdapter {
13
- name = InputSource.VSCODE;
14
-
15
- /**
16
- * Parse VS Code extension command into options
17
- *
18
- * @param command - VS Code command object
19
- * @example
20
- * // From VS Code extension:
21
- * const options = vscodeAdapter.parse({
22
- * action: 'discover',
23
- * screen: 'chat',
24
- * depth: 999
25
- * });
26
- */
27
- parse(command: VSCodeCommand): CLIOptions {
28
- return {
29
- screen: command.screen,
30
- depth: command.depth,
31
- force: command.force,
32
- aiMapper: command.aiMapper,
33
- framework: command.framework,
34
- verbose: command.verbose,
35
- config: command.config
36
- };
37
- }
38
-
39
- /**
40
- * Validate VS Code command format
41
- */
42
- validate(): boolean {
43
- // VS Code extension will handle validation
44
- return true;
45
- }
46
-
47
- /**
48
- * Execute framework command from VS Code
49
- * This will be the main entry point for VS Code extension
50
- *
51
- * @param command - VS Code command
52
- * @returns Result object with success/error information
53
- */
54
- async execute(command: VSCodeCommand): Promise<VSCodeResult> {
55
- // This will be implemented when VS Code extension is built
56
- // It will call the orchestrator pipeline with parsed options
57
-
58
- return {
59
- success: false,
60
- message: 'VS Code adapter not yet implemented',
61
- data: null
62
- };
63
- }
64
- }
65
-
66
- /**
67
- * VS Code Command Interface
68
- * Defines the structure of commands sent from VS Code extension
69
- */
70
- export interface VSCodeCommand {
71
- action: 'discover' | 'generate' | 'full' | 'cache-clear';
72
- screen?: string;
73
- depth?: number;
74
- force?: boolean;
75
- aiMapper?: boolean;
76
- framework?: 'playwright' | 'appium' | 'integration';
77
- verbose?: boolean;
78
- config?: string;
79
- }
80
-
81
- /**
82
- * VS Code Result Interface
83
- * Defines the structure of results returned to VS Code extension
84
- */
85
- export interface VSCodeResult {
86
- success: boolean;
87
- message: string;
88
- data: any;
89
- errors?: string[];
90
- }