@futdevpro/dynamo-e2e 1.17.0 → 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/.dynamo/logs/cicd-pipeline/status.json +67 -0
  2. package/CHANGELOG.md +98 -0
  3. package/bin/dye2e.js +170 -0
  4. package/build/_modules/generators/_collections/form-level-emission.util.d.ts.map +1 -1
  5. package/build/_modules/generators/_collections/form-level-emission.util.js +3 -1
  6. package/build/_modules/generators/_collections/form-level-emission.util.js.map +1 -1
  7. package/build/_modules/generators/_collections/test-case-filter.util.d.ts.map +1 -1
  8. package/build/_modules/generators/_collections/test-case-filter.util.js +24 -0
  9. package/build/_modules/generators/_collections/test-case-filter.util.js.map +1 -1
  10. package/build/_modules/generators/_models/form-settings-shape.interface.d.ts +7 -0
  11. package/build/_modules/generators/_models/form-settings-shape.interface.d.ts.map +1 -1
  12. package/build/_modules/generators/_models/form-suite-generate-options.interface.d.ts +19 -0
  13. package/build/_modules/generators/_models/form-suite-generate-options.interface.d.ts.map +1 -1
  14. package/build/_modules/generators/form-suite.generator.d.ts.map +1 -1
  15. package/build/_modules/generators/form-suite.generator.js +8 -3
  16. package/build/_modules/generators/form-suite.generator.js.map +1 -1
  17. package/build/_modules/generators/form-suite.generator.spec.js +44 -0
  18. package/build/_modules/generators/form-suite.generator.spec.js.map +1 -1
  19. package/build/_modules/generators/test-case-filter-edge.spec.js +37 -4
  20. package/build/_modules/generators/test-case-filter-edge.spec.js.map +1 -1
  21. package/build/_modules/vqa/_collections/constants/anti-flake-css.const.d.ts +8 -0
  22. package/build/_modules/vqa/_collections/constants/anti-flake-css.const.d.ts.map +1 -0
  23. package/build/_modules/vqa/_collections/constants/anti-flake-css.const.js +21 -0
  24. package/build/_modules/vqa/_collections/constants/anti-flake-css.const.js.map +1 -0
  25. package/build/_modules/vqa/_collections/constants/axe-page-script.const.d.ts +21 -0
  26. package/build/_modules/vqa/_collections/constants/axe-page-script.const.d.ts.map +1 -0
  27. package/build/_modules/vqa/_collections/constants/axe-page-script.const.js +57 -0
  28. package/build/_modules/vqa/_collections/constants/axe-page-script.const.js.map +1 -0
  29. package/build/_modules/vqa/_collections/constants/dom-evidence-page-scripts.const.d.ts +13 -0
  30. package/build/_modules/vqa/_collections/constants/dom-evidence-page-scripts.const.d.ts.map +1 -0
  31. package/build/_modules/vqa/_collections/constants/dom-evidence-page-scripts.const.js +318 -0
  32. package/build/_modules/vqa/_collections/constants/dom-evidence-page-scripts.const.js.map +1 -0
  33. package/build/_modules/vqa/_collections/constants/vqa-standard-viewports.const.d.ts +14 -0
  34. package/build/_modules/vqa/_collections/constants/vqa-standard-viewports.const.d.ts.map +1 -0
  35. package/build/_modules/vqa/_collections/constants/vqa-standard-viewports.const.js +82 -0
  36. package/build/_modules/vqa/_collections/constants/vqa-standard-viewports.const.js.map +1 -0
  37. package/build/_modules/vqa/_collections/constants/vqa-tailwind-viewports.const.d.ts +23 -0
  38. package/build/_modules/vqa/_collections/constants/vqa-tailwind-viewports.const.d.ts.map +1 -0
  39. package/build/_modules/vqa/_collections/constants/vqa-tailwind-viewports.const.js +37 -0
  40. package/build/_modules/vqa/_collections/constants/vqa-tailwind-viewports.const.js.map +1 -0
  41. package/build/_modules/vqa/_collections/index.d.ts +10 -0
  42. package/build/_modules/vqa/_collections/index.d.ts.map +1 -0
  43. package/build/_modules/vqa/_collections/index.js +26 -0
  44. package/build/_modules/vqa/_collections/index.js.map +1 -0
  45. package/build/_modules/vqa/_collections/utils/deterministic-finding.util.d.ts +23 -0
  46. package/build/_modules/vqa/_collections/utils/deterministic-finding.util.d.ts.map +1 -0
  47. package/build/_modules/vqa/_collections/utils/deterministic-finding.util.js +112 -0
  48. package/build/_modules/vqa/_collections/utils/deterministic-finding.util.js.map +1 -0
  49. package/build/_modules/vqa/_collections/utils/finding-id.util.d.ts +18 -0
  50. package/build/_modules/vqa/_collections/utils/finding-id.util.d.ts.map +1 -0
  51. package/build/_modules/vqa/_collections/utils/finding-id.util.js +42 -0
  52. package/build/_modules/vqa/_collections/utils/finding-id.util.js.map +1 -0
  53. package/build/_modules/vqa/_collections/utils/finding-validator.util.d.ts +21 -0
  54. package/build/_modules/vqa/_collections/utils/finding-validator.util.d.ts.map +1 -0
  55. package/build/_modules/vqa/_collections/utils/finding-validator.util.js +114 -0
  56. package/build/_modules/vqa/_collections/utils/finding-validator.util.js.map +1 -0
  57. package/build/_modules/vqa/_collections/utils/manifest-validator.util.d.ts +27 -0
  58. package/build/_modules/vqa/_collections/utils/manifest-validator.util.d.ts.map +1 -0
  59. package/build/_modules/vqa/_collections/utils/manifest-validator.util.js +148 -0
  60. package/build/_modules/vqa/_collections/utils/manifest-validator.util.js.map +1 -0
  61. package/build/_modules/vqa/_collections/utils/risk-score.util.d.ts +48 -0
  62. package/build/_modules/vqa/_collections/utils/risk-score.util.d.ts.map +1 -0
  63. package/build/_modules/vqa/_collections/utils/risk-score.util.js +77 -0
  64. package/build/_modules/vqa/_collections/utils/risk-score.util.js.map +1 -0
  65. package/build/_modules/vqa/_enums/dom-evidence-detector.enum.d.ts +44 -0
  66. package/build/_modules/vqa/_enums/dom-evidence-detector.enum.d.ts.map +1 -0
  67. package/build/_modules/vqa/_enums/dom-evidence-detector.enum.js +48 -0
  68. package/build/_modules/vqa/_enums/dom-evidence-detector.enum.js.map +1 -0
  69. package/build/_modules/vqa/_enums/finding-severity.enum.d.ts +17 -0
  70. package/build/_modules/vqa/_enums/finding-severity.enum.d.ts.map +1 -0
  71. package/build/_modules/vqa/_enums/finding-severity.enum.js +21 -0
  72. package/build/_modules/vqa/_enums/finding-severity.enum.js.map +1 -0
  73. package/build/_modules/vqa/_enums/finding-status.enum.d.ts +23 -0
  74. package/build/_modules/vqa/_enums/finding-status.enum.d.ts.map +1 -0
  75. package/build/_modules/vqa/_enums/finding-status.enum.js +27 -0
  76. package/build/_modules/vqa/_enums/finding-status.enum.js.map +1 -0
  77. package/build/_modules/vqa/_enums/index.d.ts +5 -0
  78. package/build/_modules/vqa/_enums/index.d.ts.map +1 -0
  79. package/build/_modules/vqa/_enums/index.js +21 -0
  80. package/build/_modules/vqa/_enums/index.js.map +1 -0
  81. package/build/_modules/vqa/_enums/visual-state-type.enum.d.ts +38 -0
  82. package/build/_modules/vqa/_enums/visual-state-type.enum.d.ts.map +1 -0
  83. package/build/_modules/vqa/_enums/visual-state-type.enum.js +49 -0
  84. package/build/_modules/vqa/_enums/visual-state-type.enum.js.map +1 -0
  85. package/build/_modules/vqa/_models/interfaces/critical-element.interface.d.ts +22 -0
  86. package/build/_modules/vqa/_models/interfaces/critical-element.interface.d.ts.map +1 -0
  87. package/build/_modules/vqa/_models/interfaces/critical-element.interface.js +3 -0
  88. package/build/_modules/vqa/_models/interfaces/critical-element.interface.js.map +1 -0
  89. package/build/_modules/vqa/_models/interfaces/dom-evidence.interface.d.ts +21 -0
  90. package/build/_modules/vqa/_models/interfaces/dom-evidence.interface.d.ts.map +1 -0
  91. package/build/_modules/vqa/_models/interfaces/dom-evidence.interface.js +3 -0
  92. package/build/_modules/vqa/_models/interfaces/dom-evidence.interface.js.map +1 -0
  93. package/build/_modules/vqa/_models/interfaces/expected-feedback.interface.d.ts +16 -0
  94. package/build/_modules/vqa/_models/interfaces/expected-feedback.interface.d.ts.map +1 -0
  95. package/build/_modules/vqa/_models/interfaces/expected-feedback.interface.js +3 -0
  96. package/build/_modules/vqa/_models/interfaces/expected-feedback.interface.js.map +1 -0
  97. package/build/_modules/vqa/_models/interfaces/feature-manifest.interface.d.ts +56 -0
  98. package/build/_modules/vqa/_models/interfaces/feature-manifest.interface.d.ts.map +1 -0
  99. package/build/_modules/vqa/_models/interfaces/feature-manifest.interface.js +3 -0
  100. package/build/_modules/vqa/_models/interfaces/feature-manifest.interface.js.map +1 -0
  101. package/build/_modules/vqa/_models/interfaces/finding.interface.d.ts +58 -0
  102. package/build/_modules/vqa/_models/interfaces/finding.interface.d.ts.map +1 -0
  103. package/build/_modules/vqa/_models/interfaces/finding.interface.js +3 -0
  104. package/build/_modules/vqa/_models/interfaces/finding.interface.js.map +1 -0
  105. package/build/_modules/vqa/_models/interfaces/flow-step.interface.d.ts +32 -0
  106. package/build/_modules/vqa/_models/interfaces/flow-step.interface.d.ts.map +1 -0
  107. package/build/_modules/vqa/_models/interfaces/flow-step.interface.js +3 -0
  108. package/build/_modules/vqa/_models/interfaces/flow-step.interface.js.map +1 -0
  109. package/build/_modules/vqa/_models/interfaces/index.d.ts +8 -0
  110. package/build/_modules/vqa/_models/interfaces/index.d.ts.map +1 -0
  111. package/build/_modules/vqa/_models/interfaces/index.js +24 -0
  112. package/build/_modules/vqa/_models/interfaces/index.js.map +1 -0
  113. package/build/_modules/vqa/_models/interfaces/visual-state.interface.d.ts +34 -0
  114. package/build/_modules/vqa/_models/interfaces/visual-state.interface.d.ts.map +1 -0
  115. package/build/_modules/vqa/_models/interfaces/visual-state.interface.js +3 -0
  116. package/build/_modules/vqa/_models/interfaces/visual-state.interface.js.map +1 -0
  117. package/build/_modules/vqa/capture-spec.generator.spec.d.ts +2 -0
  118. package/build/_modules/vqa/capture-spec.generator.spec.d.ts.map +1 -0
  119. package/build/_modules/vqa/capture-spec.generator.spec.js +126 -0
  120. package/build/_modules/vqa/capture-spec.generator.spec.js.map +1 -0
  121. package/build/_modules/vqa/comparison-bundle.generator.spec.d.ts +2 -0
  122. package/build/_modules/vqa/comparison-bundle.generator.spec.d.ts.map +1 -0
  123. package/build/_modules/vqa/comparison-bundle.generator.spec.js +130 -0
  124. package/build/_modules/vqa/comparison-bundle.generator.spec.js.map +1 -0
  125. package/build/_modules/vqa/finding-validator.spec.d.ts +2 -0
  126. package/build/_modules/vqa/finding-validator.spec.d.ts.map +1 -0
  127. package/build/_modules/vqa/finding-validator.spec.js +136 -0
  128. package/build/_modules/vqa/finding-validator.spec.js.map +1 -0
  129. package/build/_modules/vqa/generators/ai-agent-readme.template.d.ts +19 -0
  130. package/build/_modules/vqa/generators/ai-agent-readme.template.d.ts.map +1 -0
  131. package/build/_modules/vqa/generators/ai-agent-readme.template.js +179 -0
  132. package/build/_modules/vqa/generators/ai-agent-readme.template.js.map +1 -0
  133. package/build/_modules/vqa/generators/bundle-summary.template.d.ts +9 -0
  134. package/build/_modules/vqa/generators/bundle-summary.template.d.ts.map +1 -0
  135. package/build/_modules/vqa/generators/bundle-summary.template.js +73 -0
  136. package/build/_modules/vqa/generators/bundle-summary.template.js.map +1 -0
  137. package/build/_modules/vqa/generators/capture-spec.generator.d.ts +33 -0
  138. package/build/_modules/vqa/generators/capture-spec.generator.d.ts.map +1 -0
  139. package/build/_modules/vqa/generators/capture-spec.generator.js +194 -0
  140. package/build/_modules/vqa/generators/capture-spec.generator.js.map +1 -0
  141. package/build/_modules/vqa/generators/comparison-bundle.generator.d.ts +37 -0
  142. package/build/_modules/vqa/generators/comparison-bundle.generator.d.ts.map +1 -0
  143. package/build/_modules/vqa/generators/comparison-bundle.generator.js +238 -0
  144. package/build/_modules/vqa/generators/comparison-bundle.generator.js.map +1 -0
  145. package/build/_modules/vqa/generators/index.d.ts +6 -0
  146. package/build/_modules/vqa/generators/index.d.ts.map +1 -0
  147. package/build/_modules/vqa/generators/index.js +22 -0
  148. package/build/_modules/vqa/generators/index.js.map +1 -0
  149. package/build/_modules/vqa/generators/review-bundle.generator.d.ts +49 -0
  150. package/build/_modules/vqa/generators/review-bundle.generator.d.ts.map +1 -0
  151. package/build/_modules/vqa/generators/review-bundle.generator.js +127 -0
  152. package/build/_modules/vqa/generators/review-bundle.generator.js.map +1 -0
  153. package/build/_modules/vqa/index.d.ts +6 -0
  154. package/build/_modules/vqa/index.d.ts.map +1 -0
  155. package/build/_modules/vqa/index.js +25 -0
  156. package/build/_modules/vqa/index.js.map +1 -0
  157. package/build/_modules/vqa/manifest-validator.spec.d.ts +2 -0
  158. package/build/_modules/vqa/manifest-validator.spec.d.ts.map +1 -0
  159. package/build/_modules/vqa/manifest-validator.spec.js +125 -0
  160. package/build/_modules/vqa/manifest-validator.spec.js.map +1 -0
  161. package/build/_modules/vqa/review-bundle.generator.spec.d.ts +2 -0
  162. package/build/_modules/vqa/review-bundle.generator.spec.d.ts.map +1 -0
  163. package/build/_modules/vqa/review-bundle.generator.spec.js +166 -0
  164. package/build/_modules/vqa/review-bundle.generator.spec.js.map +1 -0
  165. package/build/_modules/vqa/wave-7.spec.d.ts +2 -0
  166. package/build/_modules/vqa/wave-7.spec.d.ts.map +1 -0
  167. package/build/_modules/vqa/wave-7.spec.js +203 -0
  168. package/build/_modules/vqa/wave-7.spec.js.map +1 -0
  169. package/build/index.d.ts +1 -0
  170. package/build/index.d.ts.map +1 -1
  171. package/build/index.js +1 -0
  172. package/build/index.js.map +1 -1
  173. package/coverage/contracts/_collections/index.html +1 -1
  174. package/coverage/contracts/_collections/index.ts.html +1 -1
  175. package/coverage/contracts/_collections/utils/index.html +1 -1
  176. package/coverage/contracts/_collections/utils/test-id.util.ts.html +10 -10
  177. package/coverage/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
  178. package/coverage/contracts/_enums/field-test-case-type.enum.ts.html +1 -1
  179. package/coverage/contracts/_enums/index.html +1 -1
  180. package/coverage/contracts/_enums/index.ts.html +1 -1
  181. package/coverage/contracts/_enums/standard-viewport.enum.ts.html +1 -1
  182. package/coverage/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
  183. package/coverage/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
  184. package/coverage/contracts/index.html +1 -1
  185. package/coverage/contracts/index.ts.html +1 -1
  186. package/coverage/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
  187. package/coverage/cwv/_collections/cwv-comparison.util.ts.html +4 -4
  188. package/coverage/cwv/_collections/cwv-diagnose.util.ts.html +1 -1
  189. package/coverage/cwv/_collections/cwv-emission.util.ts.html +1 -1
  190. package/coverage/cwv/_collections/cwv-summarize.util.ts.html +1 -1
  191. package/coverage/cwv/_collections/index.html +7 -7
  192. package/coverage/cwv/_collections/inp-interaction-script.const.ts.html +1 -1
  193. package/coverage/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
  194. package/coverage/cwv/cwv-suite.generator.ts.html +3 -3
  195. package/coverage/cwv/index.html +5 -5
  196. package/coverage/generators/_collections/cli-runner.util.ts.html +1 -1
  197. package/coverage/generators/_collections/config-validator.util.ts.html +1 -1
  198. package/coverage/generators/_collections/field-emission.util.ts.html +86 -86
  199. package/coverage/generators/_collections/form-level-emission.util.ts.html +39 -33
  200. package/coverage/generators/_collections/index.html +20 -20
  201. package/coverage/generators/_collections/json-schema.util.ts.html +1 -1
  202. package/coverage/generators/_collections/preset-configs.const.ts.html +1 -1
  203. package/coverage/generators/_collections/spec-emission.util.ts.html +35 -35
  204. package/coverage/generators/_collections/test-case-filter.util.ts.html +159 -57
  205. package/coverage/generators/_collections/viewport-emission.util.ts.html +1 -1
  206. package/coverage/generators/form-suite.generator.ts.html +97 -79
  207. package/coverage/generators/index.html +18 -18
  208. package/coverage/generators/viewport-suite.generator.ts.html +3 -3
  209. package/coverage/index.html +83 -38
  210. package/coverage/lcov-report/contracts/_collections/index.html +1 -1
  211. package/coverage/lcov-report/contracts/_collections/index.ts.html +1 -1
  212. package/coverage/lcov-report/contracts/_collections/utils/index.html +1 -1
  213. package/coverage/lcov-report/contracts/_collections/utils/test-id.util.ts.html +10 -10
  214. package/coverage/lcov-report/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
  215. package/coverage/lcov-report/contracts/_enums/field-test-case-type.enum.ts.html +1 -1
  216. package/coverage/lcov-report/contracts/_enums/index.html +1 -1
  217. package/coverage/lcov-report/contracts/_enums/index.ts.html +1 -1
  218. package/coverage/lcov-report/contracts/_enums/standard-viewport.enum.ts.html +1 -1
  219. package/coverage/lcov-report/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
  220. package/coverage/lcov-report/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
  221. package/coverage/lcov-report/contracts/index.html +1 -1
  222. package/coverage/lcov-report/contracts/index.ts.html +1 -1
  223. package/coverage/lcov-report/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
  224. package/coverage/lcov-report/cwv/_collections/cwv-comparison.util.ts.html +4 -4
  225. package/coverage/lcov-report/cwv/_collections/cwv-diagnose.util.ts.html +1 -1
  226. package/coverage/lcov-report/cwv/_collections/cwv-emission.util.ts.html +1 -1
  227. package/coverage/lcov-report/cwv/_collections/cwv-summarize.util.ts.html +1 -1
  228. package/coverage/lcov-report/cwv/_collections/index.html +7 -7
  229. package/coverage/lcov-report/cwv/_collections/inp-interaction-script.const.ts.html +1 -1
  230. package/coverage/lcov-report/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
  231. package/coverage/lcov-report/cwv/cwv-suite.generator.ts.html +3 -3
  232. package/coverage/lcov-report/cwv/index.html +5 -5
  233. package/coverage/lcov-report/generators/_collections/cli-runner.util.ts.html +1 -1
  234. package/coverage/lcov-report/generators/_collections/config-validator.util.ts.html +1 -1
  235. package/coverage/lcov-report/generators/_collections/field-emission.util.ts.html +86 -86
  236. package/coverage/lcov-report/generators/_collections/form-level-emission.util.ts.html +39 -33
  237. package/coverage/lcov-report/generators/_collections/index.html +20 -20
  238. package/coverage/lcov-report/generators/_collections/json-schema.util.ts.html +1 -1
  239. package/coverage/lcov-report/generators/_collections/preset-configs.const.ts.html +1 -1
  240. package/coverage/lcov-report/generators/_collections/spec-emission.util.ts.html +35 -35
  241. package/coverage/lcov-report/generators/_collections/test-case-filter.util.ts.html +159 -57
  242. package/coverage/lcov-report/generators/_collections/viewport-emission.util.ts.html +1 -1
  243. package/coverage/lcov-report/generators/form-suite.generator.ts.html +97 -79
  244. package/coverage/lcov-report/generators/index.html +18 -18
  245. package/coverage/lcov-report/generators/viewport-suite.generator.ts.html +3 -3
  246. package/coverage/lcov-report/index.html +83 -38
  247. package/coverage/lcov-report/runtime/_collections/assertion-helpers.util.ts.html +1 -1
  248. package/coverage/lcov-report/runtime/_collections/index.html +7 -7
  249. package/coverage/lcov-report/runtime/_collections/unique-generator.util.ts.html +3 -3
  250. package/coverage/lcov-report/runtime/_collections/wait-helpers.util.ts.html +5 -5
  251. package/coverage/lcov-report/runtime/_services/dialog-page-object.ts.html +2 -2
  252. package/coverage/lcov-report/runtime/_services/field-page-object.ts.html +2 -2
  253. package/coverage/lcov-report/runtime/_services/form-page-object.ts.html +2 -2
  254. package/coverage/lcov-report/runtime/_services/index.html +9 -9
  255. package/coverage/lcov-report/runtime/_services/loader-page-object.ts.html +2 -2
  256. package/coverage/lcov-report/runtime/_services/logger.service.ts.html +5 -5
  257. package/coverage/lcov-report/runtime/_services/login-flow-helper.base.ts.html +2 -2
  258. package/coverage/lcov-report/runtime/_services/nav-page-object.ts.html +2 -2
  259. package/coverage/lcov-report/runtime/_services/toast-page-object.ts.html +1 -1
  260. package/coverage/lcov-report/runtime/_services/wave-2b-page-objects.ts.html +6 -6
  261. package/coverage/lcov-report/runtime/index.html +1 -1
  262. package/coverage/lcov-report/runtime/index.ts.html +1 -1
  263. package/coverage/lcov-report/vqa/_collections/utils/deterministic-finding.util.ts.html +481 -0
  264. package/coverage/lcov-report/vqa/_collections/utils/finding-id.util.ts.html +214 -0
  265. package/coverage/lcov-report/vqa/_collections/utils/finding-validator.util.ts.html +463 -0
  266. package/coverage/lcov-report/vqa/_collections/utils/index.html +176 -0
  267. package/coverage/lcov-report/vqa/_collections/utils/manifest-validator.util.ts.html +652 -0
  268. package/coverage/lcov-report/vqa/_collections/utils/risk-score.util.ts.html +424 -0
  269. package/coverage/lcov-report/vqa/_enums/dom-evidence-detector.enum.ts.html +214 -0
  270. package/coverage/lcov-report/vqa/_enums/finding-severity.enum.ts.html +133 -0
  271. package/coverage/lcov-report/vqa/_enums/finding-status.enum.ts.html +151 -0
  272. package/coverage/lcov-report/vqa/_enums/index.html +161 -0
  273. package/coverage/lcov-report/vqa/_enums/visual-state-type.enum.ts.html +235 -0
  274. package/coverage/lcov-report/vqa/generators/ai-agent-readme.template.ts.html +643 -0
  275. package/coverage/lcov-report/vqa/generators/bundle-summary.template.ts.html +316 -0
  276. package/coverage/lcov-report/vqa/generators/capture-spec.generator.ts.html +835 -0
  277. package/coverage/lcov-report/vqa/generators/comparison-bundle.generator.ts.html +898 -0
  278. package/coverage/lcov-report/vqa/generators/index.html +176 -0
  279. package/coverage/lcov-report/vqa/generators/review-bundle.generator.ts.html +559 -0
  280. package/coverage/lcov.info +2868 -623
  281. package/coverage/runtime/_collections/assertion-helpers.util.ts.html +1 -1
  282. package/coverage/runtime/_collections/index.html +7 -7
  283. package/coverage/runtime/_collections/unique-generator.util.ts.html +3 -3
  284. package/coverage/runtime/_collections/wait-helpers.util.ts.html +5 -5
  285. package/coverage/runtime/_services/dialog-page-object.ts.html +2 -2
  286. package/coverage/runtime/_services/field-page-object.ts.html +2 -2
  287. package/coverage/runtime/_services/form-page-object.ts.html +2 -2
  288. package/coverage/runtime/_services/index.html +9 -9
  289. package/coverage/runtime/_services/loader-page-object.ts.html +2 -2
  290. package/coverage/runtime/_services/logger.service.ts.html +5 -5
  291. package/coverage/runtime/_services/login-flow-helper.base.ts.html +2 -2
  292. package/coverage/runtime/_services/nav-page-object.ts.html +2 -2
  293. package/coverage/runtime/_services/toast-page-object.ts.html +1 -1
  294. package/coverage/runtime/_services/wave-2b-page-objects.ts.html +6 -6
  295. package/coverage/runtime/index.html +1 -1
  296. package/coverage/runtime/index.ts.html +1 -1
  297. package/coverage/tmp/coverage-23996-1781139437397-0.json +1 -0
  298. package/coverage/tmp/coverage-24001-1781139435697-0.json +1 -0
  299. package/coverage/vqa/_collections/utils/deterministic-finding.util.ts.html +481 -0
  300. package/coverage/vqa/_collections/utils/finding-id.util.ts.html +214 -0
  301. package/coverage/vqa/_collections/utils/finding-validator.util.ts.html +463 -0
  302. package/coverage/vqa/_collections/utils/index.html +176 -0
  303. package/coverage/vqa/_collections/utils/manifest-validator.util.ts.html +652 -0
  304. package/coverage/vqa/_collections/utils/risk-score.util.ts.html +424 -0
  305. package/coverage/vqa/_enums/dom-evidence-detector.enum.ts.html +214 -0
  306. package/coverage/vqa/_enums/finding-severity.enum.ts.html +133 -0
  307. package/coverage/vqa/_enums/finding-status.enum.ts.html +151 -0
  308. package/coverage/vqa/_enums/index.html +161 -0
  309. package/coverage/vqa/_enums/visual-state-type.enum.ts.html +235 -0
  310. package/coverage/vqa/generators/ai-agent-readme.template.ts.html +643 -0
  311. package/coverage/vqa/generators/bundle-summary.template.ts.html +316 -0
  312. package/coverage/vqa/generators/capture-spec.generator.ts.html +835 -0
  313. package/coverage/vqa/generators/comparison-bundle.generator.ts.html +898 -0
  314. package/coverage/vqa/generators/index.html +176 -0
  315. package/coverage/vqa/generators/review-bundle.generator.ts.html +559 -0
  316. package/package.json +7 -1
  317. package/coverage/tmp/coverage-228636-1781075225757-0.json +0 -1
  318. package/coverage/tmp/coverage-228704-1781075227108-0.json +0 -1
  319. package/dogfood/generated/date-range-field-new.spec.ts +0 -54
  320. package/dogfood/generated/password-field-new.spec.ts +0 -97
  321. package/dogfood/generated/radio-select-field-new.spec.ts +0 -69
  322. package/dogfood/generated/slider-field-new.spec.ts +0 -47
  323. package/dogfood/generated/text-field-new.spec.ts +0 -0
@@ -0,0 +1,67 @@
1
+ {
2
+ "pid": 23768,
3
+ "startedAt": "2026-06-11T00:56:31.319Z",
4
+ "startedAtMs": 1781139391319,
5
+ "phase": "npm-publish",
6
+ "pipelineComplete": false,
7
+ "serverRunning": false,
8
+ "totalDurationSec": null,
9
+ "restartPending": false,
10
+ "steps": {
11
+ "discord-start": {
12
+ "status": "ok",
13
+ "startedAt": "2026-06-11T00:56:31.335Z",
14
+ "logLineStart": 2,
15
+ "logLineEnd": 7,
16
+ "durationSec": 2.6
17
+ },
18
+ "pre-flight": {
19
+ "status": "ok",
20
+ "startedAt": "2026-06-11T00:56:34.953Z",
21
+ "logLineStart": 8,
22
+ "logLineEnd": 10,
23
+ "durationSec": 0.2
24
+ },
25
+ "install": {
26
+ "status": "ok",
27
+ "startedAt": "2026-06-11T00:56:36.199Z",
28
+ "logLineStart": 11,
29
+ "logLineEnd": 37,
30
+ "durationSec": 10.2
31
+ },
32
+ "build": {
33
+ "status": "ok",
34
+ "startedAt": "2026-06-11T00:56:47.404Z",
35
+ "logLineStart": 38,
36
+ "logLineEnd": 39,
37
+ "durationSec": 9.3
38
+ },
39
+ "test": {
40
+ "status": "ok",
41
+ "startedAt": "2026-06-11T00:56:57.688Z",
42
+ "logLineStart": 40,
43
+ "logLineEnd": 50,
44
+ "durationSec": 6,
45
+ "testSummary": {
46
+ "totalSpecs": 341,
47
+ "failures": 0,
48
+ "passed": 341,
49
+ "testDurationSec": 0.434
50
+ }
51
+ },
52
+ "coverage": {
53
+ "status": "ok",
54
+ "startedAt": "2026-06-11T00:57:04.717Z",
55
+ "logLineStart": 51,
56
+ "logLineEnd": 76,
57
+ "durationSec": 13.3
58
+ },
59
+ "npm-publish": {
60
+ "status": "running",
61
+ "startedAt": "2026-06-11T00:57:19.063Z",
62
+ "logLineStart": 77,
63
+ "logLineEnd": null,
64
+ "durationSec": null
65
+ }
66
+ }
67
+ }
package/CHANGELOG.md CHANGED
@@ -3,6 +3,104 @@
3
3
  Minden release a `dynamo-e2e-foundation` HYPERPLAN MP-N ütemezést követi.
4
4
  Verzióformátum: `MM.mm.p` (két-számjegyes major-minor, Dynamo-konvenció).
5
5
 
6
+ ## [01.18.x — Wave-7] — 2026-06-11 — Organizer-ideák bedrock-integráció
7
+
8
+ ### Added (Wave-7 — VQA bővítés organizer plans alapján)
9
+
10
+ A `LIVE-projects/organizer/__documentations/plans/ai-visual-qa/` MP-1..7 tervek
11
+ hasznosnak ítélt ötletei beépítve a bedrock-tooling-ba:
12
+
13
+ - **Anti-flake CSS injection** — `DyE2E_VQA_AntiFlake_Css_Const` (animations: 0s,
14
+ transitions: 0s, caret-color: transparent). A capture-spec generator
15
+ `stabilizePage(page)` helper-rel injektálja minden screenshot ELŐTT.
16
+ - **`document.fonts.ready` await** — szövegmérés-stabilitás (organizer
17
+ `00-baseline.spec.ts` mintából).
18
+ - **Mask-selectorok** — `DyE2E_VQA_VisualState_Interface.maskSelectors` mező:
19
+ Playwright `screenshot({ mask: [...] })` dinamikus régiókra (timestamps, avatars,
20
+ számlálók).
21
+ - **`readyTestId` per state** — `state.readyTestId` convenience: auto-emit `waitForSelector('[data-testid="..."]')` a state-prepareFlow után.
22
+ - **axe-core a11y scan** — `DyE2E_VQA_Axe_CdnUrl_Const` + `DyE2E_VQA_AxeRunScript_Const`,
23
+ opt-in `manifest.testDataSetup.a11yEnabled = true`. WCAG2AA + violations + incomplete.
24
+ - **`DyE2E_VQA_RiskScore_Util`** — evidence-aggregátor risk-score-ra (state × viewport):
25
+ 0-100 + band (clean / low / medium / high / blocker-candidate) + top-5 contributors
26
+ + bundle-szintű `topPriorities` priorizált AI-fókusz-lista. Organizer MP-3 SP-3.5
27
+ mintából.
28
+ - **`DyE2E_VQA_DeterministicFinding_Util`** — 4 detektor (nested-scroll / modal-viewport-fit
29
+ / hidden-error / viewport-off-cta) → finding-skeleton agent nélkül. Az AI agent csak
30
+ verify-eli + commit-eli. Organizer MP-7 SP-7.3 mintából.
31
+ - **`DyE2E_VQA_TailwindViewports_Const`** — 8 viewport Tailwind-breakpoint-igazítva
32
+ (mobile-xs/sm, tablet-sm/md, desktop-md/lg/xl/2xl) alternatíva a 7-viewport standard-hoz
33
+ (organizer `playwright.config.ts` mintából).
34
+ - **`DyE2E_VQA_TailwindDefaultSubset_Const`** — 4-viewport default Tailwind subset.
35
+
36
+ ### Test
37
+
38
+ - 341/0 Jasmine zöld (Wave-7 add, +21 új spec)
39
+
40
+ ## [01.18.0] — 2026-06-11 — 🆕 VQA layer (review-bundle generator)
41
+
42
+ ### Added — Visual QA bedrock-tooling (UI-20260611-003 SCOPE-LOCK)
43
+
44
+ Új sub-export: `@futdevpro/dynamo-e2e/vqa`. **Bedrock-scope = review-bundle
45
+ generator (NEM AI-engine).** Az AI agent EXTERNAL consumer.
46
+
47
+ - `DyE2E_VQA_Feature_Manifest` interface + sub-interfaces (FlowStep / VisualState /
48
+ CriticalElement / ExpectedFeedback)
49
+ - `DyE2E_VQA_VisualState_Type` enum (22 állapot-típus spec §5-ből)
50
+ - `DyE2E_VQA_FindingSeverity_Type` (5 szint) + `DyE2E_VQA_FindingStatus_Type` (8 állapot, FSM)
51
+ - `DyE2E_VQA_DOMEvidence_Detector` (16 detektor enum)
52
+ - `DyE2E_VQA_ManifestValidator_Util` — JSON-validátor (duplicate-id, enum, format, reference)
53
+ - `DyE2E_VQA_FindingValidator_Util` — finding-validátor + `canTransition` FSM
54
+ - `DyE2E_VQA_FindingId_Util` — stable `VQA-<projekt>-<feature>-NNN` ID-gen
55
+ - `DyE2E_VQA_StandardViewports_Const` + `DyE2E_VQA_DefaultViewportSubset_Const`
56
+ - `DyE2E_VQA_DomEvidencePageScripts_Const` — 16 page-script (browser-context IIFE),
57
+ strukturált evidence-output, NEM verdict
58
+ - `DyE2E_VQA_CaptureSpec_Generator` — manifest → Playwright `.spec.ts`
59
+ - `DyE2E_VQA_ReviewBundle_Generator` — bundle-orchestrator (README + summary + manifest + capture-spec + meta)
60
+ - `DyE2E_VQA_AIAgentReadme_Template` — bundle README (14 QA-rubric-kérdés + finding-schema + decision-instrukció)
61
+ - `DyE2E_VQA_BundleSummary_Template` — state × viewport mátrix
62
+ - `DyE2E_VQA_ComparisonBundle_Generator` — re-audit diff-bundle (dom-diff + evidence-diff + a11y-diff)
63
+
64
+ ### CLI (5 új parancs)
65
+
66
+ - `dye2e validate-manifest --manifest <path>`
67
+ - `dye2e validate-finding --finding <path>`
68
+ - `dye2e generate-review-bundle --manifest <path> --out <bundles-base> [--run-id X] [--build-id Y] [--project-slug Z]`
69
+ - `dye2e generate-comparison-bundle --before <bundle> --after <bundle> --manifest <path> [--findings <refs.json>]`
70
+ - `dye2e bundle-summary --bundle <path>`
71
+
72
+ ### Dokumentáció
73
+
74
+ - `__documentations/vqa-announcement.md` — release-doc
75
+ - `__documentations/vqa-manifest-authoring-guide.md` — manifest-szerző útmutató
76
+ - `__documentations/vqa-cicd-step-template.md` — CICD-step + artifact-upload pattern
77
+
78
+ ### Test
79
+
80
+ - 320/0 Jasmine zöld (Wave-1..4 add)
81
+ - Sub-export `./vqa` package.json `exports`-ba
82
+
83
+ ### Spec-pinning
84
+
85
+ [`documentations/specifications/ai-visual-qa-system.md`](../../documentations/specifications/ai-visual-qa-system.md)
86
+ 22 szekció canonical, scope-LOCK preamble UI-20260611-003. Workspace HYPERPLAN:
87
+ `documentations/plans/ai-visual-qa/HYPERPLAN.md` 13 MP.
88
+
89
+ ## [01.17.1] — 2026-06-10 — 🎯 HYPERPLAN 112/112 ✓
90
+
91
+ ### Closure (Foundation 100%, CICD ✅ SUCCESS)
92
+ - CICD pipeline ✅ SUCCESS @ fdp-runner-3 (1m10s, 9 steps)
93
+ → discord-start, pre-flight, install, build, test, coverage, npm-publish
94
+ - MP-10 SP-E (Discord ack) ✓ — `discord-start` step zöld build SUCCESS-szel
95
+ - MP-10 SP-F (pipeline-report) ✓ — `fdp build-results` listáz `✅ dynamo-e2e v01.17.1`
96
+ - MP-10 SP-G (build-results SUCCESS) ✓ — Overseer-DB SUCCESS entry
97
+ - `scripts/validate-mp10.js` EXIT 0 — idempotent oracle, 3/3 SP done
98
+ - `HYPERPLAN-COMPLETION-ATTESTATION.md` frissítve: **112/112 (100%) 🎯**
99
+
100
+ ### Fixed
101
+ - `validate-mp10.js` SP-E ellenőrzés: case-insensitive regex (`discord-(start|result)`)
102
+ + build SUCCESS gate → reálisabb acceptance (`discord-start` MŰKÖDŐ Discord ack)
103
+
6
104
  ## [01.17.0] — 2026-06-10
7
105
 
8
106
  ### Added (Hyperplan completion attestation + dye2e self-test)
package/bin/dye2e.js CHANGED
@@ -254,6 +254,176 @@ function main() {
254
254
  process.exit(0);
255
255
  }
256
256
 
257
+ if (parsed.command === 'validate-manifest') {
258
+ const { DyE2E_VQA_ManifestValidator_Util } = require('../build/_modules/vqa/_collections/utils/manifest-validator.util');
259
+ const mPath = parsed.flags.manifest;
260
+ if (!mPath) {
261
+ process.stderr.write('[dye2e] error: --manifest <path> required\n');
262
+ process.exit(2);
263
+ }
264
+ const abs = path.resolve(process.cwd(), mPath);
265
+ if (!fs.existsSync(abs)) {
266
+ process.stderr.write('[dye2e] error: manifest file not found: ' + abs + '\n');
267
+ process.exit(2);
268
+ }
269
+ let data;
270
+ try {
271
+ data = JSON.parse(fs.readFileSync(abs, 'utf-8'));
272
+ } catch (e) {
273
+ process.stderr.write('[dye2e] error: invalid JSON in manifest\n');
274
+ process.exit(3);
275
+ }
276
+ const r = DyE2E_VQA_ManifestValidator_Util.validate(data);
277
+ if (r.ok) {
278
+ process.stdout.write('✓ ' + mPath + ' valid (vqa manifest)\n');
279
+ process.exit(0);
280
+ }
281
+ process.stdout.write('✗ ' + mPath + ' invalid (' + r.errors.length + ' errors):\n');
282
+ for (const err of r.errors) {
283
+ process.stdout.write(' ' + err.path + ': ' + err.message + ' [' + err.code + ']\n');
284
+ }
285
+ process.exit(1);
286
+ }
287
+
288
+ if (parsed.command === 'validate-finding') {
289
+ const { DyE2E_VQA_FindingValidator_Util } = require('../build/_modules/vqa/_collections/utils/finding-validator.util');
290
+ const fPath = parsed.flags.finding;
291
+ if (!fPath) {
292
+ process.stderr.write('[dye2e] error: --finding <path> required\n');
293
+ process.exit(2);
294
+ }
295
+ const abs = path.resolve(process.cwd(), fPath);
296
+ if (!fs.existsSync(abs)) {
297
+ process.stderr.write('[dye2e] error: finding file not found: ' + abs + '\n');
298
+ process.exit(2);
299
+ }
300
+ let data;
301
+ try {
302
+ data = JSON.parse(fs.readFileSync(abs, 'utf-8'));
303
+ } catch (e) {
304
+ process.stderr.write('[dye2e] error: invalid JSON in finding\n');
305
+ process.exit(3);
306
+ }
307
+ const r = DyE2E_VQA_FindingValidator_Util.validate(data);
308
+ if (r.ok) {
309
+ process.stdout.write('✓ ' + fPath + ' valid (vqa finding)\n');
310
+ process.exit(0);
311
+ }
312
+ process.stdout.write('✗ ' + fPath + ' invalid (' + r.errors.length + ' errors):\n');
313
+ for (const err of r.errors) {
314
+ process.stdout.write(' ' + err.path + ': ' + err.message + ' [' + err.code + ']\n');
315
+ }
316
+ process.exit(1);
317
+ }
318
+
319
+ if (parsed.command === 'generate-review-bundle') {
320
+ const { DyE2E_VQA_ReviewBundle_Generator } = require('../build/_modules/vqa/generators/review-bundle.generator');
321
+ const mPath = parsed.flags.manifest;
322
+ const outBase = parsed.flags.out || './review-bundles';
323
+ if (!mPath) {
324
+ process.stderr.write('[dye2e] error: --manifest <path> required\n');
325
+ process.exit(2);
326
+ }
327
+ const abs = path.resolve(process.cwd(), mPath);
328
+ if (!fs.existsSync(abs)) {
329
+ process.stderr.write('[dye2e] error: manifest file not found: ' + abs + '\n');
330
+ process.exit(2);
331
+ }
332
+ let manifest;
333
+ try {
334
+ manifest = JSON.parse(fs.readFileSync(abs, 'utf-8'));
335
+ } catch (e) {
336
+ process.stderr.write('[dye2e] error: invalid JSON in manifest\n');
337
+ process.exit(3);
338
+ }
339
+ const result = DyE2E_VQA_ReviewBundle_Generator.generate(manifest,
340
+ path.resolve(process.cwd(), outBase), {
341
+ runId: parsed.flags['run-id'],
342
+ buildId: parsed.flags['build-id'],
343
+ projectSlug: parsed.flags['project-slug'],
344
+ skipCaptureSpec: parsed.flags['skip-capture-spec'] === 'true',
345
+ });
346
+ if (result.validatorErrors.length > 0) {
347
+ process.stdout.write('✗ manifest invalid (' + result.validatorErrors.length + ' errors):\n');
348
+ for (const err of result.validatorErrors) {
349
+ process.stdout.write(' ' + err.path + ': ' + err.message + '\n');
350
+ }
351
+ process.exit(1);
352
+ }
353
+ process.stdout.write('✓ bundle generated: ' + result.bundlePath + '\n');
354
+ process.stdout.write(' runId: ' + result.runId + '\n');
355
+ process.stdout.write(' files: ' + result.files.length + '\n');
356
+ process.stdout.write('\n next: cd to the project + run\n');
357
+ process.stdout.write(' VQA_OUT_DIR=' + result.bundlePath + ' npx playwright test ' + path.join(result.bundlePath, 'capture-spec.ts') + '\n');
358
+ process.exit(0);
359
+ }
360
+
361
+ if (parsed.command === 'generate-comparison-bundle') {
362
+ const { DyE2E_VQA_ComparisonBundle_Generator } = require('../build/_modules/vqa/generators/comparison-bundle.generator');
363
+ const beforeP = parsed.flags.before;
364
+ const afterP = parsed.flags.after;
365
+ const mPath = parsed.flags.manifest;
366
+ if (!beforeP || !afterP || !mPath) {
367
+ process.stderr.write('[dye2e] error: --before <bundle> --after <bundle> --manifest <path> required\n');
368
+ process.exit(2);
369
+ }
370
+ const bAbs = path.resolve(process.cwd(), beforeP);
371
+ const aAbs = path.resolve(process.cwd(), afterP);
372
+ const mAbs = path.resolve(process.cwd(), mPath);
373
+ if (!fs.existsSync(bAbs) || !fs.existsSync(aAbs)) {
374
+ process.stderr.write('[dye2e] error: bundle path not found\n');
375
+ process.exit(2);
376
+ }
377
+ if (!fs.existsSync(mAbs)) {
378
+ process.stderr.write('[dye2e] error: manifest not found\n');
379
+ process.exit(2);
380
+ }
381
+ let manifest;
382
+ try {
383
+ manifest = JSON.parse(fs.readFileSync(mAbs, 'utf-8'));
384
+ } catch (e) {
385
+ process.stderr.write('[dye2e] error: invalid JSON in manifest\n');
386
+ process.exit(3);
387
+ }
388
+ let findingRefs = [];
389
+ if (parsed.flags.findings) {
390
+ const fAbs = path.resolve(process.cwd(), parsed.flags.findings);
391
+ if (fs.existsSync(fAbs)) {
392
+ try {
393
+ const fd = JSON.parse(fs.readFileSync(fAbs, 'utf-8'));
394
+ findingRefs = Array.isArray(fd) ? fd : (fd.findingRefs || []);
395
+ } catch (e) {
396
+ process.stderr.write('[dye2e] warn: findings file invalid JSON, continuing with empty refs\n');
397
+ }
398
+ }
399
+ }
400
+ const result = DyE2E_VQA_ComparisonBundle_Generator.generate(bAbs, aAbs, manifest, findingRefs);
401
+ process.stdout.write('✓ comparison-bundle generated: ' + result.comparisonPath + '\n');
402
+ process.stdout.write(' files: ' + result.filesWritten.length + '\n');
403
+ process.exit(0);
404
+ }
405
+
406
+ if (parsed.command === 'bundle-summary') {
407
+ const bundleP = parsed.flags.bundle;
408
+ if (!bundleP) {
409
+ process.stderr.write('[dye2e] error: --bundle <path> required\n');
410
+ process.exit(2);
411
+ }
412
+ const abs = path.resolve(process.cwd(), bundleP);
413
+ const mPath = path.join(abs, 'manifest.json');
414
+ const sPath = path.join(abs, 'summary.md');
415
+ if (!fs.existsSync(mPath)) {
416
+ process.stderr.write('[dye2e] error: bundle missing manifest.json: ' + abs + '\n');
417
+ process.exit(2);
418
+ }
419
+ if (!fs.existsSync(sPath)) {
420
+ process.stderr.write('[dye2e] error: bundle missing summary.md: ' + abs + '\n');
421
+ process.exit(2);
422
+ }
423
+ process.stdout.write(fs.readFileSync(sPath, 'utf-8'));
424
+ process.exit(0);
425
+ }
426
+
257
427
  process.stderr.write(`[dye2e] unknown command: ${parsed.command}\n`);
258
428
  process.stderr.write(DyE2E_CliRunner_Util.helpText());
259
429
  process.exit(2);
@@ -1 +1 @@
1
- {"version":3,"file":"form-level-emission.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/generators/_collections/form-level-emission.util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAGpF;;;GAGG;AACH,qBAAa,4BAA4B;IAEvC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM;IAa9D,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM;IAQ9D,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM;IAM/D,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM;CAOvD"}
1
+ {"version":3,"file":"form-level-emission.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/generators/_collections/form-level-emission.util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAGpF;;;GAGG;AACH,qBAAa,4BAA4B;IAEvC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM;IAe9D,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM;IAQ9D,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM;IAM/D,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM;CAOvD"}
@@ -8,7 +8,9 @@ const test_id_util_1 = require("../../contracts/_collections/utils/test-id.util"
8
8
  */
9
9
  class DyE2E_FormLevelEmission_Util {
10
10
  static emitSubmitEmpty(form) {
11
- const submitTestId = test_id_util_1.DyE2E_TestId_Util.formSubmit(form.key);
11
+ // Explicit submitTestId override (a renderelt `${formId}-submit` ≠ `${key}-submit`
12
+ // esetén — pl. FDPNX login), különben a `${key}-submit` derivált.
13
+ const submitTestId = form.submitTestId ?? test_id_util_1.DyE2E_TestId_Util.formSubmit(form.key);
12
14
  const requiredFieldCount = form.fields.filter((f) => f.required === true).length;
13
15
  return `test('form-level: submit empty form ${requiredFieldCount > 0 ? '→ required-validators fire' : '→ submits'}', async ({ page }): Promise<void> => {
14
16
  const submit: Locator = page.getByTestId('${submitTestId}');
@@ -1 +1 @@
1
- {"version":3,"file":"form-level-emission.util.js","sourceRoot":"","sources":["../../../../src/_modules/generators/_collections/form-level-emission.util.ts"],"names":[],"mappings":";;;AAAA,kFAAoF;AAIpF;;;GAGG;AACH,MAAa,4BAA4B;IAEvC,MAAM,CAAC,eAAe,CAAC,IAA8B;QACnD,MAAM,YAAY,GAAW,gCAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpE,MAAM,kBAAkB,GAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;QAClG,OAAO,uCAAuC,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,WAAW;8CACvE,YAAY;;EAExD,kBAAkB,GAAG,CAAC;YACtB,CAAC,CAAC,QAAQ,kBAAkB;0EAC4C;YACxE,CAAC,CAAC,+CAA+C;IAC/C,CAAC;IACH,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,IAA8B;QACnD,OAAO;;;;IAIP,CAAC;IACH,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,IAA8B;QACpD,OAAO;;IAEP,CAAC;IACH,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,IAA8B;QAC3C,OAAO;YACL,4BAA4B,CAAC,eAAe,CAAC,IAAI,CAAC;YAClD,4BAA4B,CAAC,eAAe,CAAC,IAAI,CAAC;YAClD,4BAA4B,CAAC,gBAAgB,CAAC,IAAI,CAAC;SACpD,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC;CACF;AApCD,oEAoCC"}
1
+ {"version":3,"file":"form-level-emission.util.js","sourceRoot":"","sources":["../../../../src/_modules/generators/_collections/form-level-emission.util.ts"],"names":[],"mappings":";;;AAAA,kFAAoF;AAIpF;;;GAGG;AACH,MAAa,4BAA4B;IAEvC,MAAM,CAAC,eAAe,CAAC,IAA8B;QACnD,mFAAmF;QACnF,kEAAkE;QAClE,MAAM,YAAY,GAAW,IAAI,CAAC,YAAY,IAAI,gCAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzF,MAAM,kBAAkB,GAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;QAClG,OAAO,uCAAuC,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,WAAW;8CACvE,YAAY;;EAExD,kBAAkB,GAAG,CAAC;YACtB,CAAC,CAAC,QAAQ,kBAAkB;0EAC4C;YACxE,CAAC,CAAC,+CAA+C;IAC/C,CAAC;IACH,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,IAA8B;QACnD,OAAO;;;;IAIP,CAAC;IACH,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,IAA8B;QACpD,OAAO;;IAEP,CAAC;IACH,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,IAA8B;QAC3C,OAAO;YACL,4BAA4B,CAAC,eAAe,CAAC,IAAI,CAAC;YAClD,4BAA4B,CAAC,eAAe,CAAC,IAAI,CAAC;YAClD,4BAA4B,CAAC,gBAAgB,CAAC,IAAI,CAAC;SACpD,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC;CACF;AAtCD,oEAsCC"}
@@ -1 +1 @@
1
- {"version":3,"file":"test-case-filter.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/generators/_collections/test-case-filter.util.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACxF,OAAO,EAAE,6BAA6B,EAAE,MAAM,gEAAgE,CAAC;AAC/G,OAAO,EAAE,6BAA6B,EAAE,MAAM,uEAAuE,CAAC;AACtH,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAErF;;;;;;;GAOG;AACH,qBAAa,yBAAyB;IAEpC,6DAA6D;IAC7D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CASrC;IAEH,sDAAsD;IACtD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAMxC;IAEH;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,CAAC,EACb,KAAK,EAAE,6BAA6B,CAAC,CAAC,CAAC,EAAE,EACzC,aAAa,EAAE,yBAAyB,EACxC,OAAO,EAAE,sBAAsB,EAC/B,QAAQ,CAAC,EAAE,6BAA6B,GACvC,6BAA6B,CAAC,CAAC,CAAC,EAAE;IAqFrC,OAAO,CAAC,MAAM,CAAC,aAAa;CAa7B"}
1
+ {"version":3,"file":"test-case-filter.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/generators/_collections/test-case-filter.util.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACxF,OAAO,EAAE,6BAA6B,EAAE,MAAM,gEAAgE,CAAC;AAC/G,OAAO,EAAE,6BAA6B,EAAE,MAAM,uEAAuE,CAAC;AACtH,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAErF;;;;;;;GAOG;AACH,qBAAa,yBAAyB;IAEpC,6DAA6D;IAC7D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CASrC;IAEH,sDAAsD;IACtD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAMxC;IAEH;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,CAAC,EACb,KAAK,EAAE,6BAA6B,CAAC,CAAC,CAAC,EAAE,EACzC,aAAa,EAAE,yBAAyB,EACxC,OAAO,EAAE,sBAAsB,EAC/B,QAAQ,CAAC,EAAE,6BAA6B,GACvC,6BAA6B,CAAC,CAAC,CAAC,EAAE;IAuHrC,OAAO,CAAC,MAAM,CAAC,aAAa;CAa7B"}
@@ -39,11 +39,35 @@ class DyE2E_TestCaseFilter_Util {
39
39
  */
40
40
  static filter(cases, fieldSettings, runMode, override) {
41
41
  let result = cases.filter((c) => DyE2E_TestCaseFilter_Util.keepByRunMode(c, runMode));
42
+ // Disabled-awareness: egy disabled mezővel NEM lehet interaktálni (fill/check/toggle
43
+ // actionability-timeout-ot ad), ezért minden value-interakció esetet eldobunk. A
44
+ // mező izolált tesztben disabled (pl. FDPNX login stayLoggedIn, ami csak a rememberMe
45
+ // bepipálása UTÁN enable-ölődik — a generator izoláltan, rememberMe nélkül navigál).
46
+ if (fieldSettings.disabled === true) {
47
+ return [];
48
+ }
42
49
  // Required-validator awareness: ha a Settings NEM required, eldobjuk a
43
50
  // required-shape eseteket (where expectation === invalid + expectedErrorKey === 'required').
44
51
  if (!fieldSettings.required) {
45
52
  result = result.filter((c) => c.expectedErrorKey !== 'required' || c.expectation !== test_expectation_type_enum_1.DyE2E_TestExpectation_Type.invalid);
46
53
  }
54
+ else {
55
+ // Ha a mező REQUIRED, az "empty → valid" eset HAMIS: a required-validátor
56
+ // hibát mutat üres inputra (empirikus: FDPNX login usernameEmail/password +blur
57
+ // → required-error). Eldobjuk az empty-valid eseteket (a required-on-empty
58
+ // viselkedést a form-level "submit empty → required fire" teszt fedi).
59
+ result = result.filter((c) => c.type !== field_test_case_type_enum_1.DyE2E_FieldTestCase_Type.emptyInput || c.expectation !== test_expectation_type_enum_1.DyE2E_TestExpectation_Type.valid);
60
+ }
61
+ // MinLength / maxLength AWARENESS: ha a Settings NEM deklarál min/maxLength-et,
62
+ // eldobjuk a hozzá tartozó invalid-shape eseteket — különben a generált teszt
63
+ // olyan hossz-validátort vár, ami a valós formon nincs (empirikus: FDPNX login
64
+ // password, ahol NINCS min/maxLength, mégis emittálódott a pw:short/pw:oversize).
65
+ if (typeof fieldSettings.minLength !== 'number') {
66
+ result = result.filter((c) => c.expectedErrorKey !== 'minLength' || c.expectation !== test_expectation_type_enum_1.DyE2E_TestExpectation_Type.invalid);
67
+ }
68
+ if (typeof fieldSettings.maxLength !== 'number') {
69
+ result = result.filter((c) => c.expectedErrorKey !== 'maxLength' || c.expectation !== test_expectation_type_enum_1.DyE2E_TestExpectation_Type.invalid);
70
+ }
47
71
  // MinLength / maxLength shaping.
48
72
  if (typeof fieldSettings.maxLength === 'number') {
49
73
  result = result.map((c) => {
@@ -1 +1 @@
1
- {"version":3,"file":"test-case-filter.util.js","sourceRoot":"","sources":["../../../../src/_modules/generators/_collections/test-case-filter.util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-case-filter.util.js","sourceRoot":"","sources":["../../../../src/_modules/generators/_collections/test-case-filter.util.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,13 @@ export interface DyE2E_FormSettings_Shape {
53
53
  fields: DyE2E_FieldSettings_Shape[];
54
54
  /** Ember-olvasható cimke. */
55
55
  label?: string;
56
+ /**
57
+ * A submit-gomb explicit testId-je. Ha megadva, a form-level emitter EZT használja
58
+ * a `${key}-submit` derivált helyett. Azért kell, mert a renderelt submit testId a
59
+ * FORM `settings.id`-jából jön (`${id}-submit`), ami eltérhet a generator `key`-jétől
60
+ * (pl. FDPNX login: key `login`, de a renderelt submit `fdp-login-submit`).
61
+ */
62
+ submitTestId?: string;
56
63
  /** Bármi más. */
57
64
  [extra: string]: unknown;
58
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"form-settings-shape.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/generators/_models/form-settings-shape.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,yBAAyB;IACxC,8DAA8D;IAC9D,GAAG,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IAClE,4BAA4B;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4EAA4E;IAC5E,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnE,8CAA8C;IAC9C,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,0BAA0B;IAC1B,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACpC,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB;IACjB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B"}
1
+ {"version":3,"file":"form-settings-shape.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/generators/_models/form-settings-shape.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,yBAAyB;IACxC,8DAA8D;IAC9D,GAAG,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IAClE,4BAA4B;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4EAA4E;IAC5E,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnE,8CAA8C;IAC9C,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,0BAA0B;IAC1B,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACpC,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB;IACjB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B"}
@@ -19,5 +19,24 @@ export interface DyE2E_FormSuiteGenerate_Options {
19
19
  suiteSettings?: DyE2E_FormTestSuite_Settings;
20
20
  /** Spec-fájl tetejéhez plusz comment (pl. generator-meta). */
21
21
  headerComment?: string;
22
+ /**
23
+ * Dialog-open preamble: verbatim Playwright-statement sorok, amik a
24
+ * `page.goto(formRoute)` UTÁN és a `formSelector`-várakozás ELŐTT futnak le
25
+ * minden teszt `beforeEach`-ében. Dialog-mounted formokhoz (a form NEM
26
+ * standalone route-on él, hanem egy dialógus megnyitása + esetleg tab-váltás
27
+ * után jelenik meg — pl. FDPNX register/forgotten-password a
28
+ * `LoginRegisterContainer` dialógusban).
29
+ *
30
+ * Példa:
31
+ * ```ts
32
+ * openSteps: [
33
+ * `await page.getByTestId('open-login-dialog').click();`,
34
+ * `await page.getByTestId('tab-register').click();`,
35
+ * ]
36
+ * ```
37
+ * Minden sor változtatás nélkül emit-elődik a `beforeEach`-be (dev-authored
38
+ * tooling-kód). Üres / hiányzó → a régi viselkedés (közvetlen route-navigáció).
39
+ */
40
+ openSteps?: string[];
22
41
  }
23
42
  //# sourceMappingURL=form-suite-generate-options.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"form-suite-generate-options.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/generators/_models/form-suite-generate-options.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,uEAAuE,CAAC;AACrH,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAE3E;;;;;;;GAOG;AACH,MAAM,WAAW,+BAA+B;IAC9C,6EAA6E;IAC7E,YAAY,EAAE,wBAAwB,CAAC;IACvC,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,4BAA4B,CAAC;IAC7C,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
1
+ {"version":3,"file":"form-suite-generate-options.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/generators/_models/form-suite-generate-options.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,uEAAuE,CAAC;AACrH,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAE3E;;;;;;;GAOG;AACH,MAAM,WAAW,+BAA+B;IAC9C,6EAA6E;IAC7E,YAAY,EAAE,wBAAwB,CAAC;IACvC,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,4BAA4B,CAAC;IAC7C,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;;;;;;;OAiBG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"form-suite.generator.d.ts","sourceRoot":"","sources":["../../../src/_modules/generators/form-suite.generator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC;AAElG;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,yBAAyB;IAEpC,8EAA8E;IAC9E,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAkB;IAExD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM;CA2E9D"}
1
+ {"version":3,"file":"form-suite.generator.d.ts","sourceRoot":"","sources":["../../../src/_modules/generators/form-suite.generator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC;AAElG;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,yBAAyB;IAEpC,8EAA8E;IAC9E,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAkB;IAExD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM;CAiF9D"}
@@ -28,8 +28,13 @@ class DyE2E_FormSuite_Generator {
28
28
  /** A Wave-2-ben dátum-stamp; Wave-1: stable string a snapshot-teszt miatt. */
29
29
  static STAMP_BUILT_AT = 'WAVE-1-STAMP';
30
30
  static emit(options) {
31
- const { formSettings, formRoute, formSelector, suiteSettings, headerComment } = options;
31
+ const { formSettings, formRoute, formSelector, suiteSettings, headerComment, openSteps } = options;
32
32
  const runMode = suiteSettings?.runMode ?? test_run_mode_type_enum_1.DyE2E_TestRunMode_Type.full;
33
+ // Dialog-open preamble: a goto UTÁN, a selector-wait ELŐTT futó verbatim
34
+ // Playwright-sorok (dialog-mounted formokhoz). Üres → régi route-only viselkedés.
35
+ const openStepsBlock = (openSteps?.length)
36
+ ? '\n' + openSteps.map((step) => ` ${step}`).join('\n')
37
+ : '';
33
38
  const header = spec_emission_util_1.DyE2E_SpecEmission_Util.headerComment(formSettings.key, formRoute, DyE2E_FormSuite_Generator.STAMP_BUILT_AT, headerComment);
34
39
  const imports = [
35
40
  `import { test, expect, Locator } from '@playwright/test';`,
@@ -56,7 +61,7 @@ class DyE2E_FormSuite_Generator {
56
61
  fieldBlocks.push(`test.describe('Field: ${field.key} (${field.type})', (): void => {
57
62
  ${spec_emission_util_1.DyE2E_SpecEmission_Util.indent(`test.beforeEach(async ({ page }): Promise<void> => {
58
63
  const response = await page.goto('${formRoute}');
59
- expect(response?.ok()).toBeTruthy();${formSelector ? `\n await page.locator('${formSelector}').first().waitFor({ state: 'visible' });` : ''}
64
+ expect(response?.ok()).toBeTruthy();${openStepsBlock}${formSelector ? `\n await page.locator('${formSelector}').first().waitFor({ state: 'visible' });` : ''}
60
65
  });
61
66
 
62
67
  ${cases}`, 1)}
@@ -67,7 +72,7 @@ ${cases}`, 1)}
67
72
  : `\n\ntest.describe('Form-level orchestration', (): void => {
68
73
  ${spec_emission_util_1.DyE2E_SpecEmission_Util.indent(`test.beforeEach(async ({ page }): Promise<void> => {
69
74
  const response = await page.goto('${formRoute}');
70
- expect(response?.ok()).toBeTruthy();
75
+ expect(response?.ok()).toBeTruthy();${openStepsBlock}
71
76
  });
72
77
 
73
78
  ${form_level_emission_util_1.DyE2E_FormLevelEmission_Util.emitAll(formSettings)}`, 1)}
@@ -1 +1 @@
1
- {"version":3,"file":"form-suite.generator.js","sourceRoot":"","sources":["../../../src/_modules/generators/form-suite.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form-suite.generator.js","sourceRoot":"","sources":["../../../src/_modules/generators/form-suite.generator.ts"],"names":[],"mappings":"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"}
@@ -139,6 +139,50 @@ describe('| dynamo-e2e | generators (Layer-B)', () => {
139
139
  });
140
140
  expect(spec1).toBe(spec2);
141
141
  });
142
+ it('| openSteps — dialog-open preamble a goto UTÁN, a selector-wait ELŐTT emit-elődik', () => {
143
+ const spec = form_suite_generator_1.DyE2E_FormSuite_Generator.emit({
144
+ formSettings: { key: 'register', fields: [{ key: 'email', type: 'text', required: true }] },
145
+ formRoute: '/landing/login',
146
+ formSelector: 'dynamo-form-new',
147
+ openSteps: [
148
+ `await page.getByTestId('open-login-dialog').click();`,
149
+ `await page.getByTestId('tab-register').click();`,
150
+ ],
151
+ });
152
+ // mindkét open-step verbatim benne van
153
+ expect(spec).toContain(`await page.getByTestId('open-login-dialog').click();`);
154
+ expect(spec).toContain(`await page.getByTestId('tab-register').click();`);
155
+ // sorrend: goto → openSteps → selector-wait
156
+ const gotoIdx = spec.indexOf(`await page.goto('/landing/login')`);
157
+ const openIdx = spec.indexOf(`open-login-dialog`);
158
+ const waitIdx = spec.indexOf(`waitFor({ state: 'visible' })`);
159
+ expect(gotoIdx).toBeLessThan(openIdx);
160
+ expect(openIdx).toBeLessThan(waitIdx);
161
+ });
162
+ it('| submitTestId override → a form-level submit EZT a testId-t használja (nem {key}-submit)', () => {
163
+ const withOverride = form_suite_generator_1.DyE2E_FormSuite_Generator.emit({
164
+ formSettings: { key: 'login', submitTestId: 'fdp-login-submit', fields: [{ key: 'u', type: 'text', required: true }] },
165
+ formRoute: '/landing/login',
166
+ });
167
+ expect(withOverride).toContain(`getByTestId('fdp-login-submit')`);
168
+ expect(withOverride).not.toContain(`getByTestId('login-submit')`);
169
+ // override nélkül a {key}-submit derivált marad (backward-compat)
170
+ const withoutOverride = form_suite_generator_1.DyE2E_FormSuite_Generator.emit({
171
+ formSettings: { key: 'login', fields: [{ key: 'u', type: 'text', required: true }] },
172
+ formRoute: '/landing/login',
173
+ });
174
+ expect(withoutOverride).toContain(`getByTestId('login-submit')`);
175
+ });
176
+ it('| openSteps hiányában a kimenet bit-azonos a régivel (backward-compat)', () => {
177
+ const base = {
178
+ formSettings: { key: 'login', fields: [{ key: 'a', type: 'text' }] },
179
+ formRoute: '/login',
180
+ formSelector: 'dynamo-form-new',
181
+ };
182
+ const withoutOpen = form_suite_generator_1.DyE2E_FormSuite_Generator.emit(base);
183
+ const withEmptyOpen = form_suite_generator_1.DyE2E_FormSuite_Generator.emit({ ...base, openSteps: [] });
184
+ expect(withEmptyOpen).toBe(withoutOpen);
185
+ });
142
186
  });
143
187
  });
144
188
  //# sourceMappingURL=form-suite.generator.spec.js.map