@sun-asterisk/sungen 1.0.23 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (364) 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/label-value-assertion.hbs +2 -0
  17. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/table-cell-by-filter.hbs +3 -0
  18. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/table-cell-by-index.hbs +3 -0
  19. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/table-column-exists.hbs +2 -0
  20. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/table-empty.hbs +2 -0
  21. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/table-row-count.hbs +2 -0
  22. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/table-row-exists.hbs +2 -0
  23. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/table-row-not-exists.hbs +2 -0
  24. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-value-assertion.hbs +1 -1
  25. package/dist/generators/test-generator/adapters/playwright/templates/steps/partials/locator-base.hbs +11 -2
  26. package/dist/generators/test-generator/adapters/playwright/templates/steps/partials/locator.hbs +11 -2
  27. package/dist/generators/test-generator/code-generator.d.ts +0 -1
  28. package/dist/generators/test-generator/code-generator.d.ts.map +1 -1
  29. package/dist/generators/test-generator/code-generator.js +0 -47
  30. package/dist/generators/test-generator/code-generator.js.map +1 -1
  31. package/dist/generators/test-generator/patterns/assertion-patterns.d.ts.map +1 -1
  32. package/dist/generators/test-generator/patterns/assertion-patterns.js +33 -8
  33. package/dist/generators/test-generator/patterns/assertion-patterns.js.map +1 -1
  34. package/dist/generators/test-generator/patterns/index.d.ts +4 -1
  35. package/dist/generators/test-generator/patterns/index.d.ts.map +1 -1
  36. package/dist/generators/test-generator/patterns/index.js +17 -5
  37. package/dist/generators/test-generator/patterns/index.js.map +1 -1
  38. package/dist/generators/test-generator/patterns/interaction-patterns.js +1 -1
  39. package/dist/generators/test-generator/patterns/interaction-patterns.js.map +1 -1
  40. package/dist/generators/test-generator/patterns/keyboard-patterns.d.ts +7 -0
  41. package/dist/generators/test-generator/patterns/keyboard-patterns.d.ts.map +1 -0
  42. package/dist/generators/test-generator/patterns/keyboard-patterns.js +47 -0
  43. package/dist/generators/test-generator/patterns/keyboard-patterns.js.map +1 -0
  44. package/dist/generators/test-generator/patterns/scope-patterns.d.ts +7 -0
  45. package/dist/generators/test-generator/patterns/scope-patterns.d.ts.map +1 -0
  46. package/dist/generators/test-generator/patterns/scope-patterns.js +36 -0
  47. package/dist/generators/test-generator/patterns/scope-patterns.js.map +1 -0
  48. package/dist/generators/test-generator/patterns/scroll-patterns.d.ts +7 -0
  49. package/dist/generators/test-generator/patterns/scroll-patterns.d.ts.map +1 -0
  50. package/dist/generators/test-generator/patterns/scroll-patterns.js +25 -0
  51. package/dist/generators/test-generator/patterns/scroll-patterns.js.map +1 -0
  52. package/dist/generators/test-generator/patterns/table-patterns.d.ts +7 -0
  53. package/dist/generators/test-generator/patterns/table-patterns.d.ts.map +1 -0
  54. package/dist/generators/test-generator/patterns/table-patterns.js +192 -0
  55. package/dist/generators/test-generator/patterns/table-patterns.js.map +1 -0
  56. package/dist/generators/test-generator/step-mapper.d.ts +1 -3
  57. package/dist/generators/test-generator/step-mapper.d.ts.map +1 -1
  58. package/dist/generators/test-generator/step-mapper.js +36 -34
  59. package/dist/generators/test-generator/step-mapper.js.map +1 -1
  60. package/dist/generators/test-generator/template-engine.d.ts.map +1 -1
  61. package/dist/generators/test-generator/template-engine.js +4 -1
  62. package/dist/generators/test-generator/template-engine.js.map +1 -1
  63. package/dist/generators/test-generator/types.d.ts +7 -24
  64. package/dist/generators/test-generator/types.d.ts.map +1 -1
  65. package/dist/generators/test-generator/types.js +2 -101
  66. package/dist/generators/test-generator/types.js.map +1 -1
  67. package/dist/generators/test-generator/utils/selector-resolver.d.ts +14 -0
  68. package/dist/generators/test-generator/utils/selector-resolver.d.ts.map +1 -1
  69. package/dist/generators/test-generator/utils/selector-resolver.js +37 -11
  70. package/dist/generators/test-generator/utils/selector-resolver.js.map +1 -1
  71. package/dist/orchestrator/project-initializer.d.ts +8 -0
  72. package/dist/orchestrator/project-initializer.d.ts.map +1 -1
  73. package/dist/orchestrator/project-initializer.js +343 -32
  74. package/dist/orchestrator/project-initializer.js.map +1 -1
  75. package/dist/orchestrator/screen-manager.d.ts +1 -32
  76. package/dist/orchestrator/screen-manager.d.ts.map +1 -1
  77. package/dist/orchestrator/screen-manager.js +55 -216
  78. package/dist/orchestrator/screen-manager.js.map +1 -1
  79. package/dist/utils/selector-types.d.ts +1 -1
  80. package/dist/utils/selector-types.d.ts.map +1 -1
  81. package/dist/utils/selector-types.js +3 -0
  82. package/dist/utils/selector-types.js.map +1 -1
  83. package/package.json +2 -2
  84. package/src/cli/commands/add.ts +5 -3
  85. package/src/cli/commands/generate.ts +90 -38
  86. package/src/cli/index.ts +5 -16
  87. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/frame-enter-action.hbs +1 -0
  88. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/frame-exit-action.hbs +1 -0
  89. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/keyboard-global-action.hbs +1 -0
  90. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/scroll-action.hbs +1 -0
  91. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/table-action-in-row.hbs +2 -0
  92. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/label-value-assertion.hbs +2 -0
  93. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/table-cell-by-filter.hbs +3 -0
  94. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/table-cell-by-index.hbs +3 -0
  95. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/table-column-exists.hbs +2 -0
  96. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/table-empty.hbs +2 -0
  97. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/table-row-count.hbs +2 -0
  98. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/table-row-exists.hbs +2 -0
  99. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/table-row-not-exists.hbs +2 -0
  100. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-value-assertion.hbs +1 -1
  101. package/src/generators/test-generator/adapters/playwright/templates/steps/partials/locator-base.hbs +11 -2
  102. package/src/generators/test-generator/adapters/playwright/templates/steps/partials/locator.hbs +11 -2
  103. package/src/generators/test-generator/code-generator.ts +0 -59
  104. package/src/generators/test-generator/patterns/assertion-patterns.ts +39 -8
  105. package/src/generators/test-generator/patterns/index.ts +12 -3
  106. package/src/generators/test-generator/patterns/interaction-patterns.ts +1 -1
  107. package/src/generators/test-generator/patterns/keyboard-patterns.ts +51 -0
  108. package/src/generators/test-generator/patterns/scope-patterns.ts +40 -0
  109. package/src/generators/test-generator/patterns/scroll-patterns.ts +27 -0
  110. package/src/generators/test-generator/patterns/table-patterns.ts +232 -0
  111. package/src/generators/test-generator/step-mapper.ts +39 -34
  112. package/src/generators/test-generator/template-engine.ts +3 -1
  113. package/src/generators/test-generator/types.ts +7 -112
  114. package/src/generators/test-generator/utils/selector-resolver.ts +70 -25
  115. package/src/orchestrator/project-initializer.ts +345 -32
  116. package/src/orchestrator/screen-manager.ts +61 -233
  117. package/src/utils/selector-types.ts +3 -0
  118. package/dist/cli/commands/cache-clear.d.ts +0 -3
  119. package/dist/cli/commands/cache-clear.d.ts.map +0 -1
  120. package/dist/cli/commands/cache-clear.js +0 -24
  121. package/dist/cli/commands/cache-clear.js.map +0 -1
  122. package/dist/cli/commands/full.d.ts +0 -3
  123. package/dist/cli/commands/full.d.ts.map +0 -1
  124. package/dist/cli/commands/full.js +0 -37
  125. package/dist/cli/commands/full.js.map +0 -1
  126. package/dist/cli/commands/live-scan.d.ts +0 -3
  127. package/dist/cli/commands/live-scan.d.ts.map +0 -1
  128. package/dist/cli/commands/live-scan.js +0 -78
  129. package/dist/cli/commands/live-scan.js.map +0 -1
  130. package/dist/cli/commands/map.d.ts +0 -3
  131. package/dist/cli/commands/map.d.ts.map +0 -1
  132. package/dist/cli/commands/map.js +0 -93
  133. package/dist/cli/commands/map.js.map +0 -1
  134. package/dist/cli/commands/validate.d.ts +0 -3
  135. package/dist/cli/commands/validate.d.ts.map +0 -1
  136. package/dist/cli/commands/validate.js +0 -43
  137. package/dist/cli/commands/validate.js.map +0 -1
  138. package/dist/cli/utils.d.ts +0 -6
  139. package/dist/cli/utils.d.ts.map +0 -1
  140. package/dist/cli/utils.js +0 -101
  141. package/dist/cli/utils.js.map +0 -1
  142. package/dist/config/config-loader.d.ts +0 -51
  143. package/dist/config/config-loader.d.ts.map +0 -1
  144. package/dist/config/config-loader.js +0 -216
  145. package/dist/config/config-loader.js.map +0 -1
  146. package/dist/config/config-schema.d.ts +0 -121
  147. package/dist/config/config-schema.d.ts.map +0 -1
  148. package/dist/config/config-schema.js +0 -7
  149. package/dist/config/config-schema.js.map +0 -1
  150. package/dist/core/live-scanner/config-reader.d.ts +0 -10
  151. package/dist/core/live-scanner/config-reader.d.ts.map +0 -1
  152. package/dist/core/live-scanner/config-reader.js +0 -87
  153. package/dist/core/live-scanner/config-reader.js.map +0 -1
  154. package/dist/core/live-scanner/element-finder.d.ts +0 -20
  155. package/dist/core/live-scanner/element-finder.d.ts.map +0 -1
  156. package/dist/core/live-scanner/element-finder.js +0 -486
  157. package/dist/core/live-scanner/element-finder.js.map +0 -1
  158. package/dist/core/live-scanner/index.d.ts +0 -8
  159. package/dist/core/live-scanner/index.d.ts.map +0 -1
  160. package/dist/core/live-scanner/index.js +0 -33
  161. package/dist/core/live-scanner/index.js.map +0 -1
  162. package/dist/core/live-scanner/matrix-reader.d.ts +0 -17
  163. package/dist/core/live-scanner/matrix-reader.d.ts.map +0 -1
  164. package/dist/core/live-scanner/matrix-reader.js +0 -60
  165. package/dist/core/live-scanner/matrix-reader.js.map +0 -1
  166. package/dist/core/live-scanner/matrix-writer.d.ts +0 -7
  167. package/dist/core/live-scanner/matrix-writer.d.ts.map +0 -1
  168. package/dist/core/live-scanner/matrix-writer.js +0 -103
  169. package/dist/core/live-scanner/matrix-writer.js.map +0 -1
  170. package/dist/core/live-scanner/role-fallback.d.ts +0 -15
  171. package/dist/core/live-scanner/role-fallback.d.ts.map +0 -1
  172. package/dist/core/live-scanner/role-fallback.js +0 -45
  173. package/dist/core/live-scanner/role-fallback.js.map +0 -1
  174. package/dist/core/live-scanner/scanner.d.ts +0 -13
  175. package/dist/core/live-scanner/scanner.d.ts.map +0 -1
  176. package/dist/core/live-scanner/scanner.js +0 -243
  177. package/dist/core/live-scanner/scanner.js.map +0 -1
  178. package/dist/core/live-scanner/step-replayer.d.ts +0 -26
  179. package/dist/core/live-scanner/step-replayer.d.ts.map +0 -1
  180. package/dist/core/live-scanner/step-replayer.js +0 -286
  181. package/dist/core/live-scanner/step-replayer.js.map +0 -1
  182. package/dist/core/live-scanner/types.d.ts +0 -52
  183. package/dist/core/live-scanner/types.d.ts.map +0 -1
  184. package/dist/core/live-scanner/types.js +0 -14
  185. package/dist/core/live-scanner/types.js.map +0 -1
  186. package/dist/core/selector-base/annotation-handler.d.ts +0 -45
  187. package/dist/core/selector-base/annotation-handler.d.ts.map +0 -1
  188. package/dist/core/selector-base/annotation-handler.js +0 -102
  189. package/dist/core/selector-base/annotation-handler.js.map +0 -1
  190. package/dist/core/selector-base/base-generator.d.ts +0 -49
  191. package/dist/core/selector-base/base-generator.d.ts.map +0 -1
  192. package/dist/core/selector-base/base-generator.js +0 -214
  193. package/dist/core/selector-base/base-generator.js.map +0 -1
  194. package/dist/core/selector-base/gherkin-parser.d.ts +0 -24
  195. package/dist/core/selector-base/gherkin-parser.d.ts.map +0 -1
  196. package/dist/core/selector-base/gherkin-parser.js +0 -42
  197. package/dist/core/selector-base/gherkin-parser.js.map +0 -1
  198. package/dist/core/selector-mapper/priority-mapper.d.ts +0 -74
  199. package/dist/core/selector-mapper/priority-mapper.d.ts.map +0 -1
  200. package/dist/core/selector-mapper/priority-mapper.js +0 -477
  201. package/dist/core/selector-mapper/priority-mapper.js.map +0 -1
  202. package/dist/core/ui-scanner/heuristics/base-heuristic.d.ts +0 -91
  203. package/dist/core/ui-scanner/heuristics/base-heuristic.d.ts.map +0 -1
  204. package/dist/core/ui-scanner/heuristics/base-heuristic.js +0 -175
  205. package/dist/core/ui-scanner/heuristics/base-heuristic.js.map +0 -1
  206. package/dist/core/ui-scanner/react-scanner.d.ts +0 -32
  207. package/dist/core/ui-scanner/react-scanner.d.ts.map +0 -1
  208. package/dist/core/ui-scanner/react-scanner.js +0 -163
  209. package/dist/core/ui-scanner/react-scanner.js.map +0 -1
  210. package/dist/core/ui-scanner/scanner-interface.d.ts +0 -94
  211. package/dist/core/ui-scanner/scanner-interface.d.ts.map +0 -1
  212. package/dist/core/ui-scanner/scanner-interface.js +0 -33
  213. package/dist/core/ui-scanner/scanner-interface.js.map +0 -1
  214. package/dist/core/ui-scanner/strict-scanner.d.ts +0 -81
  215. package/dist/core/ui-scanner/strict-scanner.d.ts.map +0 -1
  216. package/dist/core/ui-scanner/strict-scanner.js +0 -511
  217. package/dist/core/ui-scanner/strict-scanner.js.map +0 -1
  218. package/dist/core/validator/data-validator.d.ts +0 -38
  219. package/dist/core/validator/data-validator.d.ts.map +0 -1
  220. package/dist/core/validator/data-validator.js +0 -212
  221. package/dist/core/validator/data-validator.js.map +0 -1
  222. package/dist/core/validator/feature-validator.d.ts +0 -27
  223. package/dist/core/validator/feature-validator.d.ts.map +0 -1
  224. package/dist/core/validator/feature-validator.js +0 -182
  225. package/dist/core/validator/feature-validator.js.map +0 -1
  226. package/dist/core/validator/index.d.ts +0 -46
  227. package/dist/core/validator/index.d.ts.map +0 -1
  228. package/dist/core/validator/index.js +0 -17
  229. package/dist/core/validator/index.js.map +0 -1
  230. package/dist/core/validator/screen-validator.d.ts +0 -35
  231. package/dist/core/validator/screen-validator.d.ts.map +0 -1
  232. package/dist/core/validator/screen-validator.js +0 -195
  233. package/dist/core/validator/screen-validator.js.map +0 -1
  234. package/dist/core/validator/selector-validator.d.ts +0 -36
  235. package/dist/core/validator/selector-validator.d.ts.map +0 -1
  236. package/dist/core/validator/selector-validator.js +0 -210
  237. package/dist/core/validator/selector-validator.js.map +0 -1
  238. package/dist/external/ai-provider.d.ts +0 -60
  239. package/dist/external/ai-provider.d.ts.map +0 -1
  240. package/dist/external/ai-provider.js +0 -30
  241. package/dist/external/ai-provider.js.map +0 -1
  242. package/dist/external/anthropic-provider.d.ts +0 -29
  243. package/dist/external/anthropic-provider.d.ts.map +0 -1
  244. package/dist/external/anthropic-provider.js +0 -85
  245. package/dist/external/anthropic-provider.js.map +0 -1
  246. package/dist/generators/cache/cache-manager.d.ts +0 -66
  247. package/dist/generators/cache/cache-manager.d.ts.map +0 -1
  248. package/dist/generators/cache/cache-manager.js +0 -286
  249. package/dist/generators/cache/cache-manager.js.map +0 -1
  250. package/dist/generators/dsl-writer/index.d.ts +0 -33
  251. package/dist/generators/dsl-writer/index.d.ts.map +0 -1
  252. package/dist/generators/dsl-writer/index.js +0 -226
  253. package/dist/generators/dsl-writer/index.js.map +0 -1
  254. package/dist/generators/scaffold-generator/index.d.ts +0 -162
  255. package/dist/generators/scaffold-generator/index.d.ts.map +0 -1
  256. package/dist/generators/scaffold-generator/index.js +0 -868
  257. package/dist/generators/scaffold-generator/index.js.map +0 -1
  258. package/dist/generators/selector-mapper/ai-mapper.d.ts +0 -56
  259. package/dist/generators/selector-mapper/ai-mapper.d.ts.map +0 -1
  260. package/dist/generators/selector-mapper/ai-mapper.js +0 -457
  261. package/dist/generators/selector-mapper/ai-mapper.js.map +0 -1
  262. package/dist/generators/selector-mapper/hybrid-mapper.d.ts +0 -67
  263. package/dist/generators/selector-mapper/hybrid-mapper.d.ts.map +0 -1
  264. package/dist/generators/selector-mapper/hybrid-mapper.js +0 -349
  265. package/dist/generators/selector-mapper/hybrid-mapper.js.map +0 -1
  266. package/dist/generators/selector-mapper/index.d.ts +0 -8
  267. package/dist/generators/selector-mapper/index.d.ts.map +0 -1
  268. package/dist/generators/selector-mapper/index.js +0 -12
  269. package/dist/generators/selector-mapper/index.js.map +0 -1
  270. package/dist/generators/selector-mapper/intelligent-mapper.d.ts +0 -125
  271. package/dist/generators/selector-mapper/intelligent-mapper.d.ts.map +0 -1
  272. package/dist/generators/selector-mapper/intelligent-mapper.js +0 -391
  273. package/dist/generators/selector-mapper/intelligent-mapper.js.map +0 -1
  274. package/dist/generators/test-generator/ai-step-mapper.d.ts +0 -27
  275. package/dist/generators/test-generator/ai-step-mapper.d.ts.map +0 -1
  276. package/dist/generators/test-generator/ai-step-mapper.js +0 -204
  277. package/dist/generators/test-generator/ai-step-mapper.js.map +0 -1
  278. package/dist/generators/test-generator/auth-setup-generator.d.ts +0 -18
  279. package/dist/generators/test-generator/auth-setup-generator.d.ts.map +0 -1
  280. package/dist/generators/test-generator/auth-setup-generator.js +0 -82
  281. package/dist/generators/test-generator/auth-setup-generator.js.map +0 -1
  282. package/dist/generators/test-generator/patterns/legacy-patterns.d.ts +0 -7
  283. package/dist/generators/test-generator/patterns/legacy-patterns.d.ts.map +0 -1
  284. package/dist/generators/test-generator/patterns/legacy-patterns.js +0 -98
  285. package/dist/generators/test-generator/patterns/legacy-patterns.js.map +0 -1
  286. package/dist/generators/test-generator/templates/auth-setup.ts.hbs +0 -36
  287. package/dist/generators/ui-model-builder/deep-scanner.d.ts +0 -121
  288. package/dist/generators/ui-model-builder/deep-scanner.d.ts.map +0 -1
  289. package/dist/generators/ui-model-builder/deep-scanner.js +0 -1113
  290. package/dist/generators/ui-model-builder/deep-scanner.js.map +0 -1
  291. package/dist/generators/ui-model-builder/enhanced-deep-scanner.d.ts +0 -110
  292. package/dist/generators/ui-model-builder/enhanced-deep-scanner.d.ts.map +0 -1
  293. package/dist/generators/ui-model-builder/enhanced-deep-scanner.js +0 -608
  294. package/dist/generators/ui-model-builder/enhanced-deep-scanner.js.map +0 -1
  295. package/dist/generators/ui-model-builder/react-scanner.d.ts +0 -107
  296. package/dist/generators/ui-model-builder/react-scanner.d.ts.map +0 -1
  297. package/dist/generators/ui-model-builder/react-scanner.js +0 -797
  298. package/dist/generators/ui-model-builder/react-scanner.js.map +0 -1
  299. package/dist/orchestrator/cache-manager.d.ts +0 -15
  300. package/dist/orchestrator/cache-manager.d.ts.map +0 -1
  301. package/dist/orchestrator/cache-manager.js +0 -62
  302. package/dist/orchestrator/cache-manager.js.map +0 -1
  303. package/dist/orchestrator/pipeline.d.ts +0 -56
  304. package/dist/orchestrator/pipeline.d.ts.map +0 -1
  305. package/dist/orchestrator/pipeline.js +0 -298
  306. package/dist/orchestrator/pipeline.js.map +0 -1
  307. package/dist/orchestrator/reporter.d.ts +0 -15
  308. package/dist/orchestrator/reporter.d.ts.map +0 -1
  309. package/dist/orchestrator/reporter.js +0 -30
  310. package/dist/orchestrator/reporter.js.map +0 -1
  311. package/src/cli/commands/cache-clear.ts +0 -22
  312. package/src/cli/commands/full.ts +0 -35
  313. package/src/cli/commands/live-scan.ts +0 -82
  314. package/src/cli/commands/map.ts +0 -97
  315. package/src/cli/commands/validate.ts +0 -43
  316. package/src/cli/utils.ts +0 -106
  317. package/src/config/ai-providers.yaml +0 -56
  318. package/src/config/config-loader.ts +0 -248
  319. package/src/config/config-schema.ts +0 -148
  320. package/src/config/default.config.yaml +0 -107
  321. package/src/config/framework.config.yaml +0 -52
  322. package/src/config/routes.yaml +0 -31
  323. package/src/core/live-scanner/config-reader.ts +0 -57
  324. package/src/core/live-scanner/element-finder.ts +0 -541
  325. package/src/core/live-scanner/index.ts +0 -7
  326. package/src/core/live-scanner/matrix-reader.ts +0 -65
  327. package/src/core/live-scanner/matrix-writer.ts +0 -77
  328. package/src/core/live-scanner/role-fallback.ts +0 -43
  329. package/src/core/live-scanner/scanner.ts +0 -254
  330. package/src/core/live-scanner/step-replayer.ts +0 -306
  331. package/src/core/live-scanner/types.ts +0 -58
  332. package/src/core/selector-base/annotation-handler.ts +0 -127
  333. package/src/core/selector-base/base-generator.ts +0 -234
  334. package/src/core/selector-base/gherkin-parser.ts +0 -57
  335. package/src/core/selector-mapper/priority-mapper.ts +0 -607
  336. package/src/core/ui-scanner/heuristics/base-heuristic.ts +0 -216
  337. package/src/core/ui-scanner/react-scanner.ts +0 -156
  338. package/src/core/ui-scanner/scanner-interface.ts +0 -133
  339. package/src/core/ui-scanner/strict-scanner.ts +0 -629
  340. package/src/core/validator/data-validator.ts +0 -202
  341. package/src/core/validator/feature-validator.ts +0 -176
  342. package/src/core/validator/index.ts +0 -57
  343. package/src/core/validator/screen-validator.ts +0 -209
  344. package/src/core/validator/selector-validator.ts +0 -209
  345. package/src/external/ai-provider.ts +0 -90
  346. package/src/external/anthropic-provider.ts +0 -114
  347. package/src/generators/README.md +0 -410
  348. package/src/generators/cache/cache-manager.ts +0 -322
  349. package/src/generators/dsl-writer/index.ts +0 -253
  350. package/src/generators/scaffold-generator/index.ts +0 -1019
  351. package/src/generators/selector-mapper/ai-mapper.ts +0 -528
  352. package/src/generators/selector-mapper/hybrid-mapper.ts +0 -427
  353. package/src/generators/selector-mapper/index.ts +0 -10
  354. package/src/generators/selector-mapper/intelligent-mapper.ts +0 -530
  355. package/src/generators/test-generator/ai-step-mapper.ts +0 -224
  356. package/src/generators/test-generator/auth-setup-generator.ts +0 -59
  357. package/src/generators/test-generator/patterns/legacy-patterns.ts +0 -104
  358. package/src/generators/test-generator/templates/auth-setup.ts.hbs +0 -36
  359. package/src/generators/ui-model-builder/deep-scanner.ts +0 -1244
  360. package/src/generators/ui-model-builder/enhanced-deep-scanner.ts +0 -731
  361. package/src/generators/ui-model-builder/react-scanner.ts +0 -959
  362. package/src/orchestrator/cache-manager.ts +0 -32
  363. package/src/orchestrator/pipeline.ts +0 -354
  364. package/src/orchestrator/reporter.ts +0 -36
@@ -1,209 +0,0 @@
1
- /**
2
- * Selector Validator
3
- * Validates selector YAML files and checks referenced selectors exist
4
- */
5
-
6
- import * as fs from 'fs';
7
- import * as path from 'path';
8
- import yaml from 'yaml';
9
- import { ValidationIssue } from './index';
10
- import { SelectorResolver } from '../../generators/test-generator/utils/selector-resolver';
11
- import { VALID_SELECTOR_TYPES, SelectorType } from '../../utils/selector-types';
12
-
13
- interface SelectorEntry {
14
- selector?: string;
15
- type?: SelectorType;
16
- value?: string;
17
- name?: string;
18
- nth?: number;
19
- }
20
-
21
- type SelectorFile = Record<string, SelectorEntry>;
22
-
23
- const VALID_TYPES = VALID_SELECTOR_TYPES;
24
-
25
- export class SelectorValidator {
26
- private screenName: string;
27
- private baseDir: string;
28
- private selectorCache = new Map<string, SelectorFile>();
29
-
30
- constructor(screenName: string, baseDir?: string) {
31
- this.screenName = screenName;
32
- this.baseDir = baseDir || process.cwd();
33
- }
34
-
35
- /**
36
- * Validate selector file for a feature
37
- */
38
- validateFile(featureName: string): { errors: ValidationIssue[]; warnings: ValidationIssue[] } {
39
- const errors: ValidationIssue[] = [];
40
- const warnings: ValidationIssue[] = [];
41
-
42
- const filePath = this.findSelectorPath(featureName);
43
-
44
- if (!filePath) {
45
- errors.push({
46
- type: 'error',
47
- code: 'MISSING_SELECTOR_FILE',
48
- message: `Selector file not found for feature "${featureName}"`,
49
- file: `qa/screens/${this.screenName}/selectors/${featureName}.yaml`,
50
- });
51
- return { errors, warnings };
52
- }
53
-
54
- // Load and parse YAML
55
- let content: string;
56
- let selectors: SelectorFile;
57
-
58
- try {
59
- content = fs.readFileSync(filePath, 'utf-8');
60
- } catch (error) {
61
- errors.push({
62
- type: 'error',
63
- code: 'INVALID_YAML_SYNTAX',
64
- message: `Cannot read file: ${(error as Error).message}`,
65
- file: filePath,
66
- });
67
- return { errors, warnings };
68
- }
69
-
70
- try {
71
- selectors = yaml.parse(content) as SelectorFile;
72
- } catch (error) {
73
- errors.push({
74
- type: 'error',
75
- code: 'INVALID_YAML_SYNTAX',
76
- message: `YAML parse error: ${(error as Error).message}`,
77
- file: filePath,
78
- });
79
- return { errors, warnings };
80
- }
81
-
82
- if (!selectors || typeof selectors !== 'object') {
83
- errors.push({
84
- type: 'error',
85
- code: 'INVALID_YAML_SYNTAX',
86
- message: 'Selector file must be a valid YAML object',
87
- file: filePath,
88
- });
89
- return { errors, warnings };
90
- }
91
-
92
- // Validate each selector entry
93
- for (const [key, entry] of Object.entries(selectors)) {
94
- if (!entry || typeof entry !== 'object') {
95
- warnings.push({
96
- type: 'warning',
97
- code: 'INVALID_SELECTOR_TYPE',
98
- message: `Selector "${key}" should be an object with type/value properties`,
99
- file: filePath,
100
- element: key,
101
- });
102
- continue;
103
- }
104
-
105
- // Check type is valid
106
- if (entry.type && !VALID_TYPES.includes(entry.type)) {
107
- warnings.push({
108
- type: 'warning',
109
- code: 'INVALID_SELECTOR_TYPE',
110
- message: `Selector "${key}" has invalid type "${entry.type}". Valid types: ${VALID_TYPES.join(', ')}`,
111
- file: filePath,
112
- element: key,
113
- });
114
- }
115
- }
116
-
117
- // Cache for later ref validation
118
- this.selectorCache.set(featureName, selectors);
119
-
120
- return { errors, warnings };
121
- }
122
-
123
- /**
124
- * Check if selector references exist
125
- */
126
- validateRefs(
127
- featureName: string,
128
- refs: Array<{ ref: string; line: number }>,
129
- featureFile: string
130
- ): ValidationIssue[] {
131
- const errors: ValidationIssue[] = [];
132
-
133
- // Load selectors if not cached
134
- if (!this.selectorCache.has(featureName)) {
135
- const filePath = this.findSelectorPath(featureName);
136
- if (!filePath) {
137
- // Already reported in validateFile
138
- return errors;
139
- }
140
- try {
141
- const content = fs.readFileSync(filePath, 'utf-8');
142
- const selectors = yaml.parse(content) as SelectorFile;
143
- this.selectorCache.set(featureName, selectors);
144
- } catch {
145
- // Error already reported in validateFile
146
- return errors;
147
- }
148
- }
149
-
150
- const selectors = this.selectorCache.get(featureName);
151
- if (!selectors) {
152
- return errors;
153
- }
154
-
155
- // Check each ref
156
- for (const { ref, line } of refs) {
157
- const key = this.generateKey(ref);
158
-
159
- // Check: exact key, or any suffixed key (key--button, key--text, etc.)
160
- const found = (key in selectors) ||
161
- Object.keys(selectors).some(k => k.startsWith(`${key}--`));
162
-
163
- if (!found) {
164
- errors.push({
165
- type: 'error',
166
- code: 'MISSING_SELECTOR',
167
- message: `Selector [${ref}] (key: ${key}) not found in selectors/${featureName}.yaml`,
168
- file: featureFile,
169
- line,
170
- element: ref,
171
- });
172
- }
173
- }
174
-
175
- return errors;
176
- }
177
-
178
- /**
179
- * Generate selector key from natural language label
180
- * Delegates to SelectorResolver.generateKey() for consistent behavior
181
- * (includes Vietnamese tone removal and Japanese Romaji conversion)
182
- */
183
- private generateKey(label: string): string {
184
- return SelectorResolver.generateKey(label);
185
- }
186
-
187
- /**
188
- * Find selector file path (checks override first)
189
- */
190
- private findSelectorPath(featureName: string): string | null {
191
- const possiblePaths = [
192
- // Override (highest priority)
193
- path.join(this.baseDir, 'qa', 'screens', this.screenName, 'selectors', `${featureName}-override.yaml`),
194
- // Normal
195
- path.join(this.baseDir, 'qa', 'screens', this.screenName, 'selectors', `${featureName}.yaml`),
196
- // Legacy paths
197
- path.join(this.baseDir, 'qa', 'selectors', 'screens', `${featureName}-override.yaml`),
198
- path.join(this.baseDir, 'qa', 'selectors', 'screens', `${featureName}.yaml`),
199
- ];
200
-
201
- for (const p of possiblePaths) {
202
- if (fs.existsSync(p)) {
203
- return p;
204
- }
205
- }
206
-
207
- return null;
208
- }
209
- }
@@ -1,90 +0,0 @@
1
- /**
2
- * AI Provider Interface
3
- * Defines contract for AI service providers (Anthropic, OpenAI, Copilot)
4
- */
5
-
6
- import { RuntimeConfig } from '../config/config-schema';
7
- import { UIModel } from '../core/ui-scanner/scanner-interface';
8
- import { SelectorBase } from '../core/selector-base/base-generator';
9
-
10
- /**
11
- * Main AI Provider Interface
12
- */
13
- export interface AIProvider {
14
- /**
15
- * Provider name
16
- */
17
- readonly name: string;
18
-
19
- /**
20
- * Provider type
21
- */
22
- readonly type: 'anthropic' | 'openai' | 'copilot';
23
-
24
- /**
25
- * Map element IDs to CSS selectors using AI
26
- *
27
- * @param uiModel - UI model with discovered elements
28
- * @param selectorBase - Selector template with empty selectors
29
- * @param config - Runtime configuration
30
- * @returns Filled selector base with AI-generated selectors
31
- */
32
- mapSelectors(
33
- uiModel: UIModel,
34
- selectorBase: SelectorBase,
35
- config: RuntimeConfig
36
- ): Promise<SelectorBase>;
37
-
38
- /**
39
- * Generate Playwright code for a Gherkin step using AI
40
- *
41
- * @param step - Parsed Gherkin step
42
- * @param context - Context (selectors, test data, examples)
43
- * @param config - Runtime configuration
44
- * @returns Generated Playwright code
45
- */
46
- generateStepCode(
47
- step: any,
48
- context: StepContext,
49
- config: RuntimeConfig
50
- ): Promise<string>;
51
-
52
- /**
53
- * Validate provider can be used (API key exists, etc.)
54
- */
55
- validate(): boolean;
56
- }
57
-
58
- /**
59
- * Context for step code generation
60
- */
61
- export interface StepContext {
62
- selectors: Record<string, any>;
63
- testData: Record<string, any>;
64
- examples: string[];
65
- }
66
-
67
- /**
68
- * AI Provider Factory
69
- */
70
- export class AIProviderFactory {
71
- /**
72
- * Create AI provider instance
73
- */
74
- static create(type: 'anthropic' | 'openai' | 'copilot', config: RuntimeConfig): AIProvider {
75
- switch (type) {
76
- case 'anthropic':
77
- const AnthropicProvider = require('./anthropic-provider').AnthropicProvider;
78
- return new AnthropicProvider(config);
79
-
80
- case 'openai':
81
- throw new Error('OpenAI provider not yet implemented');
82
-
83
- case 'copilot':
84
- throw new Error('GitHub Copilot provider not yet implemented');
85
-
86
- default:
87
- throw new Error(`Unsupported AI provider: ${type}`);
88
- }
89
- }
90
- }
@@ -1,114 +0,0 @@
1
- /**
2
- * Anthropic AI Provider
3
- * Uses Claude models for selector mapping and code generation
4
- */
5
-
6
- import Anthropic from '@anthropic-ai/sdk';
7
- import { AIProvider, StepContext } from './ai-provider';
8
- import { RuntimeConfig } from '../config/config-schema';
9
- import { UIModel } from '../core/ui-scanner/scanner-interface';
10
- import { SelectorBase } from '../core/selector-base/base-generator';
11
-
12
- // Import legacy AI mappers
13
- import { AIMapper } from '../generators/selector-mapper/ai-mapper';
14
- import { AIStepMapper } from '../generators/test-generator/ai-step-mapper';
15
-
16
- export class AnthropicProvider implements AIProvider {
17
- readonly name = 'Anthropic Claude';
18
- readonly type = 'anthropic' as const;
19
-
20
- private config: RuntimeConfig;
21
- private selectorMapper: AIMapper;
22
- private stepMapper: AIStepMapper;
23
-
24
- constructor(config: RuntimeConfig) {
25
- this.config = config;
26
-
27
- const apiKey = process.env[config.apis.anthropic.apiKeyEnv];
28
- if (!apiKey) {
29
- throw new Error(`${config.apis.anthropic.apiKeyEnv} environment variable is required`);
30
- }
31
-
32
- // Initialize legacy AI mapper
33
- this.selectorMapper = new AIMapper({
34
- provider: 'anthropic',
35
- model: config.selectorMapping.model,
36
- apiKey,
37
- verbose: config.verbose
38
- });
39
-
40
- this.stepMapper = new AIStepMapper(config.verbose);
41
- }
42
-
43
- /**
44
- * Map selectors using Claude Sonnet via legacy AIMapper
45
- */
46
- async mapSelectors(
47
- uiModel: UIModel,
48
- selectorBase: SelectorBase,
49
- config: RuntimeConfig
50
- ): Promise<SelectorBase> {
51
- if (config.verbose) {
52
- console.log(` [Anthropic] Mapping selectors for screen: ${selectorBase.screen}`);
53
- }
54
-
55
- try {
56
- // Prepare element IDs from selector base
57
- const elementIds = Object.keys(selectorBase.elements).map(id => `[${selectorBase.screen}.${id}]`);
58
-
59
- // Use legacy AIMapper
60
- const result = await this.selectorMapper.mapSelectors({
61
- uiModel: uiModel as any, // Cast to legacy format
62
- elementIds
63
- });
64
-
65
- // Merge results back to selector base
66
- for (const [fullId, selectorEntry] of Object.entries(result.selectors)) {
67
- // Extract element name from full ID: [screen.element] -> element
68
- const elementName = fullId.replace(/\[.*?\.(.*?)\]/, '$1');
69
-
70
- if (selectorBase.elements[elementName]) {
71
- // Get selector value and normalize format
72
- let selector = selectorEntry.selector || '';
73
-
74
- // Normalize: ensure all selectors are unquoted (YAML handles quoting)
75
- // Remove surrounding quotes if present
76
- selector = selector.replace(/^["'](.*)["']$/, '$1');
77
-
78
- // Assign normalized selector
79
- selectorBase.elements[elementName].selector = selector;
80
- }
81
- }
82
-
83
- if (config.verbose) {
84
- console.log(` [Anthropic] Mapped ${Object.keys(result.selectors).length} selectors`);
85
- }
86
-
87
- return selectorBase;
88
- } catch (error) {
89
- console.error(`[Anthropic] Selector mapping failed: ${error}`);
90
- throw error;
91
- }
92
- }
93
-
94
- /**
95
- * Generate step code using Claude Haiku
96
- */
97
- async generateStepCode(
98
- step: any,
99
- context: StepContext,
100
- config: RuntimeConfig
101
- ): Promise<string> {
102
- // Use legacy AI step mapper
103
- const mapped = await this.stepMapper.mapStep(step);
104
- return mapped.code;
105
- }
106
-
107
- /**
108
- * Validate Anthropic provider
109
- */
110
- validate(): boolean {
111
- const apiKey = process.env[this.config.apis.anthropic.apiKeyEnv];
112
- return !!apiKey;
113
- }
114
- }