@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
package/README.md CHANGED
@@ -1,19 +1,20 @@
1
- # Sungen - AI-Native E2E Test Generator
1
+ # Sungen v2 — Deterministic E2E Test Compiler
2
2
 
3
- **Version**: 1.0.20
4
- **Deterministic-first E2E test generation**: Gherkin → Playwright tests
3
+ **Version**: 2.0.0
4
+ **Gherkin + Selector YAML + Test Data → Playwright .spec.ts**
5
5
 
6
6
  ---
7
7
 
8
8
  ## What is Sungen?
9
9
 
10
- Sungen generates Playwright tests from Gherkin features using **priority-based selector mapping**:
10
+ Sungen is a deterministic compiler that converts Gherkin features into Playwright tests.
11
11
 
12
- 1. **Direct ID** (`data-testid`) - instant, free, deterministic
13
- 2. **Accessibility** (`role` + `aria-label`) - semantic fallback
14
- 3. **AI Fallback** (Claude) - last resort only
12
+ **v2 architecture**: AI generates the input files (Gherkin + selectors), sungen compiles to tests. No AI inside sungen itself.
15
13
 
16
- Goal: **90%+ Direct ID match** with minimal AI dependency.
14
+ ```
15
+ AI (Copilot/Claude + MCP Playwright) → visits URL → generates files
16
+ sungen generate → compiles .feature + selectors.yaml + data.yaml → .spec.ts
17
+ ```
17
18
 
18
19
  ---
19
20
 
@@ -23,12 +24,16 @@ Goal: **90%+ Direct ID match** with minimal AI dependency.
23
24
  # Install
24
25
  npm install -g @sun-asterisk/sungen@latest
25
26
 
26
- # Initialize project
27
+ # Initialize project (creates AI rules + directory structure)
27
28
  sungen init
28
29
 
29
- # Create a screen, map selectors, generate tests
30
+ # Create a screen
30
31
  sungen add --screen login --path /auth/login
31
- sungen map --screen login
32
+
33
+ # Use AI to generate Gherkin + selectors from the live page
34
+ # (GitHub Copilot / Claude Code reads the AI rules and generates files)
35
+
36
+ # Compile to Playwright tests
32
37
  sungen generate --screen login
33
38
 
34
39
  # Run tests
@@ -37,11 +42,69 @@ npx playwright test
37
42
 
38
43
  ---
39
44
 
45
+ ## CLI Commands
46
+
47
+ | Command | Description |
48
+ |---------|-------------|
49
+ | `sungen init` | Scaffold project + generate AI rules |
50
+ | `sungen add --screen <name> --path <path>` | Create screen with empty templates |
51
+ | `sungen add --screen <name> --feature <name>` | Add feature file to existing screen |
52
+ | `sungen generate --screen <name>` | Compile Gherkin → Playwright .spec.ts |
53
+ | `sungen generate --all` | Compile all screens |
54
+ | `sungen makeauth <role>` | Capture browser auth state (SSO support) |
55
+
56
+ ---
57
+
58
+ ## Workflow
59
+
60
+ ### 1. Add a screen
61
+
62
+ ```bash
63
+ sungen add --screen awards --path /awards
64
+ ```
65
+
66
+ Creates:
67
+ ```
68
+ qa/screens/awards/
69
+ ā”œā”€ā”€ features/awards.feature # Gherkin template
70
+ ā”œā”€ā”€ selectors/awards.yaml # Selector YAML (page entry pre-filled)
71
+ └── test-data/awards.yaml # Test data (empty)
72
+ ```
73
+
74
+ ### 2. AI generates Gherkin + selectors
75
+
76
+ Use your AI assistant (GitHub Copilot or Claude Code) with MCP Playwright to:
77
+ 1. Navigate to the page URL
78
+ 2. Take an accessibility snapshot
79
+ 3. Generate `.feature` + `selectors.yaml` + `test-data.yaml`
80
+
81
+ The AI rules in `.github/copilot-instructions.md` and `CLAUDE.md` (created by `sungen init`) teach the AI the correct syntax.
82
+
83
+ ### 3. Compile + run
84
+
85
+ ```bash
86
+ sungen generate --screen awards
87
+ npx playwright test
88
+ ```
89
+
90
+ ### 4. Fix failures (AI verify loop)
91
+
92
+ When tests fail → AI reads error → fixes `selectors.yaml` → recompile → re-run.
93
+
94
+ | Error | Fix in selectors.yaml |
95
+ |---|---|
96
+ | strict mode: resolved to N elements | Add `exact: true` or `scope` or `nth` |
97
+ | element(s) not found | Fix `name`, `type`, or `value` |
98
+ | getByText matched too many | Add `match: 'exact'` or `nth` |
99
+
100
+ ---
101
+
40
102
  ## Gherkin Syntax
41
103
 
42
- **Pattern**: `User + action + [element] type + with {{data}}`
104
+ **Pattern**: `User <action> [<Target>] <type> with {{<Value>}}`
43
105
 
44
- **[Complete Gherkin Standard (English)](docs/gherkin%20standards/gherkin-core-standard.md)** | **[Tiįŗæng Việt](docs/gherkin%20standards/gherkin-core-standard.vi.md)**
106
+ - `[Target]` → selector reference → lookup in `selectors/*.yaml`
107
+ - `{{Value}}` → test data reference → lookup in `test-data/*.yaml`
45
108
 
46
109
  ### Example
47
110
 
@@ -49,51 +112,106 @@ npx playwright test
49
112
  Feature: Login Screen
50
113
  Path: /auth/login
51
114
 
115
+ @auth:admin
52
116
  Scenario: User logs in successfully
53
- Given User is on [Login] page
117
+ Given User is on [login] page
54
118
  When User fill [Email] field with {{valid_email}}
55
119
  And User fill [Password] field with {{valid_password}}
56
120
  And User click [Login] button
57
- Then User see [Welcome] text with {{success_message}}
121
+ Then User see [Welcome] heading with {{success_message}}
122
+ And User see [dashboard] page
58
123
  ```
59
124
 
60
- ### Actions
125
+ ---
126
+
127
+ ## Pattern Shapes (17 categories)
61
128
 
62
- | Action | Example |
63
- |--------|---------|
64
- | Navigate | `Given User is on [Login] page` |
65
- | Open | `Given User open [Login] page` |
66
- | Fill | `When User fill [Email] field with {{email}}` |
67
- | Click | `When User click [Submit] button` |
68
- | Select | `When User select [Country] dropdown with {{country}}` |
69
- | See (visible) | `Then User see [Welcome] text` |
70
- | See (with value) | `Then User see [Welcome] text with {{message}}` |
71
- | See (hidden) | `Then User see [panel] dialog with {{title}} is hidden` |
72
- | Wait for hidden | `And User wait for dialog with {{title}} is hidden` |
129
+ ### Actions
73
130
 
74
- ### Annotations
131
+ | Pattern | Example |
132
+ |---|---|
133
+ | Simple click | `User click [Submit] button` |
134
+ | Click with data | `User click [Teammate] button with {{name}}` |
135
+ | Fill field | `User fill [Email] field with {{email}}` |
136
+ | Check/Uncheck | `User check [Remember me] checkbox` |
137
+ | Select dropdown | `User select [Country] dropdown with {{country}}` |
138
+ | Upload file | `User upload [Avatar] file with {{path}}` |
139
+ | Double click | `User double click [Cell] element` |
140
+ | Hover | `User hover [Info] icon` |
141
+ | Clear | `User clear [Search] field` |
142
+ | Toggle | `User toggle [Dark mode] switch` |
143
+
144
+ ### Keyboard
145
+
146
+ | Pattern | Example |
147
+ |---|---|
148
+ | Global key | `User press Escape key` |
149
+ | Key on element | `User press Enter on [Search] field` |
150
+
151
+ ### Navigation
152
+
153
+ | Pattern | Example |
154
+ |---|---|
155
+ | Open page | `User is on [login] page` |
156
+ | See page (URL) | `User see [dashboard] page` |
157
+
158
+ ### Wait
159
+
160
+ | Pattern | Example |
161
+ |---|---|
162
+ | Wait timeout | `User wait for 3 seconds` |
163
+ | Wait element | `User wait for [Modal] dialog` |
164
+ | Wait hidden | `User wait for [Loading] spinner is hidden` |
165
+ | Wait with data | `User wait for [Dialog] dialog with {{title}}` |
166
+
167
+ ### Assertions
168
+
169
+ | Pattern | Example |
170
+ |---|---|
171
+ | See element | `User see [Welcome] heading` |
172
+ | See with value | `User see [Title] heading with {{title}}` |
173
+ | State check | `User see [Submit] button is disabled` |
174
+ | State + data | `User see [Panel] dialog with {{title}} is hidden` |
175
+ | Text contains | `User see [Message] text contains {{partial}}` |
176
+
177
+ **States**: `hidden`, `visible`, `disabled`, `enabled`, `checked`, `unchecked`, `focused`, `empty`
178
+
179
+ ### Table
180
+
181
+ | Pattern | Example |
182
+ |---|---|
183
+ | Row exists | `User see [Users] table has row with {{name}}` |
184
+ | No row | `User see [Users] table has no row with {{name}}` |
185
+ | Row count | `User see [Users] table has {{count}} rows` |
186
+ | Column exists | `User see [Users] table has [Email] column` |
187
+ | Cell by filter | `User see [Users] table row with {{name}} has [Status] with {{status}}` |
188
+ | Cell by index | `User see [Users] table row 1 [Name] cell with {{name}}` |
189
+ | Action in row | `User click [Edit] in [Users] table row with {{name}}` |
190
+ | Empty table | `User see [Users] table is empty` |
191
+
192
+ ### Scope
193
+
194
+ | Pattern | Example |
195
+ |---|---|
196
+ | Scroll | `User scroll to [Footer] section` |
197
+ | Frame enter | `User switch to [Payment] frame` |
198
+ | Frame exit | `User switch to [main] frame` |
75
199
 
76
- | Syntax | Description |
77
- |--------|-------------|
78
- | `[Element]` | Selector reference (mapped via selectors YAML) |
79
- | `{{variable}}` | Test data reference (mapped via test-data YAML) |
80
- | `Path: /route` | Page route in feature description |
200
+ ---
81
201
 
82
- ### Tags
202
+ ## Tags
83
203
 
84
204
  | Tag | Level | Description |
85
205
  |-----|-------|-------------|
86
206
  | `@auth:<role>` | Feature/Scenario | Use Playwright auth storage state |
87
- | `@no-auth` | Feature/Scenario | Disable inherited auth |
207
+ | `@no-auth` | Scenario | Disable inherited auth |
88
208
  | `@steps:<name>` | Scenario | Mark as reusable step block |
89
209
  | `@extend:<name>` | Scenario | Prepend steps from a `@steps` block |
90
- | `@ignore` | Step (comment) | Skip step in generation |
91
- | `@ignore-testcase` | Step (comment) | Skip entire scenario |
210
+ | `@manual` | Scenario | Skip in generation |
92
211
 
93
212
  **Auth precedence**: Scenario > Feature > None
94
- **@extend precedence**: Extending scenario `@auth` > Base scenario `@auth` > Feature `@auth`
95
213
 
96
- ### Reusable Steps with @steps / @extend
214
+ ### Reusable Steps
97
215
 
98
216
  ```gherkin
99
217
  @auth:user @steps:open-dialog
@@ -107,14 +225,44 @@ Scenario: Open kudos dialog
107
225
  Scenario: User sends a thank you message
108
226
  Given User is on [panel] dialog with {{kudo_title}}
109
227
  When User fill [Search] field with {{teammate_name}}
110
- And User click [teammate] row with {{teammate_name}}
111
- And User fill [Message] textarea with {{message}}
112
228
  And User click [Send] button
113
- And User wait for dialog with {{kudo_title}} is hidden
114
- Then User see [panel] modal with {{kudo_title}} is hidden
229
+ Then User see [panel] dialog with {{kudo_title}} is hidden
115
230
  ```
116
231
 
117
- The `@extend:open-dialog` scenario automatically inherits all steps from `@steps:open-dialog` before its own steps.
232
+ ---
233
+
234
+ ## Selector YAML Schema
235
+
236
+ ```yaml
237
+ # Page navigation
238
+ login:
239
+ type: 'page'
240
+ value: '/auth/login'
241
+
242
+ # Role-based (preferred)
243
+ submit:
244
+ type: 'role'
245
+ value: 'button'
246
+ name: 'Submit'
247
+ exact: true # avoid substring collisions
248
+ scope: 'desktop navigation' # scope to parent landmark
249
+
250
+ # Text-based
251
+ price:
252
+ type: 'text'
253
+ value: '5.000.000 VNĐ'
254
+ match: 'exact' # exact text match
255
+ nth: 1 # second occurrence
256
+
257
+ # TestID (best)
258
+ login.form:
259
+ type: 'testid'
260
+ value: 'login-form'
261
+ ```
262
+
263
+ **Locator priority**: `data-testid` > `role+name` > `label` > `text` > `CSS`
264
+
265
+ **Types**: `testid`, `role`, `text`, `label`, `placeholder`, `locator`, `page`, `upload`, `frame`
118
266
 
119
267
  ---
120
268
 
@@ -123,44 +271,20 @@ The `@extend:open-dialog` scenario automatically inherits all steps from `@steps
123
271
  ```
124
272
  qa/screens/<name>/
125
273
  ā”œā”€ā”€ features/ # Gherkin .feature files
126
- ā”œā”€ā”€ selectors/ # Element mappings (.yaml + .override.yaml)
127
- └── test-data/ # Test variables (.yaml + .override.yaml)
274
+ ā”œā”€ā”€ selectors/ # Element selector YAML mappings
275
+ └── test-data/ # Test data YAML values
128
276
 
129
277
  specs/generated/<name>/
130
278
  └── <feature>.spec.ts # Generated Playwright tests
131
279
  ```
132
280
 
133
- Override files (`.override.yaml`) are never overwritten by `sungen map` and take precedence at runtime.
134
-
135
- ---
136
-
137
- ## CLI Commands
138
-
139
- | Command | Description |
140
- |---------|-------------|
141
- | `sungen init` | Initialize project structure |
142
- | `sungen add --screen <name> [--path <path>]` | Create screen definition |
143
- | `sungen live-scan --screen <name> [-f] [--headed]` | Scan live site to detect real Playwright selectors |
144
- | `sungen map --screen <name> [--force] [--skip-live-scan]` | Generate selector/test-data YAML from Gherkin |
145
- | `sungen generate --screen <name> [--force]` | Generate Playwright .spec.ts |
146
- | `sungen full --screen <name>` | Run all: discover → map → generate |
147
- | `sungen auto-tag --screen <name> [--dry-run]` | Inject `data-testid` into source code |
148
- | `sungen makeauth <role>` | Save browser auth state (supports SSO) |
149
- | `sungen validate --screen <name>` | Validate features and mappings |
150
- | `sungen cache-clear` | Clear cached data |
151
-
152
- Use `sungen <command> -h` for detailed options.
153
-
154
281
  ---
155
282
 
156
283
  ## Documentation
157
284
 
158
- - **[Gherkin Core Standard](docs/gherkin%20standards/gherkin-core-standard.md)** - Complete syntax rules ([Tiįŗæng Việt](docs/gherkin%20standards/gherkin-core-standard.vi.md))
159
- - **[Pattern Reference](docs/pattern-reference.md)** - All 31 supported step patterns
160
- - **[Selector Override Guide](docs/selector-override.md)** - Fix AI mapping errors
161
- - **[Auth Setup Guide](docs/makeauth.md)** - Configure authentication states
162
- - **[Validation Guide](docs/validate.md)** - Validate Gherkin files
163
- - **[Windows Setup Guide](WINDOWS-SETUP-GUIDE.md)** - Step-by-step for Windows users
285
+ - **[Gherkin Dictionary](docs/gherkin-dictionary.md)** — Full grammar, all 17 patterns, compiler rules, formal BNF
286
+ - **[Gherkin Core Standard](docs/gherkin%20standards/gherkin-core-standard.md)** — Syntax rules ([Tiįŗæng Việt](docs/gherkin%20standards/gherkin-core-standard.vi.md))
287
+ - **[Auth Setup Guide](docs/makeauth.md)** — Configure authentication states
164
288
 
165
289
  ---
166
290
 
@@ -168,4 +292,4 @@ Use `sungen <command> -h` for detailed options.
168
292
 
169
293
  MIT License - see LICENSE file for details.
170
294
 
171
- **Made with ā¤ļø by Bach Ngoc Hoai**
295
+ **Made with ā¤ļø by Sun Asterisk**
@@ -1 +1 @@
1
- {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsBzD"}
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwBzD"}
@@ -4,9 +4,10 @@ exports.registerAddCommand = registerAddCommand;
4
4
  function registerAddCommand(program) {
5
5
  program
6
6
  .command('add')
7
- .description('Add screen definition with scaffolded files')
7
+ .description('Add screen or feature definition with scaffolded files')
8
8
  .requiredOption('--screen <name>', 'Screen name')
9
- .option('-p, --path <path>', 'Screen route path')
9
+ .option('-p, --path <path>', 'Screen route path (e.g. /awards)')
10
+ .option('-f, --feature <name>', 'Add additional feature file to existing screen')
10
11
  .option('-d, --description <text>', 'Screen description')
11
12
  .action(async (options) => {
12
13
  try {
@@ -15,11 +16,12 @@ function registerAddCommand(program) {
15
16
  await manager.addScreen({
16
17
  name: options.screen,
17
18
  path: options.path,
19
+ feature: options.feature,
18
20
  description: options.description,
19
21
  });
20
22
  }
21
23
  catch (error) {
22
- console.error('āŒ Add screen failed:', error);
24
+ console.error('Error:', error instanceof Error ? error.message : error);
23
25
  process.exit(1);
24
26
  }
25
27
  });
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":";;AAEA,gDAsBC;AAtBD,SAAgB,kBAAkB,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,6CAA6C,CAAC;SAC1D,cAAc,CAAC,iBAAiB,EAAE,aAAa,CAAC;SAChD,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;SAChD,MAAM,CAAC,0BAA0B,EAAE,oBAAoB,CAAC;SACxD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC;YACvE,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;YAEpC,MAAM,OAAO,CAAC,SAAS,CAAC;gBACtB,IAAI,EAAE,OAAO,CAAC,MAAM;gBACpB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,WAAW,EAAE,OAAO,CAAC,WAAW;aACjC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":";;AAEA,gDAwBC;AAxBD,SAAgB,kBAAkB,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,wDAAwD,CAAC;SACrE,cAAc,CAAC,iBAAiB,EAAE,aAAa,CAAC;SAChD,MAAM,CAAC,mBAAmB,EAAE,kCAAkC,CAAC;SAC/D,MAAM,CAAC,sBAAsB,EAAE,gDAAgD,CAAC;SAChF,MAAM,CAAC,0BAA0B,EAAE,oBAAoB,CAAC;SACxD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC;YACvE,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;YAEpC,MAAM,OAAO,CAAC,SAAS,CAAC;gBACtB,IAAI,EAAE,OAAO,CAAC,MAAM;gBACpB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,WAAW,EAAE,OAAO,CAAC,WAAW;aACjC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgD9D"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqDpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqD9D"}
@@ -1,51 +1,126 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.registerGenerateCommand = registerGenerateCommand;
4
- const config_loader_1 = require("../../config/config-loader");
5
- const pipeline_1 = require("../../orchestrator/pipeline");
6
- const utils_1 = require("../utils");
37
+ const path = __importStar(require("path"));
38
+ const fs = __importStar(require("fs"));
39
+ const code_generator_1 = require("../../generators/test-generator/code-generator");
40
+ /**
41
+ * Find .feature files recursively in a directory
42
+ */
43
+ function findFeatureFiles(dir) {
44
+ const files = [];
45
+ if (!fs.existsSync(dir))
46
+ return files;
47
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
48
+ for (const entry of entries) {
49
+ const fullPath = path.join(dir, entry.name);
50
+ if (entry.isDirectory()) {
51
+ files.push(...findFeatureFiles(fullPath));
52
+ }
53
+ else if (entry.isFile() && entry.name.endsWith('.feature')) {
54
+ files.push(fullPath);
55
+ }
56
+ }
57
+ return files;
58
+ }
59
+ /**
60
+ * Find feature files for a specific screen
61
+ */
62
+ function findFeatureFilesForScreen(screenName) {
63
+ const screenFeaturesDir = path.join(process.cwd(), 'qa', 'screens', screenName, 'features');
64
+ return findFeatureFiles(screenFeaturesDir);
65
+ }
66
+ /**
67
+ * Find all feature files across all screens
68
+ */
69
+ function findAllFeatureFiles() {
70
+ const allFiles = [];
71
+ const screensDir = path.join(process.cwd(), 'qa', 'screens');
72
+ if (fs.existsSync(screensDir)) {
73
+ const screenDirs = fs.readdirSync(screensDir, { withFileTypes: true })
74
+ .filter(entry => entry.isDirectory())
75
+ .map(entry => entry.name);
76
+ for (const screenName of screenDirs) {
77
+ const screenFeaturesDir = path.join(screensDir, screenName, 'features');
78
+ allFiles.push(...findFeatureFiles(screenFeaturesDir));
79
+ }
80
+ }
81
+ return allFiles;
82
+ }
7
83
  function registerGenerateCommand(program) {
8
84
  program
9
85
  .command('generate')
10
- .description('Generate Playwright test code from features')
11
- .option('--ai-mapper', 'Enable AI fallback for unknown Gherkin patterns')
12
- .option('--framework <name>', 'Test framework (playwright, appium, integration)', 'playwright')
13
- .option('-s, --screen <name>', 'Filter generation to specific screen')
14
- .option('-f, --force', 'Force regeneration, bypass cache')
15
- .option('--skip-validation', 'Skip validation before generation')
86
+ .description('Generate Playwright test code from Gherkin features')
87
+ .option('-s, --screen <name>', 'Generate tests for a specific screen')
88
+ .option('--all', 'Generate tests for all screens')
89
+ .option('--framework <name>', 'Test framework (default: playwright)', 'playwright')
16
90
  .action(async (options) => {
17
91
  try {
18
- // Run validation first (unless --skip-validation is set)
19
- if (!options.skipValidation) {
20
- const { ScreenValidator } = require('../../core/validator');
21
- const validator = new ScreenValidator();
22
- let validationResult;
23
- if (options.screen) {
24
- console.log(`šŸ” Validating screen: ${options.screen}...\n`);
25
- validationResult = validator.validateScreen(options.screen);
92
+ const screenName = options.screen;
93
+ // Find feature files
94
+ let featureFiles;
95
+ if (screenName) {
96
+ featureFiles = findFeatureFilesForScreen(screenName);
97
+ if (featureFiles.length === 0) {
98
+ throw new Error(`No feature files found for screen: ${screenName}\n` +
99
+ `Looked in: qa/screens/${screenName}/features/`);
26
100
  }
27
- else {
28
- console.log('šŸ” Validating all screens...\n');
29
- validationResult = validator.validateAll();
30
- }
31
- if (!validationResult.valid) {
32
- (0, utils_1.printValidationResult)(validationResult, false);
33
- console.error('\nāŒ Validation failed. Fix errors before generating tests.');
34
- console.error(' Tip: Use --skip-validation to bypass validation (not recommended)');
35
- process.exit(1);
101
+ console.log(`\nGenerating tests: ${screenName}\n`);
102
+ }
103
+ else {
104
+ featureFiles = findAllFeatureFiles();
105
+ if (featureFiles.length === 0) {
106
+ throw new Error('No feature files found in qa/screens/');
36
107
  }
37
- console.log(`āœ… Validation passed (${validationResult.summary.totalFiles} files)\n`);
108
+ console.log(`\nGenerating tests for all screens\n`);
38
109
  }
39
- const cliOptions = {
40
- ...program.opts(),
41
- ...options,
42
- };
43
- const config = new config_loader_1.ConfigLoader().load(cliOptions);
44
- const pipeline = new pipeline_1.Pipeline(config);
45
- await pipeline.runTestGeneration(options.screen);
110
+ // Output directory
111
+ const outputDir = path.join(process.cwd(), 'specs', 'generated');
112
+ // Create generator and compile
113
+ const generator = new code_generator_1.CodeGenerator({
114
+ framework: options.framework || 'playwright',
115
+ screenName,
116
+ verbose: program.opts().verbose,
117
+ });
118
+ const results = await generator.generateAllTests(path.join(process.cwd(), 'qa', 'screens'), outputDir, featureFiles);
119
+ console.log(`\n${results.length} test file(s) generated.`);
120
+ console.log(`Next step: npx playwright test --ui\n`);
46
121
  }
47
122
  catch (error) {
48
- console.error('āŒ Test generation failed:', error);
123
+ console.error('Error:', error instanceof Error ? error.message : error);
49
124
  process.exit(1);
50
125
  }
51
126
  });
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":";;AAMA,0DAgDC;AArDD,8DAA0D;AAC1D,0DAAuD;AAEvD,oCAAiD;AAEjD,SAAgB,uBAAuB,CAAC,OAAgB;IACtD,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,aAAa,EAAE,iDAAiD,CAAC;SACxE,MAAM,CAAC,oBAAoB,EAAE,kDAAkD,EAAE,YAAY,CAAC;SAC9F,MAAM,CAAC,qBAAqB,EAAE,sCAAsC,CAAC;SACrE,MAAM,CAAC,aAAa,EAAE,kCAAkC,CAAC;SACzD,MAAM,CAAC,mBAAmB,EAAE,mCAAmC,CAAC;SAChE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,yDAAyD;YACzD,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;gBAC5D,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;gBAExC,IAAI,gBAAkC,CAAC;gBACvC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC;oBAC5D,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC9D,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;oBAC9C,gBAAgB,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;gBAC7C,CAAC;gBAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;oBAC5B,IAAA,6BAAqB,EAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;oBAC/C,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;oBAC5E,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;oBACtF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,wBAAwB,gBAAgB,CAAC,OAAO,CAAC,UAAU,WAAW,CAAC,CAAC;YACtF,CAAC;YAED,MAAM,UAAU,GAAG;gBACjB,GAAG,OAAO,CAAC,IAAI,EAAE;gBACjB,GAAG,OAAO;aACX,CAAC;YACF,MAAM,MAAM,GAAG,IAAI,4BAAY,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Sungen CLI - AI-Native E2E Test Generator
4
- * Command-line interface for generating E2E tests from Gherkin features
3
+ * Sungen CLI v2 - Deterministic E2E Test Compiler
4
+ * Compiles Gherkin features + selector YAML + test data → Playwright tests
5
5
  */
6
6
  export {};
7
7
  //# sourceMappingURL=index.d.ts.map
package/dist/cli/index.js CHANGED
@@ -1,39 +1,28 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
3
  /**
4
- * Sungen CLI - AI-Native E2E Test Generator
5
- * Command-line interface for generating E2E tests from Gherkin features
4
+ * Sungen CLI v2 - Deterministic E2E Test Compiler
5
+ * Compiles Gherkin features + selector YAML + test data → Playwright tests
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  const commander_1 = require("commander");
9
9
  const init_1 = require("./commands/init");
10
10
  const add_1 = require("./commands/add");
11
- const live_scan_1 = require("./commands/live-scan");
12
- const map_1 = require("./commands/map");
13
11
  const generate_1 = require("./commands/generate");
14
- const full_1 = require("./commands/full");
15
- const validate_1 = require("./commands/validate");
16
- const cache_clear_1 = require("./commands/cache-clear");
17
12
  const makeauth_1 = require("./commands/makeauth");
18
13
  async function main() {
19
14
  const program = new commander_1.Command();
20
15
  program
21
16
  .name('sungen')
22
- .description('AI-Native E2E Test Generator - Generate Playwright tests from Gherkin features')
23
- .version('1.0.24');
17
+ .description('Deterministic E2E Test Compiler — Gherkin + Selectors → Playwright')
18
+ .version('2.0.0');
24
19
  // Global options
25
20
  program
26
- .option('-c, --config <path>', 'Path to custom config file')
27
21
  .option('-v, --verbose', 'Enable verbose logging');
28
- // Register all commands
22
+ // Register commands (5 only)
29
23
  (0, init_1.registerInitCommand)(program);
30
24
  (0, add_1.registerAddCommand)(program);
31
- (0, live_scan_1.registerLiveScanCommand)(program);
32
- (0, map_1.registerMapCommand)(program);
33
25
  (0, generate_1.registerGenerateCommand)(program);
34
- (0, full_1.registerFullCommand)(program);
35
- (0, validate_1.registerValidateCommand)(program);
36
- (0, cache_clear_1.registerCacheClearCommand)(program);
37
26
  (0, makeauth_1.registerMakeauthCommand)(program);
38
27
  await program.parseAsync(process.argv);
39
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;AACA;;;GAGG;;AAEH,yCAAoC;AACpC,0CAAsD;AACtD,wCAAoD;AACpD,oDAA+D;AAC/D,wCAAoD;AACpD,kDAA8D;AAC9D,0CAAsD;AACtD,kDAA8D;AAC9D,wDAAmE;AACnE,kDAA8D;AAE9D,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,QAAQ,CAAC;SACd,WAAW,CAAC,gFAAgF,CAAC;SAC7F,OAAO,CAAC,QAAQ,CAAC,CAAC;IAErB,iBAAiB;IACjB,OAAO;SACJ,MAAM,CAAC,qBAAqB,EAAE,4BAA4B,CAAC;SAC3D,MAAM,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAC;IAErD,wBAAwB;IACxB,IAAA,0BAAmB,EAAC,OAAO,CAAC,CAAC;IAC7B,IAAA,wBAAkB,EAAC,OAAO,CAAC,CAAC;IAC5B,IAAA,mCAAuB,EAAC,OAAO,CAAC,CAAC;IACjC,IAAA,wBAAkB,EAAC,OAAO,CAAC,CAAC;IAC5B,IAAA,kCAAuB,EAAC,OAAO,CAAC,CAAC;IACjC,IAAA,0BAAmB,EAAC,OAAO,CAAC,CAAC;IAC7B,IAAA,kCAAuB,EAAC,OAAO,CAAC,CAAC;IACjC,IAAA,uCAAyB,EAAC,OAAO,CAAC,CAAC;IACnC,IAAA,kCAAuB,EAAC,OAAO,CAAC,CAAC;IAEjC,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;AACA;;;GAGG;;AAEH,yCAAoC;AACpC,0CAAsD;AACtD,wCAAoD;AACpD,kDAA8D;AAC9D,kDAA8D;AAE9D,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,QAAQ,CAAC;SACd,WAAW,CAAC,oEAAoE,CAAC;SACjF,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB,iBAAiB;IACjB,OAAO;SACJ,MAAM,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAC;IAErD,6BAA6B;IAC7B,IAAA,0BAAmB,EAAC,OAAO,CAAC,CAAC;IAC7B,IAAA,wBAAkB,EAAC,OAAO,CAAC,CAAC;IAC5B,IAAA,kCAAuB,EAAC,OAAO,CAAC,CAAC;IACjC,IAAA,kCAAuB,EAAC,OAAO,CAAC,CAAC;IAEjC,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ const frame = page.frameLocator('{{value}}');