@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,391 +0,0 @@
1
- "use strict";
2
- /**
3
- * Intelligent Selector Mapper with Context-Aware Scoring
4
- *
5
- * Maps logical element names (from Gherkin) to actual UI elements using:
6
- * 1. Semantic context understanding
7
- * 2. Multi-criteria scoring algorithm
8
- * 3. Ambiguity detection and resolution
9
- * 4. Reasoning generation for transparency
10
- */
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.IntelligentSelectorMapper = void 0;
13
- class IntelligentSelectorMapper {
14
- /**
15
- * Map a logical name to best matching element using context
16
- */
17
- mapElement(logicalName, elements, gherkinContext) {
18
- // 1. Find candidates
19
- const candidates = this.findCandidates(logicalName, elements);
20
- if (candidates.length === 0) {
21
- console.warn(`⚠️ No candidates found for: ${logicalName}`);
22
- return null;
23
- }
24
- // 2. Score each candidate
25
- const scored = candidates.map(element => ({
26
- element,
27
- score: this.scoreElement(element, logicalName, gherkinContext),
28
- reasoning: this.generateReasoning(element, logicalName, gherkinContext),
29
- contextClues: this.extractContextClues(element, gherkinContext),
30
- }));
31
- // 3. Sort by score
32
- scored.sort((a, b) => b.score - a.score);
33
- // 4. Detect ambiguity
34
- const best = scored[0];
35
- const secondBest = scored[1];
36
- const ambiguityWarning = this.detectAmbiguity(best, secondBest);
37
- // 5. Build mapping
38
- const primary = this.selectPrimaryStrategy(best.element);
39
- const fallbacks = best.element.selectorStrategies
40
- .filter(s => s !== primary)
41
- .sort((a, b) => this.strategyPriority(b) - this.strategyPriority(a));
42
- return {
43
- logicalName,
44
- element: best.element,
45
- primary: {
46
- type: primary.type,
47
- selector: primary.selector,
48
- playwright: primary.playwrightCode || primary.selector,
49
- confidence: primary.confidence,
50
- },
51
- fallbacks: fallbacks.map(s => ({
52
- type: s.type,
53
- selector: s.selector,
54
- playwright: s.playwrightCode || s.selector,
55
- })),
56
- score: best.score,
57
- reasoning: best.reasoning,
58
- contextClues: best.contextClues,
59
- ambiguityWarning,
60
- };
61
- }
62
- /**
63
- * Find candidate elements that might match logical name
64
- */
65
- findCandidates(logicalName, elements) {
66
- const normalized = this.normalizeLogicalName(logicalName);
67
- const keywords = normalized.split(/[-_\s]+/);
68
- return elements.filter(element => {
69
- // Match by text content
70
- if (element.text && this.textMatches(element.text, keywords)) {
71
- return true;
72
- }
73
- // Match by ARIA label
74
- if (element.semanticContext.accessibility.ariaLabel) {
75
- if (this.textMatches(element.semanticContext.accessibility.ariaLabel, keywords)) {
76
- return true;
77
- }
78
- }
79
- // Match by form field name
80
- if (element.semanticContext.formContext?.fieldName) {
81
- if (this.textMatches(element.semanticContext.formContext.fieldName, keywords)) {
82
- return true;
83
- }
84
- }
85
- // Match by element name
86
- if (element.name && this.textMatches(element.name, keywords)) {
87
- return true;
88
- }
89
- // Match by placeholder
90
- if (element.placeholder && this.textMatches(element.placeholder, keywords)) {
91
- return true;
92
- }
93
- // Match by purpose + tag
94
- const purposeMatch = keywords.some(k => element.semanticContext.purpose.toLowerCase().includes(k));
95
- const tagMatch = keywords.some(k => element.tag.toLowerCase().includes(k));
96
- if (purposeMatch || tagMatch) {
97
- return true;
98
- }
99
- return false;
100
- });
101
- }
102
- /**
103
- * Score an element based on how well it matches logical name
104
- */
105
- scoreElement(element, logicalName, gherkinContext) {
106
- let score = 0;
107
- const normalized = this.normalizeLogicalName(logicalName);
108
- const keywords = normalized.split(/[-_\s]+/);
109
- // === TEXT CONTENT MATCHING (0-50 points) ===
110
- if (element.text) {
111
- const textNorm = element.text.toLowerCase();
112
- if (textNorm === normalized) {
113
- score += 50; // Exact match
114
- }
115
- else if (keywords.every(k => textNorm.includes(k))) {
116
- score += 35; // Contains all keywords
117
- }
118
- else if (keywords.some(k => textNorm.includes(k))) {
119
- score += 20; // Contains some keywords
120
- }
121
- }
122
- // === ARIA LABEL MATCHING (0-45 points) ===
123
- const ariaLabel = element.semanticContext.accessibility.ariaLabel;
124
- if (ariaLabel) {
125
- const ariaNorm = ariaLabel.toLowerCase();
126
- if (ariaNorm === normalized) {
127
- score += 45;
128
- }
129
- else if (keywords.every(k => ariaNorm.includes(k))) {
130
- score += 30;
131
- }
132
- else if (keywords.some(k => ariaNorm.includes(k))) {
133
- score += 15;
134
- }
135
- }
136
- // === FORM FIELD NAME MATCHING (0-40 points) ===
137
- if (element.semanticContext.formContext) {
138
- const fieldName = element.semanticContext.formContext.fieldName.toLowerCase();
139
- if (fieldName === normalized) {
140
- score += 40;
141
- }
142
- else if (keywords.every(k => fieldName.includes(k))) {
143
- score += 25;
144
- }
145
- else if (keywords.some(k => fieldName.includes(k))) {
146
- score += 12;
147
- }
148
- }
149
- // === NAME ATTRIBUTE MATCHING (0-35 points) ===
150
- if (element.name) {
151
- const nameNorm = element.name.toLowerCase();
152
- if (nameNorm === normalized) {
153
- score += 35;
154
- }
155
- else if (keywords.every(k => nameNorm.includes(k))) {
156
- score += 20;
157
- }
158
- else if (keywords.some(k => nameNorm.includes(k))) {
159
- score += 10;
160
- }
161
- }
162
- // === PLACEHOLDER MATCHING (0-30 points) ===
163
- if (element.placeholder) {
164
- const placeholderNorm = element.placeholder.toLowerCase();
165
- if (keywords.every(k => placeholderNorm.includes(k))) {
166
- score += 30;
167
- }
168
- else if (keywords.some(k => placeholderNorm.includes(k))) {
169
- score += 15;
170
- }
171
- }
172
- // === PURPOSE MATCHING (0-20 points) ===
173
- const purposeKeywords = {
174
- button: 'action',
175
- input: 'input',
176
- link: 'navigation',
177
- select: 'input',
178
- checkbox: 'input',
179
- };
180
- keywords.forEach(keyword => {
181
- if (purposeKeywords[keyword] === element.semanticContext.purpose) {
182
- score += 20;
183
- }
184
- });
185
- // === TAG MATCHING (0-15 points) ===
186
- keywords.forEach(keyword => {
187
- if (element.tag.toLowerCase() === keyword) {
188
- score += 15;
189
- }
190
- });
191
- // === GHERKIN CONTEXT MATCHING (0-25 points) ===
192
- if (gherkinContext) {
193
- const contextNorm = gherkinContext.toLowerCase();
194
- // Preceding text mentioned
195
- if (element.semanticContext.spatialContext.precedingText) {
196
- const preceding = element.semanticContext.spatialContext.precedingText.toLowerCase();
197
- if (contextNorm.includes(preceding)) {
198
- score += 15;
199
- }
200
- }
201
- // Section mentioned
202
- if (contextNorm.includes(element.semanticContext.section)) {
203
- score += 10;
204
- }
205
- // Form context mentioned
206
- if (element.semanticContext.formContext) {
207
- const formPurpose = element.semanticContext.formContext.formPurpose;
208
- if (contextNorm.includes(formPurpose)) {
209
- score += 10;
210
- }
211
- }
212
- }
213
- // === SELECTOR QUALITY BONUS (0-20 points) ===
214
- const hasHighConfARIA = element.selectorStrategies.some(s => s.type === 'aria' && s.confidence === 'high');
215
- if (hasHighConfARIA) {
216
- score += 20;
217
- }
218
- // === UNIQUENESS PENALTY (0 to -30 points) ===
219
- // This would require passing all elements to check for duplicates
220
- // For now, skip this in basic implementation
221
- return Math.max(0, score);
222
- }
223
- /**
224
- * Generate human-readable reasoning for the mapping
225
- */
226
- generateReasoning(element, logicalName, gherkinContext) {
227
- const reasons = [];
228
- // Text match
229
- if (element.text) {
230
- reasons.push(`Text: "${element.text}"`);
231
- }
232
- // ARIA label
233
- if (element.semanticContext.accessibility.ariaLabel) {
234
- reasons.push(`ARIA label: "${element.semanticContext.accessibility.ariaLabel}"`);
235
- }
236
- // Form context
237
- if (element.semanticContext.formContext) {
238
- reasons.push(`Form field: ${element.semanticContext.formContext.formName}/${element.semanticContext.formContext.fieldName}`);
239
- }
240
- // Element type
241
- reasons.push(`Element: <${element.tag}>`);
242
- // Purpose
243
- reasons.push(`Purpose: ${element.semanticContext.purpose}`);
244
- // Section
245
- if (element.semanticContext.section !== 'main') {
246
- reasons.push(`Section: ${element.semanticContext.section}`);
247
- }
248
- // Preceding text
249
- if (element.semanticContext.spatialContext.precedingText) {
250
- reasons.push(`After: "${element.semanticContext.spatialContext.precedingText}"`);
251
- }
252
- return reasons;
253
- }
254
- /**
255
- * Extract context clues that helped with matching
256
- */
257
- extractContextClues(element, gherkinContext) {
258
- const clues = [];
259
- if (element.semanticContext.section !== 'main') {
260
- clues.push(`section:${element.semanticContext.section}`);
261
- }
262
- if (element.semanticContext.formContext) {
263
- clues.push(`form:${element.semanticContext.formContext.formName}`);
264
- }
265
- if (element.semanticContext.accessibility.ariaLabel) {
266
- clues.push(`aria-label`);
267
- }
268
- if (element.semanticContext.spatialContext.precedingText) {
269
- clues.push(`has-preceding-text`);
270
- }
271
- if (gherkinContext) {
272
- clues.push(`gherkin-context-used`);
273
- }
274
- return clues;
275
- }
276
- /**
277
- * Detect if there's ambiguity between top candidates
278
- */
279
- detectAmbiguity(best, secondBest) {
280
- if (!secondBest)
281
- return undefined;
282
- const scoreDiff = best.score - secondBest.score;
283
- if (scoreDiff < 10) {
284
- return `⚠️ Low confidence - score difference only ${scoreDiff} points. Consider adding more specific identifiers.`;
285
- }
286
- if (scoreDiff < 20) {
287
- return `⚠️ Moderate confidence - multiple similar elements found.`;
288
- }
289
- return undefined;
290
- }
291
- /**
292
- * Select the best selector strategy for an element
293
- */
294
- selectPrimaryStrategy(element) {
295
- // Priority: high-conf ARIA > high-conf semantic > testid > medium-conf ARIA > CSS
296
- const strategies = element.selectorStrategies;
297
- // Try high-confidence ARIA first
298
- const highAria = strategies.find(s => s.type === 'aria' && s.confidence === 'high');
299
- if (highAria)
300
- return highAria;
301
- // Try high-confidence semantic
302
- const highSemantic = strategies.find(s => s.type === 'semantic' && s.confidence === 'high');
303
- if (highSemantic)
304
- return highSemantic;
305
- // Try testid
306
- const testid = strategies.find(s => s.type === 'testid');
307
- if (testid)
308
- return testid;
309
- // Try medium-confidence ARIA
310
- const medAria = strategies.find(s => s.type === 'aria' && s.confidence === 'medium');
311
- if (medAria)
312
- return medAria;
313
- // Try any semantic
314
- const semantic = strategies.find(s => s.type === 'semantic');
315
- if (semantic)
316
- return semantic;
317
- // Fallback to first available
318
- return strategies[0];
319
- }
320
- /**
321
- * Get priority score for a strategy type
322
- */
323
- strategyPriority(strategy) {
324
- const priorities = {
325
- aria: { high: 100, medium: 80, low: 60 },
326
- semantic: { high: 90, medium: 70, low: 50 },
327
- testid: { high: 85, medium: 85, low: 85 },
328
- css: { high: 40, medium: 30, low: 20 },
329
- };
330
- const typePriority = priorities[strategy.type] || { high: 10, medium: 5, low: 1 };
331
- return typePriority[strategy.confidence] || 1;
332
- }
333
- /**
334
- * Normalize logical name for comparison
335
- */
336
- normalizeLogicalName(name) {
337
- return name
338
- .toLowerCase()
339
- .replace(/[-_.]/g, ' ')
340
- .replace(/\s+/g, ' ')
341
- .trim();
342
- }
343
- /**
344
- * Check if text matches keywords
345
- */
346
- textMatches(text, keywords) {
347
- const textNorm = text.toLowerCase();
348
- return keywords.some(keyword => textNorm.includes(keyword));
349
- }
350
- /**
351
- * Map multiple logical names at once
352
- */
353
- mapElements(logicalNames, elements, gherkinContexts) {
354
- const mappings = {};
355
- logicalNames.forEach(name => {
356
- const context = gherkinContexts?.[name];
357
- mappings[name] = this.mapElement(name, elements, context);
358
- });
359
- return mappings;
360
- }
361
- /**
362
- * Generate statistics about mappings
363
- */
364
- generateStats(mappings) {
365
- const total = Object.keys(mappings).length;
366
- const successful = Object.values(mappings).filter(m => m !== null).length;
367
- const failed = total - successful;
368
- const selectorTypeBreakdown = {};
369
- const confidenceBreakdown = {};
370
- const ambiguityCount = Object.values(mappings).filter(m => m && m.ambiguityWarning).length;
371
- Object.values(mappings).forEach(mapping => {
372
- if (mapping) {
373
- selectorTypeBreakdown[mapping.primary.type] =
374
- (selectorTypeBreakdown[mapping.primary.type] || 0) + 1;
375
- confidenceBreakdown[mapping.primary.confidence] =
376
- (confidenceBreakdown[mapping.primary.confidence] || 0) + 1;
377
- }
378
- });
379
- return {
380
- total,
381
- successful,
382
- failed,
383
- successRate: ((successful / total) * 100).toFixed(1) + '%',
384
- selectorTypeBreakdown,
385
- confidenceBreakdown,
386
- ambiguityCount,
387
- };
388
- }
389
- }
390
- exports.IntelligentSelectorMapper = IntelligentSelectorMapper;
391
- //# sourceMappingURL=intelligent-mapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"intelligent-mapper.js","sourceRoot":"","sources":["../../../src/generators/selector-mapper/intelligent-mapper.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- /**
2
- * AI-Based Step Mapper
3
- * Fallback for dictionary when Gherkin patterns are ambiguous or unknown
4
- */
5
- import { ParsedStep } from '../gherkin-parser';
6
- import { MappedStep } from './step-mapper';
7
- export declare class AIStepMapper {
8
- private client;
9
- private verbose;
10
- constructor(verbose?: boolean);
11
- /**
12
- * Map a Gherkin step to Playwright code using AI
13
- * Provides rich context to help AI understand the intent
14
- */
15
- mapStep(step: ParsedStep): Promise<MappedStep>;
16
- /**
17
- * Build context-rich prompt for AI
18
- * Includes examples, patterns, and clear instructions
19
- */
20
- private buildPrompt;
21
- /**
22
- * Extract clean code from AI response
23
- * Remove markdown code blocks, explanations, etc.
24
- */
25
- private extractCode;
26
- }
27
- //# sourceMappingURL=ai-step-mapper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai-step-mapper.d.ts","sourceRoot":"","sources":["../../../src/generators/test-generator/ai-step-mapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,GAAE,OAAe;IAUpC;;;OAGG;IACG,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IA4CpD;;;OAGG;IACH,OAAO,CAAC,WAAW;IAoFnB;;;OAGG;IACH,OAAO,CAAC,WAAW;CA4DpB"}
@@ -1,204 +0,0 @@
1
- "use strict";
2
- /**
3
- * AI-Based Step Mapper
4
- * Fallback for dictionary when Gherkin patterns are ambiguous or unknown
5
- */
6
- var __importDefault = (this && this.__importDefault) || function (mod) {
7
- return (mod && mod.__esModule) ? mod : { "default": mod };
8
- };
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.AIStepMapper = void 0;
11
- const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
12
- class AIStepMapper {
13
- constructor(verbose = false) {
14
- const apiKey = process.env.ANTHROPIC_API_KEY;
15
- if (!apiKey) {
16
- throw new Error('ANTHROPIC_API_KEY environment variable is required for AI step mapping');
17
- }
18
- this.client = new sdk_1.default({ apiKey });
19
- this.verbose = verbose;
20
- }
21
- /**
22
- * Map a Gherkin step to Playwright code using AI
23
- * Provides rich context to help AI understand the intent
24
- */
25
- async mapStep(step) {
26
- if (this.verbose) {
27
- console.log(` [AI] Mapping step: "${step.text}"`);
28
- }
29
- const prompt = this.buildPrompt(step);
30
- try {
31
- const message = await this.client.messages.create({
32
- model: 'claude-3-5-haiku-20241022', // Fast & cheap for code generation
33
- max_tokens: 500,
34
- temperature: 0, // Deterministic for code generation
35
- messages: [{
36
- role: 'user',
37
- content: prompt
38
- }]
39
- });
40
- const content = message.content[0];
41
- if (content.type !== 'text') {
42
- throw new Error('Unexpected response type from AI');
43
- }
44
- const code = this.extractCode(content.text);
45
- if (this.verbose) {
46
- console.log(` [AI] Generated code (${code.split('\n').length} lines)`);
47
- }
48
- return {
49
- code,
50
- comment: `AI-generated from: ${step.text}`
51
- };
52
- }
53
- catch (error) {
54
- console.error(`[AI] Failed to map step: ${error}`);
55
- // Fallback to TODO comment
56
- return {
57
- code: `// TODO: AI mapping failed - implement manually: ${step.text}`,
58
- comment: `AI mapping error: ${error instanceof Error ? error.message : 'Unknown error'}`
59
- };
60
- }
61
- }
62
- /**
63
- * Build context-rich prompt for AI
64
- * Includes examples, patterns, and clear instructions
65
- */
66
- buildPrompt(step) {
67
- const { keyword, text, selectorRef, dataRef, value } = step;
68
- return `You are an expert Playwright test code generator.
69
-
70
- **Task**: Convert this Gherkin step into Playwright TypeScript code.
71
-
72
- **Gherkin Step**:
73
- ${keyword} ${text}
74
-
75
- **Parsed Information**:
76
- - Element ID: ${selectorRef || 'N/A'}
77
- - Data Reference: ${dataRef || 'N/A'}
78
- - Value: ${value || 'N/A'}
79
-
80
- **Context**:
81
- - We use a custom selector helper: \`pw.fill(elementId, value, screenId)\`
82
- - Element IDs are in format: [screen.element-name]
83
- - Screen ID is extracted from element ID (e.g., "chat" from "[chat.input]")
84
- - For assertions, use: \`await pw.getElement(elementId, screenId)\` then \`expect(element)...\`
85
-
86
- **Common Patterns & Examples**:
87
-
88
- 1. **Fill/Input Actions**:
89
- - "user fills/inputs/enters [element] with value"
90
- - "user types value in/into [element]"
91
- → \`await pw.fill('[element]', 'value', 'screen');\`
92
-
93
- 2. **Click Actions**:
94
- - "user clicks/taps/presses [element]"
95
- - "user clicks on [element]"
96
- → \`await pw.click('[element]', 'screen');\`
97
-
98
- 3. **Keyboard Actions**:
99
- - "user presses Enter in [element]"
100
- - "user hits Tab key in [element]"
101
- → \`const el = await pw.getElement('[element]', 'screen');\n await el.press('Enter');\`
102
-
103
- 4. **Visibility Assertions**:
104
- - "user should see [element]"
105
- - "[element] is/should be visible"
106
- - "[element] appears/shows"
107
- → \`const el = await pw.getElement('[element]', 'screen');\n await expect(el).toBeVisible();\`
108
-
109
- 5. **State Assertions**:
110
- - "[element] should be disabled/enabled"
111
- - "[element] is checked/unchecked"
112
- → \`const el = await pw.getElement('[element]', 'screen');\n await expect(el).toBeDisabled();\`
113
-
114
- 6. **Text Content Assertions**:
115
- - "[element] should contain text \\"value\\""
116
- - "[element] has/displays text \\"value\\""
117
- → \`const el = await pw.getElement('[element]', 'screen');\n await expect(el).toContainText('value');\`
118
-
119
- 7. **Collection State**:
120
- - "[element] should be empty"
121
- - "[element] has no items"
122
- → \`const el = await pw.getElement('[element]', 'screen');\n const items = await el.locator('> *').all();\n expect(items.length).toBe(0);\`
123
-
124
- 8. **Scroll State**:
125
- - "[element] should be scrolled to bottom"
126
- → \`const el = await pw.getElement('[element]', 'screen');\n const scrollHeight = await el.evaluate(el => el.scrollHeight);\n const scrollTop = await el.evaluate(el => el.scrollTop);\n const clientHeight = await el.evaluate(el => el.clientHeight);\n expect(scrollTop + clientHeight).toBeGreaterThanOrEqual(scrollHeight - 10);\`
127
-
128
- **Important Rules**:
129
- 1. Extract screen ID from element ID: "[chat.input]" → screen="chat"
130
- 2. Use proper TypeScript syntax with await
131
- 3. Use descriptive variable names (element, el, container, etc.)
132
- 4. Add helpful comments for complex assertions
133
- 5. NEVER use page.evaluate() unless absolutely necessary
134
- 6. NEVER generate partial or incomplete statements
135
- 7. Each step should generate COMPLETE, SELF-CONTAINED code
136
- 8. If you can't map the step, return a comment: // TODO: Implement step
137
-
138
- **Output Format**:
139
- Return ONLY complete Playwright TypeScript statements, no explanations, no markdown blocks.
140
- Each statement must be syntactically complete and can be inserted directly into a test function.
141
-
142
- **Example Output**:
143
- const chat_input_123 = await pw.getElement('[chat.input]', 'chat');
144
- await expect(chat_input_123).toBeVisible();
145
-
146
- Now generate code for the given step.`;
147
- }
148
- /**
149
- * Extract clean code from AI response
150
- * Remove markdown code blocks, explanations, etc.
151
- */
152
- extractCode(response) {
153
- let code = response.trim();
154
- // Remove markdown code blocks
155
- code = code.replace(/```(?:typescript|ts|javascript|js)?\n?/g, '');
156
- code = code.replace(/```\n?/g, '');
157
- // Remove leading/trailing whitespace
158
- code = code.trim();
159
- // If response contains explanations, try to extract only code
160
- const lines = code.split('\n');
161
- const codeLines = lines.filter(line => {
162
- const trimmed = line.trim();
163
- // Skip lines that are clearly explanations (start with text, not code)
164
- // But keep all valid TypeScript/JavaScript syntax
165
- if (trimmed === '')
166
- return true; // Keep empty lines
167
- if (trimmed.startsWith('//'))
168
- return true; // Keep comments
169
- // Exclude lines that look like natural language explanations
170
- // (start with capital letter and contain spaces, no semicolons/operators)
171
- if (/^[A-Z][a-z]+ [\w\s]+$/.test(trimmed) && !trimmed.includes(';')) {
172
- return false; // This looks like an explanation
173
- }
174
- // Keep lines that contain code-like patterns
175
- const codePatterns = [
176
- 'await ', 'const ', 'let ', 'var ', 'return ', 'expect(', 'if ', 'else',
177
- 'for ', 'while ', 'function ', '=>', 'pw.', 'page.',
178
- ')', '}', '];', '});', '})', 'import ', 'export ',
179
- '.', '(', '[', '=', '+', '-', '*', '/', '%', '&&', '||'
180
- ];
181
- return codePatterns.some(pattern => trimmed.includes(pattern));
182
- });
183
- // If we filtered too much, return original
184
- if (codeLines.length === 0) {
185
- return code;
186
- }
187
- let finalCode = codeLines.join('\n');
188
- // Safety check: Remove incomplete page.evaluate statements
189
- // If we find "page.evaluate(" without proper closing, remove it
190
- const evaluatePattern = /await\s+page\.evaluate\(\(\)\s*=>\s*\{\s*$/gm;
191
- if (evaluatePattern.test(finalCode)) {
192
- // Has unclosed page.evaluate at end - this is incomplete, return TODO
193
- return '// TODO: Implement step (AI generated incomplete code)';
194
- }
195
- // Safety check: If code ends with an opening brace/paren, it's incomplete
196
- const endsIncomplete = /[\({]\s*$/.test(finalCode);
197
- if (endsIncomplete) {
198
- return '// TODO: Implement step (AI generated incomplete code)';
199
- }
200
- return finalCode;
201
- }
202
- }
203
- exports.AIStepMapper = AIStepMapper;
204
- //# sourceMappingURL=ai-step-mapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai-step-mapper.js","sourceRoot":"","sources":["../../../src/generators/test-generator/ai-step-mapper.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAEH,4DAA0C;AAI1C,MAAa,YAAY;IAIvB,YAAY,UAAmB,KAAK;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;QAC5F,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,aAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,IAAgB;QAC5B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAChD,KAAK,EAAE,2BAA2B,EAAE,mCAAmC;gBACvE,UAAU,EAAE,GAAG;gBACf,WAAW,EAAE,CAAC,EAAE,oCAAoC;gBACpD,QAAQ,EAAE,CAAC;wBACT,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,MAAM;qBAChB,CAAC;aACH,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAE5C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC;YAC9E,CAAC;YAED,OAAO;gBACL,IAAI;gBACJ,OAAO,EAAE,sBAAsB,IAAI,CAAC,IAAI,EAAE;aAC3C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC;YAEnD,2BAA2B;YAC3B,OAAO;gBACL,IAAI,EAAE,oDAAoD,IAAI,CAAC,IAAI,EAAE;gBACrE,OAAO,EAAE,qBAAqB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;aACzF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,WAAW,CAAC,IAAgB;QAClC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAE5D,OAAO;;;;;EAKT,OAAO,IAAI,IAAI;;;gBAGD,WAAW,IAAI,KAAK;oBAChB,OAAO,IAAI,KAAK;WACzB,KAAK,IAAI,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sCAoEa,CAAC;IACrC,CAAC;IAED;;;OAGG;IACK,WAAW,CAAC,QAAgB;QAClC,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE3B,8BAA8B;QAC9B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,yCAAyC,EAAE,EAAE,CAAC,CAAC;QACnE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAEnC,qCAAqC;QACrC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAEnB,8DAA8D;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAE5B,uEAAuE;YACvE,kDAAkD;YAClD,IAAI,OAAO,KAAK,EAAE;gBAAE,OAAO,IAAI,CAAC,CAAC,mBAAmB;YACpD,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC,CAAC,gBAAgB;YAE3D,6DAA6D;YAC7D,0EAA0E;YAC1E,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpE,OAAO,KAAK,CAAC,CAAC,iCAAiC;YACjD,CAAC;YAED,6CAA6C;YAC7C,MAAM,YAAY,GAAG;gBACnB,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;gBACvE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO;gBACnD,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;gBACjD,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI;aACxD,CAAC;YAEF,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,2CAA2C;QAC3C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErC,2DAA2D;QAC3D,gEAAgE;QAChE,MAAM,eAAe,GAAG,8CAA8C,CAAC;QACvE,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACpC,sEAAsE;YACtE,OAAO,wDAAwD,CAAC;QAClE,CAAC;QAED,0EAA0E;QAC1E,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,wDAAwD,CAAC;QAClE,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAtND,oCAsNC"}