@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 @@
1
+ {"version":3,"file":"capture-spec.generator.d.ts","sourceRoot":"","sources":["../../../../src/_modules/vqa/generators/capture-spec.generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mCAAmC,EAAE,MAAM,kDAAkD,CAAC;AAIvG;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,6BAA6B;IAC5C,6CAA6C;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,+BAA+B;IAE1C,MAAM,CAAC,IAAI,CACT,QAAQ,EAAE,mCAAmC,EAC7C,OAAO,CAAC,EAAE,6BAA6B,GACtC,MAAM;IAuHT,OAAO,CAAC,MAAM,CAAC,aAAa;IA6C5B,OAAO,CAAC,MAAM,CAAC,aAAa;CAiD7B"}
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DyE2E_VQA_CaptureSpec_Generator = void 0;
4
+ class DyE2E_VQA_CaptureSpec_Generator {
5
+ static emit(manifest, options) {
6
+ const header = options?.headerComment ??
7
+ `// AUTOGEN by @futdevpro/dynamo-e2e/vqa — DyE2E_VQA_CaptureSpec_Generator. DO NOT EDIT.`;
8
+ const orientations = manifest.orientations && manifest.orientations.length > 0
9
+ ? manifest.orientations
10
+ : ['portrait'];
11
+ const ctaSelectors = (manifest.criticalElements ?? [])
12
+ .filter((c) => c.regionType === 'primary-cta')
13
+ .map((c) => c.selector);
14
+ const criticalElementsLiteral = JSON.stringify(manifest.criticalElements ?? []);
15
+ const ctaSelectorsLiteral = JSON.stringify(ctaSelectors);
16
+ const manifestLiteral = JSON.stringify({
17
+ featureId: manifest.featureId,
18
+ featureName: manifest.featureName,
19
+ route: manifest.route,
20
+ });
21
+ const featureFlowEmit = this.emitFlowSteps(manifest.flowSteps ?? [], ' ');
22
+ const stateBlocks = manifest.states.map((s) => this.emitStateTest(manifest, s, orientations, ctaSelectorsLiteral, criticalElementsLiteral, featureFlowEmit)).join('\n\n');
23
+ const a11yEnabled = (manifest.testDataSetup?.a11yEnabled) === true;
24
+ return `${header}
25
+
26
+ import { test, expect, type Page } from '@playwright/test';
27
+ import * as fs from 'fs';
28
+ import * as path from 'path';
29
+ import {
30
+ DyE2E_VQA_DomEvidencePageScripts_Const,
31
+ DyE2E_VQA_AntiFlake_Css_Const,${a11yEnabled ? `
32
+ DyE2E_VQA_Axe_CdnUrl_Const,
33
+ DyE2E_VQA_AxeRunScript_Const,` : ''}
34
+ } from '@futdevpro/dynamo-e2e/vqa';
35
+
36
+ const VQA_OUT_DIR: string = process.env.VQA_OUT_DIR
37
+ || path.join(process.cwd(), 'review-bundles', '${manifest.featureId}', \`run-\${process.env.VQA_RUN_ID || Date.now()}\`);
38
+ const VQA_BASE_URL: string = process.env.VQA_BASE_URL || 'http://localhost:4200';
39
+ const A11Y_ENABLED: boolean = ${a11yEnabled};
40
+ const FEATURE = ${manifestLiteral};
41
+
42
+ function ensureDir(p: string): void {
43
+ fs.mkdirSync(p, { recursive: true });
44
+ }
45
+
46
+ async function stabilizePage(page: Page): Promise<void> {
47
+ // Anti-flake: disable animations + transitions
48
+ await page.addStyleTag({ content: DyE2E_VQA_AntiFlake_Css_Const });
49
+ // Font-loading await — szövegmérés stabilitásához
50
+ await page.evaluate(() => document.fonts && document.fonts.ready);
51
+ }
52
+
53
+ async function runDetectors(page: Page, ctaSelectors: string[], stateOut: string): Promise<unknown[]> {
54
+ const evidence: unknown[] = [];
55
+ for (const [, raw] of Object.entries(DyE2E_VQA_DomEvidencePageScripts_Const)) {
56
+ const script: string = (raw as string).replace(
57
+ /__CRITICAL_CTA_SELECTORS__/g, JSON.stringify(ctaSelectors),
58
+ );
59
+ try {
60
+ const r: unknown = await page.evaluate(script);
61
+ evidence.push(r);
62
+ } catch (e) {
63
+ evidence.push({ error: String(e) });
64
+ }
65
+ }
66
+ ensureDir(stateOut);
67
+ fs.writeFileSync(path.join(stateOut, 'evidence.json'), JSON.stringify(evidence, null, 2));
68
+ return evidence;
69
+ }
70
+
71
+ ${a11yEnabled ? `async function runAxe(page: Page, stateOut: string): Promise<void> {
72
+ try {
73
+ await page.addScriptTag({ url: DyE2E_VQA_Axe_CdnUrl_Const });
74
+ const result: unknown = await page.evaluate(DyE2E_VQA_AxeRunScript_Const);
75
+ ensureDir(stateOut);
76
+ fs.writeFileSync(path.join(stateOut, 'a11y.json'), JSON.stringify(result, null, 2));
77
+ } catch (e) {
78
+ fs.writeFileSync(path.join(stateOut, 'a11y.json'),
79
+ JSON.stringify({ error: String(e) }, null, 2));
80
+ }
81
+ }` : `async function runAxe(_page: Page, _stateOut: string): Promise<void> { /* a11yEnabled=false */ }`}
82
+
83
+ async function captureDomSnapshot(page: Page, stateOut: string): Promise<void> {
84
+ const dom: unknown = await page.evaluate(() => {
85
+ return {
86
+ viewportWidth: window.innerWidth,
87
+ viewportHeight: window.innerHeight,
88
+ bodyScrollHeight: document.body.scrollHeight,
89
+ bodyScrollWidth: document.body.scrollWidth,
90
+ activeElement: document.activeElement
91
+ ? { tag: document.activeElement.tagName.toLowerCase(),
92
+ id: (document.activeElement as HTMLElement).id || null }
93
+ : null,
94
+ scrollY: window.scrollY,
95
+ scrollX: window.scrollX,
96
+ title: document.title,
97
+ url: location.href,
98
+ };
99
+ });
100
+ ensureDir(stateOut);
101
+ fs.writeFileSync(path.join(stateOut, 'dom-snapshot.json'), JSON.stringify(dom, null, 2));
102
+ }
103
+
104
+ ${stateBlocks}
105
+ `;
106
+ }
107
+ static emitStateTest(manifest, state, orientations, ctaSelectorsLiteral, _criticalElementsLiteral, featureFlowEmit) {
108
+ const prepareFlowEmit = this.emitFlowSteps(state.prepareFlow ?? [], ' ');
109
+ const readyTestIdEmit = state.readyTestId
110
+ ? ` await page.waitForSelector('[data-testid="${state.readyTestId}"]', { timeout: 15_000 });`
111
+ : '';
112
+ const maskExpr = state.maskSelectors && state.maskSelectors.length > 0
113
+ ? `[${state.maskSelectors.map((s) => `page.locator(${JSON.stringify(s)})`).join(', ')}]`
114
+ : '[]';
115
+ const blocks = [];
116
+ for (const vp of manifest.viewports) {
117
+ for (const orientation of orientations) {
118
+ const w = orientation === 'landscape' ? Math.max(vp.width, vp.height) : Math.min(vp.width, vp.height);
119
+ const h = orientation === 'landscape' ? Math.min(vp.width, vp.height) : Math.max(vp.width, vp.height);
120
+ blocks.push(`
121
+ test('${state.stateId} | ${vp.key} | ${orientation}', async ({ page }) => {
122
+ await page.setViewportSize({ width: ${w}, height: ${h} });
123
+ await page.goto(VQA_BASE_URL + '${manifest.route}');
124
+ ${featureFlowEmit}
125
+ ${prepareFlowEmit}
126
+ ${readyTestIdEmit}
127
+ await stabilizePage(page);
128
+ const stateOut: string = path.join(VQA_OUT_DIR, 'states', '${state.stateId}', '${vp.key}-${orientation}');
129
+ ensureDir(stateOut);
130
+ const maskLocators = ${maskExpr};
131
+ await page.screenshot({ path: path.join(stateOut, 'full.png'), fullPage: true, mask: maskLocators });
132
+ await page.screenshot({ path: path.join(stateOut, 'fold.png'), fullPage: false, mask: maskLocators });
133
+ await captureDomSnapshot(page, stateOut);
134
+ await runDetectors(page, ${ctaSelectorsLiteral}, stateOut);
135
+ await runAxe(page, stateOut);
136
+ expect(fs.existsSync(path.join(stateOut, 'full.png'))).toBeTruthy();
137
+ });
138
+ `);
139
+ }
140
+ }
141
+ return blocks.join('\n');
142
+ }
143
+ static emitFlowSteps(steps, indent) {
144
+ if (!steps || steps.length === 0) {
145
+ return '';
146
+ }
147
+ const lines = [];
148
+ for (const s of steps) {
149
+ const target = s.target ? JSON.stringify(s.target) : '""';
150
+ const value = s.value !== undefined ? JSON.stringify(s.value) : '""';
151
+ const timeoutStr = s.timeout !== undefined ? `, { timeout: ${s.timeout} }` : '';
152
+ switch (s.action) {
153
+ case 'navigate':
154
+ lines.push(`${indent}await page.goto(VQA_BASE_URL + ${target});`);
155
+ break;
156
+ case 'click':
157
+ lines.push(`${indent}await page.locator(${target}).click();`);
158
+ break;
159
+ case 'fill':
160
+ lines.push(`${indent}await page.locator(${target}).fill(${value});`);
161
+ break;
162
+ case 'select':
163
+ lines.push(`${indent}await page.locator(${target}).selectOption(${value});`);
164
+ break;
165
+ case 'press':
166
+ lines.push(`${indent}await page.keyboard.press(${value});`);
167
+ break;
168
+ case 'hover':
169
+ lines.push(`${indent}await page.locator(${target}).hover();`);
170
+ break;
171
+ case 'waitForSelector':
172
+ lines.push(`${indent}await page.waitForSelector(${target}${timeoutStr});`);
173
+ break;
174
+ case 'waitForTimeout':
175
+ lines.push(`${indent}await page.waitForTimeout(${s.value ?? 0});`);
176
+ break;
177
+ case 'setViewport': {
178
+ const dims = (s.target ?? '0x0').split('x');
179
+ lines.push(`${indent}await page.setViewportSize({ width: ${parseInt(dims[0] ?? '0', 10)}, height: ${parseInt(dims[1] ?? '0', 10)} });`);
180
+ break;
181
+ }
182
+ case 'evaluate':
183
+ lines.push(`${indent}await page.evaluate(${value});`);
184
+ break;
185
+ case 'mockResponse':
186
+ lines.push(`${indent}await page.route(${target}, route => route.fulfill(${value || '{}'}));`);
187
+ break;
188
+ }
189
+ }
190
+ return lines.join('\n');
191
+ }
192
+ }
193
+ exports.DyE2E_VQA_CaptureSpec_Generator = DyE2E_VQA_CaptureSpec_Generator;
194
+ //# sourceMappingURL=capture-spec.generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-spec.generator.js","sourceRoot":"","sources":["../../../../src/_modules/vqa/generators/capture-spec.generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { DyE2E_VQA_FeatureManifest_Interface } from '../_models/interfaces/feature-manifest.interface';
2
+ /**
3
+ * `DyE2E_VQA_ComparisonBundle_Generator` — MP-F: re-audit comparison-bundle (spec §15).
4
+ *
5
+ * Két korábbi run-folder-t kap inputként + a re-audit-elendő finding-ID-k listáját.
6
+ * Output: a `before` bundle-en BELÜLI `comparison/` mappa, ami az AI agentnek strukturált
7
+ * delta-t mutat:
8
+ * - `comparison/README.md` — review-instrukció (decide: verified / reopened / partial)
9
+ * - `comparison/before-run-id.txt`, `after-run-id.txt`
10
+ * - `comparison/finding-refs.json` — milyen finding-eket nézzünk
11
+ * - `comparison/dom-diff/<state>/<viewport>.json` — DOM-snapshot-delta
12
+ * - `comparison/evidence-diff/<state>/<viewport>.json` — detector verdict-delta
13
+ * - `comparison/a11y-diff/<state>/<viewport>.json` — axe-finding-delta
14
+ *
15
+ * **scope-LOCK**: NEM dönt. Az AI agent dönti el verified/reopened-et.
16
+ */
17
+ export interface DyE2E_VQA_ComparisonBundle_Options {
18
+ /** Bundle-relative output mappa-név (default: `comparison`). */
19
+ outputSubdir?: string;
20
+ }
21
+ export interface DyE2E_VQA_ComparisonBundle_Result {
22
+ comparisonPath: string;
23
+ filesWritten: string[];
24
+ statesCompared: number;
25
+ viewportsCompared: number;
26
+ }
27
+ export declare class DyE2E_VQA_ComparisonBundle_Generator {
28
+ static generate(beforeBundlePath: string, afterBundlePath: string, manifest: DyE2E_VQA_FeatureManifest_Interface, findingRefs: string[], options?: DyE2E_VQA_ComparisonBundle_Options): DyE2E_VQA_ComparisonBundle_Result;
29
+ private static readMeta;
30
+ private static tryReadJson;
31
+ /** Egyszerű deep-diff: `{ added, removed, changed }` map (kulcs-szinten). */
32
+ static deepDiff(before: unknown, after: unknown): unknown;
33
+ /** Evidence-array specifikus diff: minden detektorra verdict-változás. */
34
+ static diffEvidenceArrays(before: unknown, after: unknown): unknown;
35
+ private static renderReadme;
36
+ }
37
+ //# sourceMappingURL=comparison-bundle.generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparison-bundle.generator.d.ts","sourceRoot":"","sources":["../../../../src/_modules/vqa/generators/comparison-bundle.generator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mCAAmC,EAAE,MAAM,kDAAkD,CAAC;AAEvG;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,kCAAkC;IACjD,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iCAAiC;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,oCAAoC;IAE/C,MAAM,CAAC,QAAQ,CACb,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,mCAAmC,EAC7C,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,CAAC,EAAE,kCAAkC,GAC3C,iCAAiC;IA0FpC,OAAO,CAAC,MAAM,CAAC,QAAQ;IAQvB,OAAO,CAAC,MAAM,CAAC,WAAW;IAW1B,6EAA6E;IAC7E,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAsCzD,0EAA0E;IAC1E,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAmCnE,OAAO,CAAC,MAAM,CAAC,YAAY;CA+C5B"}
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.DyE2E_VQA_ComparisonBundle_Generator = void 0;
27
+ const fs = __importStar(require("fs"));
28
+ const path = __importStar(require("path"));
29
+ class DyE2E_VQA_ComparisonBundle_Generator {
30
+ static generate(beforeBundlePath, afterBundlePath, manifest, findingRefs, options) {
31
+ const subdir = options?.outputSubdir ?? 'comparison';
32
+ const comparisonPath = path.join(afterBundlePath, subdir);
33
+ fs.mkdirSync(comparisonPath, { recursive: true });
34
+ const orientations = manifest.orientations && manifest.orientations.length > 0
35
+ ? manifest.orientations
36
+ : ['portrait'];
37
+ const filesWritten = [];
38
+ // run-id refs (read meta)
39
+ const beforeRunId = this.readMeta(beforeBundlePath, 'run-id.txt');
40
+ const afterRunId = this.readMeta(afterBundlePath, 'run-id.txt');
41
+ fs.writeFileSync(path.join(comparisonPath, 'before-run-id.txt'), beforeRunId);
42
+ fs.writeFileSync(path.join(comparisonPath, 'after-run-id.txt'), afterRunId);
43
+ filesWritten.push('before-run-id.txt', 'after-run-id.txt');
44
+ // finding-refs.json
45
+ fs.writeFileSync(path.join(comparisonPath, 'finding-refs.json'), JSON.stringify({ findingRefs, beforeRunId, afterRunId }, null, 2));
46
+ filesWritten.push('finding-refs.json');
47
+ // README.md — re-audit decision-instrukció
48
+ fs.writeFileSync(path.join(comparisonPath, 'README.md'), this.renderReadme(manifest, findingRefs, beforeRunId, afterRunId));
49
+ filesWritten.push('README.md');
50
+ // Per (state × viewport × orientation) DOM-diff + evidence-diff + a11y-diff
51
+ let statesCompared = 0;
52
+ let viewportsCompared = 0;
53
+ for (const s of manifest.states) {
54
+ let stateHadFiles = false;
55
+ for (const v of manifest.viewports) {
56
+ for (const o of orientations) {
57
+ const subPath = path.join(s.stateId, `${v.key}-${o}`);
58
+ const beforeStateDir = path.join(beforeBundlePath, 'states', subPath);
59
+ const afterStateDir = path.join(afterBundlePath, 'states', subPath);
60
+ // dom-diff
61
+ const beforeDom = this.tryReadJson(path.join(beforeStateDir, 'dom-snapshot.json'));
62
+ const afterDom = this.tryReadJson(path.join(afterStateDir, 'dom-snapshot.json'));
63
+ if (beforeDom !== null || afterDom !== null) {
64
+ const out = path.join(comparisonPath, 'dom-diff', subPath + '.json');
65
+ fs.mkdirSync(path.dirname(out), { recursive: true });
66
+ fs.writeFileSync(out, JSON.stringify(this.deepDiff(beforeDom, afterDom), null, 2));
67
+ filesWritten.push(`dom-diff/${subPath}.json`);
68
+ }
69
+ // evidence-diff
70
+ const beforeEv = this.tryReadJson(path.join(beforeStateDir, 'evidence.json'));
71
+ const afterEv = this.tryReadJson(path.join(afterStateDir, 'evidence.json'));
72
+ if (beforeEv !== null || afterEv !== null) {
73
+ const out = path.join(comparisonPath, 'evidence-diff', subPath + '.json');
74
+ fs.mkdirSync(path.dirname(out), { recursive: true });
75
+ fs.writeFileSync(out, JSON.stringify(this.diffEvidenceArrays(beforeEv, afterEv), null, 2));
76
+ filesWritten.push(`evidence-diff/${subPath}.json`);
77
+ }
78
+ // a11y-diff (opcionális; ha valamelyik run-ban nincs, deeper-diff)
79
+ const beforeA11y = this.tryReadJson(path.join(beforeStateDir, 'a11y.json'));
80
+ const afterA11y = this.tryReadJson(path.join(afterStateDir, 'a11y.json'));
81
+ if (beforeA11y !== null || afterA11y !== null) {
82
+ const out = path.join(comparisonPath, 'a11y-diff', subPath + '.json');
83
+ fs.mkdirSync(path.dirname(out), { recursive: true });
84
+ fs.writeFileSync(out, JSON.stringify(this.deepDiff(beforeA11y, afterA11y), null, 2));
85
+ filesWritten.push(`a11y-diff/${subPath}.json`);
86
+ }
87
+ if (afterStateDir && fs.existsSync(afterStateDir)) {
88
+ viewportsCompared++;
89
+ stateHadFiles = true;
90
+ }
91
+ }
92
+ }
93
+ if (stateHadFiles) {
94
+ statesCompared++;
95
+ }
96
+ }
97
+ return { comparisonPath, filesWritten, statesCompared, viewportsCompared };
98
+ }
99
+ static readMeta(bundlePath, fileName) {
100
+ const p = path.join(bundlePath, 'meta', fileName);
101
+ if (fs.existsSync(p)) {
102
+ return fs.readFileSync(p, 'utf-8').trim();
103
+ }
104
+ return 'unknown';
105
+ }
106
+ static tryReadJson(p) {
107
+ if (!fs.existsSync(p)) {
108
+ return null;
109
+ }
110
+ try {
111
+ return JSON.parse(fs.readFileSync(p, 'utf-8'));
112
+ }
113
+ catch {
114
+ return null;
115
+ }
116
+ }
117
+ /** Egyszerű deep-diff: `{ added, removed, changed }` map (kulcs-szinten). */
118
+ static deepDiff(before, after) {
119
+ if (before === null && after === null) {
120
+ return { unchanged: true };
121
+ }
122
+ if (before === null) {
123
+ return { onlyAfter: after };
124
+ }
125
+ if (after === null) {
126
+ return { onlyBefore: before };
127
+ }
128
+ if (typeof before !== 'object' || typeof after !== 'object') {
129
+ if (before === after) {
130
+ return { unchanged: true, value: before };
131
+ }
132
+ return { before, after };
133
+ }
134
+ const bObj = before;
135
+ const aObj = after;
136
+ const allKeys = new Set([...Object.keys(bObj), ...Object.keys(aObj)]);
137
+ const added = {};
138
+ const removed = {};
139
+ const changed = {};
140
+ for (const k of allKeys) {
141
+ if (!(k in bObj)) {
142
+ added[k] = aObj[k];
143
+ }
144
+ else if (!(k in aObj)) {
145
+ removed[k] = bObj[k];
146
+ }
147
+ else if (JSON.stringify(bObj[k]) !== JSON.stringify(aObj[k])) {
148
+ changed[k] = { before: bObj[k], after: aObj[k] };
149
+ }
150
+ }
151
+ return {
152
+ added: Object.keys(added).length > 0 ? added : undefined,
153
+ removed: Object.keys(removed).length > 0 ? removed : undefined,
154
+ changed: Object.keys(changed).length > 0 ? changed : undefined,
155
+ };
156
+ }
157
+ /** Evidence-array specifikus diff: minden detektorra verdict-változás. */
158
+ static diffEvidenceArrays(before, after) {
159
+ const toMap = (arr) => {
160
+ const m = {};
161
+ if (Array.isArray(arr)) {
162
+ for (const e of arr) {
163
+ const d = e;
164
+ if (d?.detector) {
165
+ m[d.detector] = e;
166
+ }
167
+ }
168
+ }
169
+ return m;
170
+ };
171
+ const bm = toMap(before);
172
+ const am = toMap(after);
173
+ const detectors = new Set([...Object.keys(bm), ...Object.keys(am)]);
174
+ const delta = {};
175
+ for (const d of detectors) {
176
+ const bDetected = bm[d]?.detected === true;
177
+ const aDetected = am[d]?.detected === true;
178
+ if (bDetected !== aDetected) {
179
+ delta[d] = {
180
+ verdictChanged: true,
181
+ before: bDetected ? 'detected' : 'clean',
182
+ after: aDetected ? 'detected' : 'clean',
183
+ };
184
+ }
185
+ else if (JSON.stringify(bm[d]) !== JSON.stringify(am[d])) {
186
+ delta[d] = { verdictChanged: false, detailsChanged: true };
187
+ }
188
+ else {
189
+ delta[d] = { unchanged: true };
190
+ }
191
+ }
192
+ return delta;
193
+ }
194
+ static renderReadme(manifest, findingRefs, beforeRunId, afterRunId) {
195
+ return `# Re-audit comparison-bundle — \`${manifest.featureName}\`
196
+
197
+ > **Mit kell tenned (AI agent):** olvasd át a finding-ek listáját, vesd össze a
198
+ > before/after dom-diff + evidence-diff + a11y-diff fájlokat, és minden finding-re dönts:
199
+ >
200
+ > - **\`verified\`** — a probléma megszűnt (a re-audit ugyanabban az állapotban már nem találja)
201
+ > - **\`reopened\`** — a probléma visszatért
202
+ > - **\`in-progress\`** (partial) — a probléma részben maradt fenn
203
+
204
+ - **Before run-id:** \`${beforeRunId}\`
205
+ - **After run-id:** \`${afterRunId}\`
206
+ - **Feature:** \`${manifest.featureId}\` — ${manifest.featureName}
207
+ - **Re-audited finding-count:** ${findingRefs.length}
208
+
209
+ ## Re-audited finding-ek
210
+
211
+ ${findingRefs.length > 0 ? findingRefs.map((f) => `- \`${f}\``).join('\n') : '*Nincs explicit lista — minden finding-et nézz át.*'}
212
+
213
+ ## Bundle-struktúra
214
+
215
+ - \`dom-diff/<stateId>/<viewport>-<orient>.json\` — DOM-snapshot delta
216
+ - \`evidence-diff/<stateId>/<viewport>-<orient>.json\` — 16 detektor verdict-delta
217
+ - \`a11y-diff/<stateId>/<viewport>-<orient>.json\` — axe-finding delta (ha van)
218
+
219
+ ## Decision-rubric
220
+
221
+ 1. **Nyisd meg az adott finding state × viewport-jához tartozó \`evidence-diff\`-et**.
222
+ Ha a kapcsolódó detektor \`verdictChanged: true\` és \`after: 'clean'\` → erős jel \`verified\`-re.
223
+ 2. **Nyisd meg a \`dom-diff\`-et** ugyanarra a state-viewport-ra. Nézd meg, hogy a finding-re
224
+ vonatkozó DOM-metrika változott-e (pl. modal scrollHeight, body scrollHeight, primary CTA top).
225
+ 3. **Olvasd a screenshot-okat** a \`states/<stateId>/<viewport>-<orient>/full.png\` és \`fold.png\` után-bundle-jéből (after run-id).
226
+ 4. **Dönts** és írd a verdict-et a finding \`status\`-ába (\`verified\` | \`reopened\` | \`in-progress\`).
227
+
228
+ A finding-státusz-FSM megengedett tranzícióit a \`DyE2E_VQA_FindingValidator_Util.canTransition\`
229
+ adja — \`readyForReAudit\` → \`verified\` vagy \`reopened\` a jellemző.
230
+
231
+ ---
232
+
233
+ *Comparison generated by \`@futdevpro/dynamo-e2e/vqa\` \`DyE2E_VQA_ComparisonBundle_Generator\`.*
234
+ `;
235
+ }
236
+ }
237
+ exports.DyE2E_VQA_ComparisonBundle_Generator = DyE2E_VQA_ComparisonBundle_Generator;
238
+ //# sourceMappingURL=comparison-bundle.generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparison-bundle.generator.js","sourceRoot":"","sources":["../../../../src/_modules/vqa/generators/comparison-bundle.generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export * from './capture-spec.generator';
2
+ export * from './ai-agent-readme.template';
3
+ export * from './bundle-summary.template';
4
+ export * from './review-bundle.generator';
5
+ export * from './comparison-bundle.generator';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/_modules/vqa/generators/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./capture-spec.generator"), exports);
18
+ __exportStar(require("./ai-agent-readme.template"), exports);
19
+ __exportStar(require("./bundle-summary.template"), exports);
20
+ __exportStar(require("./review-bundle.generator"), exports);
21
+ __exportStar(require("./comparison-bundle.generator"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/_modules/vqa/generators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,6DAA2C;AAC3C,4DAA0C;AAC1C,4DAA0C;AAC1C,gEAA8C"}
@@ -0,0 +1,49 @@
1
+ import { DyE2E_VQA_FeatureManifest_Interface } from '../_models/interfaces/feature-manifest.interface';
2
+ /**
3
+ * `DyE2E_VQA_ReviewBundle_Generator` — **a fő bedrock-tooling** (MP-E).
4
+ *
5
+ * Egy hívással felépíti a `review-bundles/<featureId>/<runId>/` mappa-struktúrát:
6
+ * - `README.md` — AI-agent review-instrukció (rubric + finding-schema)
7
+ * - `summary.md` — feature × state × viewport tábla
8
+ * - `manifest.json` — a futtatott manifest másolata
9
+ * - `capture-spec.ts` — a generált Playwright spec
10
+ * - `findings/` — üres directory, ahova az AI agent ír (findings.md / findings.json)
11
+ * - `meta/run-id.txt`, `meta/build-id.txt`, `meta/timing.json`
12
+ * - (capture-time után: `screenshots/`, `crops/`, `dom-snapshots/`, `evidence/`, `a11y/`)
13
+ *
14
+ * **A capture-spec ELLEN futtatja a user a `playwright test`-et** → az artifact-ok
15
+ * a megfelelő helyre kerülnek (a generált spec tudja a `VQA_OUT_DIR`-t).
16
+ *
17
+ * **scope-LOCK**: NEM csinál AI-call-ot. A bundle "kész AI-agent-re vár".
18
+ */
19
+ export interface DyE2E_VQA_ReviewBundle_Options {
20
+ /** Override run-ID; default: `run-${Date.now()}`. */
21
+ runId?: string;
22
+ /** Build-azonosító (CICD-build-num / commit-SHA). */
23
+ buildId?: string;
24
+ /** Project-slug a `VQA-<projekt>-...` finding-ID-konvencióhoz. */
25
+ projectSlug?: string;
26
+ /** Skip-eljük-e a capture-spec emit-et (ha a user kézzel írja). Default: false. */
27
+ skipCaptureSpec?: boolean;
28
+ }
29
+ export interface DyE2E_VQA_ReviewBundle_Result {
30
+ bundlePath: string;
31
+ runId: string;
32
+ files: string[];
33
+ validatorErrors: {
34
+ path: string;
35
+ code: string;
36
+ message: string;
37
+ }[];
38
+ }
39
+ export declare class DyE2E_VQA_ReviewBundle_Generator {
40
+ static generate(manifest: DyE2E_VQA_FeatureManifest_Interface, outputBase: string, options?: DyE2E_VQA_ReviewBundle_Options): DyE2E_VQA_ReviewBundle_Result;
41
+ /** A capture-spec futása UTÁN futtatható; csak ellenőriz hogy a kötelező artifact-ok meg vannak. */
42
+ static verifyBundleArtifacts(bundlePath: string, manifest: DyE2E_VQA_FeatureManifest_Interface): {
43
+ ok: boolean;
44
+ missing: string[];
45
+ };
46
+ /** Date.now() egyrétegű wrapper, hogy könnyen mock-olható legyen. */
47
+ private static stableRunStamp;
48
+ }
49
+ //# sourceMappingURL=review-bundle.generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-bundle.generator.d.ts","sourceRoot":"","sources":["../../../../src/_modules/vqa/generators/review-bundle.generator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mCAAmC,EAAE,MAAM,kDAAkD,CAAC;AAMvG;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,8BAA8B;IAC7C,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACpE;AAED,qBAAa,gCAAgC;IAE3C,MAAM,CAAC,QAAQ,CACb,QAAQ,EAAE,mCAAmC,EAC7C,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,8BAA8B,GACvC,6BAA6B;IA8EhC,oGAAoG;IACpG,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,mCAAmC,GAAG;QAC/F,EAAE,EAAE,OAAO,CAAC;QACZ,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB;IAsBD,qEAAqE;IACrE,OAAO,CAAC,MAAM,CAAC,cAAc;CAG9B"}