@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,473 +0,0 @@
1
- "use strict";
2
- /**
3
- * Step Replayer
4
- * Replays Gherkin steps on a live Playwright page to reveal dynamic elements.
5
- * Takes a snapshot and finds elements after each action.
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.replaySteps = replaySteps;
9
- const element_finder_1 = require("./element-finder");
10
- const selector_resolver_1 = require("../../generators/test-generator/utils/selector-resolver");
11
- /**
12
- * Resolve a {{dataRef}} path against test-data object.
13
- * Supports dot-notation: "email.valid" → testData.email.valid
14
- */
15
- function resolveDataRef(testData, dataRef) {
16
- const parts = dataRef.replace(/[{}]/g, '').split('.');
17
- let value = testData;
18
- for (const part of parts) {
19
- value = value?.[part];
20
- }
21
- return typeof value === 'string' ? value : String(value ?? '');
22
- }
23
- /**
24
- * Replay a sequence of Gherkin steps on a Playwright page,
25
- * finding and interacting with elements along the way.
26
- */
27
- async function replaySteps(page, steps, featurePath, baseUrl, existingElements, testData) {
28
- const elements = {};
29
- const errors = [];
30
- let currentContext = 'page';
31
- // Pre-scan: detect which base keys have multiple normalized element types
32
- // so we can append --type suffix (matching scaffold generator behavior)
33
- // Uses normalizeElementType to match scaffold generator's extractTargetType mapping
34
- // e.g. modal/dialog both normalize to 'dialog', so they won't create a false conflict
35
- const typesPerKey = new Map();
36
- for (const step of steps) {
37
- if (!step.selectorRef)
38
- continue;
39
- const baseKey = generateElementKey(step.selectorRef, step.elementType, step.nth);
40
- const action = detectAction(step.text);
41
- const normalizedType = normalizeElementType(step.elementType || 'button', action);
42
- if (!typesPerKey.has(baseKey)) {
43
- typesPerKey.set(baseKey, new Set());
44
- }
45
- typesPerKey.get(baseKey).add(normalizedType);
46
- }
47
- const conflictKeys = new Set();
48
- for (const [key, types] of typesPerKey) {
49
- if (types.size > 1)
50
- conflictKeys.add(key);
51
- }
52
- for (const step of steps) {
53
- try {
54
- const action = detectAction(step.text);
55
- // Handle navigation (Given User is on [x] page)
56
- if (action === 'navigate') {
57
- await page.goto(baseUrl + featurePath, { waitUntil: 'networkidle', timeout: 15000 });
58
- await settle(page);
59
- if (step.selectorRef) {
60
- const baseKey = generateElementKey(step.selectorRef, step.elementType, step.nth);
61
- const normalizedType = normalizeElementType(step.elementType || 'page', action);
62
- const key = conflictKeys.has(baseKey) ? `${baseKey}--${normalizedType}` : baseKey;
63
- // Record the page element but don't search for it on the DOM
64
- elements[key] = {
65
- gherkinRef: step.selectorRef,
66
- gherkinType: step.elementType || 'page',
67
- selectorType: '',
68
- selectorValue: featurePath,
69
- role: '',
70
- name: step.selectorRef,
71
- testid: null,
72
- tag: '',
73
- contenteditable: false,
74
- placeholder: null,
75
- label: null,
76
- context: 'page',
77
- matchMethod: 'exact_role',
78
- exact: false,
79
- warning: null,
80
- };
81
- }
82
- continue;
83
- }
84
- // Skip steps without element references
85
- if (!step.selectorRef)
86
- continue;
87
- const baseKey = generateElementKey(step.selectorRef, step.elementType, step.nth);
88
- const elementType = step.elementType || 'button';
89
- const normalizedType = normalizeElementType(elementType, action);
90
- const key = conflictKeys.has(baseKey) ? `${baseKey}--${normalizedType}` : baseKey;
91
- const nth = step.nth || 0;
92
- // Skip column-type elements — they use header text matching, no DOM lookup needed
93
- if (normalizedType === 'column') {
94
- console.log(` ⏭️ [${step.selectorRef}] column → skipped (table header match)`);
95
- continue;
96
- }
97
- // Skip if element already resolved in existing scan (non-force mode)
98
- if (existingElements && existingElements[key] && existingElements[key].matchMethod !== 'unresolved') {
99
- elements[key] = existingElements[key];
100
- elements[key].skipped = true;
101
- console.log(` ⏩ [${step.selectorRef}] ${elementType} → cached (${existingElements[key].selectorType})`);
102
- // Still execute actions for cached elements to maintain page state
103
- if (action === 'click') {
104
- try {
105
- await executeClick(page, step.selectorRef, elementType, nth);
106
- await settle(page);
107
- currentContext = await detectCurrentContext(page, currentContext, step.text);
108
- }
109
- catch {
110
- // Click failed for cached element, continue anyway
111
- }
112
- }
113
- else if (action === 'fill' && testData && step.dataRef) {
114
- try {
115
- const value = resolveDataRef(testData, step.dataRef);
116
- if (value) {
117
- await executeFill(page, step.selectorRef, elementType, nth, value);
118
- await settle(page);
119
- }
120
- }
121
- catch {
122
- // Fill failed for cached element, continue anyway
123
- }
124
- }
125
- else if (action === 'select' && testData && step.dataRef) {
126
- try {
127
- const value = resolveDataRef(testData, step.dataRef);
128
- if (value) {
129
- await executeSelect(page, step.selectorRef, elementType, nth, value);
130
- await settle(page);
131
- }
132
- }
133
- catch {
134
- // Select failed for cached element, continue anyway
135
- }
136
- }
137
- continue;
138
- }
139
- // Find the element on the page, scoped to current context (dialog/page)
140
- const element = await (0, element_finder_1.findElement)(page, step.selectorRef, elementType, nth, currentContext);
141
- element.context = currentContext;
142
- // Record in matrix (first match wins for duplicate keys)
143
- if (!elements[key]) {
144
- elements[key] = element;
145
- }
146
- // Execute the action if element was found
147
- if (element.matchMethod !== 'unresolved') {
148
- if (action === 'click') {
149
- await executeClick(page, step.selectorRef, elementType, nth);
150
- await settle(page);
151
- currentContext = await detectCurrentContext(page, currentContext, step.text);
152
- }
153
- else if (action === 'fill') {
154
- if (testData && step.dataRef) {
155
- const value = resolveDataRef(testData, step.dataRef);
156
- if (value) {
157
- try {
158
- await executeFill(page, step.selectorRef, elementType, nth, value);
159
- await settle(page);
160
- }
161
- catch (e) {
162
- errors.push(`Step "${step.text}": fill failed — ${e.message}`);
163
- }
164
- }
165
- }
166
- }
167
- else if (action === 'select') {
168
- if (testData && step.dataRef) {
169
- const value = resolveDataRef(testData, step.dataRef);
170
- if (value) {
171
- try {
172
- await executeSelect(page, step.selectorRef, elementType, nth, value);
173
- await settle(page);
174
- }
175
- catch (e) {
176
- errors.push(`Step "${step.text}": select failed — ${e.message}`);
177
- }
178
- }
179
- }
180
- }
181
- // Label-value detection: check if the data value appears in a sibling element
182
- if (action === 'see' && normalizedType === 'text' && (elementType === 'label' || elementType === 'title' || elementType === 'caption') && testData && step.dataRef) {
183
- const dataValue = resolveDataRef(testData, step.dataRef);
184
- if (dataValue) {
185
- try {
186
- // Check if the parent container has both the label text and the data value
187
- const hasLabelValue = await page.getByText(new RegExp(escapeRegex(element.gherkinRef) + '.*' + escapeRegex(dataValue))).first().isVisible({ timeout: 2000 });
188
- if (hasLabelValue) {
189
- element.matchMethod = 'label-value';
190
- elements[key] = element;
191
- }
192
- }
193
- catch {
194
- // Regex match failed, keep original matchMethod
195
- }
196
- }
197
- }
198
- // 'see' and 'wait' actions: just record, don't interact
199
- }
200
- else {
201
- // Try data-value fallback for click actions: use the resolved data value as element name
202
- if (action === 'click' && testData && step.dataRef) {
203
- const dataValue = resolveDataRef(testData, step.dataRef);
204
- if (dataValue) {
205
- // Brief wait for dynamic content (e.g. autocomplete dropdown after fill)
206
- await page.waitForTimeout(1000);
207
- const fallback = await (0, element_finder_1.findElement)(page, dataValue, elementType, nth, currentContext);
208
- if (fallback.matchMethod !== 'unresolved') {
209
- // Preserve original gherkinRef; clear locator values since they come
210
- // from test-data ({{dataRef}}) at runtime, not hardcoded from DOM.
211
- // Store dataValue for logging in scanner.ts
212
- fallback.gherkinRef = step.selectorRef;
213
- fallback.dataValue = dataValue;
214
- fallback.name = '';
215
- fallback.exact = false;
216
- elements[key] = fallback;
217
- try {
218
- await executeClick(page, dataValue, elementType, nth);
219
- await settle(page);
220
- currentContext = await detectCurrentContext(page, currentContext, step.text);
221
- }
222
- catch {
223
- // Click failed, element still recorded
224
- }
225
- continue;
226
- }
227
- }
228
- }
229
- errors.push(`Step "${step.text}": element [${step.selectorRef}] not found`);
230
- // Continue scanning remaining steps — record what we can even if some elements are missing
231
- }
232
- }
233
- catch (error) {
234
- errors.push(`Step "${step.text}": ${error.message}`);
235
- // On navigation or critical errors, stop replaying this scenario
236
- if (error.message.includes('Navigation') || error.message.includes('net::')) {
237
- break;
238
- }
239
- }
240
- }
241
- return { elements, errors };
242
- }
243
- async function executeClick(page, ref, elementType, nth) {
244
- const namePattern = new RegExp(escapeRegex(ref), 'i');
245
- // Try role-based click first
246
- const { getRoleFallbacks } = require('./role-fallback');
247
- const roles = getRoleFallbacks(elementType);
248
- for (const role of roles) {
249
- try {
250
- const locator = page.getByRole(role, { name: namePattern });
251
- const target = nth > 0 ? locator.nth(nth) : locator.first();
252
- if (await target.isVisible({ timeout: 3000 })) {
253
- await target.click({ timeout: 5000 });
254
- return;
255
- }
256
- }
257
- catch {
258
- continue;
259
- }
260
- }
261
- // Fallback to text click
262
- try {
263
- const locator = page.getByText(namePattern);
264
- const target = nth > 0 ? locator.nth(nth) : locator.first();
265
- await target.click({ timeout: 5000 });
266
- }
267
- catch {
268
- // Try testid as last resort
269
- const normalized = ref.toLowerCase().replace(/[\s_-]+/g, '-');
270
- await page.locator(`[data-testid*="${normalized}" i]`).first().click({ timeout: 5000 });
271
- }
272
- }
273
- async function executeFill(page, ref, elementType, nth, value) {
274
- const namePattern = new RegExp(escapeRegex(ref), 'i');
275
- // Try placeholder first — most direct for input fields, avoids slow role attempts
276
- try {
277
- const locator = page.getByPlaceholder(namePattern);
278
- const target = nth > 0 ? locator.nth(nth) : locator.first();
279
- if (await target.isVisible({ timeout: 3000 })) {
280
- await target.fill(value, { timeout: 5000 });
281
- return;
282
- }
283
- }
284
- catch {
285
- // continue
286
- }
287
- // Try label
288
- try {
289
- const locator = page.getByLabel(namePattern);
290
- const target = nth > 0 ? locator.nth(nth) : locator.first();
291
- if (await target.isVisible({ timeout: 3000 })) {
292
- await target.fill(value, { timeout: 5000 });
293
- return;
294
- }
295
- }
296
- catch {
297
- // continue
298
- }
299
- // Try role-based fill (textbox, combobox, spinbutton)
300
- const { getRoleFallbacks } = require('./role-fallback');
301
- const roles = getRoleFallbacks(elementType);
302
- for (const role of roles) {
303
- try {
304
- const locator = page.getByRole(role, { name: namePattern });
305
- const target = nth > 0 ? locator.nth(nth) : locator.first();
306
- if (await target.isVisible({ timeout: 3000 })) {
307
- await target.fill(value, { timeout: 5000 });
308
- return;
309
- }
310
- }
311
- catch {
312
- continue;
313
- }
314
- }
315
- // Try testid as last resort
316
- const normalized = ref.toLowerCase().replace(/[\s_-]+/g, '-');
317
- await page.locator(`[data-testid*="${normalized}" i]`).first().fill(value, { timeout: 5000 });
318
- }
319
- async function executeSelect(page, ref, elementType, nth, value) {
320
- const namePattern = new RegExp(escapeRegex(ref), 'i');
321
- // Try label first — most direct for select elements
322
- try {
323
- const locator = page.getByLabel(namePattern);
324
- const target = nth > 0 ? locator.nth(nth) : locator.first();
325
- if (await target.isVisible({ timeout: 3000 })) {
326
- await target.selectOption(value, { timeout: 5000 });
327
- return;
328
- }
329
- }
330
- catch {
331
- // continue
332
- }
333
- // Try role-based select (combobox, listbox)
334
- const { getRoleFallbacks } = require('./role-fallback');
335
- const roles = getRoleFallbacks(elementType);
336
- for (const role of roles) {
337
- try {
338
- const locator = page.getByRole(role, { name: namePattern });
339
- const target = nth > 0 ? locator.nth(nth) : locator.first();
340
- if (await target.isVisible({ timeout: 3000 })) {
341
- await target.selectOption(value, { timeout: 5000 });
342
- return;
343
- }
344
- }
345
- catch {
346
- continue;
347
- }
348
- }
349
- // Try testid as last resort
350
- const normalized = ref.toLowerCase().replace(/[\s_-]+/g, '-');
351
- await page.locator(`[data-testid*="${normalized}" i]`).first().selectOption(value, { timeout: 5000 });
352
- }
353
- function detectAction(text) {
354
- const lower = text.toLowerCase();
355
- if (/\b(is on|navigate|go to|visit|open)\b/.test(lower) && /\bpage\b/.test(lower))
356
- return 'navigate';
357
- if (/\b(click|press|tap|submit)\b/.test(lower))
358
- return 'click';
359
- if (/\b(fill|enter|type|input)\b/.test(lower))
360
- return 'fill';
361
- if (/\b(see|verify|check|expect|visible|displayed)\b/.test(lower))
362
- return 'see';
363
- if (/\b(select|choose|pick)\b/.test(lower))
364
- return 'select';
365
- if (/\b(wait)\b/.test(lower))
366
- return 'wait';
367
- return 'see';
368
- }
369
- async function detectCurrentContext(page, previous, stepText) {
370
- const lower = stepText.toLowerCase();
371
- // Check if we opened a dialog/modal
372
- if (/\b(dialog|modal|panel)\b/.test(lower)) {
373
- return 'dialog';
374
- }
375
- // Check if a dialog is now visible on the page
376
- try {
377
- const dialogLocator = page.getByRole('dialog');
378
- if (await dialogLocator.count() > 0) {
379
- return 'dialog';
380
- }
381
- }
382
- catch {
383
- // ignore
384
- }
385
- // Check for menu
386
- if (/\b(menu|dropdown)\b/.test(lower)) {
387
- return 'menu';
388
- }
389
- try {
390
- const menuLocator = page.getByRole('menu');
391
- if (await menuLocator.count() > 0) {
392
- return 'menu';
393
- }
394
- }
395
- catch {
396
- // ignore
397
- }
398
- return previous;
399
- }
400
- async function settle(page) {
401
- try {
402
- await page.waitForLoadState('networkidle', { timeout: 5000 });
403
- }
404
- catch {
405
- // Timeout is acceptable — page may have long-polling connections
406
- }
407
- // Small extra wait for animations/transitions
408
- await page.waitForTimeout(300);
409
- }
410
- function generateElementKey(ref, elementType, nth) {
411
- // Use the same key generation as the scaffold generator
412
- // so live-scan keys match scaffold keys in the map command.
413
- // Append --N suffix for nth > 0, consistent with scaffold generator format.
414
- const baseKey = selector_resolver_1.SelectorResolver.generateKey(ref);
415
- return nth && nth > 0 ? `${baseKey}--${nth}` : baseKey;
416
- }
417
- /**
418
- * Normalize element type to match scaffold generator's extractTargetType() mapping.
419
- * e.g. modal→dialog, img/icon/logo→img, input→field, select→dropdown, etc.
420
- */
421
- function normalizeElementType(elementType, action) {
422
- const t = elementType.toLowerCase();
423
- if (t === 'page')
424
- return 'page';
425
- if (t === 'link')
426
- return 'link';
427
- if (t === 'button')
428
- return 'button';
429
- if (t === 'radio')
430
- return 'radio';
431
- if (t === 'dropdown' || t === 'select')
432
- return 'dropdown';
433
- if (t === 'checkbox')
434
- return 'checkbox';
435
- if (t === 'field' || t === 'input')
436
- return 'field';
437
- if (t === 'textbox')
438
- return 'textbox';
439
- if (t === 'textarea')
440
- return 'textarea';
441
- if (t === 'text')
442
- return 'text';
443
- if (t === 'label')
444
- return 'label';
445
- if (t === 'uploader')
446
- return 'uploader';
447
- if (t === 'element')
448
- return 'element';
449
- if (t === 'column' || t === 'columnheader')
450
- return 'column';
451
- if (t === 'logo' || t === 'image' || t === 'img' || t === 'icon')
452
- return 'img';
453
- if (t === 'option' || t === 'item' || t === 'listitem')
454
- return 'option';
455
- if (t === 'dialog' || t === 'modal')
456
- return 'dialog';
457
- if (t === 'heading' || t === 'header')
458
- return 'heading';
459
- if (t === 'title' || t === 'caption' || t === 'message')
460
- return 'text';
461
- // Default based on action (matches scaffold generator)
462
- switch (action) {
463
- case 'click': return 'text';
464
- case 'fill': return 'field';
465
- case 'see': return 'text';
466
- case 'select': return 'dropdown';
467
- default: return 'element';
468
- }
469
- }
470
- function escapeRegex(str) {
471
- return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
472
- }
473
- //# sourceMappingURL=step-replayer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"step-replayer.js","sourceRoot":"","sources":["../../../src/core/live-scanner/step-replayer.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- /**
2
- * Live Scanner Types
3
- * Defines the data structures for live DOM scanning and matrix file output.
4
- *
5
- * Selector types map directly to Playwright locator strategies:
6
- * testid → page.getByTestId(value)
7
- * role → page.getByRole(value, { name })
8
- * label → page.getByLabel(value)
9
- * placeholder → page.getByPlaceholder(value)
10
- * text → page.getByText(value)
11
- */
12
- export type MatchMethod = 'testid' | 'exact_role' | 'role_fallback' | 'label' | 'placeholder' | 'text_only' | 'contenteditable' | 'label-value' | 'unresolved';
13
- export type SelectorType = 'testid' | 'role' | 'label' | 'placeholder' | 'text' | 'locator';
14
- export type ElementContext = 'page' | 'dialog' | 'menu' | 'modal' | 'popup';
15
- export interface LiveElement {
16
- gherkinRef: string;
17
- gherkinType: string;
18
- selectorType: SelectorType | '';
19
- selectorValue: string;
20
- role: string;
21
- name: string;
22
- testid: string | null;
23
- tag: string;
24
- contenteditable: boolean;
25
- placeholder: string | null;
26
- label: string | null;
27
- context: ElementContext;
28
- matchMethod: MatchMethod;
29
- exact: boolean;
30
- warning: string | null;
31
- }
32
- export interface LiveScanScenario {
33
- auth: string | null;
34
- extends: string | null;
35
- path: string;
36
- elements: Record<string, LiveElement>;
37
- }
38
- export interface LiveScanResult {
39
- screen: string;
40
- baseUrl: string;
41
- scannedAt: string;
42
- scenarios: Record<string, LiveScanScenario>;
43
- }
44
- export interface LiveScanOptions {
45
- baseUrl?: string;
46
- screenName: string;
47
- screensDir: string;
48
- headed?: boolean;
49
- authDir?: string;
50
- force?: boolean;
51
- }
52
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/live-scanner/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,eAAe,GAAG,OAAO,GAAG,aAAa,GAAG,WAAW,GAAG,iBAAiB,GAAG,aAAa,GAAG,YAAY,CAAC;AAE/J,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;AAE5F,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAE5E,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,GAAG,EAAE,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,cAAc,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB"}
@@ -1,14 +0,0 @@
1
- "use strict";
2
- /**
3
- * Live Scanner Types
4
- * Defines the data structures for live DOM scanning and matrix file output.
5
- *
6
- * Selector types map directly to Playwright locator strategies:
7
- * testid → page.getByTestId(value)
8
- * role → page.getByRole(value, { name })
9
- * label → page.getByLabel(value)
10
- * placeholder → page.getByPlaceholder(value)
11
- * text → page.getByText(value)
12
- */
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/live-scanner/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG"}
@@ -1,45 +0,0 @@
1
- /**
2
- * Annotation Handler
3
- * Handles Gherkin annotations: selector IDs, data refs, ignore, etc.
4
- */
5
- import { RuntimeConfig } from '../../config/config-schema';
6
- import { ParsedScenario, ParsedStep } from './gherkin-parser';
7
- export interface ExtractedAnnotation {
8
- id: string;
9
- type: 'selector' | 'data' | 'ignore';
10
- value?: string;
11
- }
12
- export declare class AnnotationHandler {
13
- private config;
14
- constructor(config: RuntimeConfig);
15
- /**
16
- * Extract element ID from step text
17
- * Supports: [screen.element] ONLY (not data refs)
18
- * Data refs <data.field> are handled separately in test-data system
19
- */
20
- extractElementId(stepText: string, screenName: string): ExtractedAnnotation | null;
21
- /**
22
- * Check if step should be ignored
23
- * Supports: # @ignore
24
- */
25
- shouldIgnoreStep(step: ParsedStep): boolean;
26
- /**
27
- * Check if entire scenario should be ignored
28
- * Supports: # @ignore-testcase
29
- */
30
- shouldIgnoreScenario(scenario: ParsedScenario): boolean;
31
- /**
32
- * Check if step should be skipped in production
33
- * Supports: # @skip-production
34
- */
35
- shouldSkipInProduction(step: ParsedStep): boolean;
36
- /**
37
- * Extract all element IDs from step (can have multiple)
38
- */
39
- extractAllElementIds(stepText: string): string[];
40
- /**
41
- * Extract data references from step
42
- */
43
- extractDataRefs(stepText: string): string[];
44
- }
45
- //# sourceMappingURL=annotation-handler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"annotation-handler.d.ts","sourceRoot":"","sources":["../../../src/core/selector-base/annotation-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,aAAa;IAIjC;;;;OAIG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAyBlF;;;OAGG;IACH,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO;IAK3C;;;OAGG;IACH,oBAAoB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO;IAoBvD;;;OAGG;IACH,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO;IAKjD;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAchD;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;CAa5C"}