@futdevpro/dynamo-e2e 1.5.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 (472) hide show
  1. package/.c8rc.json +25 -0
  2. package/.dynamo/pipeline.cicd.config.json +137 -0
  3. package/.dynamo/version-bump.config.json +5 -0
  4. package/.github/workflows/main.yml +29 -0
  5. package/BUILD.md +36 -0
  6. package/README.md +68 -0
  7. package/bin/dye2e.js +72 -0
  8. package/build/_modules/contracts/_collections/constants/cwv-default-thresholds.const.d.ts +10 -0
  9. package/build/_modules/contracts/_collections/constants/cwv-default-thresholds.const.d.ts.map +1 -0
  10. package/build/_modules/contracts/_collections/constants/cwv-default-thresholds.const.js +24 -0
  11. package/build/_modules/contracts/_collections/constants/cwv-default-thresholds.const.js.map +1 -0
  12. package/build/_modules/contracts/_collections/constants/standard-viewports.const.d.ts +9 -0
  13. package/build/_modules/contracts/_collections/constants/standard-viewports.const.d.ts.map +1 -0
  14. package/build/_modules/contracts/_collections/constants/standard-viewports.const.js +75 -0
  15. package/build/_modules/contracts/_collections/constants/standard-viewports.const.js.map +1 -0
  16. package/build/_modules/contracts/_collections/index.d.ts +5 -0
  17. package/build/_modules/contracts/_collections/index.d.ts.map +1 -0
  18. package/build/_modules/contracts/_collections/index.js +21 -0
  19. package/build/_modules/contracts/_collections/index.js.map +1 -0
  20. package/build/_modules/contracts/_collections/test-case-sets/checkbox-field-test-cases.const.d.ts +3 -0
  21. package/build/_modules/contracts/_collections/test-case-sets/checkbox-field-test-cases.const.d.ts.map +1 -0
  22. package/build/_modules/contracts/_collections/test-case-sets/checkbox-field-test-cases.const.js +52 -0
  23. package/build/_modules/contracts/_collections/test-case-sets/checkbox-field-test-cases.const.js.map +1 -0
  24. package/build/_modules/contracts/_collections/test-case-sets/date-field-test-cases.const.d.ts +8 -0
  25. package/build/_modules/contracts/_collections/test-case-sets/date-field-test-cases.const.d.ts.map +1 -0
  26. package/build/_modules/contracts/_collections/test-case-sets/date-field-test-cases.const.js +120 -0
  27. package/build/_modules/contracts/_collections/test-case-sets/date-field-test-cases.const.js.map +1 -0
  28. package/build/_modules/contracts/_collections/test-case-sets/field-type-registry.const.d.ts +18 -0
  29. package/build/_modules/contracts/_collections/test-case-sets/field-type-registry.const.d.ts.map +1 -0
  30. package/build/_modules/contracts/_collections/test-case-sets/field-type-registry.const.js +49 -0
  31. package/build/_modules/contracts/_collections/test-case-sets/field-type-registry.const.js.map +1 -0
  32. package/build/_modules/contracts/_collections/test-case-sets/index.d.ts +10 -0
  33. package/build/_modules/contracts/_collections/test-case-sets/index.d.ts.map +1 -0
  34. package/build/_modules/contracts/_collections/test-case-sets/index.js +26 -0
  35. package/build/_modules/contracts/_collections/test-case-sets/index.js.map +1 -0
  36. package/build/_modules/contracts/_collections/test-case-sets/multiselect-field-test-cases.const.d.ts +6 -0
  37. package/build/_modules/contracts/_collections/test-case-sets/multiselect-field-test-cases.const.d.ts.map +1 -0
  38. package/build/_modules/contracts/_collections/test-case-sets/multiselect-field-test-cases.const.js +53 -0
  39. package/build/_modules/contracts/_collections/test-case-sets/multiselect-field-test-cases.const.js.map +1 -0
  40. package/build/_modules/contracts/_collections/test-case-sets/number-field-test-cases.const.d.ts +10 -0
  41. package/build/_modules/contracts/_collections/test-case-sets/number-field-test-cases.const.d.ts.map +1 -0
  42. package/build/_modules/contracts/_collections/test-case-sets/number-field-test-cases.const.js +102 -0
  43. package/build/_modules/contracts/_collections/test-case-sets/number-field-test-cases.const.js.map +1 -0
  44. package/build/_modules/contracts/_collections/test-case-sets/password-field-test-cases.const.d.ts +7 -0
  45. package/build/_modules/contracts/_collections/test-case-sets/password-field-test-cases.const.d.ts.map +1 -0
  46. package/build/_modules/contracts/_collections/test-case-sets/password-field-test-cases.const.js +85 -0
  47. package/build/_modules/contracts/_collections/test-case-sets/password-field-test-cases.const.js.map +1 -0
  48. package/build/_modules/contracts/_collections/test-case-sets/select-field-test-cases.const.d.ts +7 -0
  49. package/build/_modules/contracts/_collections/test-case-sets/select-field-test-cases.const.d.ts.map +1 -0
  50. package/build/_modules/contracts/_collections/test-case-sets/select-field-test-cases.const.js +57 -0
  51. package/build/_modules/contracts/_collections/test-case-sets/select-field-test-cases.const.js.map +1 -0
  52. package/build/_modules/contracts/_collections/test-case-sets/slider-field-test-cases.const.d.ts +7 -0
  53. package/build/_modules/contracts/_collections/test-case-sets/slider-field-test-cases.const.d.ts.map +1 -0
  54. package/build/_modules/contracts/_collections/test-case-sets/slider-field-test-cases.const.js +67 -0
  55. package/build/_modules/contracts/_collections/test-case-sets/slider-field-test-cases.const.js.map +1 -0
  56. package/build/_modules/contracts/_collections/test-case-sets/text-field-test-cases.const.d.ts +10 -0
  57. package/build/_modules/contracts/_collections/test-case-sets/text-field-test-cases.const.d.ts.map +1 -0
  58. package/build/_modules/contracts/_collections/test-case-sets/text-field-test-cases.const.js +0 -0
  59. package/build/_modules/contracts/_collections/test-case-sets/text-field-test-cases.const.js.map +1 -0
  60. package/build/_modules/contracts/_collections/test-case-sets/textarea-field-test-cases.const.d.ts +3 -0
  61. package/build/_modules/contracts/_collections/test-case-sets/textarea-field-test-cases.const.d.ts.map +1 -0
  62. package/build/_modules/contracts/_collections/test-case-sets/textarea-field-test-cases.const.js +58 -0
  63. package/build/_modules/contracts/_collections/test-case-sets/textarea-field-test-cases.const.js.map +1 -0
  64. package/build/_modules/contracts/_collections/utils/test-id.util.d.ts +13 -0
  65. package/build/_modules/contracts/_collections/utils/test-id.util.d.ts.map +1 -0
  66. package/build/_modules/contracts/_collections/utils/test-id.util.js +30 -0
  67. package/build/_modules/contracts/_collections/utils/test-id.util.js.map +1 -0
  68. package/build/_modules/contracts/_enums/cwv-metric-type.enum.d.ts +21 -0
  69. package/build/_modules/contracts/_enums/cwv-metric-type.enum.d.ts.map +1 -0
  70. package/build/_modules/contracts/_enums/cwv-metric-type.enum.js +25 -0
  71. package/build/_modules/contracts/_enums/cwv-metric-type.enum.js.map +1 -0
  72. package/build/_modules/contracts/_enums/field-test-case-type.enum.d.ts +83 -0
  73. package/build/_modules/contracts/_enums/field-test-case-type.enum.d.ts.map +1 -0
  74. package/build/_modules/contracts/_enums/field-test-case-type.enum.js +98 -0
  75. package/build/_modules/contracts/_enums/field-test-case-type.enum.js.map +1 -0
  76. package/build/_modules/contracts/_enums/index.d.ts +6 -0
  77. package/build/_modules/contracts/_enums/index.d.ts.map +1 -0
  78. package/build/_modules/contracts/_enums/index.js +22 -0
  79. package/build/_modules/contracts/_enums/index.js.map +1 -0
  80. package/build/_modules/contracts/_enums/standard-viewport.enum.d.ts +15 -0
  81. package/build/_modules/contracts/_enums/standard-viewport.enum.d.ts.map +1 -0
  82. package/build/_modules/contracts/_enums/standard-viewport.enum.js +19 -0
  83. package/build/_modules/contracts/_enums/standard-viewport.enum.js.map +1 -0
  84. package/build/_modules/contracts/_enums/test-expectation-type.enum.d.ts +17 -0
  85. package/build/_modules/contracts/_enums/test-expectation-type.enum.d.ts.map +1 -0
  86. package/build/_modules/contracts/_enums/test-expectation-type.enum.js +21 -0
  87. package/build/_modules/contracts/_enums/test-expectation-type.enum.js.map +1 -0
  88. package/build/_modules/contracts/_enums/test-run-mode-type.enum.d.ts +16 -0
  89. package/build/_modules/contracts/_enums/test-run-mode-type.enum.d.ts.map +1 -0
  90. package/build/_modules/contracts/_enums/test-run-mode-type.enum.js +20 -0
  91. package/build/_modules/contracts/_enums/test-run-mode-type.enum.js.map +1 -0
  92. package/build/_modules/contracts/_models/data-models/field-test-case-set.data-model.d.ts +19 -0
  93. package/build/_modules/contracts/_models/data-models/field-test-case-set.data-model.d.ts.map +1 -0
  94. package/build/_modules/contracts/_models/data-models/field-test-case-set.data-model.js +24 -0
  95. package/build/_modules/contracts/_models/data-models/field-test-case-set.data-model.js.map +1 -0
  96. package/build/_modules/contracts/_models/data-models/field-test-case.data-model.d.ts +37 -0
  97. package/build/_modules/contracts/_models/data-models/field-test-case.data-model.d.ts.map +1 -0
  98. package/build/_modules/contracts/_models/data-models/field-test-case.data-model.js +43 -0
  99. package/build/_modules/contracts/_models/data-models/field-test-case.data-model.js.map +1 -0
  100. package/build/_modules/contracts/_models/data-models/index.d.ts +3 -0
  101. package/build/_modules/contracts/_models/data-models/index.d.ts.map +1 -0
  102. package/build/_modules/contracts/_models/data-models/index.js +19 -0
  103. package/build/_modules/contracts/_models/data-models/index.js.map +1 -0
  104. package/build/_modules/contracts/_models/interfaces/cwv-thresholds.interface.d.ts +16 -0
  105. package/build/_modules/contracts/_models/interfaces/cwv-thresholds.interface.d.ts.map +1 -0
  106. package/build/_modules/contracts/_models/interfaces/cwv-thresholds.interface.js +3 -0
  107. package/build/_modules/contracts/_models/interfaces/cwv-thresholds.interface.js.map +1 -0
  108. package/build/_modules/contracts/_models/interfaces/form-test-suite-settings.interface.d.ts +45 -0
  109. package/build/_modules/contracts/_models/interfaces/form-test-suite-settings.interface.d.ts.map +1 -0
  110. package/build/_modules/contracts/_models/interfaces/form-test-suite-settings.interface.js +3 -0
  111. package/build/_modules/contracts/_models/interfaces/form-test-suite-settings.interface.js.map +1 -0
  112. package/build/_modules/contracts/_models/interfaces/index.d.ts +4 -0
  113. package/build/_modules/contracts/_models/interfaces/index.d.ts.map +1 -0
  114. package/build/_modules/contracts/_models/interfaces/index.js +20 -0
  115. package/build/_modules/contracts/_models/interfaces/index.js.map +1 -0
  116. package/build/_modules/contracts/_models/interfaces/viewport.interface.d.ts +16 -0
  117. package/build/_modules/contracts/_models/interfaces/viewport.interface.d.ts.map +1 -0
  118. package/build/_modules/contracts/_models/interfaces/viewport.interface.js +3 -0
  119. package/build/_modules/contracts/_models/interfaces/viewport.interface.js.map +1 -0
  120. package/build/_modules/contracts/contracts.spec.d.ts +2 -0
  121. package/build/_modules/contracts/contracts.spec.d.ts.map +1 -0
  122. package/build/_modules/contracts/contracts.spec.js +144 -0
  123. package/build/_modules/contracts/contracts.spec.js.map +1 -0
  124. package/build/_modules/contracts/index.d.ts +6 -0
  125. package/build/_modules/contracts/index.d.ts.map +1 -0
  126. package/build/_modules/contracts/index.js +26 -0
  127. package/build/_modules/contracts/index.js.map +1 -0
  128. package/build/_modules/cwv/_collections/cwv-aggregator.util.d.ts +23 -0
  129. package/build/_modules/cwv/_collections/cwv-aggregator.util.d.ts.map +1 -0
  130. package/build/_modules/cwv/_collections/cwv-aggregator.util.js +50 -0
  131. package/build/_modules/cwv/_collections/cwv-aggregator.util.js.map +1 -0
  132. package/build/_modules/cwv/_collections/cwv-emission.util.d.ts +18 -0
  133. package/build/_modules/cwv/_collections/cwv-emission.util.d.ts.map +1 -0
  134. package/build/_modules/cwv/_collections/cwv-emission.util.js +95 -0
  135. package/build/_modules/cwv/_collections/cwv-emission.util.js.map +1 -0
  136. package/build/_modules/cwv/_collections/web-vitals-page-script.const.d.ts +11 -0
  137. package/build/_modules/cwv/_collections/web-vitals-page-script.const.d.ts.map +1 -0
  138. package/build/_modules/cwv/_collections/web-vitals-page-script.const.js +86 -0
  139. package/build/_modules/cwv/_collections/web-vitals-page-script.const.js.map +1 -0
  140. package/build/_modules/cwv/_models/cwv-measurement.data-model.d.ts +22 -0
  141. package/build/_modules/cwv/_models/cwv-measurement.data-model.d.ts.map +1 -0
  142. package/build/_modules/cwv/_models/cwv-measurement.data-model.js +28 -0
  143. package/build/_modules/cwv/_models/cwv-measurement.data-model.js.map +1 -0
  144. package/build/_modules/cwv/_models/cwv-suite-generate-options.interface.d.ts +22 -0
  145. package/build/_modules/cwv/_models/cwv-suite-generate-options.interface.d.ts.map +1 -0
  146. package/build/_modules/cwv/_models/cwv-suite-generate-options.interface.js +3 -0
  147. package/build/_modules/cwv/_models/cwv-suite-generate-options.interface.js.map +1 -0
  148. package/build/_modules/cwv/_models/index.d.ts +3 -0
  149. package/build/_modules/cwv/_models/index.d.ts.map +1 -0
  150. package/build/_modules/cwv/_models/index.js +19 -0
  151. package/build/_modules/cwv/_models/index.js.map +1 -0
  152. package/build/_modules/cwv/cwv-suite.generator.d.ts +13 -0
  153. package/build/_modules/cwv/cwv-suite.generator.d.ts.map +1 -0
  154. package/build/_modules/cwv/cwv-suite.generator.js +38 -0
  155. package/build/_modules/cwv/cwv-suite.generator.js.map +1 -0
  156. package/build/_modules/cwv/cwv-suite.generator.spec.d.ts +2 -0
  157. package/build/_modules/cwv/cwv-suite.generator.spec.d.ts.map +1 -0
  158. package/build/_modules/cwv/cwv-suite.generator.spec.js +81 -0
  159. package/build/_modules/cwv/cwv-suite.generator.spec.js.map +1 -0
  160. package/build/_modules/cwv/index.d.ts +10 -0
  161. package/build/_modules/cwv/index.d.ts.map +1 -0
  162. package/build/_modules/cwv/index.js +27 -0
  163. package/build/_modules/cwv/index.js.map +1 -0
  164. package/build/_modules/generators/_collections/cli-runner.util.d.ts +20 -0
  165. package/build/_modules/generators/_collections/cli-runner.util.d.ts.map +1 -0
  166. package/build/_modules/generators/_collections/cli-runner.util.js +87 -0
  167. package/build/_modules/generators/_collections/cli-runner.util.js.map +1 -0
  168. package/build/_modules/generators/_collections/field-emission.util.d.ts +24 -0
  169. package/build/_modules/generators/_collections/field-emission.util.d.ts.map +1 -0
  170. package/build/_modules/generators/_collections/field-emission.util.js +102 -0
  171. package/build/_modules/generators/_collections/field-emission.util.js.map +1 -0
  172. package/build/_modules/generators/_collections/form-level-emission.util.d.ts +12 -0
  173. package/build/_modules/generators/_collections/form-level-emission.util.d.ts.map +1 -0
  174. package/build/_modules/generators/_collections/form-level-emission.util.js +43 -0
  175. package/build/_modules/generators/_collections/form-level-emission.util.js.map +1 -0
  176. package/build/_modules/generators/_collections/spec-emission.util.d.ts +21 -0
  177. package/build/_modules/generators/_collections/spec-emission.util.d.ts.map +1 -0
  178. package/build/_modules/generators/_collections/spec-emission.util.js +71 -0
  179. package/build/_modules/generators/_collections/spec-emission.util.js.map +1 -0
  180. package/build/_modules/generators/_collections/test-case-filter.util.d.ts +25 -0
  181. package/build/_modules/generators/_collections/test-case-filter.util.d.ts.map +1 -0
  182. package/build/_modules/generators/_collections/test-case-filter.util.js +127 -0
  183. package/build/_modules/generators/_collections/test-case-filter.util.js.map +1 -0
  184. package/build/_modules/generators/_collections/viewport-emission.util.d.ts +23 -0
  185. package/build/_modules/generators/_collections/viewport-emission.util.d.ts.map +1 -0
  186. package/build/_modules/generators/_collections/viewport-emission.util.js +61 -0
  187. package/build/_modules/generators/_collections/viewport-emission.util.js.map +1 -0
  188. package/build/_modules/generators/_models/form-settings-shape.interface.d.ts +59 -0
  189. package/build/_modules/generators/_models/form-settings-shape.interface.d.ts.map +1 -0
  190. package/build/_modules/generators/_models/form-settings-shape.interface.js +11 -0
  191. package/build/_modules/generators/_models/form-settings-shape.interface.js.map +1 -0
  192. package/build/_modules/generators/_models/form-suite-generate-options.interface.d.ts +23 -0
  193. package/build/_modules/generators/_models/form-suite-generate-options.interface.d.ts.map +1 -0
  194. package/build/_modules/generators/_models/form-suite-generate-options.interface.js +3 -0
  195. package/build/_modules/generators/_models/form-suite-generate-options.interface.js.map +1 -0
  196. package/build/_modules/generators/_models/index.d.ts +5 -0
  197. package/build/_modules/generators/_models/index.d.ts.map +1 -0
  198. package/build/_modules/generators/_models/index.js +21 -0
  199. package/build/_modules/generators/_models/index.js.map +1 -0
  200. package/build/_modules/generators/_models/route-descriptor.interface.d.ts +18 -0
  201. package/build/_modules/generators/_models/route-descriptor.interface.d.ts.map +1 -0
  202. package/build/_modules/generators/_models/route-descriptor.interface.js +3 -0
  203. package/build/_modules/generators/_models/route-descriptor.interface.js.map +1 -0
  204. package/build/_modules/generators/_models/viewport-suite-generate-options.interface.d.ts +36 -0
  205. package/build/_modules/generators/_models/viewport-suite-generate-options.interface.d.ts.map +1 -0
  206. package/build/_modules/generators/_models/viewport-suite-generate-options.interface.js +3 -0
  207. package/build/_modules/generators/_models/viewport-suite-generate-options.interface.js.map +1 -0
  208. package/build/_modules/generators/cli-runner.spec.d.ts +2 -0
  209. package/build/_modules/generators/cli-runner.spec.d.ts.map +1 -0
  210. package/build/_modules/generators/cli-runner.spec.js +93 -0
  211. package/build/_modules/generators/cli-runner.spec.js.map +1 -0
  212. package/build/_modules/generators/field-emission-edge.spec.d.ts +2 -0
  213. package/build/_modules/generators/field-emission-edge.spec.d.ts.map +1 -0
  214. package/build/_modules/generators/field-emission-edge.spec.js +115 -0
  215. package/build/_modules/generators/field-emission-edge.spec.js.map +1 -0
  216. package/build/_modules/generators/form-suite.generator.d.ts +24 -0
  217. package/build/_modules/generators/form-suite.generator.d.ts.map +1 -0
  218. package/build/_modules/generators/form-suite.generator.js +87 -0
  219. package/build/_modules/generators/form-suite.generator.js.map +1 -0
  220. package/build/_modules/generators/form-suite.generator.spec.d.ts +2 -0
  221. package/build/_modules/generators/form-suite.generator.spec.d.ts.map +1 -0
  222. package/build/_modules/generators/form-suite.generator.spec.js +144 -0
  223. package/build/_modules/generators/form-suite.generator.spec.js.map +1 -0
  224. package/build/_modules/generators/index.d.ts +10 -0
  225. package/build/_modules/generators/index.d.ts.map +1 -0
  226. package/build/_modules/generators/index.js +26 -0
  227. package/build/_modules/generators/index.js.map +1 -0
  228. package/build/_modules/generators/test-case-filter-edge.spec.d.ts +2 -0
  229. package/build/_modules/generators/test-case-filter-edge.spec.d.ts.map +1 -0
  230. package/build/_modules/generators/test-case-filter-edge.spec.js +72 -0
  231. package/build/_modules/generators/test-case-filter-edge.spec.js.map +1 -0
  232. package/build/_modules/generators/viewport-suite.generator.d.ts +21 -0
  233. package/build/_modules/generators/viewport-suite.generator.d.ts.map +1 -0
  234. package/build/_modules/generators/viewport-suite.generator.js +64 -0
  235. package/build/_modules/generators/viewport-suite.generator.js.map +1 -0
  236. package/build/_modules/generators/viewport-suite.generator.spec.d.ts +2 -0
  237. package/build/_modules/generators/viewport-suite.generator.spec.d.ts.map +1 -0
  238. package/build/_modules/generators/viewport-suite.generator.spec.js +59 -0
  239. package/build/_modules/generators/viewport-suite.generator.spec.js.map +1 -0
  240. package/build/_modules/presets/index.d.ts +14 -0
  241. package/build/_modules/presets/index.d.ts.map +1 -0
  242. package/build/_modules/presets/index.js +17 -0
  243. package/build/_modules/presets/index.js.map +1 -0
  244. package/build/_modules/runtime/_collections/assertion-helpers.util.d.ts +20 -0
  245. package/build/_modules/runtime/_collections/assertion-helpers.util.d.ts.map +1 -0
  246. package/build/_modules/runtime/_collections/assertion-helpers.util.js +39 -0
  247. package/build/_modules/runtime/_collections/assertion-helpers.util.js.map +1 -0
  248. package/build/_modules/runtime/_collections/unique-generator.util.d.ts +36 -0
  249. package/build/_modules/runtime/_collections/unique-generator.util.d.ts.map +1 -0
  250. package/build/_modules/runtime/_collections/unique-generator.util.js +57 -0
  251. package/build/_modules/runtime/_collections/unique-generator.util.js.map +1 -0
  252. package/build/_modules/runtime/_collections/wait-helpers.util.d.ts +18 -0
  253. package/build/_modules/runtime/_collections/wait-helpers.util.d.ts.map +1 -0
  254. package/build/_modules/runtime/_collections/wait-helpers.util.js +52 -0
  255. package/build/_modules/runtime/_collections/wait-helpers.util.js.map +1 -0
  256. package/build/_modules/runtime/_models/env-config.interface.d.ts +22 -0
  257. package/build/_modules/runtime/_models/env-config.interface.d.ts.map +1 -0
  258. package/build/_modules/runtime/_models/env-config.interface.js +20 -0
  259. package/build/_modules/runtime/_models/env-config.interface.js.map +1 -0
  260. package/build/_modules/runtime/_models/index.d.ts +2 -0
  261. package/build/_modules/runtime/_models/index.d.ts.map +1 -0
  262. package/build/_modules/runtime/_models/index.js +18 -0
  263. package/build/_modules/runtime/_models/index.js.map +1 -0
  264. package/build/_modules/runtime/_models/test-user.interface.d.ts +19 -0
  265. package/build/_modules/runtime/_models/test-user.interface.d.ts.map +1 -0
  266. package/build/_modules/runtime/_models/test-user.interface.js +3 -0
  267. package/build/_modules/runtime/_models/test-user.interface.js.map +1 -0
  268. package/build/_modules/runtime/_services/dialog-page-object.d.ts +13 -0
  269. package/build/_modules/runtime/_services/dialog-page-object.d.ts.map +1 -0
  270. package/build/_modules/runtime/_services/dialog-page-object.js +26 -0
  271. package/build/_modules/runtime/_services/dialog-page-object.js.map +1 -0
  272. package/build/_modules/runtime/_services/field-page-object.d.ts +23 -0
  273. package/build/_modules/runtime/_services/field-page-object.d.ts.map +1 -0
  274. package/build/_modules/runtime/_services/field-page-object.js +55 -0
  275. package/build/_modules/runtime/_services/field-page-object.js.map +1 -0
  276. package/build/_modules/runtime/_services/form-page-object.d.ts +16 -0
  277. package/build/_modules/runtime/_services/form-page-object.d.ts.map +1 -0
  278. package/build/_modules/runtime/_services/form-page-object.js +33 -0
  279. package/build/_modules/runtime/_services/form-page-object.js.map +1 -0
  280. package/build/_modules/runtime/_services/loader-page-object.d.ts +10 -0
  281. package/build/_modules/runtime/_services/loader-page-object.d.ts.map +1 -0
  282. package/build/_modules/runtime/_services/loader-page-object.js +24 -0
  283. package/build/_modules/runtime/_services/loader-page-object.js.map +1 -0
  284. package/build/_modules/runtime/_services/logger.service.d.ts +36 -0
  285. package/build/_modules/runtime/_services/logger.service.d.ts.map +1 -0
  286. package/build/_modules/runtime/_services/logger.service.js +68 -0
  287. package/build/_modules/runtime/_services/logger.service.js.map +1 -0
  288. package/build/_modules/runtime/_services/login-flow-helper.base.d.ts +51 -0
  289. package/build/_modules/runtime/_services/login-flow-helper.base.d.ts.map +1 -0
  290. package/build/_modules/runtime/_services/login-flow-helper.base.js +48 -0
  291. package/build/_modules/runtime/_services/login-flow-helper.base.js.map +1 -0
  292. package/build/_modules/runtime/_services/nav-page-object.d.ts +12 -0
  293. package/build/_modules/runtime/_services/nav-page-object.d.ts.map +1 -0
  294. package/build/_modules/runtime/_services/nav-page-object.js +23 -0
  295. package/build/_modules/runtime/_services/nav-page-object.js.map +1 -0
  296. package/build/_modules/runtime/_services/toast-page-object.d.ts +9 -0
  297. package/build/_modules/runtime/_services/toast-page-object.d.ts.map +1 -0
  298. package/build/_modules/runtime/_services/toast-page-object.js +19 -0
  299. package/build/_modules/runtime/_services/toast-page-object.js.map +1 -0
  300. package/build/_modules/runtime/assertion-helpers.spec.d.ts +2 -0
  301. package/build/_modules/runtime/assertion-helpers.spec.d.ts.map +1 -0
  302. package/build/_modules/runtime/assertion-helpers.spec.js +57 -0
  303. package/build/_modules/runtime/assertion-helpers.spec.js.map +1 -0
  304. package/build/_modules/runtime/fixtures.d.ts +32 -0
  305. package/build/_modules/runtime/fixtures.d.ts.map +1 -0
  306. package/build/_modules/runtime/fixtures.js +37 -0
  307. package/build/_modules/runtime/fixtures.js.map +1 -0
  308. package/build/_modules/runtime/index.d.ts +30 -0
  309. package/build/_modules/runtime/index.d.ts.map +1 -0
  310. package/build/_modules/runtime/index.js +47 -0
  311. package/build/_modules/runtime/index.js.map +1 -0
  312. package/build/_modules/runtime/logger.service.spec.d.ts +2 -0
  313. package/build/_modules/runtime/logger.service.spec.d.ts.map +1 -0
  314. package/build/_modules/runtime/logger.service.spec.js +61 -0
  315. package/build/_modules/runtime/logger.service.spec.js.map +1 -0
  316. package/build/_modules/runtime/login-flow-helper.spec.d.ts +2 -0
  317. package/build/_modules/runtime/login-flow-helper.spec.d.ts.map +1 -0
  318. package/build/_modules/runtime/login-flow-helper.spec.js +74 -0
  319. package/build/_modules/runtime/login-flow-helper.spec.js.map +1 -0
  320. package/build/_modules/runtime/page-objects.spec.d.ts +2 -0
  321. package/build/_modules/runtime/page-objects.spec.d.ts.map +1 -0
  322. package/build/_modules/runtime/page-objects.spec.js +241 -0
  323. package/build/_modules/runtime/page-objects.spec.js.map +1 -0
  324. package/build/_modules/runtime/runtime.spec.d.ts +2 -0
  325. package/build/_modules/runtime/runtime.spec.d.ts.map +1 -0
  326. package/build/_modules/runtime/runtime.spec.js +73 -0
  327. package/build/_modules/runtime/runtime.spec.js.map +1 -0
  328. package/build/_modules/runtime/unique-generator.spec.d.ts +2 -0
  329. package/build/_modules/runtime/unique-generator.spec.d.ts.map +1 -0
  330. package/build/_modules/runtime/unique-generator.spec.js +41 -0
  331. package/build/_modules/runtime/unique-generator.spec.js.map +1 -0
  332. package/build/index.d.ts +8 -0
  333. package/build/index.d.ts.map +1 -0
  334. package/build/index.js +26 -0
  335. package/build/index.js.map +1 -0
  336. package/coverage/base.css +224 -0
  337. package/coverage/block-navigation.js +87 -0
  338. package/coverage/contracts/_collections/index.html +116 -0
  339. package/coverage/contracts/_collections/index.ts.html +97 -0
  340. package/coverage/contracts/_collections/utils/index.html +116 -0
  341. package/coverage/contracts/_collections/utils/test-id.util.ts.html +172 -0
  342. package/coverage/contracts/_enums/cwv-metric-type.enum.ts.html +145 -0
  343. package/coverage/contracts/_enums/field-test-case-type.enum.ts.html +394 -0
  344. package/coverage/contracts/_enums/index.html +191 -0
  345. package/coverage/contracts/_enums/index.ts.html +100 -0
  346. package/coverage/contracts/_enums/standard-viewport.enum.ts.html +127 -0
  347. package/coverage/contracts/_enums/test-expectation-type.enum.ts.html +133 -0
  348. package/coverage/contracts/_enums/test-run-mode-type.enum.ts.html +130 -0
  349. package/coverage/contracts/index.html +116 -0
  350. package/coverage/contracts/index.ts.html +121 -0
  351. package/coverage/cwv/_collections/cwv-aggregator.util.ts.html +241 -0
  352. package/coverage/cwv/_collections/cwv-emission.util.ts.html +394 -0
  353. package/coverage/cwv/_collections/index.html +146 -0
  354. package/coverage/cwv/_collections/web-vitals-page-script.const.ts.html +331 -0
  355. package/coverage/cwv/cwv-suite.generator.ts.html +232 -0
  356. package/coverage/cwv/index.html +116 -0
  357. package/coverage/favicon.png +0 -0
  358. package/coverage/generators/_collections/cli-runner.util.ts.html +361 -0
  359. package/coverage/generators/_collections/field-emission.util.ts.html +478 -0
  360. package/coverage/generators/_collections/form-level-emission.util.ts.html +220 -0
  361. package/coverage/generators/_collections/index.html +191 -0
  362. package/coverage/generators/_collections/spec-emission.util.ts.html +298 -0
  363. package/coverage/generators/_collections/test-case-filter.util.ts.html +523 -0
  364. package/coverage/generators/_collections/viewport-emission.util.ts.html +313 -0
  365. package/coverage/generators/form-suite.generator.ts.html +406 -0
  366. package/coverage/generators/index.html +131 -0
  367. package/coverage/generators/viewport-suite.generator.ts.html +307 -0
  368. package/coverage/index.html +266 -0
  369. package/coverage/lcov-report/base.css +224 -0
  370. package/coverage/lcov-report/block-navigation.js +87 -0
  371. package/coverage/lcov-report/contracts/_collections/index.html +116 -0
  372. package/coverage/lcov-report/contracts/_collections/index.ts.html +97 -0
  373. package/coverage/lcov-report/contracts/_collections/utils/index.html +116 -0
  374. package/coverage/lcov-report/contracts/_collections/utils/test-id.util.ts.html +172 -0
  375. package/coverage/lcov-report/contracts/_enums/cwv-metric-type.enum.ts.html +145 -0
  376. package/coverage/lcov-report/contracts/_enums/field-test-case-type.enum.ts.html +394 -0
  377. package/coverage/lcov-report/contracts/_enums/index.html +191 -0
  378. package/coverage/lcov-report/contracts/_enums/index.ts.html +100 -0
  379. package/coverage/lcov-report/contracts/_enums/standard-viewport.enum.ts.html +127 -0
  380. package/coverage/lcov-report/contracts/_enums/test-expectation-type.enum.ts.html +133 -0
  381. package/coverage/lcov-report/contracts/_enums/test-run-mode-type.enum.ts.html +130 -0
  382. package/coverage/lcov-report/contracts/index.html +116 -0
  383. package/coverage/lcov-report/contracts/index.ts.html +121 -0
  384. package/coverage/lcov-report/cwv/_collections/cwv-aggregator.util.ts.html +241 -0
  385. package/coverage/lcov-report/cwv/_collections/cwv-emission.util.ts.html +394 -0
  386. package/coverage/lcov-report/cwv/_collections/index.html +146 -0
  387. package/coverage/lcov-report/cwv/_collections/web-vitals-page-script.const.ts.html +331 -0
  388. package/coverage/lcov-report/cwv/cwv-suite.generator.ts.html +232 -0
  389. package/coverage/lcov-report/cwv/index.html +116 -0
  390. package/coverage/lcov-report/favicon.png +0 -0
  391. package/coverage/lcov-report/generators/_collections/cli-runner.util.ts.html +361 -0
  392. package/coverage/lcov-report/generators/_collections/field-emission.util.ts.html +478 -0
  393. package/coverage/lcov-report/generators/_collections/form-level-emission.util.ts.html +220 -0
  394. package/coverage/lcov-report/generators/_collections/index.html +191 -0
  395. package/coverage/lcov-report/generators/_collections/spec-emission.util.ts.html +298 -0
  396. package/coverage/lcov-report/generators/_collections/test-case-filter.util.ts.html +523 -0
  397. package/coverage/lcov-report/generators/_collections/viewport-emission.util.ts.html +313 -0
  398. package/coverage/lcov-report/generators/form-suite.generator.ts.html +406 -0
  399. package/coverage/lcov-report/generators/index.html +131 -0
  400. package/coverage/lcov-report/generators/viewport-suite.generator.ts.html +307 -0
  401. package/coverage/lcov-report/index.html +266 -0
  402. package/coverage/lcov-report/prettify.css +1 -0
  403. package/coverage/lcov-report/prettify.js +2 -0
  404. package/coverage/lcov-report/runtime/_collections/assertion-helpers.util.ts.html +205 -0
  405. package/coverage/lcov-report/runtime/_collections/index.html +146 -0
  406. package/coverage/lcov-report/runtime/_collections/unique-generator.util.ts.html +256 -0
  407. package/coverage/lcov-report/runtime/_collections/wait-helpers.util.ts.html +238 -0
  408. package/coverage/lcov-report/runtime/_services/dialog-page-object.ts.html +157 -0
  409. package/coverage/lcov-report/runtime/_services/field-page-object.ts.html +253 -0
  410. package/coverage/lcov-report/runtime/_services/form-page-object.ts.html +184 -0
  411. package/coverage/lcov-report/runtime/_services/index.html +221 -0
  412. package/coverage/lcov-report/runtime/_services/loader-page-object.ts.html +142 -0
  413. package/coverage/lcov-report/runtime/_services/logger.service.ts.html +385 -0
  414. package/coverage/lcov-report/runtime/_services/login-flow-helper.base.ts.html +331 -0
  415. package/coverage/lcov-report/runtime/_services/nav-page-object.ts.html +145 -0
  416. package/coverage/lcov-report/runtime/_services/toast-page-object.ts.html +130 -0
  417. package/coverage/lcov-report/runtime/index.html +116 -0
  418. package/coverage/lcov-report/runtime/index.ts.html +175 -0
  419. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  420. package/coverage/lcov-report/sorter.js +210 -0
  421. package/coverage/lcov.info +2527 -0
  422. package/coverage/prettify.css +1 -0
  423. package/coverage/prettify.js +2 -0
  424. package/coverage/runtime/_collections/assertion-helpers.util.ts.html +205 -0
  425. package/coverage/runtime/_collections/index.html +146 -0
  426. package/coverage/runtime/_collections/unique-generator.util.ts.html +256 -0
  427. package/coverage/runtime/_collections/wait-helpers.util.ts.html +238 -0
  428. package/coverage/runtime/_services/dialog-page-object.ts.html +157 -0
  429. package/coverage/runtime/_services/field-page-object.ts.html +253 -0
  430. package/coverage/runtime/_services/form-page-object.ts.html +184 -0
  431. package/coverage/runtime/_services/index.html +221 -0
  432. package/coverage/runtime/_services/loader-page-object.ts.html +142 -0
  433. package/coverage/runtime/_services/logger.service.ts.html +385 -0
  434. package/coverage/runtime/_services/login-flow-helper.base.ts.html +331 -0
  435. package/coverage/runtime/_services/nav-page-object.ts.html +145 -0
  436. package/coverage/runtime/_services/toast-page-object.ts.html +130 -0
  437. package/coverage/runtime/index.html +116 -0
  438. package/coverage/runtime/index.ts.html +175 -0
  439. package/coverage/sort-arrow-sprite.png +0 -0
  440. package/coverage/sorter.js +210 -0
  441. package/coverage/tmp/coverage-215876-1781064798541-0.json +1 -0
  442. package/coverage/tmp/coverage-223792-1781064800382-0.json +1 -0
  443. package/dogfood/PARITY-MATRIX.md +67 -0
  444. package/dogfood/generated/date-range-field-new.spec.ts +54 -0
  445. package/dogfood/generated/password-field-new.spec.ts +97 -0
  446. package/dogfood/generated/radio-select-field-new.spec.ts +69 -0
  447. package/dogfood/generated/slider-field-new.spec.ts +47 -0
  448. package/dogfood/generated/text-field-new.spec.ts +0 -0
  449. package/dogfood/generated-full/checkbox-field-new.spec.ts +56 -0
  450. package/dogfood/generated-full/date-field-new.spec.ts +71 -0
  451. package/dogfood/generated-full/date-range-field-new.spec.ts +54 -0
  452. package/dogfood/generated-full/datetime-field-new.spec.ts +55 -0
  453. package/dogfood/generated-full/multiselect-field-new.spec.ts +69 -0
  454. package/dogfood/generated-full/number-field-new.spec.ts +113 -0
  455. package/dogfood/generated-full/password-field-new.spec.ts +97 -0
  456. package/dogfood/generated-full/radio-select-field-new.spec.ts +69 -0
  457. package/dogfood/generated-full/sandbox-viewport-audit.spec.ts +4643 -0
  458. package/dogfood/generated-full/select-field-new.spec.ts +69 -0
  459. package/dogfood/generated-full/slider-field-new.spec.ts +47 -0
  460. package/dogfood/generated-full/slider-range-field-new.spec.ts +54 -0
  461. package/dogfood/generated-full/text-field-new.spec.ts +0 -0
  462. package/dogfood/generated-full/textarea-field-new.spec.ts +72 -0
  463. package/dogfood/sandbox-bootstrap-full.js +248 -0
  464. package/dogfood/sandbox-bootstrap.js +170 -0
  465. package/examples/minimal-form/README.md +55 -0
  466. package/examples/minimal-form/form-config.json +38 -0
  467. package/examples/multi-form-app/README.md +63 -0
  468. package/examples/multi-form-app/cwv-config.json +14 -0
  469. package/examples/multi-form-app/settings/login-form.json +11 -0
  470. package/examples/multi-form-app/settings/profile-form.json +25 -0
  471. package/examples/multi-form-app/viewport-config.json +12 -0
  472. package/package.json +103 -0
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Auto-generated by @futdevpro/dynamo-e2e — FormSuite Generator
3
+ * Form key: sb-select
4
+ * Route: /c/select-field-new
5
+ * Built at: WAVE-1-STAMP
6
+ *
7
+ * DO NOT EDIT BY HAND. Re-emit via `dc e2e generate-form-suite` or
8
+ * `DyE2E_FormSuite_Generator.emit({...})` consumer-script.
9
+ */
10
+
11
+ import { test, expect, Locator } from '@playwright/test';
12
+
13
+ test.describe('Sandbox: DyNX_SelectFieldNew', (): void => {
14
+
15
+ test.describe('Field: country (select)', (): void => {
16
+ test.beforeEach(async ({ page }): Promise<void> => {
17
+ const response = await page.goto('/c/select-field-new');
18
+ expect(response?.ok()).toBeTruthy();
19
+ await page.locator('dynamo-select-field-new').first().waitFor({ state: 'visible' });
20
+ });
21
+
22
+ test('field[country] select:none-selected → valid — semmi nincs választva', async ({ page }): Promise<void> => {
23
+ // options index → testId-suffix selection
24
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-select-required"], dynamo-select-field-new').first();
25
+ // sentinel -1 — generator-runtime should clamp to options.length
26
+ // Wave-1: explicit selector-pattern is per-consumer; szándékosan minimalista.
27
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-select-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
28
+ await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
29
+ });
30
+
31
+ test('field[country] select:first-option → valid — első opció kiválasztva', async ({ page }): Promise<void> => {
32
+ // options index → testId-suffix selection
33
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-select-required"], dynamo-select-field-new').first();
34
+ // option index 0 (case-input[0])
35
+ // Wave-1: explicit selector-pattern is per-consumer; szándékosan minimalista.
36
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-select-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
37
+ await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
38
+ });
39
+
40
+ test('field[country] select:last-option → valid — utolsó opció kiválasztva', async ({ page }): Promise<void> => {
41
+ // options index → testId-suffix selection
42
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-select-required"], dynamo-select-field-new').first();
43
+ // option index 2 (case-input[0])
44
+ // Wave-1: explicit selector-pattern is per-consumer; szándékosan minimalista.
45
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-select-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
46
+ await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
47
+ });
48
+
49
+ test('field[country] select:required-empty → invalid:required — required + semmi → invalid', async ({ page }): Promise<void> => {
50
+ // options index → testId-suffix selection
51
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-select-required"], dynamo-select-field-new').first();
52
+ // sentinel -1 — generator-runtime should clamp to options.length
53
+ // Wave-1: explicit selector-pattern is per-consumer; szándékosan minimalista.
54
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-select-required"]').locator('xpath=ancestor-or-self::*[starts-with(local-name(),"dynamo-")]').first();
55
+ await expect(fieldRoot.locator('.text-red-400.mt-1').first()).toBeVisible();
56
+ // expectedErrorKey: required
57
+ });
58
+
59
+ test('field[country] select:disabled-option → valid — disabled opció nem klikkelheto', async ({ page }): Promise<void> => {
60
+ // options index → testId-suffix selection
61
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-select-required"], dynamo-select-field-new').first();
62
+ // sentinel -1 — generator-runtime should clamp to options.length
63
+ // Wave-1: explicit selector-pattern is per-consumer; szándékosan minimalista.
64
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-select-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
65
+ await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
66
+ });
67
+ });
68
+
69
+ });
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Auto-generated by @futdevpro/dynamo-e2e — FormSuite Generator
3
+ * Form key: sb-slider
4
+ * Route: /c/slider-field-new
5
+ * Built at: WAVE-1-STAMP
6
+ *
7
+ * DO NOT EDIT BY HAND. Re-emit via `dc e2e generate-form-suite` or
8
+ * `DyE2E_FormSuite_Generator.emit({...})` consumer-script.
9
+ */
10
+
11
+ import { test, expect, Locator } from '@playwright/test';
12
+
13
+ test.describe('Sandbox: DyNX_SliderFieldNew', (): void => {
14
+
15
+ test.describe('Field: volume (slider)', (): void => {
16
+ test.beforeEach(async ({ page }): Promise<void> => {
17
+ const response = await page.goto('/c/slider-field-new');
18
+ expect(response?.ok()).toBeTruthy();
19
+ await page.locator('dynamo-slider-field-new').first().waitFor({ state: 'visible' });
20
+ });
21
+
22
+ test('field[volume] slider:min → valid — min-érték', async ({ page }): Promise<void> => {
23
+ const input: Locator = page.getByTestId('sandbox-slider-default');
24
+ await input.fill(String(0 ?? ''));
25
+ await input.blur();
26
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-slider-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
27
+ await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
28
+ });
29
+
30
+ test('field[volume] slider:max → valid — max-érték', async ({ page }): Promise<void> => {
31
+ const input: Locator = page.getByTestId('sandbox-slider-default');
32
+ await input.fill(String(100 ?? ''));
33
+ await input.blur();
34
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-slider-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
35
+ await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
36
+ });
37
+
38
+ test('field[volume] slider:mid → valid — közepes érték', async ({ page }): Promise<void> => {
39
+ const input: Locator = page.getByTestId('sandbox-slider-default');
40
+ await input.fill(String(50 ?? ''));
41
+ await input.blur();
42
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-slider-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
43
+ await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
44
+ });
45
+ });
46
+
47
+ });
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Auto-generated by @futdevpro/dynamo-e2e — FormSuite Generator
3
+ * Form key: sb-slider-range
4
+ * Route: /c/slider-range-field-new
5
+ * Built at: WAVE-1-STAMP
6
+ *
7
+ * DO NOT EDIT BY HAND. Re-emit via `dc e2e generate-form-suite` or
8
+ * `DyE2E_FormSuite_Generator.emit({...})` consumer-script.
9
+ */
10
+
11
+ import { test, expect, Locator } from '@playwright/test';
12
+
13
+ test.describe('Sandbox: DyNX_SliderRangeFieldNew', (): void => {
14
+
15
+ test.describe('Field: priceRange (sliderRange)', (): void => {
16
+ test.beforeEach(async ({ page }): Promise<void> => {
17
+ const response = await page.goto('/c/slider-range-field-new');
18
+ expect(response?.ok()).toBeTruthy();
19
+ await page.locator('dynamo-slider-range-field-new').first().waitFor({ state: 'visible' });
20
+ });
21
+
22
+ test('field[priceRange] sliderRange:min-max → valid — start=min, end=max', async ({ page }): Promise<void> => {
23
+ const startInput: Locator = page.getByTestId('sandbox-slider-range-start');
24
+ const endInput: Locator = page.getByTestId('sandbox-slider-range-end');
25
+ await startInput.fill('');
26
+ await endInput.fill('');
27
+ await endInput.blur();
28
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-slider-range"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
29
+ await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
30
+ });
31
+
32
+ test('field[priceRange] sliderRange:equal → valid — start === end', async ({ page }): Promise<void> => {
33
+ const startInput: Locator = page.getByTestId('sandbox-slider-range-start');
34
+ const endInput: Locator = page.getByTestId('sandbox-slider-range-end');
35
+ await startInput.fill('50');
36
+ await endInput.fill('50');
37
+ await endInput.blur();
38
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-slider-range"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
39
+ await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
40
+ });
41
+
42
+ test('field[priceRange] sliderRange:reversed-clamp → transformed — start > end → auto-clamp (UI invariant)', async ({ page }): Promise<void> => {
43
+ const startInput: Locator = page.getByTestId('sandbox-slider-range-start');
44
+ const endInput: Locator = page.getByTestId('sandbox-slider-range-end');
45
+ await startInput.fill('80');
46
+ await endInput.fill('20');
47
+ await endInput.blur();
48
+ // Transformed expectation: data_$ === { start: 20, end: 20 }
49
+ // Wave-1: a concrete data_$ access pattern per-consumer; placeholder marker:
50
+ expect(true).toBe(true);
51
+ });
52
+ });
53
+
54
+ });
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Auto-generated by @futdevpro/dynamo-e2e — FormSuite Generator
3
+ * Form key: sb-textarea
4
+ * Route: /c/textarea-field-new
5
+ * Built at: WAVE-1-STAMP
6
+ *
7
+ * DO NOT EDIT BY HAND. Re-emit via `dc e2e generate-form-suite` or
8
+ * `DyE2E_FormSuite_Generator.emit({...})` consumer-script.
9
+ */
10
+
11
+ import { test, expect, Locator } from '@playwright/test';
12
+
13
+ test.describe('Sandbox: DyNX_TextAreaFieldNew', (): void => {
14
+
15
+ test.describe('Field: bio (textarea)', (): void => {
16
+ test.beforeEach(async ({ page }): Promise<void> => {
17
+ const response = await page.goto('/c/textarea-field-new');
18
+ expect(response?.ok()).toBeTruthy();
19
+ await page.locator('dynamo-textarea-field-new').first().waitFor({ state: 'visible' });
20
+ });
21
+
22
+ test('field[bio] textarea:empty → valid — üres textarea', async ({ page }): Promise<void> => {
23
+ const input: Locator = page.getByTestId('sandbox-textarea-default');
24
+ await input.fill('');
25
+ await input.blur();
26
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-textarea-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
27
+ await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
28
+ });
29
+
30
+ test('field[bio] textarea:multiline → valid — több-soros bevitel', async ({ page }): Promise<void> => {
31
+ const input: Locator = page.getByTestId('sandbox-textarea-default');
32
+ await input.fill('első sor\nmásodik sor\nharmadik sor');
33
+ await input.blur();
34
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-textarea-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
35
+ await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
36
+ });
37
+
38
+ test('field[bio] textarea:sentence → valid — egy sornyi mondat', async ({ page }): Promise<void> => {
39
+ const input: Locator = page.getByTestId('sandbox-textarea-default');
40
+ await input.fill('Egy mondat, ami minden rendben van.');
41
+ await input.blur();
42
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-textarea-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
43
+ await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
44
+ });
45
+
46
+ test('field[bio] textarea:long-paragraph → invalid:maxLength — hosszú bekezdés (2000+ char)', async ({ page }): Promise<void> => {
47
+ const input: Locator = page.getByTestId('sandbox-textarea-default');
48
+ await input.fill('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
49
+ await input.blur();
50
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-textarea-default"]').locator('xpath=ancestor-or-self::*[starts-with(local-name(),"dynamo-")]').first();
51
+ await expect(fieldRoot.locator('.text-red-400.mt-1').first()).toBeVisible();
52
+ // expectedErrorKey: maxLength
53
+ });
54
+
55
+ test('field[bio] textarea:unicode-emoji → valid — emoji a textarea-ban', async ({ page }): Promise<void> => {
56
+ const input: Locator = page.getByTestId('sandbox-textarea-default');
57
+ await input.fill('Pénztárgép 🧾 fizetés 💳 vége 🎉');
58
+ await input.blur();
59
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-textarea-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
60
+ await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
61
+ });
62
+
63
+ test('field[bio] textarea:xss-tag → valid — XSS-tag textarea-ban', async ({ page }): Promise<void> => {
64
+ const input: Locator = page.getByTestId('sandbox-textarea-default');
65
+ await input.fill('<script>alert(1)</script>');
66
+ await input.blur();
67
+ const fieldRoot: Locator = page.locator('[data-testid="sandbox-textarea-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
68
+ await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
69
+ });
70
+ });
71
+
72
+ });
@@ -0,0 +1,248 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * MP-08 SP-C — Extended sandbox-dogfood — MINDEN Forms v2 field-type a
4
+ * dynamo-ngx-sandbox-ben (text/textarea/number/password/slider/sliderRange/
5
+ * checkbox/select/multiselect/radioSelect/date/datetime/dateRange).
6
+ *
7
+ * 13 field-type × N variant (a sandbox-registry-ben definiált) → 13+ spec
8
+ * fájl. A `dogfood/generated-full/` mappába kerül.
9
+ *
10
+ * Futtatás:
11
+ * node dogfood/sandbox-bootstrap-full.js
12
+ *
13
+ * A `dynamo-ngx/e2e/tests/generated/` mappába (side-by-side a hand-rolled
14
+ * mellé) másolható ezeknek a fájloknak a tartalma.
15
+ */
16
+ 'use strict';
17
+
18
+ const fs = require('fs');
19
+ const path = require('path');
20
+ const { DyE2E_FormSuite_Generator } = require('../build/_modules/generators/form-suite.generator');
21
+
22
+ const OUT_DIR = path.join(__dirname, 'generated-full');
23
+ fs.mkdirSync(OUT_DIR, { recursive: true });
24
+
25
+ /**
26
+ * 13 field-type → reprezentatív sandbox-entry mind. A Settings POJO-k
27
+ * az aktuális `dynamo-ngx/projects/dynamo-ngx-sandbox/src/app/_registry/
28
+ * sandbox-registry.ts` Required vagy Default variant-jaiból extraktálva.
29
+ */
30
+ const sandboxConfigs = [
31
+ {
32
+ name: 'text-field-new',
33
+ cfg: {
34
+ formSettings: {
35
+ key: 'sb-text',
36
+ fields: [{ key: 'name', type: 'text', label: 'Név', required: true, minLength: 2, maxLength: 64, testId: 'sandbox-text-required' }],
37
+ },
38
+ formRoute: '/c/text-field-new',
39
+ formSelector: 'dynamo-text-field-new',
40
+ suiteSettings: { runMode: 'full', skipFormLevelTests: true, describePrefix: 'Sandbox: DyNX_TextFieldNew (Required)' },
41
+ },
42
+ },
43
+ {
44
+ name: 'textarea-field-new',
45
+ cfg: {
46
+ formSettings: {
47
+ key: 'sb-textarea',
48
+ fields: [{ key: 'bio', type: 'textarea', label: 'Bio', required: false, maxLength: 500, testId: 'sandbox-textarea-default' }],
49
+ },
50
+ formRoute: '/c/textarea-field-new',
51
+ formSelector: 'dynamo-textarea-field-new',
52
+ suiteSettings: { runMode: 'full', skipFormLevelTests: true, describePrefix: 'Sandbox: DyNX_TextAreaFieldNew' },
53
+ },
54
+ },
55
+ {
56
+ name: 'number-field-new',
57
+ cfg: {
58
+ formSettings: {
59
+ key: 'sb-number',
60
+ fields: [{ key: 'age', type: 'number', label: 'Életkor', required: true, min: 13, max: 120, testId: 'sandbox-number-required' }],
61
+ },
62
+ formRoute: '/c/number-field-new',
63
+ formSelector: 'dynamo-number-field-new',
64
+ suiteSettings: { runMode: 'full', skipFormLevelTests: true, describePrefix: 'Sandbox: DyNX_NumberFieldNew' },
65
+ },
66
+ },
67
+ {
68
+ name: 'password-field-new',
69
+ cfg: {
70
+ formSettings: {
71
+ key: 'sb-pwd',
72
+ fields: [{ key: 'password', type: 'password', label: 'Jelszó', required: true, minLength: 8, maxLength: 128, testId: 'sandbox-pwd-required' }],
73
+ },
74
+ formRoute: '/c/password-field-new',
75
+ formSelector: 'dynamo-password-field-new',
76
+ suiteSettings: { runMode: 'full', skipFormLevelTests: true, describePrefix: 'Sandbox: DyNX_PasswordFieldNew (Required)' },
77
+ },
78
+ },
79
+ {
80
+ name: 'slider-field-new',
81
+ cfg: {
82
+ formSettings: {
83
+ key: 'sb-slider',
84
+ fields: [{ key: 'volume', type: 'slider', label: 'Hangerő', min: 0, max: 100, step: 1, testId: 'sandbox-slider-default' }],
85
+ },
86
+ formRoute: '/c/slider-field-new',
87
+ formSelector: 'dynamo-slider-field-new',
88
+ suiteSettings: { runMode: 'full', skipFormLevelTests: true, describePrefix: 'Sandbox: DyNX_SliderFieldNew' },
89
+ },
90
+ },
91
+ {
92
+ name: 'slider-range-field-new',
93
+ cfg: {
94
+ formSettings: {
95
+ key: 'sb-slider-range',
96
+ fields: [{ key: 'priceRange', type: 'sliderRange', label: 'Ár-sáv', min: 0, max: 100, step: 1, testId: 'sandbox-slider-range' }],
97
+ },
98
+ formRoute: '/c/slider-range-field-new',
99
+ formSelector: 'dynamo-slider-range-field-new',
100
+ suiteSettings: { runMode: 'full', skipFormLevelTests: true, describePrefix: 'Sandbox: DyNX_SliderRangeFieldNew' },
101
+ },
102
+ },
103
+ {
104
+ name: 'checkbox-field-new',
105
+ cfg: {
106
+ formSettings: {
107
+ key: 'sb-checkbox',
108
+ fields: [{ key: 'agree', type: 'checkbox', label: 'Elfogadom', required: true, testId: 'sandbox-checkbox-required' }],
109
+ },
110
+ formRoute: '/c/checkbox-field-new',
111
+ formSelector: 'dynamo-checkbox-field-new',
112
+ suiteSettings: { runMode: 'full', skipFormLevelTests: true, describePrefix: 'Sandbox: DyNX_CheckboxFieldNew' },
113
+ },
114
+ },
115
+ {
116
+ name: 'select-field-new',
117
+ cfg: {
118
+ formSettings: {
119
+ key: 'sb-select',
120
+ fields: [{
121
+ key: 'country', type: 'select', label: 'Ország', required: true,
122
+ options: [{ label: 'HU', value: 'hu' }, { label: 'EN', value: 'en' }, { label: 'DE', value: 'de' }],
123
+ testId: 'sandbox-select-required',
124
+ }],
125
+ },
126
+ formRoute: '/c/select-field-new',
127
+ formSelector: 'dynamo-select-field-new',
128
+ suiteSettings: { runMode: 'full', skipFormLevelTests: true, describePrefix: 'Sandbox: DyNX_SelectFieldNew' },
129
+ },
130
+ },
131
+ {
132
+ name: 'multiselect-field-new',
133
+ cfg: {
134
+ formSettings: {
135
+ key: 'sb-multi',
136
+ fields: [{
137
+ key: 'languages', type: 'multiselect',
138
+ options: [{ label: 'HU', value: 'hu' }, { label: 'EN', value: 'en' }, { label: 'DE', value: 'de' }],
139
+ testId: 'sandbox-multi-default',
140
+ }],
141
+ },
142
+ formRoute: '/c/multiselect-field-new',
143
+ formSelector: 'dynamo-multiselect-field-new',
144
+ suiteSettings: { runMode: 'full', skipFormLevelTests: true, describePrefix: 'Sandbox: DyNX_MultiselectFieldNew' },
145
+ },
146
+ },
147
+ {
148
+ name: 'radio-select-field-new',
149
+ cfg: {
150
+ formSettings: {
151
+ key: 'sb-radio',
152
+ fields: [{
153
+ key: 'priority', type: 'radioSelect', required: true,
154
+ options: [
155
+ { label: 'Alacsony', value: 'low' },
156
+ { label: 'Közepes', value: 'medium' },
157
+ { label: 'Magas', value: 'high' },
158
+ { label: 'Sürgős', value: 'urgent' },
159
+ ],
160
+ testId: 'sandbox-radio-vertical',
161
+ }],
162
+ },
163
+ formRoute: '/c/radio-select-field-new',
164
+ formSelector: 'dynamo-radio-select-field-new',
165
+ suiteSettings: { runMode: 'full', skipFormLevelTests: true, describePrefix: 'Sandbox: DyNX_RadioSelectFieldNew (Vertical)' },
166
+ },
167
+ },
168
+ {
169
+ name: 'date-field-new',
170
+ cfg: {
171
+ formSettings: {
172
+ key: 'sb-date',
173
+ fields: [{ key: 'birthDate', type: 'date', label: 'Születési dátum', testId: 'sandbox-date-default' }],
174
+ },
175
+ formRoute: '/c/date-field-new',
176
+ formSelector: 'dynamo-date-field-new',
177
+ suiteSettings: { runMode: 'full', skipFormLevelTests: true, describePrefix: 'Sandbox: DyNX_DateFieldNew' },
178
+ },
179
+ },
180
+ {
181
+ name: 'datetime-field-new',
182
+ cfg: {
183
+ formSettings: {
184
+ key: 'sb-datetime',
185
+ fields: [{
186
+ key: 'meetingAt', type: 'dateTime', label: 'Találkozó',
187
+ minDateTime: '2026-01-01T00:00', maxDateTime: '2026-12-31T23:59',
188
+ testId: 'sandbox-datetime-bounded',
189
+ }],
190
+ },
191
+ formRoute: '/c/datetime-field-new',
192
+ formSelector: 'dynamo-datetime-field-new',
193
+ suiteSettings: { runMode: 'full', skipFormLevelTests: true, describePrefix: 'Sandbox: DyNX_DateTimeFieldNew (Bounded)' },
194
+ },
195
+ },
196
+ {
197
+ name: 'date-range-field-new',
198
+ cfg: {
199
+ formSettings: {
200
+ key: 'sb-date-range',
201
+ fields: [{ key: 'vacation', type: 'dateRange', label: 'Szabadság', allowSameDay: true, testId: 'sandbox-date-range-default' }],
202
+ },
203
+ formRoute: '/c/date-range-field-new',
204
+ formSelector: 'dynamo-date-range-field-new',
205
+ suiteSettings: { runMode: 'full', skipFormLevelTests: true, describePrefix: 'Sandbox: DyNX_DateRangeFieldNew' },
206
+ },
207
+ },
208
+ ];
209
+
210
+ let totalCases = 0;
211
+ const summary = [];
212
+
213
+ for (const { name, cfg } of sandboxConfigs) {
214
+ const spec = DyE2E_FormSuite_Generator.emit(cfg);
215
+ const outPath = path.join(OUT_DIR, `${name}.spec.ts`);
216
+ fs.writeFileSync(outPath, spec, 'utf-8');
217
+ const caseCount = (spec.match(/^\s*test\(/gm) || []).length;
218
+ totalCases += caseCount;
219
+ summary.push({ name, cases: caseCount, bytes: spec.length });
220
+ console.log(` ✓ ${name}.spec.ts (${caseCount} test cases, ${spec.length} bytes)`);
221
+ }
222
+
223
+ // Plus 1 viewport-audit spec az osszes sandbox-route-ra
224
+ const { DyE2E_ViewportSuite_Generator } = require('../build/_modules/generators/viewport-suite.generator');
225
+ const viewportCfg = {
226
+ routes: sandboxConfigs.map(({ name }) => ({
227
+ key: name,
228
+ label: `Sandbox ${name}`,
229
+ path: `/c/${name}`,
230
+ })),
231
+ themes: ['dark', 'light'],
232
+ checkOverflow: true,
233
+ checkTouchTargets: true,
234
+ takeScreenshot: true,
235
+ screenshotDir: 'e2e/screenshots/sandbox',
236
+ describePrefix: 'Sandbox viewport audit',
237
+ };
238
+ const viewportSpec = DyE2E_ViewportSuite_Generator.emit(viewportCfg);
239
+ fs.writeFileSync(path.join(OUT_DIR, 'sandbox-viewport-audit.spec.ts'), viewportSpec);
240
+ const viewportCases = (viewportSpec.match(/^\s*test\(/gm) || []).length;
241
+ console.log(` ✓ sandbox-viewport-audit.spec.ts (${viewportCases} test cases — 13 routes × 7 viewports × 2 themes)`);
242
+
243
+ console.log(`\n[dogfood-full] generated ${sandboxConfigs.length + 1} spec files, ${totalCases + viewportCases} total test cases.`);
244
+ console.log(`[dogfood-full] per-field-type breakdown:`);
245
+ for (const s of summary) {
246
+ console.log(` ${s.name.padEnd(28)} ${String(s.cases).padStart(3)} cases`);
247
+ }
248
+ console.log(` sandbox-viewport-audit ${String(viewportCases).padStart(3)} cases`);
@@ -0,0 +1,170 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * MP-08 SP-B — Sandbox dogfood bootstrap.
4
+ *
5
+ * Bemenet: a `dynamo-ngx-sandbox` Settings POJO-it leíró 1-1 JSON konfiguráció
6
+ * (a teljes sandbox-registry.ts-ből kihúzott reprezentatív minta).
7
+ *
8
+ * Kimenet: a `dogfood/generated/` mappába írt `.spec.ts` fájlok, amelyeket a
9
+ * dynamo-ngx repó-ba copy-be lehet venni a hand-rolled e2e mellé / helyett.
10
+ *
11
+ * Futtatás:
12
+ * node dogfood/sandbox-bootstrap.js
13
+ */
14
+ 'use strict';
15
+
16
+ const fs = require('fs');
17
+ const path = require('path');
18
+ const { DyE2E_FormSuite_Generator } = require('../build/_modules/generators/form-suite.generator');
19
+
20
+ const OUT_DIR = path.join(__dirname, 'generated');
21
+ fs.mkdirSync(OUT_DIR, { recursive: true });
22
+
23
+ // 1. text-field-new sandbox entry — 3 variantból a Required-Default-szerinti
24
+ // Settings POJO. (A többi variant a futás-időben válthat, lásd e2e
25
+ // spec-ekben a beforeEach `selectVariant(...)`-tot.)
26
+ const sandboxTextField = {
27
+ formSettings: {
28
+ key: 'sandbox-text-field-new',
29
+ fields: [
30
+ {
31
+ key: 'username',
32
+ type: 'text',
33
+ label: 'Felhasználónév',
34
+ required: true,
35
+ minLength: 3,
36
+ maxLength: 64,
37
+ testId: 'sandbox-text-required',
38
+ },
39
+ ],
40
+ },
41
+ formRoute: '/c/text-field-new',
42
+ formSelector: 'dynamo-text-field-new',
43
+ suiteSettings: {
44
+ runMode: 'full',
45
+ skipFormLevelTests: true, // sandbox-route nem submit-button-os form
46
+ describePrefix: 'Sandbox: DyNX_TextFieldNew (Required variant)',
47
+ },
48
+ };
49
+
50
+ // 2. password-field-new sandbox entry.
51
+ const sandboxPasswordField = {
52
+ formSettings: {
53
+ key: 'sandbox-pwd-required',
54
+ fields: [
55
+ {
56
+ key: 'password',
57
+ type: 'password',
58
+ label: 'Jelszó',
59
+ required: true,
60
+ minLength: 8,
61
+ maxLength: 128,
62
+ testId: 'sandbox-pwd-required',
63
+ },
64
+ ],
65
+ },
66
+ formRoute: '/c/password-field-new',
67
+ formSelector: 'dynamo-password-field-new',
68
+ suiteSettings: {
69
+ runMode: 'full',
70
+ skipFormLevelTests: true,
71
+ describePrefix: 'Sandbox: DyNX_PasswordFieldNew (Required variant)',
72
+ },
73
+ };
74
+
75
+ // 3. slider-field-new sandbox entry.
76
+ const sandboxSlider = {
77
+ formSettings: {
78
+ key: 'sandbox-slider-default',
79
+ fields: [
80
+ {
81
+ key: 'volume',
82
+ type: 'slider',
83
+ label: 'Hangerő',
84
+ min: 0,
85
+ max: 100,
86
+ step: 1,
87
+ testId: 'sandbox-slider-default',
88
+ },
89
+ ],
90
+ },
91
+ formRoute: '/c/slider-field-new',
92
+ formSelector: 'dynamo-slider-field-new',
93
+ suiteSettings: {
94
+ runMode: 'full',
95
+ skipFormLevelTests: true,
96
+ describePrefix: 'Sandbox: DyNX_SliderFieldNew (Default 0-100)',
97
+ },
98
+ };
99
+
100
+ // 4. radio-select-field-new sandbox entry.
101
+ const sandboxRadio = {
102
+ formSettings: {
103
+ key: 'sandbox-radio-vertical',
104
+ fields: [
105
+ {
106
+ key: 'priority',
107
+ type: 'radioSelect',
108
+ label: 'Prioritás',
109
+ required: true,
110
+ options: [
111
+ { label: 'Alacsony', value: 'low' },
112
+ { label: 'Közepes', value: 'medium' },
113
+ { label: 'Magas', value: 'high' },
114
+ { label: 'Sürgős', value: 'urgent' },
115
+ ],
116
+ testId: 'sandbox-radio-vertical',
117
+ },
118
+ ],
119
+ },
120
+ formRoute: '/c/radio-select-field-new',
121
+ formSelector: 'dynamo-radio-select-field-new',
122
+ suiteSettings: {
123
+ runMode: 'full',
124
+ skipFormLevelTests: true,
125
+ describePrefix: 'Sandbox: DyNX_RadioSelectFieldNew (Vertical variant)',
126
+ },
127
+ };
128
+
129
+ // 5. date-range-field-new sandbox entry.
130
+ const sandboxDateRange = {
131
+ formSettings: {
132
+ key: 'sandbox-date-range-default',
133
+ fields: [
134
+ {
135
+ key: 'vacationRange',
136
+ type: 'dateRange',
137
+ label: 'Szabadság',
138
+ allowSameDay: true,
139
+ testId: 'sandbox-date-range-default',
140
+ },
141
+ ],
142
+ },
143
+ formRoute: '/c/date-range-field-new',
144
+ formSelector: 'dynamo-date-range-field-new',
145
+ suiteSettings: {
146
+ runMode: 'full',
147
+ skipFormLevelTests: true,
148
+ describePrefix: 'Sandbox: DyNX_DateRangeFieldNew (Default variant)',
149
+ },
150
+ };
151
+
152
+ const inputs = [
153
+ ['text-field-new', sandboxTextField],
154
+ ['password-field-new', sandboxPasswordField],
155
+ ['slider-field-new', sandboxSlider],
156
+ ['radio-select-field-new', sandboxRadio],
157
+ ['date-range-field-new', sandboxDateRange],
158
+ ];
159
+
160
+ let totalCases = 0;
161
+ for (const [name, cfg] of inputs) {
162
+ const spec = DyE2E_FormSuite_Generator.emit(cfg);
163
+ const outPath = path.join(OUT_DIR, `${name}.spec.ts`);
164
+ fs.writeFileSync(outPath, spec, 'utf-8');
165
+ const caseCount = (spec.match(/^\s*test\(/gm) || []).length;
166
+ totalCases += caseCount;
167
+ console.log(` ✓ ${name}.spec.ts (${caseCount} test cases)`);
168
+ }
169
+
170
+ console.log(`\n[dogfood] generated ${inputs.length} spec files, ${totalCases} total test cases.`);