@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,608 +0,0 @@
1
- "use strict";
2
- /**
3
- * ENHANCED Deep Scanner with Semantic Context Extraction
4
- *
5
- * Enhancements over standard deep-scanner:
6
- * 1. Extract ARIA attributes (role, aria-label, aria-labelledby)
7
- * 2. Capture form context (form name, field names)
8
- * 3. Record spatial context (preceding text, parent sections)
9
- * 4. Infer semantic purpose (input/navigation/action/display)
10
- * 5. Generate multiple selector strategies (ARIA, semantic, testid, CSS)
11
- *
12
- * This enables intelligent context-aware selector mapping with 90-95% accuracy.
13
- */
14
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
- if (k2 === undefined) k2 = k;
16
- var desc = Object.getOwnPropertyDescriptor(m, k);
17
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
- desc = { enumerable: true, get: function() { return m[k]; } };
19
- }
20
- Object.defineProperty(o, k2, desc);
21
- }) : (function(o, m, k, k2) {
22
- if (k2 === undefined) k2 = k;
23
- o[k2] = m[k];
24
- }));
25
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
- Object.defineProperty(o, "default", { enumerable: true, value: v });
27
- }) : function(o, v) {
28
- o["default"] = v;
29
- });
30
- var __importStar = (this && this.__importStar) || (function () {
31
- var ownKeys = function(o) {
32
- ownKeys = Object.getOwnPropertyNames || function (o) {
33
- var ar = [];
34
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
35
- return ar;
36
- };
37
- return ownKeys(o);
38
- };
39
- return function (mod) {
40
- if (mod && mod.__esModule) return mod;
41
- var result = {};
42
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
43
- __setModuleDefault(result, mod);
44
- return result;
45
- };
46
- })();
47
- var __importDefault = (this && this.__importDefault) || function (mod) {
48
- return (mod && mod.__esModule) ? mod : { "default": mod };
49
- };
50
- Object.defineProperty(exports, "__esModule", { value: true });
51
- exports.EnhancedDeepScanner = void 0;
52
- const parser = __importStar(require("@babel/parser"));
53
- const traverse_1 = __importDefault(require("@babel/traverse"));
54
- const t = __importStar(require("@babel/types"));
55
- const fs = __importStar(require("fs"));
56
- const path = __importStar(require("path"));
57
- // ============================================================================
58
- // SEMANTIC CONTEXT EXTRACTOR
59
- // ============================================================================
60
- class SemanticContextExtractor {
61
- /**
62
- * Extract rich semantic context from element
63
- */
64
- extractContext(element, parentElement, siblings, formContext) {
65
- const context = {
66
- purpose: this.inferPurpose(element),
67
- section: this.inferSection(element, parentElement),
68
- interactionType: this.inferInteractionType(element),
69
- spatialContext: this.extractSpatialContext(element, siblings),
70
- accessibility: this.extractAccessibility(element),
71
- };
72
- // Add form context if element is inside a form
73
- if (formContext) {
74
- context.formContext = this.buildFormContext(element, formContext);
75
- }
76
- return context;
77
- }
78
- inferPurpose(element) {
79
- const tag = element.tag?.toLowerCase();
80
- const type = element.props?.type;
81
- // Interactive inputs
82
- if (['input', 'textarea', 'select'].includes(tag)) {
83
- return 'input';
84
- }
85
- // Navigation elements
86
- if (tag === 'a' || element.props?.href) {
87
- return 'navigation';
88
- }
89
- // Action elements
90
- if (tag === 'button' || type === 'submit' || type === 'button') {
91
- return 'action';
92
- }
93
- // Display elements
94
- if (['p', 'span', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'label'].includes(tag)) {
95
- return 'display';
96
- }
97
- return 'container';
98
- }
99
- inferSection(element, parent) {
100
- // Check for semantic HTML5 sections
101
- const semanticSections = ['header', 'nav', 'main', 'aside', 'footer', 'form', 'section', 'article'];
102
- let current = parent;
103
- while (current) {
104
- const tag = current.tag?.toLowerCase();
105
- if (semanticSections.includes(tag)) {
106
- return tag;
107
- }
108
- if (current.props?.['data-section']) {
109
- return current.props['data-section'];
110
- }
111
- if (current.props?.role) {
112
- const role = current.props.role;
113
- if (['banner', 'navigation', 'main', 'complementary', 'contentinfo'].includes(role)) {
114
- return role;
115
- }
116
- }
117
- current = current.parent;
118
- }
119
- // Infer from className
120
- if (element.props?.className) {
121
- const className = element.props.className.toLowerCase();
122
- if (className.includes('header'))
123
- return 'header';
124
- if (className.includes('sidebar'))
125
- return 'sidebar';
126
- if (className.includes('footer'))
127
- return 'footer';
128
- if (className.includes('modal'))
129
- return 'modal';
130
- if (className.includes('nav'))
131
- return 'navigation';
132
- }
133
- return 'main';
134
- }
135
- inferInteractionType(element) {
136
- const tag = element.tag?.toLowerCase();
137
- const type = element.props?.type;
138
- if (['checkbox', 'radio'].includes(type))
139
- return 'check';
140
- if (tag === 'select')
141
- return 'select';
142
- if (['input', 'textarea'].includes(tag))
143
- return 'fill';
144
- if (['button', 'a'].includes(tag))
145
- return 'click';
146
- if (element.props?.onClick)
147
- return 'click';
148
- return 'none';
149
- }
150
- extractSpatialContext(element, siblings) {
151
- const context = {};
152
- if (!siblings)
153
- return context;
154
- const elementIndex = siblings.findIndex(s => s.key === element.key);
155
- if (elementIndex === -1)
156
- return context;
157
- // Find preceding text (look backward)
158
- for (let i = elementIndex - 1; i >= Math.max(0, elementIndex - 3); i--) {
159
- const sibling = siblings[i];
160
- if (sibling.text && sibling.tag !== 'script' && sibling.tag !== 'style') {
161
- context.precedingText = sibling.text.trim();
162
- break;
163
- }
164
- }
165
- // Find following text (look forward)
166
- for (let i = elementIndex + 1; i < Math.min(siblings.length, elementIndex + 3); i++) {
167
- const sibling = siblings[i];
168
- if (sibling.text && sibling.tag !== 'script' && sibling.tag !== 'style') {
169
- context.followingText = sibling.text.trim();
170
- break;
171
- }
172
- }
173
- // Find nearby labels
174
- context.nearbyLabels = siblings
175
- .filter(s => s.tag === 'label' && Math.abs(siblings.indexOf(s) - elementIndex) <= 2)
176
- .map(s => s.text)
177
- .filter(Boolean);
178
- return context;
179
- }
180
- extractAccessibility(element) {
181
- const props = element.props || {};
182
- return {
183
- ariaRole: props['role'] || props['aria-role'],
184
- ariaLabel: props['aria-label'] || props['ariaLabel'],
185
- ariaLabelledBy: props['aria-labelledby'] || props['ariaLabelledBy'],
186
- ariaDescribedBy: props['aria-describedby'] || props['ariaDescribedBy'],
187
- implicitRole: this.getImplicitRole(element.tag),
188
- };
189
- }
190
- buildFormContext(element, formElement) {
191
- const formProps = formElement.props || {};
192
- return {
193
- formName: formProps.name || formProps.id || 'unnamed-form',
194
- formPurpose: this.inferFormPurpose(formElement),
195
- fieldName: element.props?.name || element.props?.id || 'unnamed-field',
196
- fieldType: element.props?.type || element.tag,
197
- };
198
- }
199
- inferFormPurpose(formElement) {
200
- const formName = (formElement.props?.name || '').toLowerCase();
201
- const formId = (formElement.props?.id || '').toLowerCase();
202
- if (formName.includes('login') || formId.includes('login'))
203
- return 'login';
204
- if (formName.includes('register') || formId.includes('register'))
205
- return 'registration';
206
- if (formName.includes('search') || formId.includes('search'))
207
- return 'search';
208
- if (formName.includes('contact') || formId.includes('contact'))
209
- return 'contact';
210
- if (formName.includes('settings') || formId.includes('settings'))
211
- return 'settings';
212
- return 'generic';
213
- }
214
- getImplicitRole(tag) {
215
- const implicitRoles = {
216
- 'button': 'button',
217
- 'a': 'link',
218
- 'input': 'textbox',
219
- 'textarea': 'textbox',
220
- 'select': 'combobox',
221
- 'nav': 'navigation',
222
- 'main': 'main',
223
- 'header': 'banner',
224
- 'footer': 'contentinfo',
225
- 'form': 'form',
226
- 'img': 'img',
227
- };
228
- return implicitRoles[tag?.toLowerCase()];
229
- }
230
- }
231
- // ============================================================================
232
- // SELECTOR STRATEGY GENERATOR
233
- // ============================================================================
234
- class SelectorStrategyGenerator {
235
- /**
236
- * Generate multiple selector strategies for an element
237
- */
238
- generateStrategies(element) {
239
- const strategies = [];
240
- // 1. ARIA-based selector (highest priority)
241
- const ariaStrategy = this.generateAriaSelector(element);
242
- if (ariaStrategy)
243
- strategies.push(ariaStrategy);
244
- // 2. Semantic structure selector
245
- const semanticStrategy = this.generateSemanticSelector(element);
246
- if (semanticStrategy)
247
- strategies.push(semanticStrategy);
248
- // 3. data-testid selector (if exists)
249
- if (element.testId) {
250
- strategies.push({
251
- type: 'testid',
252
- selector: `[data-testid="${element.testId}"]`,
253
- confidence: 'high',
254
- stability: 'high',
255
- playwrightCode: `page.locator('[data-testid="${element.testId}"]')`,
256
- });
257
- }
258
- // 4. ID selector (if exists and semantic)
259
- if (element.id && !element.id.match(/^(mui|react|auto)-/)) {
260
- strategies.push({
261
- type: 'css',
262
- selector: `#${element.id}`,
263
- confidence: 'high',
264
- stability: 'medium',
265
- playwrightCode: `page.locator('#${element.id}')`,
266
- });
267
- }
268
- // 5. Name attribute (for form fields)
269
- if (element.name) {
270
- strategies.push({
271
- type: 'css',
272
- selector: `${element.tag}[name="${element.name}"]`,
273
- confidence: 'medium',
274
- stability: 'high',
275
- playwrightCode: `page.locator('${element.tag}[name="${element.name}"]')`,
276
- });
277
- }
278
- // 6. CSS fallback
279
- if (strategies.length === 0) {
280
- const cssStrategy = this.generateCssSelector(element);
281
- if (cssStrategy)
282
- strategies.push(cssStrategy);
283
- }
284
- return strategies;
285
- }
286
- generateAriaSelector(element) {
287
- const { accessibility } = element.semanticContext;
288
- // Explicit ARIA role and label
289
- if (accessibility.ariaRole && accessibility.ariaLabel) {
290
- return {
291
- type: 'aria',
292
- selector: `role=${accessibility.ariaRole}[name="${accessibility.ariaLabel}"]`,
293
- confidence: 'high',
294
- stability: 'high',
295
- playwrightCode: `page.getByRole('${accessibility.ariaRole}', { name: '${accessibility.ariaLabel}' })`,
296
- };
297
- }
298
- // Implicit role from HTML tag + text
299
- if (accessibility.implicitRole && element.text && element.text.length < 50) {
300
- return {
301
- type: 'aria',
302
- selector: `role=${accessibility.implicitRole}[name="${element.text}"]`,
303
- confidence: 'high',
304
- stability: 'high',
305
- playwrightCode: `page.getByRole('${accessibility.implicitRole}', { name: '${element.text}' })`,
306
- };
307
- }
308
- // Role + aria-labelledby
309
- if (accessibility.ariaRole && accessibility.ariaLabelledBy) {
310
- return {
311
- type: 'aria',
312
- selector: `role=${accessibility.ariaRole}[aria-labelledby="${accessibility.ariaLabelledBy}"]`,
313
- confidence: 'medium',
314
- stability: 'medium',
315
- playwrightCode: `page.locator('[role="${accessibility.ariaRole}"][aria-labelledby="${accessibility.ariaLabelledBy}"]')`,
316
- };
317
- }
318
- // Placeholder as fallback label for inputs
319
- if (accessibility.implicitRole === 'textbox' && element.placeholder) {
320
- return {
321
- type: 'aria',
322
- selector: `role=textbox[name="${element.placeholder}"]`,
323
- confidence: 'medium',
324
- stability: 'medium',
325
- playwrightCode: `page.getByRole('textbox', { name: '${element.placeholder}' })`,
326
- };
327
- }
328
- return null;
329
- }
330
- generateSemanticSelector(element) {
331
- const { formContext, section } = element.semanticContext;
332
- // Form field with name
333
- if (formContext && formContext.fieldName && formContext.formName) {
334
- const selector = `form[name="${formContext.formName}"] ${element.tag}[name="${formContext.fieldName}"]`;
335
- return {
336
- type: 'semantic',
337
- selector,
338
- confidence: 'high',
339
- stability: 'high',
340
- playwrightCode: `page.locator('${selector}')`,
341
- };
342
- }
343
- // Link with href
344
- if (element.tag === 'a' && element.props.href) {
345
- const selector = section !== 'main'
346
- ? `${section} a[href="${element.props.href}"]`
347
- : `a[href="${element.props.href}"]`;
348
- return {
349
- type: 'semantic',
350
- selector,
351
- confidence: 'medium',
352
- stability: 'medium',
353
- playwrightCode: `page.locator('${selector}')`,
354
- };
355
- }
356
- // Button with type in section
357
- if (element.tag === 'button' && element.props.type) {
358
- const selector = section !== 'main'
359
- ? `${section} button[type="${element.props.type}"]`
360
- : `button[type="${element.props.type}"]`;
361
- return {
362
- type: 'semantic',
363
- selector,
364
- confidence: 'low',
365
- stability: 'medium',
366
- playwrightCode: `page.locator('${selector}')`,
367
- };
368
- }
369
- return null;
370
- }
371
- generateCssSelector(element) {
372
- let selector = element.tag;
373
- if (element.id) {
374
- selector = `#${element.id}`;
375
- }
376
- else if (element.name) {
377
- selector = `${element.tag}[name="${element.name}"]`;
378
- }
379
- else if (element.props.type) {
380
- selector = `${element.tag}[type="${element.props.type}"]`;
381
- }
382
- else if (element.props.className) {
383
- // Use first meaningful class (avoid utility classes)
384
- const classes = element.props.className.split(' ');
385
- const meaningfulClass = classes.find((c) => !c.match(/^(text-|bg-|p-|m-|flex|grid|rounded|border|shadow)/));
386
- if (meaningfulClass) {
387
- selector = `${element.tag}.${meaningfulClass}`;
388
- }
389
- }
390
- return {
391
- type: 'css',
392
- selector,
393
- confidence: 'low',
394
- stability: 'low',
395
- playwrightCode: `page.locator('${selector}')`,
396
- };
397
- }
398
- }
399
- // ============================================================================
400
- // ENHANCED DEEP SCANNER
401
- // ============================================================================
402
- class EnhancedDeepScanner {
403
- constructor(config) {
404
- this.elements = [];
405
- this.contextExtractor = new SemanticContextExtractor();
406
- this.strategyGenerator = new SelectorStrategyGenerator();
407
- this.scannedFiles = new Set();
408
- this.elementCounter = 0;
409
- this.currentFormContext = null;
410
- this.config = config;
411
- }
412
- /**
413
- * Scan a React component file and extract all UI elements with context
414
- */
415
- async scanFile(filePath, depth = 0, parentProps, parentElement, formContext) {
416
- if (depth > this.config.maxDepth)
417
- return;
418
- if (this.scannedFiles.has(filePath))
419
- return;
420
- this.scannedFiles.add(filePath);
421
- if (this.config.verbose) {
422
- console.log(`${' '.repeat(depth)}Scanning: ${path.basename(filePath)}`);
423
- }
424
- const code = fs.readFileSync(filePath, 'utf-8');
425
- const ast = parser.parse(code, {
426
- sourceType: 'module',
427
- plugins: ['jsx', 'typescript'],
428
- });
429
- const self = this;
430
- const currentDepth = depth;
431
- const sourceFileName = path.basename(filePath);
432
- (0, traverse_1.default)(ast, {
433
- JSXElement(nodePath) {
434
- const openingElement = nodePath.node.openingElement;
435
- const tagName = self.getTagName(openingElement);
436
- // Extract all attributes
437
- const attrs = self.extractAttributes(openingElement);
438
- // Merge with parent props
439
- const mergedAttrs = { ...parentProps, ...attrs };
440
- // Extract text content
441
- const text = self.extractText(nodePath.node);
442
- // Detect if we entered a form
443
- let currentFormCtx = formContext;
444
- if (tagName === 'form') {
445
- currentFormCtx = {
446
- tag: 'form',
447
- props: mergedAttrs,
448
- };
449
- }
450
- // Build base element
451
- const baseElement = {
452
- key: `e${++self.elementCounter}`,
453
- tag: tagName,
454
- text,
455
- testId: attrs['data-testid'],
456
- role: attrs['role'],
457
- id: attrs['id'],
458
- name: attrs['name'],
459
- placeholder: attrs['placeholder'],
460
- source: sourceFileName,
461
- props: mergedAttrs,
462
- };
463
- // Add semantic context
464
- const semanticContext = self.contextExtractor.extractContext(baseElement, parentElement, undefined, // siblings would need to be tracked
465
- currentFormCtx);
466
- // Create enhanced element
467
- const enhancedElement = {
468
- ...baseElement,
469
- semanticContext,
470
- selectorStrategies: [],
471
- };
472
- // Generate selector strategies
473
- enhancedElement.selectorStrategies = self.strategyGenerator.generateStrategies(enhancedElement);
474
- // Add to collection if it's a meaningful UI element
475
- if (self.isMeaningfulElement(enhancedElement)) {
476
- self.elements.push(enhancedElement);
477
- if (self.config.verbose) {
478
- console.log(` ${' '.repeat(depth)} Found: <${tagName}> ${text || ''} [${enhancedElement.selectorStrategies.length} strategies]`);
479
- }
480
- }
481
- },
482
- });
483
- }
484
- /**
485
- * Check if element is meaningful for testing
486
- */
487
- isMeaningfulElement(element) {
488
- const interactiveTags = ['button', 'input', 'textarea', 'select', 'a'];
489
- const meaningfulTags = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'label'];
490
- // Interactive elements
491
- if (interactiveTags.includes(element.tag))
492
- return true;
493
- // Elements with text content
494
- if (meaningfulTags.includes(element.tag) && element.text)
495
- return true;
496
- // Elements with test IDs
497
- if (element.testId)
498
- return true;
499
- // Elements with ARIA labels
500
- if (element.semanticContext.accessibility.ariaLabel)
501
- return true;
502
- // Form elements
503
- if (element.semanticContext.formContext)
504
- return true;
505
- return false;
506
- }
507
- getTagName(element) {
508
- const name = element.name;
509
- if (t.isJSXIdentifier(name)) {
510
- return name.name;
511
- }
512
- else if (t.isJSXMemberExpression(name)) {
513
- return `${name.object.name}.${name.property.name}`;
514
- }
515
- return 'unknown';
516
- }
517
- extractAttributes(element) {
518
- const attrs = {};
519
- element.attributes.forEach((attr) => {
520
- if (t.isJSXAttribute(attr) && t.isJSXIdentifier(attr.name)) {
521
- const key = attr.name.name;
522
- let value = true;
523
- if (attr.value) {
524
- if (t.isStringLiteral(attr.value)) {
525
- value = attr.value.value;
526
- }
527
- else if (t.isJSXExpressionContainer(attr.value)) {
528
- const expr = attr.value.expression;
529
- if (t.isStringLiteral(expr)) {
530
- value = expr.value;
531
- }
532
- else if (t.isBooleanLiteral(expr)) {
533
- value = expr.value;
534
- }
535
- else if (t.isNumericLiteral(expr)) {
536
- value = expr.value;
537
- }
538
- else {
539
- value = '{...}';
540
- }
541
- }
542
- }
543
- attrs[key] = value;
544
- }
545
- });
546
- return attrs;
547
- }
548
- extractText(node) {
549
- let text = '';
550
- node.children.forEach((child) => {
551
- if (t.isJSXText(child)) {
552
- text += child.value.trim();
553
- }
554
- else if (t.isJSXExpressionContainer(child)) {
555
- if (t.isStringLiteral(child.expression)) {
556
- text += child.expression.value;
557
- }
558
- }
559
- });
560
- return text.trim() || null;
561
- }
562
- /**
563
- * Get all discovered elements
564
- */
565
- getElements() {
566
- return this.elements;
567
- }
568
- /**
569
- * Get scanning stats
570
- */
571
- getStats() {
572
- return {
573
- totalElements: this.elements.length,
574
- filesScanned: this.scannedFiles.size,
575
- strategyBreakdown: this.getStrategyBreakdown(),
576
- purposeBreakdown: this.getPurposeBreakdown(),
577
- };
578
- }
579
- getStrategyBreakdown() {
580
- const breakdown = {
581
- aria: 0,
582
- semantic: 0,
583
- testid: 0,
584
- css: 0,
585
- };
586
- this.elements.forEach(el => {
587
- el.selectorStrategies.forEach(strategy => {
588
- breakdown[strategy.type]++;
589
- });
590
- });
591
- return breakdown;
592
- }
593
- getPurposeBreakdown() {
594
- const breakdown = {
595
- input: 0,
596
- navigation: 0,
597
- action: 0,
598
- display: 0,
599
- container: 0,
600
- };
601
- this.elements.forEach(el => {
602
- breakdown[el.semanticContext.purpose]++;
603
- });
604
- return breakdown;
605
- }
606
- }
607
- exports.EnhancedDeepScanner = EnhancedDeepScanner;
608
- //# sourceMappingURL=enhanced-deep-scanner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enhanced-deep-scanner.js","sourceRoot":"","sources":["../../../src/generators/ui-model-builder/enhanced-deep-scanner.ts"],"names":[],"mappings":"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"}