@futdevpro/dynamo-e2e 1.18.10 → 1.18.12

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 (375) hide show
  1. package/CHANGELOG.md +20 -3
  2. package/LICENSE +21 -0
  3. package/README.md +3 -0
  4. package/build/_modules/contracts/_models/interfaces/form-test-suite-settings.interface.d.ts +8 -0
  5. package/build/_modules/contracts/_models/interfaces/form-test-suite-settings.interface.d.ts.map +1 -1
  6. package/build/_modules/cwv/_collections/cwv-diagnose.util.d.ts +13 -0
  7. package/build/_modules/cwv/_collections/cwv-diagnose.util.d.ts.map +1 -1
  8. package/build/_modules/cwv/_collections/cwv-diagnose.util.js +45 -1
  9. package/build/_modules/cwv/_collections/cwv-diagnose.util.js.map +1 -1
  10. package/build/_modules/cwv/_collections/web-vitals-page-script.const.d.ts.map +1 -1
  11. package/build/_modules/cwv/_collections/web-vitals-page-script.const.js +17 -1
  12. package/build/_modules/cwv/_collections/web-vitals-page-script.const.js.map +1 -1
  13. package/build/_modules/game/_models/game-contracts.interface.d.ts +82 -0
  14. package/build/_modules/game/_models/game-contracts.interface.d.ts.map +1 -0
  15. package/build/_modules/game/_models/game-contracts.interface.js +3 -0
  16. package/build/_modules/game/_models/game-contracts.interface.js.map +1 -0
  17. package/build/_modules/game/game-seam.helper.d.ts +40 -0
  18. package/build/_modules/game/game-seam.helper.d.ts.map +1 -0
  19. package/build/_modules/game/game-seam.helper.js +254 -0
  20. package/build/_modules/game/game-seam.helper.js.map +1 -0
  21. package/build/_modules/game/index.d.ts +4 -0
  22. package/build/_modules/game/index.d.ts.map +1 -0
  23. package/build/_modules/game/index.js +20 -0
  24. package/build/_modules/game/index.js.map +1 -0
  25. package/build/_modules/game/journey-catalog.validator.d.ts +5 -0
  26. package/build/_modules/game/journey-catalog.validator.d.ts.map +1 -0
  27. package/build/_modules/game/journey-catalog.validator.js +244 -0
  28. package/build/_modules/game/journey-catalog.validator.js.map +1 -0
  29. package/build/_modules/generators/_collections/cli-runner.util.d.ts.map +1 -1
  30. package/build/_modules/generators/_collections/cli-runner.util.js +28 -0
  31. package/build/_modules/generators/_collections/cli-runner.util.js.map +1 -1
  32. package/build/_modules/generators/_collections/field-emission.util.d.ts.map +1 -1
  33. package/build/_modules/generators/_collections/field-emission.util.js +51 -7
  34. package/build/_modules/generators/_collections/field-emission.util.js.map +1 -1
  35. package/build/_modules/generators/_collections/form-level-emission.util.d.ts.map +1 -1
  36. package/build/_modules/generators/_collections/form-level-emission.util.js +8 -0
  37. package/build/_modules/generators/_collections/form-level-emission.util.js.map +1 -1
  38. package/build/_modules/generators/_models/form-settings-shape.interface.d.ts +21 -0
  39. package/build/_modules/generators/_models/form-settings-shape.interface.d.ts.map +1 -1
  40. package/build/_modules/generators/form-suite.generator.d.ts +5 -0
  41. package/build/_modules/generators/form-suite.generator.d.ts.map +1 -1
  42. package/build/_modules/generators/form-suite.generator.js +53 -5
  43. package/build/_modules/generators/form-suite.generator.js.map +1 -1
  44. package/build/_modules/presets/_collections/playwright-config.factory.d.ts.map +1 -1
  45. package/build/_modules/presets/_collections/playwright-config.factory.js +6 -0
  46. package/build/_modules/presets/_collections/playwright-config.factory.js.map +1 -1
  47. package/build/_modules/presets/_models/interfaces/playwright-config-options.interface.d.ts +4 -0
  48. package/build/_modules/presets/_models/interfaces/playwright-config-options.interface.d.ts.map +1 -1
  49. package/build/_modules/vqa/_collections/utils/deterministic-finding.util.d.ts +2 -1
  50. package/build/_modules/vqa/_collections/utils/deterministic-finding.util.d.ts.map +1 -1
  51. package/build/_modules/vqa/_collections/utils/deterministic-finding.util.js.map +1 -1
  52. package/build/_modules/vqa/_models/interfaces/feature-manifest.interface.d.ts +29 -2
  53. package/build/_modules/vqa/_models/interfaces/feature-manifest.interface.d.ts.map +1 -1
  54. package/build/_modules/vqa/_models/interfaces/finding.interface.d.ts +2 -1
  55. package/build/_modules/vqa/_models/interfaces/finding.interface.d.ts.map +1 -1
  56. package/build/_modules/vqa/generators/ai-agent-readme.template.js +1 -1
  57. package/build/_modules/vqa/generators/bundle-summary.template.d.ts.map +1 -1
  58. package/build/_modules/vqa/generators/bundle-summary.template.js +1 -1
  59. package/build/_modules/vqa/generators/bundle-summary.template.js.map +1 -1
  60. package/build/_modules/vqa/generators/capture-spec.generator.d.ts +5 -0
  61. package/build/_modules/vqa/generators/capture-spec.generator.d.ts.map +1 -1
  62. package/build/_modules/vqa/generators/capture-spec.generator.js +26 -10
  63. package/build/_modules/vqa/generators/capture-spec.generator.js.map +1 -1
  64. package/build/_modules/vqa/generators/comparison-bundle.generator.d.ts.map +1 -1
  65. package/build/_modules/vqa/generators/comparison-bundle.generator.js +1 -1
  66. package/build/_modules/vqa/generators/comparison-bundle.generator.js.map +1 -1
  67. package/build/_modules/vqa/generators/review-bundle.generator.d.ts.map +1 -1
  68. package/build/_modules/vqa/generators/review-bundle.generator.js +2 -2
  69. package/build/_modules/vqa/generators/review-bundle.generator.js.map +1 -1
  70. package/build/index.d.ts +1 -0
  71. package/build/index.d.ts.map +1 -1
  72. package/build/index.js +2 -1
  73. package/build/index.js.map +1 -1
  74. package/package.json +37 -5
  75. package/.c8rc.json +0 -25
  76. package/.dynamo/pipeline.cicd.config.json +0 -167
  77. package/.dynamo/version-bump.config.json +0 -5
  78. package/.github/workflows/main.yml +0 -35
  79. package/BUILD.md +0 -36
  80. package/CONTRIBUTING.md +0 -90
  81. package/build/_modules/contracts/contracts.spec.d.ts +0 -2
  82. package/build/_modules/contracts/contracts.spec.d.ts.map +0 -1
  83. package/build/_modules/contracts/contracts.spec.js +0 -144
  84. package/build/_modules/contracts/contracts.spec.js.map +0 -1
  85. package/build/_modules/cwv/cwv-comparison.spec.d.ts +0 -2
  86. package/build/_modules/cwv/cwv-comparison.spec.d.ts.map +0 -1
  87. package/build/_modules/cwv/cwv-comparison.spec.js +0 -77
  88. package/build/_modules/cwv/cwv-comparison.spec.js.map +0 -1
  89. package/build/_modules/cwv/cwv-diagnose.spec.d.ts +0 -2
  90. package/build/_modules/cwv/cwv-diagnose.spec.d.ts.map +0 -1
  91. package/build/_modules/cwv/cwv-diagnose.spec.js +0 -78
  92. package/build/_modules/cwv/cwv-diagnose.spec.js.map +0 -1
  93. package/build/_modules/cwv/cwv-suite.generator.spec.d.ts +0 -2
  94. package/build/_modules/cwv/cwv-suite.generator.spec.d.ts.map +0 -1
  95. package/build/_modules/cwv/cwv-suite.generator.spec.js +0 -81
  96. package/build/_modules/cwv/cwv-suite.generator.spec.js.map +0 -1
  97. package/build/_modules/cwv/cwv-summarize.spec.d.ts +0 -2
  98. package/build/_modules/cwv/cwv-summarize.spec.d.ts.map +0 -1
  99. package/build/_modules/cwv/cwv-summarize.spec.js +0 -70
  100. package/build/_modules/cwv/cwv-summarize.spec.js.map +0 -1
  101. package/build/_modules/cwv/inp-emit-integration.spec.d.ts +0 -2
  102. package/build/_modules/cwv/inp-emit-integration.spec.d.ts.map +0 -1
  103. package/build/_modules/cwv/inp-emit-integration.spec.js +0 -43
  104. package/build/_modules/cwv/inp-emit-integration.spec.js.map +0 -1
  105. package/build/_modules/cwv/inp-interaction-driver.spec.d.ts +0 -2
  106. package/build/_modules/cwv/inp-interaction-driver.spec.d.ts.map +0 -1
  107. package/build/_modules/cwv/inp-interaction-driver.spec.js +0 -44
  108. package/build/_modules/cwv/inp-interaction-driver.spec.js.map +0 -1
  109. package/build/_modules/cwv/inp-script.spec.d.ts +0 -2
  110. package/build/_modules/cwv/inp-script.spec.d.ts.map +0 -1
  111. package/build/_modules/cwv/inp-script.spec.js +0 -35
  112. package/build/_modules/cwv/inp-script.spec.js.map +0 -1
  113. package/build/_modules/cwv/per-route-thresholds.spec.d.ts +0 -2
  114. package/build/_modules/cwv/per-route-thresholds.spec.d.ts.map +0 -1
  115. package/build/_modules/cwv/per-route-thresholds.spec.js +0 -37
  116. package/build/_modules/cwv/per-route-thresholds.spec.js.map +0 -1
  117. package/build/_modules/generators/bootstrap.spec.d.ts +0 -2
  118. package/build/_modules/generators/bootstrap.spec.d.ts.map +0 -1
  119. package/build/_modules/generators/bootstrap.spec.js +0 -46
  120. package/build/_modules/generators/bootstrap.spec.js.map +0 -1
  121. package/build/_modules/generators/cli-runner.spec.d.ts +0 -2
  122. package/build/_modules/generators/cli-runner.spec.d.ts.map +0 -1
  123. package/build/_modules/generators/cli-runner.spec.js +0 -93
  124. package/build/_modules/generators/cli-runner.spec.js.map +0 -1
  125. package/build/_modules/generators/config-validator.spec.d.ts +0 -2
  126. package/build/_modules/generators/config-validator.spec.d.ts.map +0 -1
  127. package/build/_modules/generators/config-validator.spec.js +0 -115
  128. package/build/_modules/generators/config-validator.spec.js.map +0 -1
  129. package/build/_modules/generators/doctor.spec.d.ts +0 -2
  130. package/build/_modules/generators/doctor.spec.d.ts.map +0 -1
  131. package/build/_modules/generators/doctor.spec.js +0 -68
  132. package/build/_modules/generators/doctor.spec.js.map +0 -1
  133. package/build/_modules/generators/field-emission-edge.spec.d.ts +0 -2
  134. package/build/_modules/generators/field-emission-edge.spec.d.ts.map +0 -1
  135. package/build/_modules/generators/field-emission-edge.spec.js +0 -164
  136. package/build/_modules/generators/field-emission-edge.spec.js.map +0 -1
  137. package/build/_modules/generators/form-suite.generator.spec.d.ts +0 -2
  138. package/build/_modules/generators/form-suite.generator.spec.d.ts.map +0 -1
  139. package/build/_modules/generators/form-suite.generator.spec.js +0 -188
  140. package/build/_modules/generators/form-suite.generator.spec.js.map +0 -1
  141. package/build/_modules/generators/info.spec.d.ts +0 -2
  142. package/build/_modules/generators/info.spec.d.ts.map +0 -1
  143. package/build/_modules/generators/info.spec.js +0 -42
  144. package/build/_modules/generators/info.spec.js.map +0 -1
  145. package/build/_modules/generators/json-schema.spec.d.ts +0 -2
  146. package/build/_modules/generators/json-schema.spec.d.ts.map +0 -1
  147. package/build/_modules/generators/json-schema.spec.js +0 -81
  148. package/build/_modules/generators/json-schema.spec.js.map +0 -1
  149. package/build/_modules/generators/preset-configs.spec.d.ts +0 -2
  150. package/build/_modules/generators/preset-configs.spec.d.ts.map +0 -1
  151. package/build/_modules/generators/preset-configs.spec.js +0 -53
  152. package/build/_modules/generators/preset-configs.spec.js.map +0 -1
  153. package/build/_modules/generators/test-case-filter-edge.spec.d.ts +0 -2
  154. package/build/_modules/generators/test-case-filter-edge.spec.d.ts.map +0 -1
  155. package/build/_modules/generators/test-case-filter-edge.spec.js +0 -105
  156. package/build/_modules/generators/test-case-filter-edge.spec.js.map +0 -1
  157. package/build/_modules/generators/viewport-suite.generator.spec.d.ts +0 -2
  158. package/build/_modules/generators/viewport-suite.generator.spec.d.ts.map +0 -1
  159. package/build/_modules/generators/viewport-suite.generator.spec.js +0 -59
  160. package/build/_modules/generators/viewport-suite.generator.spec.js.map +0 -1
  161. package/build/_modules/generators/wave-2b-emission.spec.d.ts +0 -2
  162. package/build/_modules/generators/wave-2b-emission.spec.d.ts.map +0 -1
  163. package/build/_modules/generators/wave-2b-emission.spec.js +0 -115
  164. package/build/_modules/generators/wave-2b-emission.spec.js.map +0 -1
  165. package/build/_modules/presets/presets.spec.d.ts +0 -2
  166. package/build/_modules/presets/presets.spec.d.ts.map +0 -1
  167. package/build/_modules/presets/presets.spec.js +0 -286
  168. package/build/_modules/presets/presets.spec.js.map +0 -1
  169. package/build/_modules/runtime/assertion-helpers.spec.d.ts +0 -2
  170. package/build/_modules/runtime/assertion-helpers.spec.d.ts.map +0 -1
  171. package/build/_modules/runtime/assertion-helpers.spec.js +0 -57
  172. package/build/_modules/runtime/assertion-helpers.spec.js.map +0 -1
  173. package/build/_modules/runtime/logger.service.spec.d.ts +0 -2
  174. package/build/_modules/runtime/logger.service.spec.d.ts.map +0 -1
  175. package/build/_modules/runtime/logger.service.spec.js +0 -61
  176. package/build/_modules/runtime/logger.service.spec.js.map +0 -1
  177. package/build/_modules/runtime/login-flow-helper.spec.d.ts +0 -2
  178. package/build/_modules/runtime/login-flow-helper.spec.d.ts.map +0 -1
  179. package/build/_modules/runtime/login-flow-helper.spec.js +0 -74
  180. package/build/_modules/runtime/login-flow-helper.spec.js.map +0 -1
  181. package/build/_modules/runtime/page-objects.spec.d.ts +0 -2
  182. package/build/_modules/runtime/page-objects.spec.d.ts.map +0 -1
  183. package/build/_modules/runtime/page-objects.spec.js +0 -241
  184. package/build/_modules/runtime/page-objects.spec.js.map +0 -1
  185. package/build/_modules/runtime/runtime.spec.d.ts +0 -2
  186. package/build/_modules/runtime/runtime.spec.d.ts.map +0 -1
  187. package/build/_modules/runtime/runtime.spec.js +0 -73
  188. package/build/_modules/runtime/runtime.spec.js.map +0 -1
  189. package/build/_modules/runtime/unique-generator.spec.d.ts +0 -2
  190. package/build/_modules/runtime/unique-generator.spec.d.ts.map +0 -1
  191. package/build/_modules/runtime/unique-generator.spec.js +0 -41
  192. package/build/_modules/runtime/unique-generator.spec.js.map +0 -1
  193. package/build/_modules/runtime/wave-2b-page-objects.spec.d.ts +0 -2
  194. package/build/_modules/runtime/wave-2b-page-objects.spec.d.ts.map +0 -1
  195. package/build/_modules/runtime/wave-2b-page-objects.spec.js +0 -130
  196. package/build/_modules/runtime/wave-2b-page-objects.spec.js.map +0 -1
  197. package/build/_modules/vqa/capture-spec.generator.spec.d.ts +0 -2
  198. package/build/_modules/vqa/capture-spec.generator.spec.d.ts.map +0 -1
  199. package/build/_modules/vqa/capture-spec.generator.spec.js +0 -126
  200. package/build/_modules/vqa/capture-spec.generator.spec.js.map +0 -1
  201. package/build/_modules/vqa/comparison-bundle.generator.spec.d.ts +0 -2
  202. package/build/_modules/vqa/comparison-bundle.generator.spec.d.ts.map +0 -1
  203. package/build/_modules/vqa/comparison-bundle.generator.spec.js +0 -130
  204. package/build/_modules/vqa/comparison-bundle.generator.spec.js.map +0 -1
  205. package/build/_modules/vqa/finding-validator.spec.d.ts +0 -2
  206. package/build/_modules/vqa/finding-validator.spec.d.ts.map +0 -1
  207. package/build/_modules/vqa/finding-validator.spec.js +0 -136
  208. package/build/_modules/vqa/finding-validator.spec.js.map +0 -1
  209. package/build/_modules/vqa/manifest-validator.spec.d.ts +0 -2
  210. package/build/_modules/vqa/manifest-validator.spec.d.ts.map +0 -1
  211. package/build/_modules/vqa/manifest-validator.spec.js +0 -125
  212. package/build/_modules/vqa/manifest-validator.spec.js.map +0 -1
  213. package/build/_modules/vqa/review-bundle.generator.spec.d.ts +0 -2
  214. package/build/_modules/vqa/review-bundle.generator.spec.d.ts.map +0 -1
  215. package/build/_modules/vqa/review-bundle.generator.spec.js +0 -166
  216. package/build/_modules/vqa/review-bundle.generator.spec.js.map +0 -1
  217. package/build/_modules/vqa/wave-7.spec.d.ts +0 -2
  218. package/build/_modules/vqa/wave-7.spec.d.ts.map +0 -1
  219. package/build/_modules/vqa/wave-7.spec.js +0 -203
  220. package/build/_modules/vqa/wave-7.spec.js.map +0 -1
  221. package/coverage/base.css +0 -224
  222. package/coverage/block-navigation.js +0 -87
  223. package/coverage/contracts/_collections/index.html +0 -116
  224. package/coverage/contracts/_collections/index.ts.html +0 -97
  225. package/coverage/contracts/_collections/utils/index.html +0 -116
  226. package/coverage/contracts/_collections/utils/test-id.util.ts.html +0 -172
  227. package/coverage/contracts/_enums/cwv-metric-type.enum.ts.html +0 -145
  228. package/coverage/contracts/_enums/field-test-case-type.enum.ts.html +0 -394
  229. package/coverage/contracts/_enums/index.html +0 -191
  230. package/coverage/contracts/_enums/index.ts.html +0 -100
  231. package/coverage/contracts/_enums/standard-viewport.enum.ts.html +0 -127
  232. package/coverage/contracts/_enums/test-expectation-type.enum.ts.html +0 -133
  233. package/coverage/contracts/_enums/test-run-mode-type.enum.ts.html +0 -130
  234. package/coverage/contracts/index.html +0 -116
  235. package/coverage/contracts/index.ts.html +0 -121
  236. package/coverage/cwv/_collections/cwv-aggregator.util.ts.html +0 -241
  237. package/coverage/cwv/_collections/cwv-comparison.util.ts.html +0 -355
  238. package/coverage/cwv/_collections/cwv-diagnose.util.ts.html +0 -553
  239. package/coverage/cwv/_collections/cwv-emission.util.ts.html +0 -448
  240. package/coverage/cwv/_collections/cwv-summarize.util.ts.html +0 -325
  241. package/coverage/cwv/_collections/index.html +0 -206
  242. package/coverage/cwv/_collections/inp-interaction-script.const.ts.html +0 -304
  243. package/coverage/cwv/_collections/web-vitals-page-script.const.ts.html +0 -331
  244. package/coverage/cwv/cwv-suite.generator.ts.html +0 -277
  245. package/coverage/cwv/index.html +0 -116
  246. package/coverage/favicon.png +0 -0
  247. package/coverage/generators/_collections/cli-runner.util.ts.html +0 -919
  248. package/coverage/generators/_collections/config-validator.util.ts.html +0 -397
  249. package/coverage/generators/_collections/field-emission.util.ts.html +0 -604
  250. package/coverage/generators/_collections/form-level-emission.util.ts.html +0 -220
  251. package/coverage/generators/_collections/index.html +0 -236
  252. package/coverage/generators/_collections/json-schema.util.ts.html +0 -652
  253. package/coverage/generators/_collections/preset-configs.const.ts.html +0 -328
  254. package/coverage/generators/_collections/spec-emission.util.ts.html +0 -298
  255. package/coverage/generators/_collections/test-case-filter.util.ts.html +0 -523
  256. package/coverage/generators/_collections/viewport-emission.util.ts.html +0 -313
  257. package/coverage/generators/form-suite.generator.ts.html +0 -406
  258. package/coverage/generators/index.html +0 -131
  259. package/coverage/generators/viewport-suite.generator.ts.html +0 -307
  260. package/coverage/index.html +0 -266
  261. package/coverage/lcov-report/base.css +0 -224
  262. package/coverage/lcov-report/block-navigation.js +0 -87
  263. package/coverage/lcov-report/contracts/_collections/index.html +0 -116
  264. package/coverage/lcov-report/contracts/_collections/index.ts.html +0 -97
  265. package/coverage/lcov-report/contracts/_collections/utils/index.html +0 -116
  266. package/coverage/lcov-report/contracts/_collections/utils/test-id.util.ts.html +0 -172
  267. package/coverage/lcov-report/contracts/_enums/cwv-metric-type.enum.ts.html +0 -145
  268. package/coverage/lcov-report/contracts/_enums/field-test-case-type.enum.ts.html +0 -394
  269. package/coverage/lcov-report/contracts/_enums/index.html +0 -191
  270. package/coverage/lcov-report/contracts/_enums/index.ts.html +0 -100
  271. package/coverage/lcov-report/contracts/_enums/standard-viewport.enum.ts.html +0 -127
  272. package/coverage/lcov-report/contracts/_enums/test-expectation-type.enum.ts.html +0 -133
  273. package/coverage/lcov-report/contracts/_enums/test-run-mode-type.enum.ts.html +0 -130
  274. package/coverage/lcov-report/contracts/index.html +0 -116
  275. package/coverage/lcov-report/contracts/index.ts.html +0 -121
  276. package/coverage/lcov-report/cwv/_collections/cwv-aggregator.util.ts.html +0 -241
  277. package/coverage/lcov-report/cwv/_collections/cwv-comparison.util.ts.html +0 -355
  278. package/coverage/lcov-report/cwv/_collections/cwv-diagnose.util.ts.html +0 -553
  279. package/coverage/lcov-report/cwv/_collections/cwv-emission.util.ts.html +0 -448
  280. package/coverage/lcov-report/cwv/_collections/cwv-summarize.util.ts.html +0 -325
  281. package/coverage/lcov-report/cwv/_collections/index.html +0 -206
  282. package/coverage/lcov-report/cwv/_collections/inp-interaction-script.const.ts.html +0 -304
  283. package/coverage/lcov-report/cwv/_collections/web-vitals-page-script.const.ts.html +0 -331
  284. package/coverage/lcov-report/cwv/cwv-suite.generator.ts.html +0 -277
  285. package/coverage/lcov-report/cwv/index.html +0 -116
  286. package/coverage/lcov-report/favicon.png +0 -0
  287. package/coverage/lcov-report/generators/_collections/cli-runner.util.ts.html +0 -919
  288. package/coverage/lcov-report/generators/_collections/config-validator.util.ts.html +0 -397
  289. package/coverage/lcov-report/generators/_collections/field-emission.util.ts.html +0 -604
  290. package/coverage/lcov-report/generators/_collections/form-level-emission.util.ts.html +0 -220
  291. package/coverage/lcov-report/generators/_collections/index.html +0 -236
  292. package/coverage/lcov-report/generators/_collections/json-schema.util.ts.html +0 -652
  293. package/coverage/lcov-report/generators/_collections/preset-configs.const.ts.html +0 -328
  294. package/coverage/lcov-report/generators/_collections/spec-emission.util.ts.html +0 -298
  295. package/coverage/lcov-report/generators/_collections/test-case-filter.util.ts.html +0 -523
  296. package/coverage/lcov-report/generators/_collections/viewport-emission.util.ts.html +0 -313
  297. package/coverage/lcov-report/generators/form-suite.generator.ts.html +0 -406
  298. package/coverage/lcov-report/generators/index.html +0 -131
  299. package/coverage/lcov-report/generators/viewport-suite.generator.ts.html +0 -307
  300. package/coverage/lcov-report/index.html +0 -266
  301. package/coverage/lcov-report/prettify.css +0 -1
  302. package/coverage/lcov-report/prettify.js +0 -2
  303. package/coverage/lcov-report/runtime/_collections/assertion-helpers.util.ts.html +0 -205
  304. package/coverage/lcov-report/runtime/_collections/index.html +0 -146
  305. package/coverage/lcov-report/runtime/_collections/unique-generator.util.ts.html +0 -256
  306. package/coverage/lcov-report/runtime/_collections/wait-helpers.util.ts.html +0 -238
  307. package/coverage/lcov-report/runtime/_services/dialog-page-object.ts.html +0 -157
  308. package/coverage/lcov-report/runtime/_services/field-page-object.ts.html +0 -253
  309. package/coverage/lcov-report/runtime/_services/form-page-object.ts.html +0 -184
  310. package/coverage/lcov-report/runtime/_services/index.html +0 -236
  311. package/coverage/lcov-report/runtime/_services/loader-page-object.ts.html +0 -142
  312. package/coverage/lcov-report/runtime/_services/logger.service.ts.html +0 -385
  313. package/coverage/lcov-report/runtime/_services/login-flow-helper.base.ts.html +0 -331
  314. package/coverage/lcov-report/runtime/_services/nav-page-object.ts.html +0 -145
  315. package/coverage/lcov-report/runtime/_services/toast-page-object.ts.html +0 -130
  316. package/coverage/lcov-report/runtime/_services/wave-2b-page-objects.ts.html +0 -397
  317. package/coverage/lcov-report/runtime/index.html +0 -116
  318. package/coverage/lcov-report/runtime/index.ts.html +0 -178
  319. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  320. package/coverage/lcov-report/sorter.js +0 -210
  321. package/coverage/lcov.info +0 -4047
  322. package/coverage/prettify.css +0 -1
  323. package/coverage/prettify.js +0 -2
  324. package/coverage/runtime/_collections/assertion-helpers.util.ts.html +0 -205
  325. package/coverage/runtime/_collections/index.html +0 -146
  326. package/coverage/runtime/_collections/unique-generator.util.ts.html +0 -256
  327. package/coverage/runtime/_collections/wait-helpers.util.ts.html +0 -238
  328. package/coverage/runtime/_services/dialog-page-object.ts.html +0 -157
  329. package/coverage/runtime/_services/field-page-object.ts.html +0 -253
  330. package/coverage/runtime/_services/form-page-object.ts.html +0 -184
  331. package/coverage/runtime/_services/index.html +0 -236
  332. package/coverage/runtime/_services/loader-page-object.ts.html +0 -142
  333. package/coverage/runtime/_services/logger.service.ts.html +0 -385
  334. package/coverage/runtime/_services/login-flow-helper.base.ts.html +0 -331
  335. package/coverage/runtime/_services/nav-page-object.ts.html +0 -145
  336. package/coverage/runtime/_services/toast-page-object.ts.html +0 -130
  337. package/coverage/runtime/_services/wave-2b-page-objects.ts.html +0 -397
  338. package/coverage/runtime/index.html +0 -116
  339. package/coverage/runtime/index.ts.html +0 -178
  340. package/coverage/sort-arrow-sprite.png +0 -0
  341. package/coverage/sorter.js +0 -210
  342. package/coverage/tmp/coverage-228636-1781075225757-0.json +0 -1
  343. package/coverage/tmp/coverage-228704-1781075227108-0.json +0 -1
  344. package/dogfood/PARITY-MATRIX.md +0 -67
  345. package/dogfood/generated/date-range-field-new.spec.ts +0 -54
  346. package/dogfood/generated/password-field-new.spec.ts +0 -97
  347. package/dogfood/generated/radio-select-field-new.spec.ts +0 -69
  348. package/dogfood/generated/slider-field-new.spec.ts +0 -47
  349. package/dogfood/generated/text-field-new.spec.ts +0 -0
  350. package/dogfood/generated-full/checkbox-field-new.spec.ts +0 -56
  351. package/dogfood/generated-full/date-field-new.spec.ts +0 -71
  352. package/dogfood/generated-full/date-range-field-new.spec.ts +0 -54
  353. package/dogfood/generated-full/datetime-field-new.spec.ts +0 -55
  354. package/dogfood/generated-full/multiselect-field-new.spec.ts +0 -69
  355. package/dogfood/generated-full/number-field-new.spec.ts +0 -113
  356. package/dogfood/generated-full/password-field-new.spec.ts +0 -97
  357. package/dogfood/generated-full/radio-select-field-new.spec.ts +0 -69
  358. package/dogfood/generated-full/sandbox-viewport-audit.spec.ts +0 -4643
  359. package/dogfood/generated-full/select-field-new.spec.ts +0 -69
  360. package/dogfood/generated-full/slider-field-new.spec.ts +0 -47
  361. package/dogfood/generated-full/slider-range-field-new.spec.ts +0 -54
  362. package/dogfood/generated-full/text-field-new.spec.ts +0 -0
  363. package/dogfood/generated-full/textarea-field-new.spec.ts +0 -72
  364. package/dogfood/sandbox-bootstrap-full.js +0 -248
  365. package/dogfood/sandbox-bootstrap.js +0 -170
  366. package/examples/minimal-form/README.md +0 -55
  367. package/examples/minimal-form/form-config.json +0 -38
  368. package/examples/multi-form-app/README.md +0 -63
  369. package/examples/multi-form-app/cwv-config.json +0 -14
  370. package/examples/multi-form-app/settings/login-form.json +0 -11
  371. package/examples/multi-form-app/settings/profile-form.json +0 -25
  372. package/examples/multi-form-app/viewport-config.json +0 -12
  373. package/logs/cicd-job.json +0 -3
  374. package/logs/cicd-report.json +0 -3
  375. package/logs/cicd-status.json +0 -3
@@ -0,0 +1,254 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DyE2E_GameSeam_Helper = void 0;
4
+ const DEFAULT_ALLOWED_HOSTS = ['localhost', '127.0.0.1', '::1'];
5
+ const KNOWN_CAPABILITIES = ['seed', 'state', 'clock', 'canvas', 'diagnostics'];
6
+ /**
7
+ * Capability-gated adapter for an explicitly enabled browser game test seam.
8
+ *
9
+ * It never creates business state. Readiness is event-driven; timeout values are hard failure bounds, not fixed
10
+ * sleeps or polling intervals.
11
+ */
12
+ class DyE2E_GameSeam_Helper {
13
+ page;
14
+ seamKey;
15
+ readyEventName;
16
+ optInStorageKey;
17
+ optInQueryParam;
18
+ timeoutMs;
19
+ allowedHosts;
20
+ requiredCapabilities;
21
+ constructor(page, options = {}) {
22
+ this.page = page;
23
+ this.seamKey = options.seamKey ?? '__dye2eGame';
24
+ this.readyEventName = options.readyEventName ?? 'dye2e:game-seam-ready';
25
+ this.optInStorageKey = options.optInStorageKey ?? 'dye2eGame';
26
+ this.optInQueryParam = options.optInQueryParam ?? 'dye2eGame';
27
+ this.timeoutMs = options.timeoutMs ?? 15_000;
28
+ this.allowedHosts = (options.allowedHosts ?? DEFAULT_ALLOWED_HOSTS).map((host) => host.toLowerCase());
29
+ this.requiredCapabilities = options.requiredCapabilities ?? [];
30
+ if (!Number.isFinite(this.timeoutMs) || this.timeoutMs <= 0) {
31
+ throw new Error(`[DyE2E_GameSeam_Helper] timeoutMs must be finite and positive; received ${this.timeoutMs}.`);
32
+ }
33
+ if (![this.seamKey, this.readyEventName, this.optInStorageKey, this.optInQueryParam].every(Boolean)) {
34
+ throw new Error('[DyE2E_GameSeam_Helper] Seam, event and opt-in names must be non-empty.');
35
+ }
36
+ if (this.allowedHosts.length === 0 || this.allowedHosts.some((host) => !host.trim())) {
37
+ throw new Error('[DyE2E_GameSeam_Helper] At least one non-empty allowed host is required.');
38
+ }
39
+ }
40
+ /** Enable the seam before navigation. Non-loopback hosts require an explicit allow-list entry. */
41
+ async enableForNavigation(targetUrl) {
42
+ this.assertAllowedHost(targetUrl);
43
+ await this.page.addInitScript((settings) => {
44
+ if (!settings.allowedHosts.includes(window.location.hostname.toLowerCase())) {
45
+ return;
46
+ }
47
+ try {
48
+ window.sessionStorage.setItem(settings.storageKey, '1');
49
+ }
50
+ catch {
51
+ // A query opt-in remains available when browser policy disables session storage.
52
+ }
53
+ }, { storageKey: this.optInStorageKey, allowedHosts: this.allowedHosts });
54
+ }
55
+ /** Add the explicit query opt-in while preserving existing query parameters. */
56
+ withOptIn(targetUrl) {
57
+ this.assertAllowedHost(targetUrl);
58
+ const parsed = new URL(targetUrl, 'http://localhost');
59
+ parsed.searchParams.set(this.optInQueryParam, '1');
60
+ return targetUrl.startsWith('/') ? `${parsed.pathname}${parsed.search}${parsed.hash}` : parsed.toString();
61
+ }
62
+ /** Wait for one readiness event, or return immediately if the seam is already installed. */
63
+ async waitForSeam() {
64
+ await this.page.evaluate(([key, eventName, timeoutMs]) => new Promise((resolve, reject) => {
65
+ let timeoutId;
66
+ const onReady = (event) => {
67
+ const detail = event.detail;
68
+ const detailKey = typeof detail === 'object' && detail !== null
69
+ ? detail.seamKey
70
+ : detail;
71
+ if (detailKey !== undefined && detailKey !== key) {
72
+ return;
73
+ }
74
+ window.clearTimeout(timeoutId);
75
+ window.removeEventListener(eventName, onReady);
76
+ resolve();
77
+ };
78
+ timeoutId = window.setTimeout(() => {
79
+ window.removeEventListener(eventName, onReady);
80
+ reject(new Error(`[DyE2E_GameSeam_Helper] '${key}' did not dispatch '${eventName}' within ${timeoutMs}ms. `
81
+ + 'Verify host allow-listing, explicit opt-in, seam installation and ready-event dispatch.'));
82
+ }, timeoutMs);
83
+ window.addEventListener(eventName, onReady);
84
+ if (window[key]) {
85
+ window.clearTimeout(timeoutId);
86
+ window.removeEventListener(eventName, onReady);
87
+ resolve();
88
+ }
89
+ }), [this.seamKey, this.readyEventName, this.timeoutMs]);
90
+ await this.requireCapabilities(this.requiredCapabilities);
91
+ }
92
+ async capabilities() {
93
+ return this.page.evaluate((settings) => {
94
+ const { key, knownCapabilities } = settings;
95
+ const seam = window[key];
96
+ if (!seam) {
97
+ throw new Error(`[DyE2E_GameSeam_Helper] Seam '${key}' is not installed.`);
98
+ }
99
+ if (!Array.isArray(seam.capabilities)) {
100
+ return [];
101
+ }
102
+ const invalid = seam.capabilities.filter((value) => !knownCapabilities.includes(value));
103
+ if (invalid.length > 0) {
104
+ throw new Error(`[DyE2E_GameSeam_Helper] Seam '${key}' declares unknown capabilities: ${invalid.join(', ')}.`);
105
+ }
106
+ return [...new Set(seam.capabilities)];
107
+ }, { key: this.seamKey, knownCapabilities: KNOWN_CAPABILITIES });
108
+ }
109
+ async snapshot() {
110
+ return this.invoke('diagnostics', 'getSnapshot');
111
+ }
112
+ async installSeed(seed) {
113
+ if ((typeof seed !== 'string' && typeof seed !== 'number')
114
+ || (typeof seed === 'string' && !seed.trim())
115
+ || (typeof seed === 'number' && !Number.isFinite(seed))) {
116
+ throw new Error(`[DyE2E_GameSeam_Helper] Seed must be a non-empty string or finite number; received '${seed}'.`);
117
+ }
118
+ const accepted = await this.invoke('seed', 'installSeed', seed);
119
+ if (accepted === false) {
120
+ throw new Error(`[DyE2E_GameSeam_Helper] The game rejected seed '${String(seed)}'.`);
121
+ }
122
+ const applied = await this.readSeed();
123
+ if (String(applied) !== String(seed)) {
124
+ throw new Error(`[DyE2E_GameSeam_Helper] Seed read-back mismatch: requested '${String(seed)}', `
125
+ + `received '${String(applied)}'.`);
126
+ }
127
+ }
128
+ async readSeed() {
129
+ const seed = await this.invoke('seed', 'readSeed');
130
+ if ((typeof seed !== 'string' && typeof seed !== 'number')
131
+ || (typeof seed === 'string' && !seed.trim())
132
+ || (typeof seed === 'number' && !Number.isFinite(seed))) {
133
+ throw new Error(`[DyE2E_GameSeam_Helper] readSeed returned an invalid seed '${String(seed)}'.`);
134
+ }
135
+ return seed;
136
+ }
137
+ async exportState() {
138
+ const state = await this.invoke('state', 'exportState');
139
+ this.assertVersionedState(state);
140
+ return state;
141
+ }
142
+ async importState(state) {
143
+ this.assertVersionedState(state);
144
+ const accepted = await this.invoke('state', 'importState', state);
145
+ if (accepted === false) {
146
+ throw new Error('[DyE2E_GameSeam_Helper] The game rejected the imported state.');
147
+ }
148
+ }
149
+ async advanceClock(deltaMs) {
150
+ if (!Number.isFinite(deltaMs) || deltaMs <= 0) {
151
+ throw new Error(`[DyE2E_GameSeam_Helper] deltaMs must be finite and positive; received ${deltaMs}.`);
152
+ }
153
+ const accepted = await this.invoke('clock', 'advanceClock', deltaMs);
154
+ if (accepted === false) {
155
+ throw new Error(`[DyE2E_GameSeam_Helper] The game rejected manual clock advancement by ${deltaMs}ms.`);
156
+ }
157
+ }
158
+ async worldToScreen(point) {
159
+ if (!point || ![point.x, point.y].every(Number.isFinite)) {
160
+ throw new Error('[DyE2E_GameSeam_Helper] World coordinates must be finite numbers.');
161
+ }
162
+ const screenPoint = await this.invoke('canvas', 'worldToScreen', point);
163
+ if (!screenPoint || ![screenPoint.x, screenPoint.y].every(Number.isFinite)) {
164
+ throw new Error('[DyE2E_GameSeam_Helper] worldToScreen returned non-finite screen coordinates.');
165
+ }
166
+ return screenPoint;
167
+ }
168
+ /** One browser round-trip containing the evidence needed to diagnose deterministic game failures. */
169
+ async captureFailureArtifact() {
170
+ return this.page.evaluate(async (key) => {
171
+ const seam = window[key];
172
+ if (!seam) {
173
+ throw new Error(`[DyE2E_GameSeam_Helper] Seam '${key}' is not installed.`);
174
+ }
175
+ const capabilities = Array.isArray(seam.capabilities)
176
+ ? [...seam.capabilities]
177
+ : [];
178
+ const captureErrors = {};
179
+ const call = async (name) => {
180
+ const method = seam[name];
181
+ if (typeof method !== 'function') {
182
+ return undefined;
183
+ }
184
+ try {
185
+ return await method.call(seam);
186
+ }
187
+ catch (error) {
188
+ captureErrors[name] = error instanceof Error ? error.message : String(error);
189
+ return undefined;
190
+ }
191
+ };
192
+ return {
193
+ url: window.location.href,
194
+ viewport: { width: window.innerWidth, height: window.innerHeight },
195
+ capabilities,
196
+ seed: capabilities.includes('seed') ? await call('readSeed') : undefined,
197
+ state: capabilities.includes('state') ? await call('exportState') : undefined,
198
+ snapshot: capabilities.includes('diagnostics') ? await call('getSnapshot') : undefined,
199
+ diagnostics: capabilities.includes('diagnostics')
200
+ ? await call('getDiagnostics')
201
+ : undefined,
202
+ captureErrors: Object.keys(captureErrors).length > 0 ? captureErrors : undefined,
203
+ };
204
+ }, this.seamKey);
205
+ }
206
+ assertAllowedHost(targetUrl) {
207
+ const parsed = new URL(targetUrl, 'http://localhost');
208
+ if (!this.allowedHosts.includes(parsed.hostname)) {
209
+ throw new Error(`[DyE2E_GameSeam_Helper] Refusing to enable a game seam on host '${parsed.hostname}'. `
210
+ + `Allowed hosts: ${this.allowedHosts.join(', ')}. Add a test host explicitly only when its server-side `
211
+ + 'seam guard is enabled.');
212
+ }
213
+ }
214
+ async requireCapabilities(required) {
215
+ if (required.length === 0) {
216
+ return;
217
+ }
218
+ const available = await this.capabilities();
219
+ const missing = required.filter((item) => !available.includes(item));
220
+ if (missing.length > 0) {
221
+ throw new Error(`[DyE2E_GameSeam_Helper] Missing required capabilities: ${missing.join(', ')}. `
222
+ + `Available: ${available.join(', ') || '(none)'}.`);
223
+ }
224
+ }
225
+ assertVersionedState(state) {
226
+ if (!state || typeof state !== 'object') {
227
+ throw new Error('[DyE2E_GameSeam_Helper] A state snapshot must be an object with schemaVersion.');
228
+ }
229
+ const schemaVersion = state.schemaVersion;
230
+ if ((typeof schemaVersion !== 'string' && typeof schemaVersion !== 'number')
231
+ || String(schemaVersion).trim().length === 0
232
+ || (typeof schemaVersion === 'number' && !Number.isFinite(schemaVersion))) {
233
+ throw new Error('[DyE2E_GameSeam_Helper] A state snapshot must carry a non-empty schemaVersion.');
234
+ }
235
+ }
236
+ async invoke(capability, methodName, ...args) {
237
+ return this.page.evaluate(([key, requiredCapability, method, callArgs]) => {
238
+ const seam = window[key];
239
+ if (!seam) {
240
+ throw new Error(`[DyE2E_GameSeam_Helper] Seam '${key}' is not installed.`);
241
+ }
242
+ if (!Array.isArray(seam.capabilities) || !seam.capabilities.includes(requiredCapability)) {
243
+ throw new Error(`[DyE2E_GameSeam_Helper] Method '${method}' requires '${requiredCapability}'.`);
244
+ }
245
+ const fn = seam[method];
246
+ if (typeof fn !== 'function') {
247
+ throw new Error(`[DyE2E_GameSeam_Helper] Capability '${requiredCapability}' declares missing method '${method}'.`);
248
+ }
249
+ return fn.apply(seam, callArgs);
250
+ }, [this.seamKey, capability, methodName, args]);
251
+ }
252
+ }
253
+ exports.DyE2E_GameSeam_Helper = DyE2E_GameSeam_Helper;
254
+ //# sourceMappingURL=game-seam.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"game-seam.helper.js","sourceRoot":"","sources":["../../../src/_modules/game/game-seam.helper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './_models/game-contracts.interface';
2
+ export * from './game-seam.helper';
3
+ export * from './journey-catalog.validator';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/_modules/game/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,20 @@
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("./_models/game-contracts.interface"), exports);
18
+ __exportStar(require("./game-seam.helper"), exports);
19
+ __exportStar(require("./journey-catalog.validator"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/_modules/game/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qEAAmD;AACnD,qDAAmC;AACnC,8DAA4C"}
@@ -0,0 +1,5 @@
1
+ import { DyE2E_GameJourneyCatalog_Validation_Interface } from './_models/game-contracts.interface';
2
+ /** Validate cross-feature, state-carrying journey evidence without executing or manufacturing business state. */
3
+ export declare function DyE2E_validateGameJourneyCatalog(candidate: unknown): DyE2E_GameJourneyCatalog_Validation_Interface;
4
+ export declare function DyE2E_assertGameJourneyCatalog(catalog: unknown): void;
5
+ //# sourceMappingURL=journey-catalog.validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journey-catalog.validator.d.ts","sourceRoot":"","sources":["../../../src/_modules/game/journey-catalog.validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,6CAA6C,EAC9C,MAAM,oCAAoC,CAAC;AAa5C,iHAAiH;AACjH,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,OAAO,GACjB,6CAA6C,CAmJ/C;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAQrE"}
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DyE2E_validateGameJourneyCatalog = DyE2E_validateGameJourneyCatalog;
4
+ exports.DyE2E_assertGameJourneyCatalog = DyE2E_assertGameJourneyCatalog;
5
+ const JOURNEY_VARIANTS = [
6
+ 'happy-path',
7
+ 'decline',
8
+ 'partial',
9
+ 'fallback',
10
+ 'interruption-resume',
11
+ 'access-limited',
12
+ ];
13
+ const CLEANUP_MODES = ['hard-delete', 'restore-snapshot', 'reset-profile'];
14
+ /** Validate cross-feature, state-carrying journey evidence without executing or manufacturing business state. */
15
+ function DyE2E_validateGameJourneyCatalog(candidate) {
16
+ const findings = [];
17
+ const add = (path, code, message) => {
18
+ findings.push({ path, code, message });
19
+ };
20
+ if (!isRecord(candidate)) {
21
+ add('$', 'invalid-catalog', 'The journey catalog must be an object.');
22
+ return { valid: false, findings };
23
+ }
24
+ if (candidate.schemaVersion !== 1) {
25
+ add('$.schemaVersion', 'unsupported-schema', 'Only game journey catalog schemaVersion 1 is supported.');
26
+ }
27
+ if (!Array.isArray(candidate.features)) {
28
+ add('$.features', 'invalid-features', 'Features must be an array.');
29
+ }
30
+ if (!Array.isArray(candidate.journeys)) {
31
+ add('$.journeys', 'invalid-journeys', 'Journeys must be an array.');
32
+ }
33
+ if (!Array.isArray(candidate.requiredVariants)) {
34
+ add('$.requiredVariants', 'invalid-required-variants', 'Required variants must be an array.');
35
+ }
36
+ if (!Array.isArray(candidate.features)
37
+ || !Array.isArray(candidate.journeys)
38
+ || !Array.isArray(candidate.requiredVariants)) {
39
+ return { valid: false, findings };
40
+ }
41
+ const features = candidate.features;
42
+ const journeys = candidate.journeys;
43
+ const requiredVariants = candidate.requiredVariants;
44
+ const featureIds = new Set();
45
+ const journeyIds = new Set();
46
+ if (features.length < 2) {
47
+ add('$.features', 'missing-features', 'At least two journey-linked features are required.');
48
+ }
49
+ features.forEach((feature, index) => {
50
+ if (!isRecord(feature)) {
51
+ add(`$.features[${index}]`, 'invalid-feature', 'Each feature must be an object.');
52
+ return;
53
+ }
54
+ const featureId = feature.id;
55
+ if (typeof featureId !== 'string' || !featureId.trim()) {
56
+ add(`$.features[${index}].id`, 'empty-id', 'Feature id is required.');
57
+ }
58
+ else {
59
+ if (featureIds.has(featureId)) {
60
+ add(`$.features[${index}].id`, 'duplicate-id', `Duplicate feature id '${featureId}'.`);
61
+ }
62
+ featureIds.add(featureId);
63
+ }
64
+ if (!Array.isArray(feature.journeyIds) || feature.journeyIds.length === 0) {
65
+ add(`$.features[${index}].journeyIds`, 'missing-journeys', 'A feature must link to at least one journey.');
66
+ }
67
+ else {
68
+ validateUniqueNonEmptyStrings(feature.journeyIds, `$.features[${index}].journeyIds`, 'journey', add);
69
+ }
70
+ });
71
+ if (journeys.length === 0) {
72
+ add('$.journeys', 'missing-journeys', 'At least one executable journey is required.');
73
+ }
74
+ journeys.forEach((journey, index) => {
75
+ if (!isRecord(journey)) {
76
+ add(`$.journeys[${index}]`, 'invalid-journey', 'Each journey must be an object.');
77
+ return;
78
+ }
79
+ const journeyId = journey.id;
80
+ if (typeof journeyId !== 'string' || !journeyId.trim()) {
81
+ add(`$.journeys[${index}].id`, 'empty-id', 'Journey id is required.');
82
+ }
83
+ else {
84
+ if (journeyIds.has(journeyId)) {
85
+ add(`$.journeys[${index}].id`, 'duplicate-id', `Duplicate journey id '${journeyId}'.`);
86
+ }
87
+ journeyIds.add(journeyId);
88
+ }
89
+ validateJourney(journey, index, add);
90
+ });
91
+ if (!journeys.some((journey) => isRecord(journey) && journey.critical === true)) {
92
+ add('$.journeys', 'missing-critical-journey', 'At least one journey must be marked critical.');
93
+ }
94
+ journeys.forEach((journey, journeyIndex) => {
95
+ if (!isRecord(journey) || typeof journey.id !== 'string' || !Array.isArray(journey.featureIds)) {
96
+ return;
97
+ }
98
+ journey.featureIds.forEach((featureId) => {
99
+ if (typeof featureId !== 'string') {
100
+ return;
101
+ }
102
+ const feature = features.find((candidateFeature) => isRecord(candidateFeature) && candidateFeature.id === featureId);
103
+ if (!isRecord(feature)) {
104
+ add(`$.journeys[${journeyIndex}].featureIds`, 'unknown-feature', `Unknown feature '${featureId}'.`);
105
+ }
106
+ else if (!Array.isArray(feature.journeyIds) || !feature.journeyIds.includes(journey.id)) {
107
+ add(`$.features[${features.indexOf(feature)}].journeyIds`, 'missing-reverse-link', `Feature '${featureId}' does not link back to journey '${journey.id}'.`);
108
+ }
109
+ });
110
+ });
111
+ features.forEach((feature, featureIndex) => {
112
+ if (!isRecord(feature) || typeof feature.id !== 'string' || !Array.isArray(feature.journeyIds)) {
113
+ return;
114
+ }
115
+ feature.journeyIds.forEach((journeyId) => {
116
+ if (typeof journeyId !== 'string') {
117
+ return;
118
+ }
119
+ const journey = journeys.find((candidateJourney) => isRecord(candidateJourney) && candidateJourney.id === journeyId);
120
+ if (!isRecord(journey)) {
121
+ add(`$.features[${featureIndex}].journeyIds`, 'unknown-journey', `Unknown journey '${journeyId}'.`);
122
+ }
123
+ else if (!Array.isArray(journey.featureIds) || !journey.featureIds.includes(feature.id)) {
124
+ add(`$.journeys[${journeys.indexOf(journey)}].featureIds`, 'missing-reverse-link', `Journey '${journeyId}' does not link back to feature '${feature.id}'.`);
125
+ }
126
+ });
127
+ });
128
+ validateUniqueNonEmptyStrings(requiredVariants, '$.requiredVariants', 'required variant', add);
129
+ const presentVariants = new Set(journeys
130
+ .filter(isRecord)
131
+ .map((journey) => journey.variant)
132
+ .filter((variant) => typeof variant === 'string'));
133
+ requiredVariants.forEach((variant) => {
134
+ if (typeof variant !== 'string') {
135
+ return;
136
+ }
137
+ if (!JOURNEY_VARIANTS.includes(variant)) {
138
+ add('$.requiredVariants', 'unknown-variant', `Unknown required variant '${variant}'.`);
139
+ }
140
+ if (!presentVariants.has(variant)) {
141
+ add('$.requiredVariants', 'missing-variant', `No journey provides required variant '${variant}'.`);
142
+ }
143
+ });
144
+ return { valid: findings.length === 0, findings };
145
+ }
146
+ function DyE2E_assertGameJourneyCatalog(catalog) {
147
+ const result = DyE2E_validateGameJourneyCatalog(catalog);
148
+ if (!result.valid) {
149
+ const details = result.findings
150
+ .map((finding) => `${finding.path} [${finding.code}] ${finding.message}`)
151
+ .join('\n');
152
+ throw new Error(`[DyE2E_GameJourneyCatalog] Invalid catalog:\n${details}`);
153
+ }
154
+ }
155
+ function validateJourney(journey, index, add) {
156
+ const root = `$.journeys[${index}]`;
157
+ if (typeof journey.title !== 'string' || !journey.title.trim()) {
158
+ add(`${root}.title`, 'missing-title', 'A human-readable journey title is required.');
159
+ }
160
+ if (typeof journey.critical !== 'boolean') {
161
+ add(`${root}.critical`, 'invalid-criticality', 'Journey criticality must be a boolean.');
162
+ }
163
+ if (journey.serial !== true) {
164
+ add(`${root}.serial`, 'not-serial', 'A state-carrying journey must run serially.');
165
+ }
166
+ if (!Array.isArray(journey.featureIds)) {
167
+ add(`${root}.featureIds`, 'invalid-features', 'Journey featureIds must be an array.');
168
+ }
169
+ else {
170
+ validateUniqueNonEmptyStrings(journey.featureIds, `${root}.featureIds`, 'feature', add);
171
+ const uniqueFeatureIds = new Set(journey.featureIds.filter((value) => typeof value === 'string' && value.trim().length > 0));
172
+ if (uniqueFeatureIds.size < 2) {
173
+ add(`${root}.featureIds`, 'not-cross-feature', 'A journey must cross at least two unique features.');
174
+ }
175
+ }
176
+ if (typeof journey.variant !== 'string' || !JOURNEY_VARIANTS.includes(journey.variant)) {
177
+ add(`${root}.variant`, 'unknown-variant', `Unknown journey variant '${String(journey.variant)}'.`);
178
+ }
179
+ if (!Array.isArray(journey.evidenceTestIds) || journey.evidenceTestIds.length === 0) {
180
+ add(`${root}.evidenceTestIds`, 'missing-evidence', 'At least one executable evidence test id is required.');
181
+ }
182
+ else {
183
+ validateUniqueNonEmptyStrings(journey.evidenceTestIds, `${root}.evidenceTestIds`, 'evidence test', add);
184
+ }
185
+ if (!Array.isArray(journey.steps) || journey.steps.length < 2) {
186
+ add(`${root}.steps`, 'insufficient-steps', 'A journey must contain at least two ordered steps.');
187
+ }
188
+ else {
189
+ const stepIds = new Set();
190
+ journey.steps.forEach((step, stepIndex) => {
191
+ if (!isRecord(step) || typeof step.id !== 'string' || !step.id.trim()) {
192
+ add(`${root}.steps[${stepIndex}].id`, 'empty-step', 'Step id is required.');
193
+ return;
194
+ }
195
+ if (typeof step.businessAssertion !== 'string' || !step.businessAssertion.trim()) {
196
+ add(`${root}.steps[${stepIndex}].businessAssertion`, 'missing-business-assertion', 'Assertion is required.');
197
+ }
198
+ if (stepIds.has(step.id)) {
199
+ add(`${root}.steps[${stepIndex}].id`, 'duplicate-step', `Duplicate step id '${step.id}'.`);
200
+ }
201
+ if (stepIndex === 0 && step.consumesStateFromStepId !== undefined) {
202
+ add(`${root}.steps[${stepIndex}].consumesStateFromStepId`, 'unexpected-state-source', 'The first journey step cannot consume state from an earlier step.');
203
+ }
204
+ else if (stepIndex > 0) {
205
+ const previousStep = journey.steps[stepIndex - 1];
206
+ const expectedPrevious = isRecord(previousStep) ? previousStep.id : undefined;
207
+ if (typeof expectedPrevious !== 'string' || step.consumesStateFromStepId !== expectedPrevious) {
208
+ add(`${root}.steps[${stepIndex}].consumesStateFromStepId`, 'broken-state-chain', `Step must consume state from immediately preceding step '${String(expectedPrevious)}'.`);
209
+ }
210
+ }
211
+ stepIds.add(step.id);
212
+ });
213
+ }
214
+ if (typeof journey.valueOutcome !== 'string' || !journey.valueOutcome.trim()) {
215
+ add(`${root}.valueOutcome`, 'missing-value-outcome', 'The player-value outcome is required.');
216
+ }
217
+ if (!isRecord(journey.cleanup)
218
+ || typeof journey.cleanup.owner !== 'string'
219
+ || !journey.cleanup.owner.trim()
220
+ || typeof journey.cleanup.businessAssertion !== 'string'
221
+ || !journey.cleanup.businessAssertion.trim()) {
222
+ add(`${root}.cleanup`, 'incomplete-cleanup', 'Cleanup owner and cleanup business assertion are required.');
223
+ }
224
+ else if (typeof journey.cleanup.mode !== 'string' || !CLEANUP_MODES.includes(journey.cleanup.mode)) {
225
+ add(`${root}.cleanup.mode`, 'invalid-cleanup-mode', `Unknown cleanup mode '${String(journey.cleanup.mode)}'.`);
226
+ }
227
+ }
228
+ function validateUniqueNonEmptyStrings(values, path, label, add) {
229
+ const unique = new Set();
230
+ values.forEach((value, index) => {
231
+ if (typeof value !== 'string' || !value.trim()) {
232
+ add(`${path}[${index}]`, 'empty-reference', `A non-empty ${label} id is required.`);
233
+ return;
234
+ }
235
+ if (unique.has(value)) {
236
+ add(`${path}[${index}]`, 'duplicate-reference', `Duplicate ${label} id '${value}'.`);
237
+ }
238
+ unique.add(value);
239
+ });
240
+ }
241
+ function isRecord(value) {
242
+ return typeof value === 'object' && value !== null;
243
+ }
244
+ //# sourceMappingURL=journey-catalog.validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journey-catalog.validator.js","sourceRoot":"","sources":["../../../src/_modules/game/journey-catalog.validator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cli-runner.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/generators/_collections/cli-runner.util.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,qBAAa,oBAAoB;IAE/B,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAsBpF,MAAM,CAAC,QAAQ,IAAI,MAAM;IA4DzB;;;OAGG;IACH,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IA0D/C;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;QAAE,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;QAAC,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;KAAE,GAAG;QAC9H,YAAY,EAAE,OAAO,CAAC;QACtB,iBAAiB,EAAE,OAAO,CAAC;QAC3B,mBAAmB,EAAE,OAAO,CAAC;QAC7B,SAAS,EAAE,OAAO,CAAC;QACnB,aAAa,EAAE,OAAO,CAAC;QACvB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB;IA2CD,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI3C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM;IAuB9D;;;OAGG;IACH,MAAM,CAAC,WAAW,CAChB,OAAO,EAAE,qBAAqB,GAAG,yBAAyB,GAAG,mBAAmB,EAChF,UAAU,EAAE,MAAM,GACjB,MAAM;CAaV"}
1
+ {"version":3,"file":"cli-runner.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/generators/_collections/cli-runner.util.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,qBAAa,oBAAoB;IAE/B,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAsBpF,MAAM,CAAC,QAAQ,IAAI,MAAM;IAwFzB;;;OAGG;IACH,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IA0D/C;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;QAAE,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;QAAC,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;KAAE,GAAG;QAC9H,YAAY,EAAE,OAAO,CAAC;QACtB,iBAAiB,EAAE,OAAO,CAAC;QAC3B,mBAAmB,EAAE,OAAO,CAAC;QAC7B,SAAS,EAAE,OAAO,CAAC;QACnB,aAAa,EAAE,OAAO,CAAC;QACvB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB;IA2CD,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI3C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM;IAuB9D;;;OAGG;IACH,MAAM,CAAC,WAAW,CAChB,OAAO,EAAE,qBAAqB,GAAG,yBAAyB,GAAG,mBAAmB,EAChF,UAAU,EAAE,MAAM,GACjB,MAAM;CAaV"}
@@ -50,9 +50,37 @@ Commands:
50
50
  info Show registered field-types + CLI capabilities
51
51
  schema Print JSON Schema for a config type
52
52
  validate-config Validate a config file against its JSON Schema
53
+ preset List built-in configs, or print one (--name)
53
54
  version Print package version
54
55
  help This message
55
56
 
57
+ Visual QA (/vqa) commands:
58
+ validate-manifest Validate a VQA state-manifest JSON
59
+ validate-finding Validate a VQA finding JSON
60
+ generate-review-bundle Manifest -> review bundle (capture-spec, README, summary)
61
+ generate-comparison-bundle Before/after capture sets -> comparison bundle
62
+ bundle-summary Print an existing bundle's summary.md
63
+
64
+ Flags (preset):
65
+ --name <preset> Print this preset as JSON (omit to list all)
66
+
67
+ Flags (validate-manifest / validate-finding):
68
+ --manifest <path> Manifest JSON to validate (validate-manifest)
69
+ --finding <path> Finding JSON to validate (validate-finding)
70
+
71
+ Flags (generate-review-bundle):
72
+ --manifest <path> Source state-manifest JSON (required)
73
+ --out <path> Output base dir (default: ./review-bundles)
74
+
75
+ Flags (generate-comparison-bundle):
76
+ --before <path> Baseline capture dir (required)
77
+ --after <path> Candidate capture dir (required)
78
+ --manifest <path> State-manifest JSON (required)
79
+ --findings <path> Optional finding-set JSON
80
+
81
+ Flags (bundle-summary):
82
+ --bundle <path> Bundle dir containing manifest.json + summary.md
83
+
56
84
  Flags (generate-form-suite):
57
85
  --config <path> Path to JSON config (formSettings, formRoute, ...)
58
86
  --out <path> Output spec.ts path