@sun-asterisk/sungen 1.0.24 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/README.md +198 -74
  2. package/dist/cli/commands/add.d.ts.map +1 -1
  3. package/dist/cli/commands/add.js +5 -3
  4. package/dist/cli/commands/add.js.map +1 -1
  5. package/dist/cli/commands/generate.d.ts.map +1 -1
  6. package/dist/cli/commands/generate.js +110 -35
  7. package/dist/cli/commands/generate.js.map +1 -1
  8. package/dist/cli/index.d.ts +2 -2
  9. package/dist/cli/index.js +5 -16
  10. package/dist/cli/index.js.map +1 -1
  11. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/frame-enter-action.hbs +1 -0
  12. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/frame-exit-action.hbs +1 -0
  13. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/keyboard-global-action.hbs +1 -0
  14. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/scroll-action.hbs +1 -0
  15. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/table-action-in-row.hbs +2 -0
  16. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/table-cell-by-filter.hbs +3 -0
  17. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/table-cell-by-index.hbs +3 -0
  18. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/table-column-exists.hbs +2 -0
  19. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/table-empty.hbs +2 -0
  20. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/table-row-count.hbs +2 -0
  21. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/table-row-exists.hbs +2 -0
  22. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/table-row-not-exists.hbs +2 -0
  23. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-value-assertion.hbs +1 -1
  24. package/dist/generators/test-generator/adapters/playwright/templates/steps/partials/locator-base.hbs +11 -2
  25. package/dist/generators/test-generator/adapters/playwright/templates/steps/partials/locator.hbs +11 -2
  26. package/dist/generators/test-generator/code-generator.d.ts +0 -1
  27. package/dist/generators/test-generator/code-generator.d.ts.map +1 -1
  28. package/dist/generators/test-generator/code-generator.js +10 -47
  29. package/dist/generators/test-generator/code-generator.js.map +1 -1
  30. package/dist/generators/test-generator/patterns/assertion-patterns.d.ts.map +1 -1
  31. package/dist/generators/test-generator/patterns/assertion-patterns.js +2 -0
  32. package/dist/generators/test-generator/patterns/assertion-patterns.js.map +1 -1
  33. package/dist/generators/test-generator/patterns/index.d.ts +4 -1
  34. package/dist/generators/test-generator/patterns/index.d.ts.map +1 -1
  35. package/dist/generators/test-generator/patterns/index.js +17 -5
  36. package/dist/generators/test-generator/patterns/index.js.map +1 -1
  37. package/dist/generators/test-generator/patterns/interaction-patterns.js +1 -1
  38. package/dist/generators/test-generator/patterns/interaction-patterns.js.map +1 -1
  39. package/dist/generators/test-generator/patterns/keyboard-patterns.d.ts +7 -0
  40. package/dist/generators/test-generator/patterns/keyboard-patterns.d.ts.map +1 -0
  41. package/dist/generators/test-generator/patterns/keyboard-patterns.js +47 -0
  42. package/dist/generators/test-generator/patterns/keyboard-patterns.js.map +1 -0
  43. package/dist/generators/test-generator/patterns/scope-patterns.d.ts +7 -0
  44. package/dist/generators/test-generator/patterns/scope-patterns.d.ts.map +1 -0
  45. package/dist/generators/test-generator/patterns/scope-patterns.js +36 -0
  46. package/dist/generators/test-generator/patterns/scope-patterns.js.map +1 -0
  47. package/dist/generators/test-generator/patterns/scroll-patterns.d.ts +7 -0
  48. package/dist/generators/test-generator/patterns/scroll-patterns.d.ts.map +1 -0
  49. package/dist/generators/test-generator/patterns/scroll-patterns.js +25 -0
  50. package/dist/generators/test-generator/patterns/scroll-patterns.js.map +1 -0
  51. package/dist/generators/test-generator/patterns/table-patterns.d.ts +7 -0
  52. package/dist/generators/test-generator/patterns/table-patterns.d.ts.map +1 -0
  53. package/dist/generators/test-generator/patterns/table-patterns.js +192 -0
  54. package/dist/generators/test-generator/patterns/table-patterns.js.map +1 -0
  55. package/dist/generators/test-generator/step-mapper.d.ts +5 -3
  56. package/dist/generators/test-generator/step-mapper.d.ts.map +1 -1
  57. package/dist/generators/test-generator/step-mapper.js +38 -27
  58. package/dist/generators/test-generator/step-mapper.js.map +1 -1
  59. package/dist/generators/test-generator/template-engine.d.ts.map +1 -1
  60. package/dist/generators/test-generator/template-engine.js +4 -1
  61. package/dist/generators/test-generator/template-engine.js.map +1 -1
  62. package/dist/generators/test-generator/types.d.ts +7 -24
  63. package/dist/generators/test-generator/types.d.ts.map +1 -1
  64. package/dist/generators/test-generator/types.js +2 -101
  65. package/dist/generators/test-generator/types.js.map +1 -1
  66. package/dist/generators/test-generator/utils/selector-resolver.d.ts +14 -0
  67. package/dist/generators/test-generator/utils/selector-resolver.d.ts.map +1 -1
  68. package/dist/generators/test-generator/utils/selector-resolver.js +37 -11
  69. package/dist/generators/test-generator/utils/selector-resolver.js.map +1 -1
  70. package/dist/orchestrator/project-initializer.d.ts +12 -0
  71. package/dist/orchestrator/project-initializer.d.ts.map +1 -1
  72. package/dist/orchestrator/project-initializer.js +72 -160
  73. package/dist/orchestrator/project-initializer.js.map +1 -1
  74. package/dist/orchestrator/screen-manager.d.ts +1 -32
  75. package/dist/orchestrator/screen-manager.d.ts.map +1 -1
  76. package/dist/orchestrator/screen-manager.js +55 -216
  77. package/dist/orchestrator/screen-manager.js.map +1 -1
  78. package/dist/orchestrator/templates/ai-rules.md +189 -0
  79. package/dist/orchestrator/templates/gitignore +16 -0
  80. package/dist/orchestrator/templates/playwright.config.d.ts +10 -0
  81. package/dist/orchestrator/templates/playwright.config.d.ts.map +1 -0
  82. package/dist/orchestrator/templates/playwright.config.js +77 -0
  83. package/dist/orchestrator/templates/playwright.config.js.map +1 -0
  84. package/dist/orchestrator/templates/playwright.config.ts +80 -0
  85. package/dist/orchestrator/templates/readme.md +197 -0
  86. package/dist/utils/selector-types.d.ts +1 -1
  87. package/dist/utils/selector-types.d.ts.map +1 -1
  88. package/dist/utils/selector-types.js +3 -0
  89. package/dist/utils/selector-types.js.map +1 -1
  90. package/docs/gherkin standards/gherkin-core-standard.md +377 -0
  91. package/docs/gherkin standards/gherkin-core-standard.vi.md +303 -0
  92. package/docs/gherkin-dictionary.md +1071 -0
  93. package/docs/makeauth.md +225 -0
  94. package/package.json +4 -3
  95. package/src/cli/commands/add.ts +5 -3
  96. package/src/cli/commands/generate.ts +90 -38
  97. package/src/cli/index.ts +5 -16
  98. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/frame-enter-action.hbs +1 -0
  99. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/frame-exit-action.hbs +1 -0
  100. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/keyboard-global-action.hbs +1 -0
  101. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/scroll-action.hbs +1 -0
  102. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/table-action-in-row.hbs +2 -0
  103. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/table-cell-by-filter.hbs +3 -0
  104. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/table-cell-by-index.hbs +3 -0
  105. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/table-column-exists.hbs +2 -0
  106. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/table-empty.hbs +2 -0
  107. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/table-row-count.hbs +2 -0
  108. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/table-row-exists.hbs +2 -0
  109. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/table-row-not-exists.hbs +2 -0
  110. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-value-assertion.hbs +1 -1
  111. package/src/generators/test-generator/adapters/playwright/templates/steps/partials/locator-base.hbs +11 -2
  112. package/src/generators/test-generator/adapters/playwright/templates/steps/partials/locator.hbs +11 -2
  113. package/src/generators/test-generator/code-generator.ts +11 -59
  114. package/src/generators/test-generator/patterns/assertion-patterns.ts +2 -0
  115. package/src/generators/test-generator/patterns/index.ts +12 -3
  116. package/src/generators/test-generator/patterns/interaction-patterns.ts +1 -1
  117. package/src/generators/test-generator/patterns/keyboard-patterns.ts +51 -0
  118. package/src/generators/test-generator/patterns/scope-patterns.ts +40 -0
  119. package/src/generators/test-generator/patterns/scroll-patterns.ts +27 -0
  120. package/src/generators/test-generator/patterns/table-patterns.ts +232 -0
  121. package/src/generators/test-generator/step-mapper.ts +42 -27
  122. package/src/generators/test-generator/template-engine.ts +3 -1
  123. package/src/generators/test-generator/types.ts +7 -112
  124. package/src/generators/test-generator/utils/selector-resolver.ts +70 -25
  125. package/src/orchestrator/project-initializer.ts +75 -160
  126. package/src/orchestrator/screen-manager.ts +61 -233
  127. package/src/orchestrator/templates/ai-rules.md +189 -0
  128. package/src/orchestrator/templates/gitignore +16 -0
  129. package/src/orchestrator/templates/playwright.config.ts +80 -0
  130. package/src/orchestrator/templates/readme.md +197 -0
  131. package/src/utils/selector-types.ts +3 -0
  132. package/dist/cli/commands/cache-clear.d.ts +0 -3
  133. package/dist/cli/commands/cache-clear.d.ts.map +0 -1
  134. package/dist/cli/commands/cache-clear.js +0 -24
  135. package/dist/cli/commands/cache-clear.js.map +0 -1
  136. package/dist/cli/commands/full.d.ts +0 -3
  137. package/dist/cli/commands/full.d.ts.map +0 -1
  138. package/dist/cli/commands/full.js +0 -37
  139. package/dist/cli/commands/full.js.map +0 -1
  140. package/dist/cli/commands/live-scan.d.ts +0 -3
  141. package/dist/cli/commands/live-scan.d.ts.map +0 -1
  142. package/dist/cli/commands/live-scan.js +0 -78
  143. package/dist/cli/commands/live-scan.js.map +0 -1
  144. package/dist/cli/commands/map.d.ts +0 -3
  145. package/dist/cli/commands/map.d.ts.map +0 -1
  146. package/dist/cli/commands/map.js +0 -93
  147. package/dist/cli/commands/map.js.map +0 -1
  148. package/dist/cli/commands/validate.d.ts +0 -3
  149. package/dist/cli/commands/validate.d.ts.map +0 -1
  150. package/dist/cli/commands/validate.js +0 -43
  151. package/dist/cli/commands/validate.js.map +0 -1
  152. package/dist/cli/utils.d.ts +0 -6
  153. package/dist/cli/utils.d.ts.map +0 -1
  154. package/dist/cli/utils.js +0 -101
  155. package/dist/cli/utils.js.map +0 -1
  156. package/dist/config/config-loader.d.ts +0 -51
  157. package/dist/config/config-loader.d.ts.map +0 -1
  158. package/dist/config/config-loader.js +0 -216
  159. package/dist/config/config-loader.js.map +0 -1
  160. package/dist/config/config-schema.d.ts +0 -121
  161. package/dist/config/config-schema.d.ts.map +0 -1
  162. package/dist/config/config-schema.js +0 -7
  163. package/dist/config/config-schema.js.map +0 -1
  164. package/dist/core/live-scanner/config-reader.d.ts +0 -10
  165. package/dist/core/live-scanner/config-reader.d.ts.map +0 -1
  166. package/dist/core/live-scanner/config-reader.js +0 -87
  167. package/dist/core/live-scanner/config-reader.js.map +0 -1
  168. package/dist/core/live-scanner/element-finder.d.ts +0 -20
  169. package/dist/core/live-scanner/element-finder.d.ts.map +0 -1
  170. package/dist/core/live-scanner/element-finder.js +0 -481
  171. package/dist/core/live-scanner/element-finder.js.map +0 -1
  172. package/dist/core/live-scanner/index.d.ts +0 -8
  173. package/dist/core/live-scanner/index.d.ts.map +0 -1
  174. package/dist/core/live-scanner/index.js +0 -33
  175. package/dist/core/live-scanner/index.js.map +0 -1
  176. package/dist/core/live-scanner/matrix-reader.d.ts +0 -17
  177. package/dist/core/live-scanner/matrix-reader.d.ts.map +0 -1
  178. package/dist/core/live-scanner/matrix-reader.js +0 -60
  179. package/dist/core/live-scanner/matrix-reader.js.map +0 -1
  180. package/dist/core/live-scanner/matrix-writer.d.ts +0 -7
  181. package/dist/core/live-scanner/matrix-writer.d.ts.map +0 -1
  182. package/dist/core/live-scanner/matrix-writer.js +0 -103
  183. package/dist/core/live-scanner/matrix-writer.js.map +0 -1
  184. package/dist/core/live-scanner/role-fallback.d.ts +0 -15
  185. package/dist/core/live-scanner/role-fallback.d.ts.map +0 -1
  186. package/dist/core/live-scanner/role-fallback.js +0 -46
  187. package/dist/core/live-scanner/role-fallback.js.map +0 -1
  188. package/dist/core/live-scanner/scanner.d.ts +0 -22
  189. package/dist/core/live-scanner/scanner.d.ts.map +0 -1
  190. package/dist/core/live-scanner/scanner.js +0 -303
  191. package/dist/core/live-scanner/scanner.js.map +0 -1
  192. package/dist/core/live-scanner/step-replayer.d.ts +0 -26
  193. package/dist/core/live-scanner/step-replayer.d.ts.map +0 -1
  194. package/dist/core/live-scanner/step-replayer.js +0 -473
  195. package/dist/core/live-scanner/step-replayer.js.map +0 -1
  196. package/dist/core/live-scanner/types.d.ts +0 -52
  197. package/dist/core/live-scanner/types.d.ts.map +0 -1
  198. package/dist/core/live-scanner/types.js +0 -14
  199. package/dist/core/live-scanner/types.js.map +0 -1
  200. package/dist/core/selector-base/annotation-handler.d.ts +0 -45
  201. package/dist/core/selector-base/annotation-handler.d.ts.map +0 -1
  202. package/dist/core/selector-base/annotation-handler.js +0 -102
  203. package/dist/core/selector-base/annotation-handler.js.map +0 -1
  204. package/dist/core/selector-base/base-generator.d.ts +0 -49
  205. package/dist/core/selector-base/base-generator.d.ts.map +0 -1
  206. package/dist/core/selector-base/base-generator.js +0 -214
  207. package/dist/core/selector-base/base-generator.js.map +0 -1
  208. package/dist/core/selector-base/gherkin-parser.d.ts +0 -24
  209. package/dist/core/selector-base/gherkin-parser.d.ts.map +0 -1
  210. package/dist/core/selector-base/gherkin-parser.js +0 -42
  211. package/dist/core/selector-base/gherkin-parser.js.map +0 -1
  212. package/dist/core/selector-mapper/priority-mapper.d.ts +0 -74
  213. package/dist/core/selector-mapper/priority-mapper.d.ts.map +0 -1
  214. package/dist/core/selector-mapper/priority-mapper.js +0 -477
  215. package/dist/core/selector-mapper/priority-mapper.js.map +0 -1
  216. package/dist/core/ui-scanner/heuristics/base-heuristic.d.ts +0 -91
  217. package/dist/core/ui-scanner/heuristics/base-heuristic.d.ts.map +0 -1
  218. package/dist/core/ui-scanner/heuristics/base-heuristic.js +0 -175
  219. package/dist/core/ui-scanner/heuristics/base-heuristic.js.map +0 -1
  220. package/dist/core/ui-scanner/react-scanner.d.ts +0 -32
  221. package/dist/core/ui-scanner/react-scanner.d.ts.map +0 -1
  222. package/dist/core/ui-scanner/react-scanner.js +0 -163
  223. package/dist/core/ui-scanner/react-scanner.js.map +0 -1
  224. package/dist/core/ui-scanner/scanner-interface.d.ts +0 -94
  225. package/dist/core/ui-scanner/scanner-interface.d.ts.map +0 -1
  226. package/dist/core/ui-scanner/scanner-interface.js +0 -33
  227. package/dist/core/ui-scanner/scanner-interface.js.map +0 -1
  228. package/dist/core/ui-scanner/strict-scanner.d.ts +0 -81
  229. package/dist/core/ui-scanner/strict-scanner.d.ts.map +0 -1
  230. package/dist/core/ui-scanner/strict-scanner.js +0 -511
  231. package/dist/core/ui-scanner/strict-scanner.js.map +0 -1
  232. package/dist/core/validator/data-validator.d.ts +0 -38
  233. package/dist/core/validator/data-validator.d.ts.map +0 -1
  234. package/dist/core/validator/data-validator.js +0 -212
  235. package/dist/core/validator/data-validator.js.map +0 -1
  236. package/dist/core/validator/feature-validator.d.ts +0 -27
  237. package/dist/core/validator/feature-validator.d.ts.map +0 -1
  238. package/dist/core/validator/feature-validator.js +0 -182
  239. package/dist/core/validator/feature-validator.js.map +0 -1
  240. package/dist/core/validator/index.d.ts +0 -46
  241. package/dist/core/validator/index.d.ts.map +0 -1
  242. package/dist/core/validator/index.js +0 -17
  243. package/dist/core/validator/index.js.map +0 -1
  244. package/dist/core/validator/screen-validator.d.ts +0 -35
  245. package/dist/core/validator/screen-validator.d.ts.map +0 -1
  246. package/dist/core/validator/screen-validator.js +0 -195
  247. package/dist/core/validator/screen-validator.js.map +0 -1
  248. package/dist/core/validator/selector-validator.d.ts +0 -36
  249. package/dist/core/validator/selector-validator.d.ts.map +0 -1
  250. package/dist/core/validator/selector-validator.js +0 -210
  251. package/dist/core/validator/selector-validator.js.map +0 -1
  252. package/dist/external/ai-provider.d.ts +0 -60
  253. package/dist/external/ai-provider.d.ts.map +0 -1
  254. package/dist/external/ai-provider.js +0 -30
  255. package/dist/external/ai-provider.js.map +0 -1
  256. package/dist/external/anthropic-provider.d.ts +0 -29
  257. package/dist/external/anthropic-provider.d.ts.map +0 -1
  258. package/dist/external/anthropic-provider.js +0 -85
  259. package/dist/external/anthropic-provider.js.map +0 -1
  260. package/dist/generators/cache/cache-manager.d.ts +0 -66
  261. package/dist/generators/cache/cache-manager.d.ts.map +0 -1
  262. package/dist/generators/cache/cache-manager.js +0 -286
  263. package/dist/generators/cache/cache-manager.js.map +0 -1
  264. package/dist/generators/dsl-writer/index.d.ts +0 -33
  265. package/dist/generators/dsl-writer/index.d.ts.map +0 -1
  266. package/dist/generators/dsl-writer/index.js +0 -226
  267. package/dist/generators/dsl-writer/index.js.map +0 -1
  268. package/dist/generators/scaffold-generator/index.d.ts +0 -162
  269. package/dist/generators/scaffold-generator/index.d.ts.map +0 -1
  270. package/dist/generators/scaffold-generator/index.js +0 -877
  271. package/dist/generators/scaffold-generator/index.js.map +0 -1
  272. package/dist/generators/selector-mapper/ai-mapper.d.ts +0 -56
  273. package/dist/generators/selector-mapper/ai-mapper.d.ts.map +0 -1
  274. package/dist/generators/selector-mapper/ai-mapper.js +0 -457
  275. package/dist/generators/selector-mapper/ai-mapper.js.map +0 -1
  276. package/dist/generators/selector-mapper/hybrid-mapper.d.ts +0 -67
  277. package/dist/generators/selector-mapper/hybrid-mapper.d.ts.map +0 -1
  278. package/dist/generators/selector-mapper/hybrid-mapper.js +0 -349
  279. package/dist/generators/selector-mapper/hybrid-mapper.js.map +0 -1
  280. package/dist/generators/selector-mapper/index.d.ts +0 -8
  281. package/dist/generators/selector-mapper/index.d.ts.map +0 -1
  282. package/dist/generators/selector-mapper/index.js +0 -12
  283. package/dist/generators/selector-mapper/index.js.map +0 -1
  284. package/dist/generators/selector-mapper/intelligent-mapper.d.ts +0 -125
  285. package/dist/generators/selector-mapper/intelligent-mapper.d.ts.map +0 -1
  286. package/dist/generators/selector-mapper/intelligent-mapper.js +0 -391
  287. package/dist/generators/selector-mapper/intelligent-mapper.js.map +0 -1
  288. package/dist/generators/test-generator/ai-step-mapper.d.ts +0 -27
  289. package/dist/generators/test-generator/ai-step-mapper.d.ts.map +0 -1
  290. package/dist/generators/test-generator/ai-step-mapper.js +0 -204
  291. package/dist/generators/test-generator/ai-step-mapper.js.map +0 -1
  292. package/dist/generators/test-generator/auth-setup-generator.d.ts +0 -18
  293. package/dist/generators/test-generator/auth-setup-generator.d.ts.map +0 -1
  294. package/dist/generators/test-generator/auth-setup-generator.js +0 -82
  295. package/dist/generators/test-generator/auth-setup-generator.js.map +0 -1
  296. package/dist/generators/test-generator/patterns/legacy-patterns.d.ts +0 -7
  297. package/dist/generators/test-generator/patterns/legacy-patterns.d.ts.map +0 -1
  298. package/dist/generators/test-generator/patterns/legacy-patterns.js +0 -98
  299. package/dist/generators/test-generator/patterns/legacy-patterns.js.map +0 -1
  300. package/dist/generators/test-generator/templates/auth-setup.ts.hbs +0 -36
  301. package/dist/generators/ui-model-builder/deep-scanner.d.ts +0 -121
  302. package/dist/generators/ui-model-builder/deep-scanner.d.ts.map +0 -1
  303. package/dist/generators/ui-model-builder/deep-scanner.js +0 -1113
  304. package/dist/generators/ui-model-builder/deep-scanner.js.map +0 -1
  305. package/dist/generators/ui-model-builder/enhanced-deep-scanner.d.ts +0 -110
  306. package/dist/generators/ui-model-builder/enhanced-deep-scanner.d.ts.map +0 -1
  307. package/dist/generators/ui-model-builder/enhanced-deep-scanner.js +0 -608
  308. package/dist/generators/ui-model-builder/enhanced-deep-scanner.js.map +0 -1
  309. package/dist/generators/ui-model-builder/react-scanner.d.ts +0 -107
  310. package/dist/generators/ui-model-builder/react-scanner.d.ts.map +0 -1
  311. package/dist/generators/ui-model-builder/react-scanner.js +0 -797
  312. package/dist/generators/ui-model-builder/react-scanner.js.map +0 -1
  313. package/dist/orchestrator/cache-manager.d.ts +0 -15
  314. package/dist/orchestrator/cache-manager.d.ts.map +0 -1
  315. package/dist/orchestrator/cache-manager.js +0 -62
  316. package/dist/orchestrator/cache-manager.js.map +0 -1
  317. package/dist/orchestrator/pipeline.d.ts +0 -56
  318. package/dist/orchestrator/pipeline.d.ts.map +0 -1
  319. package/dist/orchestrator/pipeline.js +0 -298
  320. package/dist/orchestrator/pipeline.js.map +0 -1
  321. package/dist/orchestrator/reporter.d.ts +0 -15
  322. package/dist/orchestrator/reporter.d.ts.map +0 -1
  323. package/dist/orchestrator/reporter.js +0 -30
  324. package/dist/orchestrator/reporter.js.map +0 -1
  325. package/src/cli/commands/cache-clear.ts +0 -22
  326. package/src/cli/commands/full.ts +0 -35
  327. package/src/cli/commands/live-scan.ts +0 -82
  328. package/src/cli/commands/map.ts +0 -97
  329. package/src/cli/commands/validate.ts +0 -43
  330. package/src/cli/utils.ts +0 -106
  331. package/src/config/ai-providers.yaml +0 -56
  332. package/src/config/config-loader.ts +0 -248
  333. package/src/config/config-schema.ts +0 -148
  334. package/src/config/default.config.yaml +0 -107
  335. package/src/config/framework.config.yaml +0 -52
  336. package/src/config/routes.yaml +0 -31
  337. package/src/core/live-scanner/config-reader.ts +0 -57
  338. package/src/core/live-scanner/element-finder.ts +0 -534
  339. package/src/core/live-scanner/index.ts +0 -7
  340. package/src/core/live-scanner/matrix-reader.ts +0 -65
  341. package/src/core/live-scanner/matrix-writer.ts +0 -77
  342. package/src/core/live-scanner/role-fallback.ts +0 -44
  343. package/src/core/live-scanner/scanner.ts +0 -321
  344. package/src/core/live-scanner/step-replayer.ts +0 -503
  345. package/src/core/live-scanner/types.ts +0 -58
  346. package/src/core/selector-base/annotation-handler.ts +0 -127
  347. package/src/core/selector-base/base-generator.ts +0 -234
  348. package/src/core/selector-base/gherkin-parser.ts +0 -57
  349. package/src/core/selector-mapper/priority-mapper.ts +0 -607
  350. package/src/core/ui-scanner/heuristics/base-heuristic.ts +0 -216
  351. package/src/core/ui-scanner/react-scanner.ts +0 -156
  352. package/src/core/ui-scanner/scanner-interface.ts +0 -133
  353. package/src/core/ui-scanner/strict-scanner.ts +0 -629
  354. package/src/core/validator/data-validator.ts +0 -202
  355. package/src/core/validator/feature-validator.ts +0 -176
  356. package/src/core/validator/index.ts +0 -57
  357. package/src/core/validator/screen-validator.ts +0 -209
  358. package/src/core/validator/selector-validator.ts +0 -209
  359. package/src/external/ai-provider.ts +0 -90
  360. package/src/external/anthropic-provider.ts +0 -114
  361. package/src/generators/README.md +0 -410
  362. package/src/generators/cache/cache-manager.ts +0 -322
  363. package/src/generators/dsl-writer/index.ts +0 -253
  364. package/src/generators/scaffold-generator/index.ts +0 -1029
  365. package/src/generators/selector-mapper/ai-mapper.ts +0 -528
  366. package/src/generators/selector-mapper/hybrid-mapper.ts +0 -427
  367. package/src/generators/selector-mapper/index.ts +0 -10
  368. package/src/generators/selector-mapper/intelligent-mapper.ts +0 -530
  369. package/src/generators/test-generator/ai-step-mapper.ts +0 -224
  370. package/src/generators/test-generator/auth-setup-generator.ts +0 -59
  371. package/src/generators/test-generator/patterns/legacy-patterns.ts +0 -104
  372. package/src/generators/test-generator/templates/auth-setup.ts.hbs +0 -36
  373. package/src/generators/ui-model-builder/deep-scanner.ts +0 -1244
  374. package/src/generators/ui-model-builder/enhanced-deep-scanner.ts +0 -731
  375. package/src/generators/ui-model-builder/react-scanner.ts +0 -959
  376. package/src/orchestrator/cache-manager.ts +0 -32
  377. package/src/orchestrator/pipeline.ts +0 -354
  378. package/src/orchestrator/reporter.ts +0 -36
@@ -1,32 +0,0 @@
1
- /**
2
- * Cache Manager
3
- * Manages cache directory operations
4
- */
5
-
6
- import * as fs from 'fs';
7
- import * as path from 'path';
8
- import { RuntimeConfig } from '../config/config-schema';
9
-
10
- export class CacheManager {
11
- private config: RuntimeConfig;
12
- private cacheDir: string;
13
-
14
- constructor(config: RuntimeConfig) {
15
- this.config = config;
16
- this.cacheDir = path.resolve(config.paths.cacheDir);
17
-
18
- if (!fs.existsSync(this.cacheDir)) {
19
- fs.mkdirSync(this.cacheDir, { recursive: true });
20
- }
21
- }
22
-
23
- /**
24
- * Clear all caches
25
- */
26
- async clear(): Promise<void> {
27
- if (fs.existsSync(this.cacheDir)) {
28
- fs.rmSync(this.cacheDir, { recursive: true, force: true });
29
- fs.mkdirSync(this.cacheDir, { recursive: true });
30
- }
31
- }
32
- }
@@ -1,354 +0,0 @@
1
- /**
2
- * Pipeline Orchestrator
3
- * Coordinates test generation: Live-Scan → Scaffold → Code Generation
4
- */
5
-
6
- import * as path from 'path';
7
- import * as fs from 'fs';
8
- import { RuntimeConfig } from '../config/config-schema';
9
- import { TestGeneratorFactory, GeneratedTest } from '../generators/test-generator/types';
10
- import { CacheManager } from './cache-manager';
11
- import { Reporter } from './reporter';
12
-
13
- export class Pipeline {
14
- private config: RuntimeConfig;
15
- private cacheManager: CacheManager;
16
- private reporter: Reporter;
17
-
18
- constructor(config: RuntimeConfig) {
19
- this.config = config;
20
- this.cacheManager = new CacheManager(config);
21
- this.reporter = new Reporter(config);
22
- }
23
-
24
- /**
25
- * Run test generation phase
26
- * Generates Playwright test scripts from Gherkin
27
- */
28
- async runTestGeneration(screenName?: string): Promise<GeneratedTest[]> {
29
- const header = screenName ? `Generating tests: ${screenName}` : 'Generating tests';
30
- console.log(`\n${header}\n`);
31
-
32
- // Find all feature files from both old and new structure
33
- const featureFiles = screenName
34
- ? this.findFeatureFilesForScreen(screenName)
35
- : this.findAllFeatureFiles();
36
-
37
- if (screenName && featureFiles.length === 0) {
38
- throw new Error(
39
- `No feature files found for screen: ${screenName}\n` +
40
- `Looked in:\n` +
41
- ` - qa/screens/${screenName}/features/\n` +
42
- ` - qa/features/${screenName}.feature`
43
- );
44
- }
45
-
46
- // Parse features
47
- const { GherkinParser } = require('../core/selector-base/gherkin-parser');
48
- const parser = new GherkinParser(this.config);
49
- const features = await parser.parseAll(featureFiles);
50
-
51
- // Validate selector files before generation
52
- if (screenName) {
53
- const validation = this.validateSelectorFiles(screenName, features);
54
- const missing = validation.filter(v => !v.selectorExists);
55
-
56
- if (missing.length > 0) {
57
- const missingList = missing.map(v => ` āœ— ${v.featureName}.feature → selector file not found`).join('\n');
58
- throw new Error(
59
- `Missing selector files:\n${missingList}\n\n` +
60
- `Run: sungen map --screen ${screenName}`
61
- );
62
- }
63
- }
64
-
65
- // Generate tests
66
- const generator = TestGeneratorFactory.create(this.config.testGenerator.framework, this.config);
67
- const results: GeneratedTest[] = [];
68
- const errors: Array<{ feature: string; error: any }> = [];
69
-
70
- for (const feature of features) {
71
- try {
72
- // Load selectors and test data
73
- const selectors = {}; // TODO: Load from selector files
74
- const testData = {}; // TODO: Load from test-data files
75
-
76
- const result = await generator.generate(feature, selectors, testData, this.config);
77
- results.push(result);
78
-
79
- // Display per-file result
80
- const fileName = path.basename(result.outputPath);
81
- const relativePath = path.relative(process.cwd(), result.outputPath);
82
- const stepInfo = result.stats?.totalSteps ? ` (${result.stats.totalSteps} steps)` : '';
83
-
84
- console.log(`āœ“ Generated ${fileName}`);
85
- console.log(` → ${relativePath}${stepInfo}\n`);
86
- } catch (error) {
87
- const featureName = typeof feature === 'object' && feature.name ? feature.name : 'unknown';
88
- console.error(`āœ— Failed to generate test for feature: ${featureName}`);
89
- console.error(` Error: ${error instanceof Error ? error.message : String(error)}`);
90
- errors.push({ feature: featureName, error });
91
- }
92
- }
93
-
94
- // Throw if any errors occurred
95
- if (errors.length > 0) {
96
- const errorList = errors.map(e => ` - ${e.feature}`).join('\n');
97
- throw new Error(
98
- `Failed to generate ${errors.length} test(s):\n${errorList}`
99
- );
100
- }
101
-
102
- // Generate report
103
- await this.reporter.generate(results);
104
-
105
- // Display next step
106
- console.log(`Next step: npx playwright test --ui\n`);
107
-
108
- return results;
109
- }
110
-
111
- /**
112
- * Validate that selector files exist for all features
113
- */
114
- private validateSelectorFiles(screenName: string, features: any[]): Array<{
115
- featureName: string;
116
- sourceFile?: string;
117
- selectorExists: boolean;
118
- selectorPath: string | null;
119
- }> {
120
- const results: Array<{
121
- featureName: string;
122
- sourceFile?: string;
123
- selectorExists: boolean;
124
- selectorPath: string | null;
125
- }> = [];
126
-
127
- for (const feature of features) {
128
- const featureName = this.extractFeatureName(feature);
129
- const selectorPath = this.findSelectorFile(screenName, featureName);
130
-
131
- results.push({
132
- featureName,
133
- sourceFile: feature.sourceFile,
134
- selectorExists: selectorPath !== null,
135
- selectorPath,
136
- });
137
- }
138
-
139
- return results;
140
- }
141
-
142
- /**
143
- * Extract feature name from parsed feature
144
- */
145
- private extractFeatureName(feature: any): string {
146
- if (feature.sourceFile) {
147
- return path.basename(feature.sourceFile, path.extname(feature.sourceFile));
148
- }
149
- // Fallback to feature name
150
- return feature.name.toLowerCase().replace(/[^a-z0-9]+/g, '-');
151
- }
152
-
153
- /**
154
- * Find selector file path for a feature
155
- */
156
- private findSelectorFile(screenName: string, featureName: string): string | null {
157
- const possiblePaths: string[] = [];
158
-
159
- // New structure: qa/screens/{screen}/selectors/{feature}.yaml
160
- const newStructurePath = path.join(
161
- process.cwd(),
162
- 'qa',
163
- 'screens',
164
- screenName,
165
- 'selectors',
166
- `${featureName}.yaml`
167
- );
168
- possiblePaths.push(newStructurePath);
169
-
170
- // Old structure: qa/selectors/screens/{feature}.yaml
171
- const oldStructurePath = path.join(
172
- process.cwd(),
173
- 'qa',
174
- 'selectors',
175
- 'screens',
176
- `${featureName}.yaml`
177
- );
178
- possiblePaths.push(oldStructurePath);
179
-
180
- for (const p of possiblePaths) {
181
- if (fs.existsSync(p)) {
182
- return p;
183
- }
184
- }
185
-
186
- return null;
187
- }
188
-
189
- /**
190
- * Run full pipeline: Live-Scan → Scaffold → Test Generation
191
- */
192
- async runFull(
193
- screens?: string[],
194
- options?: { headed?: boolean; authDir?: string; skipLiveScan?: boolean; force?: boolean }
195
- ): Promise<void> {
196
- console.log('\nšŸš€ Running full pipeline\n');
197
-
198
- // Discover screens if not specified
199
- if (!screens || screens.length === 0) {
200
- screens = await this.discoverScreensFromGherkin();
201
- console.log(` Found ${screens.length} screen(s) in Gherkin: ${screens.join(', ')}\n`);
202
- }
203
-
204
- const screensDir = 'qa/screens';
205
-
206
- for (const screen of screens) {
207
- // Phase 1: Live-scan
208
- if (!options?.skipLiveScan) {
209
- console.log(`šŸ“ Phase 1: Live-Scan — ${screen}\n`);
210
- const { LiveScanner } = require('../core/live-scanner');
211
- const scanner = new LiveScanner({
212
- screenName: screen,
213
- screensDir,
214
- headed: options?.headed,
215
- authDir: options?.authDir || 'specs/.auth',
216
- force: options?.force,
217
- });
218
- await scanner.scan();
219
- console.log('');
220
- }
221
-
222
- // Phase 2: Scaffold (map)
223
- console.log(`šŸ“ Phase 2: Map — ${screen}\n`);
224
- const { ScaffoldGenerator } = require('../generators/scaffold-generator');
225
- const generator = new ScaffoldGenerator();
226
- const results = generator.processScreen(screen, screensDir, options?.force || false);
227
-
228
- for (const result of results) {
229
- console.log(`āœ“ Mapped ${result.featureFile}.feature`);
230
- if (result.selectorsSkipped) {
231
- console.log(` ⊘ ${path.basename(result.selectorsPath)} (skipped - already exists)`);
232
- } else {
233
- console.log(` → ${path.basename(result.selectorsPath)} (${result.elementCount} elements)`);
234
- }
235
- console.log('');
236
- }
237
- }
238
-
239
- // Phase 3: Test Generation
240
- console.log('šŸ“ Phase 3: Generate Tests\n');
241
- await this.runTestGeneration();
242
-
243
- console.log('āœ… Full pipeline completed!\n');
244
- }
245
-
246
- /**
247
- * Clear all caches
248
- */
249
- async clearCache(): Promise<void> {
250
- await this.cacheManager.clear();
251
- console.log('āœ“ Cache cleared\n');
252
- }
253
-
254
- // ============================================================================
255
- // Helper Methods
256
- // ============================================================================
257
-
258
- private findFeatureFiles(dir: string): string[] {
259
- const files: string[] = [];
260
-
261
- if (!fs.existsSync(dir)) {
262
- return files;
263
- }
264
-
265
- const entries = fs.readdirSync(dir, { withFileTypes: true });
266
-
267
- for (const entry of entries) {
268
- const fullPath = path.join(dir, entry.name);
269
-
270
- if (entry.isDirectory()) {
271
- files.push(...this.findFeatureFiles(fullPath));
272
- } else if (entry.isFile() && entry.name.endsWith('.feature')) {
273
- files.push(fullPath);
274
- }
275
- }
276
-
277
- return files;
278
- }
279
-
280
- /**
281
- * Find feature files for a specific screen
282
- */
283
- private findFeatureFilesForScreen(screenName: string): string[] {
284
- const files: string[] = [];
285
-
286
- // New structure: qa/screens/<screenName>/features/
287
- const screenFeaturesDir = path.join(
288
- path.dirname(this.config.paths.featuresDir),
289
- 'screens',
290
- screenName,
291
- 'features'
292
- );
293
-
294
- if (fs.existsSync(screenFeaturesDir)) {
295
- files.push(...this.findFeatureFiles(screenFeaturesDir));
296
- }
297
-
298
- // Old structure: qa/features/<screenName>.feature (by convention)
299
- const oldFeaturesDir = this.config.paths.featuresDir;
300
- if (fs.existsSync(oldFeaturesDir)) {
301
- const screenFeaturePath = path.join(oldFeaturesDir, `${screenName}.feature`);
302
- if (fs.existsSync(screenFeaturePath)) {
303
- files.push(screenFeaturePath);
304
- }
305
- }
306
-
307
- return files;
308
- }
309
-
310
- /**
311
- * Find all feature files from both old and new folder structures
312
- */
313
- private findAllFeatureFiles(): string[] {
314
- const allFiles: string[] = [];
315
-
316
- // Old structure: qa/features/
317
- const oldFeaturesDir = this.config.paths.featuresDir;
318
- allFiles.push(...this.findFeatureFiles(oldFeaturesDir));
319
-
320
- // New structure: qa/screens/*/features/
321
- const screensDir = path.join(path.dirname(oldFeaturesDir), 'screens');
322
- if (fs.existsSync(screensDir)) {
323
- const screenDirs = fs.readdirSync(screensDir, { withFileTypes: true })
324
- .filter(entry => entry.isDirectory())
325
- .map(entry => entry.name);
326
-
327
- for (const screenName of screenDirs) {
328
- const screenFeaturesDir = path.join(screensDir, screenName, 'features');
329
- allFiles.push(...this.findFeatureFiles(screenFeaturesDir));
330
- }
331
- }
332
-
333
- return allFiles;
334
- }
335
-
336
- /**
337
- * Discover all unique screens from qa/screens/ directory
338
- */
339
- private async discoverScreensFromGherkin(): Promise<string[]> {
340
- const screensDir = path.join(process.cwd(), 'qa', 'screens');
341
- if (!fs.existsSync(screensDir)) {
342
- return [];
343
- }
344
-
345
- return fs.readdirSync(screensDir, { withFileTypes: true })
346
- .filter(entry => entry.isDirectory())
347
- .filter(entry => {
348
- const featuresDir = path.join(screensDir, entry.name, 'features');
349
- return fs.existsSync(featuresDir);
350
- })
351
- .map(entry => entry.name)
352
- .sort();
353
- }
354
- }
@@ -1,36 +0,0 @@
1
- /**
2
- * Reporter
3
- * Generates reports for test generation results
4
- */
5
-
6
- import * as fs from 'fs';
7
- import * as path from 'path';
8
- import { RuntimeConfig } from '../config/config-schema';
9
- import { GeneratedTest } from '../generators/test-generator/types';
10
-
11
- export class Reporter {
12
- private config: RuntimeConfig;
13
-
14
- constructor(config: RuntimeConfig) {
15
- this.config = config;
16
- }
17
-
18
- /**
19
- * Generate report for test generation results
20
- */
21
- async generate(results: GeneratedTest[]): Promise<void> {
22
- if (!this.config.verbose) {
23
- return;
24
- }
25
-
26
- const totalScenarios = results.reduce((sum, r) => sum + r.stats.totalScenarios, 0);
27
- const totalSteps = results.reduce((sum, r) => sum + r.stats.totalSteps, 0);
28
- const totalTodos = results.reduce((sum, r) => sum + r.stats.todoCount, 0);
29
-
30
- console.log('\nšŸ“Š Generation Report:');
31
- console.log(` Features: ${results.length}`);
32
- console.log(` Scenarios: ${totalScenarios}`);
33
- console.log(` Steps: ${totalSteps}`);
34
- console.log(` TODOs: ${totalTodos}`);
35
- }
36
- }