@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,216 +0,0 @@
1
- /**
2
- * Base Heuristic Interface
3
- * All element detection heuristics implement this interface
4
- */
5
-
6
- import * as t from '@babel/types';
7
- import { UIElement } from '../scanner-interface';
8
-
9
- export interface ElementHeuristic {
10
- /**
11
- * Heuristic name for debugging
12
- */
13
- readonly name: string;
14
-
15
- /**
16
- * Detect if a JSX element matches this heuristic
17
- */
18
- matches(node: t.JSXElement | t.JSXFragment, context: HeuristicContext): boolean;
19
-
20
- /**
21
- * Extract UI element information from matched node
22
- */
23
- extract(node: t.JSXElement | t.JSXFragment, context: HeuristicContext): UIElement | null;
24
- }
25
-
26
- /**
27
- * Context passed to heuristics for element detection
28
- */
29
- export interface HeuristicContext {
30
- /**
31
- * Current component name
32
- */
33
- componentName?: string;
34
-
35
- /**
36
- * Parent component name
37
- */
38
- parentComponent?: string;
39
-
40
- /**
41
- * Current depth in component tree
42
- */
43
- depth?: number;
44
-
45
- /**
46
- * Element counter for ID generation
47
- */
48
- elementCounter: number;
49
-
50
- /**
51
- * Increment element counter
52
- */
53
- incrementCounter(): void;
54
-
55
- /**
56
- * File path being scanned
57
- */
58
- filePath?: string;
59
- }
60
-
61
- /**
62
- * Helper functions for heuristics
63
- */
64
- export class HeuristicHelpers {
65
- /**
66
- * Get JSX element name (e.g., "input", "Button")
67
- */
68
- static getElementName(node: t.JSXElement): string | null {
69
- const openingElement = node.openingElement;
70
- if (t.isJSXIdentifier(openingElement.name)) {
71
- return openingElement.name.name;
72
- }
73
- if (t.isJSXMemberExpression(openingElement.name)) {
74
- // Handle cases like <Form.Input>
75
- return this.getMemberExpressionName(openingElement.name);
76
- }
77
- return null;
78
- }
79
-
80
- /**
81
- * Get member expression name (e.g., "Form.Input" -> "Input")
82
- */
83
- private static getMemberExpressionName(expr: t.JSXMemberExpression): string {
84
- if (t.isJSXIdentifier(expr.property)) {
85
- return expr.property.name;
86
- }
87
- return '';
88
- }
89
-
90
- /**
91
- * Get attribute value from JSX element
92
- */
93
- static getAttributeValue(node: t.JSXElement, attrName: string): string | null {
94
- const attr = node.openingElement.attributes.find(
95
- (a): a is t.JSXAttribute =>
96
- t.isJSXAttribute(a) && t.isJSXIdentifier(a.name) && a.name.name === attrName
97
- );
98
-
99
- if (!attr) return null;
100
-
101
- if (t.isStringLiteral(attr.value)) {
102
- return attr.value.value;
103
- }
104
-
105
- if (t.isJSXExpressionContainer(attr.value)) {
106
- const expr = attr.value.expression;
107
- if (t.isStringLiteral(expr)) {
108
- return expr.value;
109
- }
110
- }
111
-
112
- return null;
113
- }
114
-
115
- /**
116
- * Check if element has attribute
117
- */
118
- static hasAttribute(node: t.JSXElement, attrName: string): boolean {
119
- return node.openingElement.attributes.some(
120
- (a) => t.isJSXAttribute(a) && t.isJSXIdentifier(a.name) && a.name.name === attrName
121
- );
122
- }
123
-
124
- /**
125
- * Get all attributes as key-value pairs
126
- */
127
- static getAllAttributes(node: t.JSXElement): Record<string, string> {
128
- const attrs: Record<string, string> = {};
129
-
130
- for (const attr of node.openingElement.attributes) {
131
- if (t.isJSXAttribute(attr) && t.isJSXIdentifier(attr.name)) {
132
- const value = this.getAttributeValue(node, attr.name.name);
133
- if (value) {
134
- attrs[attr.name.name] = value;
135
- }
136
- }
137
- }
138
-
139
- return attrs;
140
- }
141
-
142
- /**
143
- * Generate element ID from attributes
144
- */
145
- static generateElementId(node: t.JSXElement, counter: number): string {
146
- // Priority: id > data-testid > name > placeholder > generated
147
- const id = this.getAttributeValue(node, 'id');
148
- if (id) return id;
149
-
150
- const testId = this.getAttributeValue(node, 'data-testid');
151
- if (testId) return testId;
152
-
153
- const name = this.getAttributeValue(node, 'name');
154
- if (name) return name;
155
-
156
- const placeholder = this.getAttributeValue(node, 'placeholder');
157
- if (placeholder) {
158
- return placeholder.toLowerCase().replace(/\s+/g, '-');
159
- }
160
-
161
- const elementName = this.getElementName(node);
162
- return `${elementName || 'element'}-${counter}`;
163
- }
164
-
165
- /**
166
- * Build CSS selector for element
167
- */
168
- static buildSelector(node: t.JSXElement): string {
169
- const elementName = this.getElementName(node);
170
- if (!elementName) return '';
171
-
172
- const selectors: string[] = [elementName.toLowerCase()];
173
-
174
- // Add attribute selectors
175
- const id = this.getAttributeValue(node, 'id');
176
- if (id) {
177
- selectors.push(`#${id}`);
178
- }
179
-
180
- const className = this.getAttributeValue(node, 'className');
181
- if (className) {
182
- const classes = className.split(/\s+/).filter(c => c && !c.includes('${'));
183
- if (classes.length > 0) {
184
- selectors.push(`.${classes.join('.')}`);
185
- }
186
- }
187
-
188
- const testId = this.getAttributeValue(node, 'data-testid');
189
- if (testId) {
190
- selectors.push(`[data-testid="${testId}"]`);
191
- }
192
-
193
- const placeholder = this.getAttributeValue(node, 'placeholder');
194
- if (placeholder && !placeholder.includes('${')) {
195
- selectors.push(`[placeholder="${placeholder}"]`);
196
- }
197
-
198
- return selectors.join('');
199
- }
200
-
201
- /**
202
- * Check if element is a form control
203
- */
204
- static isFormControl(elementName: string): boolean {
205
- const formControls = ['input', 'textarea', 'select', 'button'];
206
- return formControls.includes(elementName.toLowerCase());
207
- }
208
-
209
- /**
210
- * Check if element name suggests it's a custom component
211
- */
212
- static isCustomComponent(elementName: string): boolean {
213
- // Custom components start with uppercase
214
- return /^[A-Z]/.test(elementName);
215
- }
216
- }
@@ -1,156 +0,0 @@
1
- /**
2
- * React UI Scanner
3
- * Refactored implementation that conforms to UIScanner interface
4
- * Uses DeepScanner for high-quality element detection
5
- */
6
-
7
- import { UIScanner, UIModel, UIElement, ScanStats } from './scanner-interface';
8
- import { RuntimeConfig } from '../../config/config-schema';
9
- import { DeepScanner } from '../../generators/ui-model-builder/deep-scanner';
10
- import * as path from 'path';
11
- import * as fs from 'fs';
12
-
13
- export class ReactScanner implements UIScanner {
14
- readonly name = 'ReactScanner';
15
- readonly framework = 'react' as const;
16
-
17
- private config: RuntimeConfig;
18
- private deepScanner: DeepScanner;
19
-
20
- constructor(config: RuntimeConfig) {
21
- this.config = config;
22
-
23
- // Initialize DeepScanner with config
24
- this.deepScanner = new DeepScanner({
25
- sourceRoot: config.paths.sourceRoot,
26
- projectRoot: process.cwd(),
27
- maxDepth: config.scanner.maxDepth,
28
- verbose: config.verbose
29
- });
30
- }
31
-
32
- /**
33
- * Scan a screen and generate UI model
34
- */
35
- async scan(screenName: string, config: RuntimeConfig): Promise<UIModel> {
36
- const startTime = Date.now();
37
-
38
- // Find screen files
39
- const screenFiles = this.findScreenFiles(screenName);
40
-
41
- if (config.verbose) {
42
- console.log(` Scanning ${screenFiles.length} file(s) for screen: ${screenName}`);
43
- screenFiles.forEach(f => console.log(` - ${path.relative(process.cwd(), f)}`));
44
- }
45
-
46
- // Use DeepScanner to scan files
47
- // @ts-ignore - DeepScanner elements compatible but different type definition
48
- const elements = await this.deepScanner.scanFiles(screenFiles);
49
-
50
- if (config.verbose) {
51
- console.log(` Found ${elements.length} elements`);
52
- }
53
-
54
- // Build UI model
55
- const uiModel: UIModel = {
56
- screen: screenName,
57
- timestamp: Date.now(),
58
- framework: this.framework,
59
- sourceFiles: screenFiles.map(f => path.relative(process.cwd(), f)),
60
- elements: elements as any, // Type cast - DeepScanner elements are compatible
61
- stats: {
62
- totalComponents: 0, // DeepScanner doesn't track this
63
- totalElements: elements.length,
64
- maxDepth: config.scanner.maxDepth,
65
- scanDuration: Date.now() - startTime,
66
- filesScanned: screenFiles.length
67
- }
68
- };
69
-
70
- return uiModel;
71
- }
72
-
73
- /**
74
- * Validate scanner can run
75
- */
76
- validate(): boolean {
77
- return fs.existsSync(this.config.paths.sourceRoot);
78
- }
79
-
80
- /**
81
- * Find all source files for a screen
82
- * Looks for: app/{screen}/page.tsx, app/{screen}/page.jsx, etc.
83
- */
84
- private findScreenFiles(screenName: string): string[] {
85
- const files: string[] = [];
86
- const sourceRoot = this.config.paths.sourceRoot;
87
-
88
- // Convert screen name to possible paths
89
- // auth-login -> auth/login
90
- const screenPath = screenName.replace(/-/g, '/');
91
-
92
- // Possible file patterns
93
- const patterns = [
94
- path.join(sourceRoot, screenPath, 'page.tsx'),
95
- path.join(sourceRoot, screenPath, 'page.jsx'),
96
- path.join(sourceRoot, screenPath, 'index.tsx'),
97
- path.join(sourceRoot, screenPath, 'index.jsx'),
98
- path.join(sourceRoot, `${screenName}.tsx`),
99
- path.join(sourceRoot, `${screenName}.jsx`),
100
- path.join(sourceRoot, 'page.tsx'), // Root page for "home"
101
- path.join(sourceRoot, 'layout.tsx') // Always include layout
102
- ];
103
-
104
- // Add files that exist
105
- for (const pattern of patterns) {
106
- if (fs.existsSync(pattern) && !files.includes(pattern)) {
107
- files.push(pattern);
108
- }
109
- }
110
-
111
- return files;
112
- }
113
-
114
- /**
115
- * Discover all available screens
116
- */
117
- async discoverScreens(): Promise<string[]> {
118
- const screens: string[] = [];
119
- const sourceRoot = this.config.paths.sourceRoot;
120
-
121
- if (!fs.existsSync(sourceRoot)) {
122
- return screens;
123
- }
124
-
125
- // Scan sourceRoot for directories with page.tsx/jsx files
126
- const scanDir = (dir: string, prefix = '') => {
127
- const entries = fs.readdirSync(dir, { withFileTypes: true });
128
-
129
- for (const entry of entries) {
130
- if (entry.isDirectory()) {
131
- const fullPath = path.join(dir, entry.name);
132
- const hasPageFile = fs.existsSync(path.join(fullPath, 'page.tsx')) ||
133
- fs.existsSync(path.join(fullPath, 'page.jsx'));
134
-
135
- if (hasPageFile) {
136
- const screenName = prefix ? `${prefix}-${entry.name}` : entry.name;
137
- screens.push(screenName);
138
- }
139
-
140
- // Recursively scan subdirectories
141
- scanDir(fullPath, prefix ? `${prefix}-${entry.name}` : entry.name);
142
- }
143
- }
144
- };
145
-
146
- scanDir(sourceRoot);
147
-
148
- // Add "home" if root page exists
149
- if (fs.existsSync(path.join(sourceRoot, 'page.tsx')) ||
150
- fs.existsSync(path.join(sourceRoot, 'page.jsx'))) {
151
- screens.unshift('home');
152
- }
153
-
154
- return screens;
155
- }
156
- }
@@ -1,133 +0,0 @@
1
- /**
2
- * UI Scanner Interface
3
- * Defines the contract for UI scanning implementations
4
- * Supports multiple frameworks: React, Vue, Angular, etc.
5
- */
6
-
7
- import { RuntimeConfig } from '../../config/config-schema';
8
-
9
- /**
10
- * Main Scanner Interface
11
- */
12
- export interface UIScanner {
13
- /**
14
- * Scanner name/type
15
- */
16
- readonly name: string;
17
-
18
- /**
19
- * Supported framework
20
- */
21
- readonly framework: 'react' | 'vue' | 'angular';
22
-
23
- /**
24
- * Scan a screen and generate UI model
25
- *
26
- * @param screenName - Screen identifier (e.g., 'chat', 'login')
27
- * @param config - Runtime configuration
28
- * @returns UI Model
29
- */
30
- scan(screenName: string, config: RuntimeConfig): Promise<UIModel>;
31
-
32
- /**
33
- * Validate scanner can run in current environment
34
- */
35
- validate(): boolean;
36
- }
37
-
38
- /**
39
- * UI Model Structure
40
- * Represents discovered UI elements for a screen
41
- */
42
- export interface UIModel {
43
- screen: string;
44
- timestamp: number;
45
- framework: string;
46
- sourceFiles: string[];
47
- elements: UIElement[];
48
- stats: ScanStats;
49
- }
50
-
51
- /**
52
- * UI Element
53
- * Represents a discovered UI element
54
- */
55
- export interface UIElement {
56
- id: string; // Suggested ID (e.g., 'message-input')
57
- type: ElementType; // Element type (input, button, etc.)
58
- selector: string; // CSS selector to locate element
59
- label?: string; // Associated label text
60
- placeholder?: string; // Placeholder text (for inputs)
61
- role?: string; // ARIA role
62
- required?: boolean; // Is required field
63
- context?: ElementContext; // Additional context
64
- }
65
-
66
- /**
67
- * Element Types
68
- */
69
- export type ElementType =
70
- | 'input'
71
- | 'textarea'
72
- | 'select'
73
- | 'button'
74
- | 'link'
75
- | 'checkbox'
76
- | 'radio'
77
- | 'container'
78
- | 'heading'
79
- | 'text'
80
- | 'image'
81
- | 'list'
82
- | 'unknown';
83
-
84
- /**
85
- * Element Context
86
- * Additional contextual information about an element
87
- */
88
- export interface ElementContext {
89
- component?: string; // Component name where element was found
90
- parentComponent?: string; // Parent component name
91
- depth?: number; // Nesting depth from root
92
- conditionalRendering?: boolean; // Is conditionally rendered
93
- dynamicContent?: boolean; // Contains dynamic content
94
- props?: Record<string, any>; // Component props (if available)
95
- }
96
-
97
- /**
98
- * Scan Statistics
99
- */
100
- export interface ScanStats {
101
- totalComponents: number; // Total components scanned
102
- totalElements: number; // Total elements found
103
- maxDepth: number; // Maximum depth reached
104
- scanDuration: number; // Scan duration in ms
105
- filesScanned: number; // Number of files scanned
106
- }
107
-
108
- /**
109
- * Scanner Factory
110
- * Creates appropriate scanner based on framework type
111
- */
112
- export class ScannerFactory {
113
- /**
114
- * Create scanner instance for framework
115
- */
116
- static create(framework: 'react' | 'vue' | 'angular', config: RuntimeConfig): UIScanner {
117
- switch (framework) {
118
- case 'react':
119
- // Dynamic import to avoid loading all scanners
120
- const ReactScanner = require('./react-scanner').ReactScanner;
121
- return new ReactScanner(config);
122
-
123
- case 'vue':
124
- throw new Error('Vue scanner not yet implemented');
125
-
126
- case 'angular':
127
- throw new Error('Angular scanner not yet implemented');
128
-
129
- default:
130
- throw new Error(`Unsupported framework: ${framework}`);
131
- }
132
- }
133
- }