@futdevpro/dynamo-e2e 1.18.10 → 1.18.11

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 (336) hide show
  1. package/CHANGELOG.md +12 -2
  2. package/LICENSE +21 -0
  3. package/README.md +3 -0
  4. package/build/_modules/game/_models/game-contracts.interface.d.ts +82 -0
  5. package/build/_modules/game/_models/game-contracts.interface.d.ts.map +1 -0
  6. package/build/_modules/game/_models/game-contracts.interface.js +3 -0
  7. package/build/_modules/game/_models/game-contracts.interface.js.map +1 -0
  8. package/build/_modules/game/game-seam.helper.d.ts +40 -0
  9. package/build/_modules/game/game-seam.helper.d.ts.map +1 -0
  10. package/build/_modules/game/game-seam.helper.js +254 -0
  11. package/build/_modules/game/game-seam.helper.js.map +1 -0
  12. package/build/_modules/game/index.d.ts +4 -0
  13. package/build/_modules/game/index.d.ts.map +1 -0
  14. package/build/_modules/game/index.js +20 -0
  15. package/build/_modules/game/index.js.map +1 -0
  16. package/build/_modules/game/journey-catalog.validator.d.ts +5 -0
  17. package/build/_modules/game/journey-catalog.validator.d.ts.map +1 -0
  18. package/build/_modules/game/journey-catalog.validator.js +244 -0
  19. package/build/_modules/game/journey-catalog.validator.js.map +1 -0
  20. package/build/_modules/generators/_collections/form-level-emission.util.d.ts.map +1 -1
  21. package/build/_modules/generators/_collections/form-level-emission.util.js +8 -0
  22. package/build/_modules/generators/_collections/form-level-emission.util.js.map +1 -1
  23. package/build/_modules/generators/_models/form-settings-shape.interface.d.ts +7 -0
  24. package/build/_modules/generators/_models/form-settings-shape.interface.d.ts.map +1 -1
  25. package/build/_modules/presets/_collections/playwright-config.factory.d.ts.map +1 -1
  26. package/build/_modules/presets/_collections/playwright-config.factory.js +6 -0
  27. package/build/_modules/presets/_collections/playwright-config.factory.js.map +1 -1
  28. package/build/_modules/presets/_models/interfaces/playwright-config-options.interface.d.ts +4 -0
  29. package/build/_modules/presets/_models/interfaces/playwright-config-options.interface.d.ts.map +1 -1
  30. package/build/_modules/vqa/generators/ai-agent-readme.template.js +1 -1
  31. package/build/index.d.ts +1 -0
  32. package/build/index.d.ts.map +1 -1
  33. package/build/index.js +2 -1
  34. package/build/index.js.map +1 -1
  35. package/package.json +12 -5
  36. package/.c8rc.json +0 -25
  37. package/.dynamo/pipeline.cicd.config.json +0 -167
  38. package/.dynamo/version-bump.config.json +0 -5
  39. package/.github/workflows/main.yml +0 -35
  40. package/BUILD.md +0 -36
  41. package/CONTRIBUTING.md +0 -90
  42. package/build/_modules/contracts/contracts.spec.d.ts +0 -2
  43. package/build/_modules/contracts/contracts.spec.d.ts.map +0 -1
  44. package/build/_modules/contracts/contracts.spec.js +0 -144
  45. package/build/_modules/contracts/contracts.spec.js.map +0 -1
  46. package/build/_modules/cwv/cwv-comparison.spec.d.ts +0 -2
  47. package/build/_modules/cwv/cwv-comparison.spec.d.ts.map +0 -1
  48. package/build/_modules/cwv/cwv-comparison.spec.js +0 -77
  49. package/build/_modules/cwv/cwv-comparison.spec.js.map +0 -1
  50. package/build/_modules/cwv/cwv-diagnose.spec.d.ts +0 -2
  51. package/build/_modules/cwv/cwv-diagnose.spec.d.ts.map +0 -1
  52. package/build/_modules/cwv/cwv-diagnose.spec.js +0 -78
  53. package/build/_modules/cwv/cwv-diagnose.spec.js.map +0 -1
  54. package/build/_modules/cwv/cwv-suite.generator.spec.d.ts +0 -2
  55. package/build/_modules/cwv/cwv-suite.generator.spec.d.ts.map +0 -1
  56. package/build/_modules/cwv/cwv-suite.generator.spec.js +0 -81
  57. package/build/_modules/cwv/cwv-suite.generator.spec.js.map +0 -1
  58. package/build/_modules/cwv/cwv-summarize.spec.d.ts +0 -2
  59. package/build/_modules/cwv/cwv-summarize.spec.d.ts.map +0 -1
  60. package/build/_modules/cwv/cwv-summarize.spec.js +0 -70
  61. package/build/_modules/cwv/cwv-summarize.spec.js.map +0 -1
  62. package/build/_modules/cwv/inp-emit-integration.spec.d.ts +0 -2
  63. package/build/_modules/cwv/inp-emit-integration.spec.d.ts.map +0 -1
  64. package/build/_modules/cwv/inp-emit-integration.spec.js +0 -43
  65. package/build/_modules/cwv/inp-emit-integration.spec.js.map +0 -1
  66. package/build/_modules/cwv/inp-interaction-driver.spec.d.ts +0 -2
  67. package/build/_modules/cwv/inp-interaction-driver.spec.d.ts.map +0 -1
  68. package/build/_modules/cwv/inp-interaction-driver.spec.js +0 -44
  69. package/build/_modules/cwv/inp-interaction-driver.spec.js.map +0 -1
  70. package/build/_modules/cwv/inp-script.spec.d.ts +0 -2
  71. package/build/_modules/cwv/inp-script.spec.d.ts.map +0 -1
  72. package/build/_modules/cwv/inp-script.spec.js +0 -35
  73. package/build/_modules/cwv/inp-script.spec.js.map +0 -1
  74. package/build/_modules/cwv/per-route-thresholds.spec.d.ts +0 -2
  75. package/build/_modules/cwv/per-route-thresholds.spec.d.ts.map +0 -1
  76. package/build/_modules/cwv/per-route-thresholds.spec.js +0 -37
  77. package/build/_modules/cwv/per-route-thresholds.spec.js.map +0 -1
  78. package/build/_modules/generators/bootstrap.spec.d.ts +0 -2
  79. package/build/_modules/generators/bootstrap.spec.d.ts.map +0 -1
  80. package/build/_modules/generators/bootstrap.spec.js +0 -46
  81. package/build/_modules/generators/bootstrap.spec.js.map +0 -1
  82. package/build/_modules/generators/cli-runner.spec.d.ts +0 -2
  83. package/build/_modules/generators/cli-runner.spec.d.ts.map +0 -1
  84. package/build/_modules/generators/cli-runner.spec.js +0 -93
  85. package/build/_modules/generators/cli-runner.spec.js.map +0 -1
  86. package/build/_modules/generators/config-validator.spec.d.ts +0 -2
  87. package/build/_modules/generators/config-validator.spec.d.ts.map +0 -1
  88. package/build/_modules/generators/config-validator.spec.js +0 -115
  89. package/build/_modules/generators/config-validator.spec.js.map +0 -1
  90. package/build/_modules/generators/doctor.spec.d.ts +0 -2
  91. package/build/_modules/generators/doctor.spec.d.ts.map +0 -1
  92. package/build/_modules/generators/doctor.spec.js +0 -68
  93. package/build/_modules/generators/doctor.spec.js.map +0 -1
  94. package/build/_modules/generators/field-emission-edge.spec.d.ts +0 -2
  95. package/build/_modules/generators/field-emission-edge.spec.d.ts.map +0 -1
  96. package/build/_modules/generators/field-emission-edge.spec.js +0 -164
  97. package/build/_modules/generators/field-emission-edge.spec.js.map +0 -1
  98. package/build/_modules/generators/form-suite.generator.spec.d.ts +0 -2
  99. package/build/_modules/generators/form-suite.generator.spec.d.ts.map +0 -1
  100. package/build/_modules/generators/form-suite.generator.spec.js +0 -188
  101. package/build/_modules/generators/form-suite.generator.spec.js.map +0 -1
  102. package/build/_modules/generators/info.spec.d.ts +0 -2
  103. package/build/_modules/generators/info.spec.d.ts.map +0 -1
  104. package/build/_modules/generators/info.spec.js +0 -42
  105. package/build/_modules/generators/info.spec.js.map +0 -1
  106. package/build/_modules/generators/json-schema.spec.d.ts +0 -2
  107. package/build/_modules/generators/json-schema.spec.d.ts.map +0 -1
  108. package/build/_modules/generators/json-schema.spec.js +0 -81
  109. package/build/_modules/generators/json-schema.spec.js.map +0 -1
  110. package/build/_modules/generators/preset-configs.spec.d.ts +0 -2
  111. package/build/_modules/generators/preset-configs.spec.d.ts.map +0 -1
  112. package/build/_modules/generators/preset-configs.spec.js +0 -53
  113. package/build/_modules/generators/preset-configs.spec.js.map +0 -1
  114. package/build/_modules/generators/test-case-filter-edge.spec.d.ts +0 -2
  115. package/build/_modules/generators/test-case-filter-edge.spec.d.ts.map +0 -1
  116. package/build/_modules/generators/test-case-filter-edge.spec.js +0 -105
  117. package/build/_modules/generators/test-case-filter-edge.spec.js.map +0 -1
  118. package/build/_modules/generators/viewport-suite.generator.spec.d.ts +0 -2
  119. package/build/_modules/generators/viewport-suite.generator.spec.d.ts.map +0 -1
  120. package/build/_modules/generators/viewport-suite.generator.spec.js +0 -59
  121. package/build/_modules/generators/viewport-suite.generator.spec.js.map +0 -1
  122. package/build/_modules/generators/wave-2b-emission.spec.d.ts +0 -2
  123. package/build/_modules/generators/wave-2b-emission.spec.d.ts.map +0 -1
  124. package/build/_modules/generators/wave-2b-emission.spec.js +0 -115
  125. package/build/_modules/generators/wave-2b-emission.spec.js.map +0 -1
  126. package/build/_modules/presets/presets.spec.d.ts +0 -2
  127. package/build/_modules/presets/presets.spec.d.ts.map +0 -1
  128. package/build/_modules/presets/presets.spec.js +0 -286
  129. package/build/_modules/presets/presets.spec.js.map +0 -1
  130. package/build/_modules/runtime/assertion-helpers.spec.d.ts +0 -2
  131. package/build/_modules/runtime/assertion-helpers.spec.d.ts.map +0 -1
  132. package/build/_modules/runtime/assertion-helpers.spec.js +0 -57
  133. package/build/_modules/runtime/assertion-helpers.spec.js.map +0 -1
  134. package/build/_modules/runtime/logger.service.spec.d.ts +0 -2
  135. package/build/_modules/runtime/logger.service.spec.d.ts.map +0 -1
  136. package/build/_modules/runtime/logger.service.spec.js +0 -61
  137. package/build/_modules/runtime/logger.service.spec.js.map +0 -1
  138. package/build/_modules/runtime/login-flow-helper.spec.d.ts +0 -2
  139. package/build/_modules/runtime/login-flow-helper.spec.d.ts.map +0 -1
  140. package/build/_modules/runtime/login-flow-helper.spec.js +0 -74
  141. package/build/_modules/runtime/login-flow-helper.spec.js.map +0 -1
  142. package/build/_modules/runtime/page-objects.spec.d.ts +0 -2
  143. package/build/_modules/runtime/page-objects.spec.d.ts.map +0 -1
  144. package/build/_modules/runtime/page-objects.spec.js +0 -241
  145. package/build/_modules/runtime/page-objects.spec.js.map +0 -1
  146. package/build/_modules/runtime/runtime.spec.d.ts +0 -2
  147. package/build/_modules/runtime/runtime.spec.d.ts.map +0 -1
  148. package/build/_modules/runtime/runtime.spec.js +0 -73
  149. package/build/_modules/runtime/runtime.spec.js.map +0 -1
  150. package/build/_modules/runtime/unique-generator.spec.d.ts +0 -2
  151. package/build/_modules/runtime/unique-generator.spec.d.ts.map +0 -1
  152. package/build/_modules/runtime/unique-generator.spec.js +0 -41
  153. package/build/_modules/runtime/unique-generator.spec.js.map +0 -1
  154. package/build/_modules/runtime/wave-2b-page-objects.spec.d.ts +0 -2
  155. package/build/_modules/runtime/wave-2b-page-objects.spec.d.ts.map +0 -1
  156. package/build/_modules/runtime/wave-2b-page-objects.spec.js +0 -130
  157. package/build/_modules/runtime/wave-2b-page-objects.spec.js.map +0 -1
  158. package/build/_modules/vqa/capture-spec.generator.spec.d.ts +0 -2
  159. package/build/_modules/vqa/capture-spec.generator.spec.d.ts.map +0 -1
  160. package/build/_modules/vqa/capture-spec.generator.spec.js +0 -126
  161. package/build/_modules/vqa/capture-spec.generator.spec.js.map +0 -1
  162. package/build/_modules/vqa/comparison-bundle.generator.spec.d.ts +0 -2
  163. package/build/_modules/vqa/comparison-bundle.generator.spec.d.ts.map +0 -1
  164. package/build/_modules/vqa/comparison-bundle.generator.spec.js +0 -130
  165. package/build/_modules/vqa/comparison-bundle.generator.spec.js.map +0 -1
  166. package/build/_modules/vqa/finding-validator.spec.d.ts +0 -2
  167. package/build/_modules/vqa/finding-validator.spec.d.ts.map +0 -1
  168. package/build/_modules/vqa/finding-validator.spec.js +0 -136
  169. package/build/_modules/vqa/finding-validator.spec.js.map +0 -1
  170. package/build/_modules/vqa/manifest-validator.spec.d.ts +0 -2
  171. package/build/_modules/vqa/manifest-validator.spec.d.ts.map +0 -1
  172. package/build/_modules/vqa/manifest-validator.spec.js +0 -125
  173. package/build/_modules/vqa/manifest-validator.spec.js.map +0 -1
  174. package/build/_modules/vqa/review-bundle.generator.spec.d.ts +0 -2
  175. package/build/_modules/vqa/review-bundle.generator.spec.d.ts.map +0 -1
  176. package/build/_modules/vqa/review-bundle.generator.spec.js +0 -166
  177. package/build/_modules/vqa/review-bundle.generator.spec.js.map +0 -1
  178. package/build/_modules/vqa/wave-7.spec.d.ts +0 -2
  179. package/build/_modules/vqa/wave-7.spec.d.ts.map +0 -1
  180. package/build/_modules/vqa/wave-7.spec.js +0 -203
  181. package/build/_modules/vqa/wave-7.spec.js.map +0 -1
  182. package/coverage/base.css +0 -224
  183. package/coverage/block-navigation.js +0 -87
  184. package/coverage/contracts/_collections/index.html +0 -116
  185. package/coverage/contracts/_collections/index.ts.html +0 -97
  186. package/coverage/contracts/_collections/utils/index.html +0 -116
  187. package/coverage/contracts/_collections/utils/test-id.util.ts.html +0 -172
  188. package/coverage/contracts/_enums/cwv-metric-type.enum.ts.html +0 -145
  189. package/coverage/contracts/_enums/field-test-case-type.enum.ts.html +0 -394
  190. package/coverage/contracts/_enums/index.html +0 -191
  191. package/coverage/contracts/_enums/index.ts.html +0 -100
  192. package/coverage/contracts/_enums/standard-viewport.enum.ts.html +0 -127
  193. package/coverage/contracts/_enums/test-expectation-type.enum.ts.html +0 -133
  194. package/coverage/contracts/_enums/test-run-mode-type.enum.ts.html +0 -130
  195. package/coverage/contracts/index.html +0 -116
  196. package/coverage/contracts/index.ts.html +0 -121
  197. package/coverage/cwv/_collections/cwv-aggregator.util.ts.html +0 -241
  198. package/coverage/cwv/_collections/cwv-comparison.util.ts.html +0 -355
  199. package/coverage/cwv/_collections/cwv-diagnose.util.ts.html +0 -553
  200. package/coverage/cwv/_collections/cwv-emission.util.ts.html +0 -448
  201. package/coverage/cwv/_collections/cwv-summarize.util.ts.html +0 -325
  202. package/coverage/cwv/_collections/index.html +0 -206
  203. package/coverage/cwv/_collections/inp-interaction-script.const.ts.html +0 -304
  204. package/coverage/cwv/_collections/web-vitals-page-script.const.ts.html +0 -331
  205. package/coverage/cwv/cwv-suite.generator.ts.html +0 -277
  206. package/coverage/cwv/index.html +0 -116
  207. package/coverage/favicon.png +0 -0
  208. package/coverage/generators/_collections/cli-runner.util.ts.html +0 -919
  209. package/coverage/generators/_collections/config-validator.util.ts.html +0 -397
  210. package/coverage/generators/_collections/field-emission.util.ts.html +0 -604
  211. package/coverage/generators/_collections/form-level-emission.util.ts.html +0 -220
  212. package/coverage/generators/_collections/index.html +0 -236
  213. package/coverage/generators/_collections/json-schema.util.ts.html +0 -652
  214. package/coverage/generators/_collections/preset-configs.const.ts.html +0 -328
  215. package/coverage/generators/_collections/spec-emission.util.ts.html +0 -298
  216. package/coverage/generators/_collections/test-case-filter.util.ts.html +0 -523
  217. package/coverage/generators/_collections/viewport-emission.util.ts.html +0 -313
  218. package/coverage/generators/form-suite.generator.ts.html +0 -406
  219. package/coverage/generators/index.html +0 -131
  220. package/coverage/generators/viewport-suite.generator.ts.html +0 -307
  221. package/coverage/index.html +0 -266
  222. package/coverage/lcov-report/base.css +0 -224
  223. package/coverage/lcov-report/block-navigation.js +0 -87
  224. package/coverage/lcov-report/contracts/_collections/index.html +0 -116
  225. package/coverage/lcov-report/contracts/_collections/index.ts.html +0 -97
  226. package/coverage/lcov-report/contracts/_collections/utils/index.html +0 -116
  227. package/coverage/lcov-report/contracts/_collections/utils/test-id.util.ts.html +0 -172
  228. package/coverage/lcov-report/contracts/_enums/cwv-metric-type.enum.ts.html +0 -145
  229. package/coverage/lcov-report/contracts/_enums/field-test-case-type.enum.ts.html +0 -394
  230. package/coverage/lcov-report/contracts/_enums/index.html +0 -191
  231. package/coverage/lcov-report/contracts/_enums/index.ts.html +0 -100
  232. package/coverage/lcov-report/contracts/_enums/standard-viewport.enum.ts.html +0 -127
  233. package/coverage/lcov-report/contracts/_enums/test-expectation-type.enum.ts.html +0 -133
  234. package/coverage/lcov-report/contracts/_enums/test-run-mode-type.enum.ts.html +0 -130
  235. package/coverage/lcov-report/contracts/index.html +0 -116
  236. package/coverage/lcov-report/contracts/index.ts.html +0 -121
  237. package/coverage/lcov-report/cwv/_collections/cwv-aggregator.util.ts.html +0 -241
  238. package/coverage/lcov-report/cwv/_collections/cwv-comparison.util.ts.html +0 -355
  239. package/coverage/lcov-report/cwv/_collections/cwv-diagnose.util.ts.html +0 -553
  240. package/coverage/lcov-report/cwv/_collections/cwv-emission.util.ts.html +0 -448
  241. package/coverage/lcov-report/cwv/_collections/cwv-summarize.util.ts.html +0 -325
  242. package/coverage/lcov-report/cwv/_collections/index.html +0 -206
  243. package/coverage/lcov-report/cwv/_collections/inp-interaction-script.const.ts.html +0 -304
  244. package/coverage/lcov-report/cwv/_collections/web-vitals-page-script.const.ts.html +0 -331
  245. package/coverage/lcov-report/cwv/cwv-suite.generator.ts.html +0 -277
  246. package/coverage/lcov-report/cwv/index.html +0 -116
  247. package/coverage/lcov-report/favicon.png +0 -0
  248. package/coverage/lcov-report/generators/_collections/cli-runner.util.ts.html +0 -919
  249. package/coverage/lcov-report/generators/_collections/config-validator.util.ts.html +0 -397
  250. package/coverage/lcov-report/generators/_collections/field-emission.util.ts.html +0 -604
  251. package/coverage/lcov-report/generators/_collections/form-level-emission.util.ts.html +0 -220
  252. package/coverage/lcov-report/generators/_collections/index.html +0 -236
  253. package/coverage/lcov-report/generators/_collections/json-schema.util.ts.html +0 -652
  254. package/coverage/lcov-report/generators/_collections/preset-configs.const.ts.html +0 -328
  255. package/coverage/lcov-report/generators/_collections/spec-emission.util.ts.html +0 -298
  256. package/coverage/lcov-report/generators/_collections/test-case-filter.util.ts.html +0 -523
  257. package/coverage/lcov-report/generators/_collections/viewport-emission.util.ts.html +0 -313
  258. package/coverage/lcov-report/generators/form-suite.generator.ts.html +0 -406
  259. package/coverage/lcov-report/generators/index.html +0 -131
  260. package/coverage/lcov-report/generators/viewport-suite.generator.ts.html +0 -307
  261. package/coverage/lcov-report/index.html +0 -266
  262. package/coverage/lcov-report/prettify.css +0 -1
  263. package/coverage/lcov-report/prettify.js +0 -2
  264. package/coverage/lcov-report/runtime/_collections/assertion-helpers.util.ts.html +0 -205
  265. package/coverage/lcov-report/runtime/_collections/index.html +0 -146
  266. package/coverage/lcov-report/runtime/_collections/unique-generator.util.ts.html +0 -256
  267. package/coverage/lcov-report/runtime/_collections/wait-helpers.util.ts.html +0 -238
  268. package/coverage/lcov-report/runtime/_services/dialog-page-object.ts.html +0 -157
  269. package/coverage/lcov-report/runtime/_services/field-page-object.ts.html +0 -253
  270. package/coverage/lcov-report/runtime/_services/form-page-object.ts.html +0 -184
  271. package/coverage/lcov-report/runtime/_services/index.html +0 -236
  272. package/coverage/lcov-report/runtime/_services/loader-page-object.ts.html +0 -142
  273. package/coverage/lcov-report/runtime/_services/logger.service.ts.html +0 -385
  274. package/coverage/lcov-report/runtime/_services/login-flow-helper.base.ts.html +0 -331
  275. package/coverage/lcov-report/runtime/_services/nav-page-object.ts.html +0 -145
  276. package/coverage/lcov-report/runtime/_services/toast-page-object.ts.html +0 -130
  277. package/coverage/lcov-report/runtime/_services/wave-2b-page-objects.ts.html +0 -397
  278. package/coverage/lcov-report/runtime/index.html +0 -116
  279. package/coverage/lcov-report/runtime/index.ts.html +0 -178
  280. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  281. package/coverage/lcov-report/sorter.js +0 -210
  282. package/coverage/lcov.info +0 -4047
  283. package/coverage/prettify.css +0 -1
  284. package/coverage/prettify.js +0 -2
  285. package/coverage/runtime/_collections/assertion-helpers.util.ts.html +0 -205
  286. package/coverage/runtime/_collections/index.html +0 -146
  287. package/coverage/runtime/_collections/unique-generator.util.ts.html +0 -256
  288. package/coverage/runtime/_collections/wait-helpers.util.ts.html +0 -238
  289. package/coverage/runtime/_services/dialog-page-object.ts.html +0 -157
  290. package/coverage/runtime/_services/field-page-object.ts.html +0 -253
  291. package/coverage/runtime/_services/form-page-object.ts.html +0 -184
  292. package/coverage/runtime/_services/index.html +0 -236
  293. package/coverage/runtime/_services/loader-page-object.ts.html +0 -142
  294. package/coverage/runtime/_services/logger.service.ts.html +0 -385
  295. package/coverage/runtime/_services/login-flow-helper.base.ts.html +0 -331
  296. package/coverage/runtime/_services/nav-page-object.ts.html +0 -145
  297. package/coverage/runtime/_services/toast-page-object.ts.html +0 -130
  298. package/coverage/runtime/_services/wave-2b-page-objects.ts.html +0 -397
  299. package/coverage/runtime/index.html +0 -116
  300. package/coverage/runtime/index.ts.html +0 -178
  301. package/coverage/sort-arrow-sprite.png +0 -0
  302. package/coverage/sorter.js +0 -210
  303. package/coverage/tmp/coverage-228636-1781075225757-0.json +0 -1
  304. package/coverage/tmp/coverage-228704-1781075227108-0.json +0 -1
  305. package/dogfood/PARITY-MATRIX.md +0 -67
  306. package/dogfood/generated/date-range-field-new.spec.ts +0 -54
  307. package/dogfood/generated/password-field-new.spec.ts +0 -97
  308. package/dogfood/generated/radio-select-field-new.spec.ts +0 -69
  309. package/dogfood/generated/slider-field-new.spec.ts +0 -47
  310. package/dogfood/generated/text-field-new.spec.ts +0 -0
  311. package/dogfood/generated-full/checkbox-field-new.spec.ts +0 -56
  312. package/dogfood/generated-full/date-field-new.spec.ts +0 -71
  313. package/dogfood/generated-full/date-range-field-new.spec.ts +0 -54
  314. package/dogfood/generated-full/datetime-field-new.spec.ts +0 -55
  315. package/dogfood/generated-full/multiselect-field-new.spec.ts +0 -69
  316. package/dogfood/generated-full/number-field-new.spec.ts +0 -113
  317. package/dogfood/generated-full/password-field-new.spec.ts +0 -97
  318. package/dogfood/generated-full/radio-select-field-new.spec.ts +0 -69
  319. package/dogfood/generated-full/sandbox-viewport-audit.spec.ts +0 -4643
  320. package/dogfood/generated-full/select-field-new.spec.ts +0 -69
  321. package/dogfood/generated-full/slider-field-new.spec.ts +0 -47
  322. package/dogfood/generated-full/slider-range-field-new.spec.ts +0 -54
  323. package/dogfood/generated-full/text-field-new.spec.ts +0 -0
  324. package/dogfood/generated-full/textarea-field-new.spec.ts +0 -72
  325. package/dogfood/sandbox-bootstrap-full.js +0 -248
  326. package/dogfood/sandbox-bootstrap.js +0 -170
  327. package/examples/minimal-form/README.md +0 -55
  328. package/examples/minimal-form/form-config.json +0 -38
  329. package/examples/multi-form-app/README.md +0 -63
  330. package/examples/multi-form-app/cwv-config.json +0 -14
  331. package/examples/multi-form-app/settings/login-form.json +0 -11
  332. package/examples/multi-form-app/settings/profile-form.json +0 -25
  333. package/examples/multi-form-app/viewport-config.json +0 -12
  334. package/logs/cicd-job.json +0 -3
  335. package/logs/cicd-report.json +0 -3
  336. package/logs/cicd-status.json +0 -3
@@ -1,4643 +0,0 @@
1
- /**
2
- * Auto-generated by @futdevpro/dynamo-e2e — FormSuite Generator
3
- * Form key: viewport-audit
4
- * Route: /c/text-field-new, /c/textarea-field-new, /c/number-field-new, /c/password-field-new, /c/slider-field-new, /c/slider-range-field-new, /c/checkbox-field-new, /c/select-field-new, /c/multiselect-field-new, /c/radio-select-field-new, /c/date-field-new, /c/datetime-field-new, /c/date-range-field-new
5
- * Built at: WAVE-2-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 } from '@playwright/test';
12
-
13
- test.describe('Sandbox viewport audit', (): void => {
14
-
15
- test.describe('Route: Sandbox text-field-new (/c/text-field-new)', (): void => {
16
- test('text-field-new × mobile-s × dark', async ({ page }): Promise<void> => {
17
- await page.setViewportSize({ width: 320, height: 568 });
18
- const response = await page.goto('/c/text-field-new');
19
- expect(response?.ok()).toBeTruthy();
20
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
21
- await page.waitForLoadState('networkidle');
22
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
23
- scrollWidth: document.documentElement.scrollWidth,
24
- innerWidth: window.innerWidth,
25
- }));
26
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
27
-
28
- const tooSmall = await page.evaluate((minPx: number): number => {
29
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
30
- let undersize: number = 0;
31
- tappable.forEach((el: HTMLElement): void => {
32
- const rect = el.getBoundingClientRect();
33
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
34
- undersize++;
35
- }
36
- });
37
- return undersize;
38
- }, 44);
39
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
40
-
41
- await page.screenshot({ path: 'e2e/screenshots/sandbox/text-field-new/mobile-s-dark.png', fullPage: true });
42
-
43
- });
44
-
45
- test('text-field-new × mobile-s × light', async ({ page }): Promise<void> => {
46
- await page.setViewportSize({ width: 320, height: 568 });
47
- const response = await page.goto('/c/text-field-new');
48
- expect(response?.ok()).toBeTruthy();
49
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
50
- await page.waitForLoadState('networkidle');
51
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
52
- scrollWidth: document.documentElement.scrollWidth,
53
- innerWidth: window.innerWidth,
54
- }));
55
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
56
-
57
- const tooSmall = await page.evaluate((minPx: number): number => {
58
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
59
- let undersize: number = 0;
60
- tappable.forEach((el: HTMLElement): void => {
61
- const rect = el.getBoundingClientRect();
62
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
63
- undersize++;
64
- }
65
- });
66
- return undersize;
67
- }, 44);
68
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
69
-
70
- await page.screenshot({ path: 'e2e/screenshots/sandbox/text-field-new/mobile-s-light.png', fullPage: true });
71
-
72
- });
73
-
74
- test('text-field-new × mobile-m × dark', async ({ page }): Promise<void> => {
75
- await page.setViewportSize({ width: 375, height: 667 });
76
- const response = await page.goto('/c/text-field-new');
77
- expect(response?.ok()).toBeTruthy();
78
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
79
- await page.waitForLoadState('networkidle');
80
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
81
- scrollWidth: document.documentElement.scrollWidth,
82
- innerWidth: window.innerWidth,
83
- }));
84
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
85
-
86
- const tooSmall = await page.evaluate((minPx: number): number => {
87
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
88
- let undersize: number = 0;
89
- tappable.forEach((el: HTMLElement): void => {
90
- const rect = el.getBoundingClientRect();
91
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
92
- undersize++;
93
- }
94
- });
95
- return undersize;
96
- }, 44);
97
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
98
-
99
- await page.screenshot({ path: 'e2e/screenshots/sandbox/text-field-new/mobile-m-dark.png', fullPage: true });
100
-
101
- });
102
-
103
- test('text-field-new × mobile-m × light', async ({ page }): Promise<void> => {
104
- await page.setViewportSize({ width: 375, height: 667 });
105
- const response = await page.goto('/c/text-field-new');
106
- expect(response?.ok()).toBeTruthy();
107
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
108
- await page.waitForLoadState('networkidle');
109
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
110
- scrollWidth: document.documentElement.scrollWidth,
111
- innerWidth: window.innerWidth,
112
- }));
113
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
114
-
115
- const tooSmall = await page.evaluate((minPx: number): number => {
116
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
117
- let undersize: number = 0;
118
- tappable.forEach((el: HTMLElement): void => {
119
- const rect = el.getBoundingClientRect();
120
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
121
- undersize++;
122
- }
123
- });
124
- return undersize;
125
- }, 44);
126
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
127
-
128
- await page.screenshot({ path: 'e2e/screenshots/sandbox/text-field-new/mobile-m-light.png', fullPage: true });
129
-
130
- });
131
-
132
- test('text-field-new × mobile-l × dark', async ({ page }): Promise<void> => {
133
- await page.setViewportSize({ width: 414, height: 896 });
134
- const response = await page.goto('/c/text-field-new');
135
- expect(response?.ok()).toBeTruthy();
136
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
137
- await page.waitForLoadState('networkidle');
138
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
139
- scrollWidth: document.documentElement.scrollWidth,
140
- innerWidth: window.innerWidth,
141
- }));
142
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
143
-
144
- const tooSmall = await page.evaluate((minPx: number): number => {
145
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
146
- let undersize: number = 0;
147
- tappable.forEach((el: HTMLElement): void => {
148
- const rect = el.getBoundingClientRect();
149
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
150
- undersize++;
151
- }
152
- });
153
- return undersize;
154
- }, 44);
155
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
156
-
157
- await page.screenshot({ path: 'e2e/screenshots/sandbox/text-field-new/mobile-l-dark.png', fullPage: true });
158
-
159
- });
160
-
161
- test('text-field-new × mobile-l × light', async ({ page }): Promise<void> => {
162
- await page.setViewportSize({ width: 414, height: 896 });
163
- const response = await page.goto('/c/text-field-new');
164
- expect(response?.ok()).toBeTruthy();
165
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
166
- await page.waitForLoadState('networkidle');
167
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
168
- scrollWidth: document.documentElement.scrollWidth,
169
- innerWidth: window.innerWidth,
170
- }));
171
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
172
-
173
- const tooSmall = await page.evaluate((minPx: number): number => {
174
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
175
- let undersize: number = 0;
176
- tappable.forEach((el: HTMLElement): void => {
177
- const rect = el.getBoundingClientRect();
178
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
179
- undersize++;
180
- }
181
- });
182
- return undersize;
183
- }, 44);
184
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
185
-
186
- await page.screenshot({ path: 'e2e/screenshots/sandbox/text-field-new/mobile-l-light.png', fullPage: true });
187
-
188
- });
189
-
190
- test('text-field-new × tablet-p × dark', async ({ page }): Promise<void> => {
191
- await page.setViewportSize({ width: 768, height: 1024 });
192
- const response = await page.goto('/c/text-field-new');
193
- expect(response?.ok()).toBeTruthy();
194
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
195
- await page.waitForLoadState('networkidle');
196
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
197
- scrollWidth: document.documentElement.scrollWidth,
198
- innerWidth: window.innerWidth,
199
- }));
200
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
201
-
202
- const tooSmall = await page.evaluate((minPx: number): number => {
203
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
204
- let undersize: number = 0;
205
- tappable.forEach((el: HTMLElement): void => {
206
- const rect = el.getBoundingClientRect();
207
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
208
- undersize++;
209
- }
210
- });
211
- return undersize;
212
- }, 44);
213
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
214
-
215
- await page.screenshot({ path: 'e2e/screenshots/sandbox/text-field-new/tablet-p-dark.png', fullPage: true });
216
-
217
- });
218
-
219
- test('text-field-new × tablet-p × light', async ({ page }): Promise<void> => {
220
- await page.setViewportSize({ width: 768, height: 1024 });
221
- const response = await page.goto('/c/text-field-new');
222
- expect(response?.ok()).toBeTruthy();
223
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
224
- await page.waitForLoadState('networkidle');
225
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
226
- scrollWidth: document.documentElement.scrollWidth,
227
- innerWidth: window.innerWidth,
228
- }));
229
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
230
-
231
- const tooSmall = await page.evaluate((minPx: number): number => {
232
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
233
- let undersize: number = 0;
234
- tappable.forEach((el: HTMLElement): void => {
235
- const rect = el.getBoundingClientRect();
236
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
237
- undersize++;
238
- }
239
- });
240
- return undersize;
241
- }, 44);
242
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
243
-
244
- await page.screenshot({ path: 'e2e/screenshots/sandbox/text-field-new/tablet-p-light.png', fullPage: true });
245
-
246
- });
247
-
248
- test('text-field-new × tablet-l × dark', async ({ page }): Promise<void> => {
249
- await page.setViewportSize({ width: 1024, height: 768 });
250
- const response = await page.goto('/c/text-field-new');
251
- expect(response?.ok()).toBeTruthy();
252
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
253
- await page.waitForLoadState('networkidle');
254
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
255
- scrollWidth: document.documentElement.scrollWidth,
256
- innerWidth: window.innerWidth,
257
- }));
258
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
259
-
260
- const tooSmall = await page.evaluate((minPx: number): number => {
261
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
262
- let undersize: number = 0;
263
- tappable.forEach((el: HTMLElement): void => {
264
- const rect = el.getBoundingClientRect();
265
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
266
- undersize++;
267
- }
268
- });
269
- return undersize;
270
- }, 44);
271
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
272
-
273
- await page.screenshot({ path: 'e2e/screenshots/sandbox/text-field-new/tablet-l-dark.png', fullPage: true });
274
-
275
- });
276
-
277
- test('text-field-new × tablet-l × light', async ({ page }): Promise<void> => {
278
- await page.setViewportSize({ width: 1024, height: 768 });
279
- const response = await page.goto('/c/text-field-new');
280
- expect(response?.ok()).toBeTruthy();
281
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
282
- await page.waitForLoadState('networkidle');
283
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
284
- scrollWidth: document.documentElement.scrollWidth,
285
- innerWidth: window.innerWidth,
286
- }));
287
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
288
-
289
- const tooSmall = await page.evaluate((minPx: number): number => {
290
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
291
- let undersize: number = 0;
292
- tappable.forEach((el: HTMLElement): void => {
293
- const rect = el.getBoundingClientRect();
294
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
295
- undersize++;
296
- }
297
- });
298
- return undersize;
299
- }, 44);
300
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
301
-
302
- await page.screenshot({ path: 'e2e/screenshots/sandbox/text-field-new/tablet-l-light.png', fullPage: true });
303
-
304
- });
305
-
306
- test('text-field-new × desktop × dark', async ({ page }): Promise<void> => {
307
- await page.setViewportSize({ width: 1440, height: 900 });
308
- const response = await page.goto('/c/text-field-new');
309
- expect(response?.ok()).toBeTruthy();
310
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
311
- await page.waitForLoadState('networkidle');
312
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
313
- scrollWidth: document.documentElement.scrollWidth,
314
- innerWidth: window.innerWidth,
315
- }));
316
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
317
-
318
- await page.screenshot({ path: 'e2e/screenshots/sandbox/text-field-new/desktop-dark.png', fullPage: true });
319
-
320
- });
321
-
322
- test('text-field-new × desktop × light', async ({ page }): Promise<void> => {
323
- await page.setViewportSize({ width: 1440, height: 900 });
324
- const response = await page.goto('/c/text-field-new');
325
- expect(response?.ok()).toBeTruthy();
326
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
327
- await page.waitForLoadState('networkidle');
328
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
329
- scrollWidth: document.documentElement.scrollWidth,
330
- innerWidth: window.innerWidth,
331
- }));
332
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
333
-
334
- await page.screenshot({ path: 'e2e/screenshots/sandbox/text-field-new/desktop-light.png', fullPage: true });
335
-
336
- });
337
-
338
- test('text-field-new × desktop-wide × dark', async ({ page }): Promise<void> => {
339
- await page.setViewportSize({ width: 1920, height: 1080 });
340
- const response = await page.goto('/c/text-field-new');
341
- expect(response?.ok()).toBeTruthy();
342
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
343
- await page.waitForLoadState('networkidle');
344
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
345
- scrollWidth: document.documentElement.scrollWidth,
346
- innerWidth: window.innerWidth,
347
- }));
348
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
349
-
350
- await page.screenshot({ path: 'e2e/screenshots/sandbox/text-field-new/desktop-wide-dark.png', fullPage: true });
351
-
352
- });
353
-
354
- test('text-field-new × desktop-wide × light', async ({ page }): Promise<void> => {
355
- await page.setViewportSize({ width: 1920, height: 1080 });
356
- const response = await page.goto('/c/text-field-new');
357
- expect(response?.ok()).toBeTruthy();
358
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
359
- await page.waitForLoadState('networkidle');
360
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
361
- scrollWidth: document.documentElement.scrollWidth,
362
- innerWidth: window.innerWidth,
363
- }));
364
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
365
-
366
- await page.screenshot({ path: 'e2e/screenshots/sandbox/text-field-new/desktop-wide-light.png', fullPage: true });
367
-
368
- });
369
- });
370
-
371
- test.describe('Route: Sandbox textarea-field-new (/c/textarea-field-new)', (): void => {
372
- test('textarea-field-new × mobile-s × dark', async ({ page }): Promise<void> => {
373
- await page.setViewportSize({ width: 320, height: 568 });
374
- const response = await page.goto('/c/textarea-field-new');
375
- expect(response?.ok()).toBeTruthy();
376
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
377
- await page.waitForLoadState('networkidle');
378
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
379
- scrollWidth: document.documentElement.scrollWidth,
380
- innerWidth: window.innerWidth,
381
- }));
382
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
383
-
384
- const tooSmall = await page.evaluate((minPx: number): number => {
385
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
386
- let undersize: number = 0;
387
- tappable.forEach((el: HTMLElement): void => {
388
- const rect = el.getBoundingClientRect();
389
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
390
- undersize++;
391
- }
392
- });
393
- return undersize;
394
- }, 44);
395
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
396
-
397
- await page.screenshot({ path: 'e2e/screenshots/sandbox/textarea-field-new/mobile-s-dark.png', fullPage: true });
398
-
399
- });
400
-
401
- test('textarea-field-new × mobile-s × light', async ({ page }): Promise<void> => {
402
- await page.setViewportSize({ width: 320, height: 568 });
403
- const response = await page.goto('/c/textarea-field-new');
404
- expect(response?.ok()).toBeTruthy();
405
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
406
- await page.waitForLoadState('networkidle');
407
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
408
- scrollWidth: document.documentElement.scrollWidth,
409
- innerWidth: window.innerWidth,
410
- }));
411
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
412
-
413
- const tooSmall = await page.evaluate((minPx: number): number => {
414
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
415
- let undersize: number = 0;
416
- tappable.forEach((el: HTMLElement): void => {
417
- const rect = el.getBoundingClientRect();
418
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
419
- undersize++;
420
- }
421
- });
422
- return undersize;
423
- }, 44);
424
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
425
-
426
- await page.screenshot({ path: 'e2e/screenshots/sandbox/textarea-field-new/mobile-s-light.png', fullPage: true });
427
-
428
- });
429
-
430
- test('textarea-field-new × mobile-m × dark', async ({ page }): Promise<void> => {
431
- await page.setViewportSize({ width: 375, height: 667 });
432
- const response = await page.goto('/c/textarea-field-new');
433
- expect(response?.ok()).toBeTruthy();
434
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
435
- await page.waitForLoadState('networkidle');
436
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
437
- scrollWidth: document.documentElement.scrollWidth,
438
- innerWidth: window.innerWidth,
439
- }));
440
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
441
-
442
- const tooSmall = await page.evaluate((minPx: number): number => {
443
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
444
- let undersize: number = 0;
445
- tappable.forEach((el: HTMLElement): void => {
446
- const rect = el.getBoundingClientRect();
447
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
448
- undersize++;
449
- }
450
- });
451
- return undersize;
452
- }, 44);
453
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
454
-
455
- await page.screenshot({ path: 'e2e/screenshots/sandbox/textarea-field-new/mobile-m-dark.png', fullPage: true });
456
-
457
- });
458
-
459
- test('textarea-field-new × mobile-m × light', async ({ page }): Promise<void> => {
460
- await page.setViewportSize({ width: 375, height: 667 });
461
- const response = await page.goto('/c/textarea-field-new');
462
- expect(response?.ok()).toBeTruthy();
463
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
464
- await page.waitForLoadState('networkidle');
465
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
466
- scrollWidth: document.documentElement.scrollWidth,
467
- innerWidth: window.innerWidth,
468
- }));
469
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
470
-
471
- const tooSmall = await page.evaluate((minPx: number): number => {
472
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
473
- let undersize: number = 0;
474
- tappable.forEach((el: HTMLElement): void => {
475
- const rect = el.getBoundingClientRect();
476
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
477
- undersize++;
478
- }
479
- });
480
- return undersize;
481
- }, 44);
482
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
483
-
484
- await page.screenshot({ path: 'e2e/screenshots/sandbox/textarea-field-new/mobile-m-light.png', fullPage: true });
485
-
486
- });
487
-
488
- test('textarea-field-new × mobile-l × dark', async ({ page }): Promise<void> => {
489
- await page.setViewportSize({ width: 414, height: 896 });
490
- const response = await page.goto('/c/textarea-field-new');
491
- expect(response?.ok()).toBeTruthy();
492
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
493
- await page.waitForLoadState('networkidle');
494
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
495
- scrollWidth: document.documentElement.scrollWidth,
496
- innerWidth: window.innerWidth,
497
- }));
498
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
499
-
500
- const tooSmall = await page.evaluate((minPx: number): number => {
501
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
502
- let undersize: number = 0;
503
- tappable.forEach((el: HTMLElement): void => {
504
- const rect = el.getBoundingClientRect();
505
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
506
- undersize++;
507
- }
508
- });
509
- return undersize;
510
- }, 44);
511
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
512
-
513
- await page.screenshot({ path: 'e2e/screenshots/sandbox/textarea-field-new/mobile-l-dark.png', fullPage: true });
514
-
515
- });
516
-
517
- test('textarea-field-new × mobile-l × light', async ({ page }): Promise<void> => {
518
- await page.setViewportSize({ width: 414, height: 896 });
519
- const response = await page.goto('/c/textarea-field-new');
520
- expect(response?.ok()).toBeTruthy();
521
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
522
- await page.waitForLoadState('networkidle');
523
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
524
- scrollWidth: document.documentElement.scrollWidth,
525
- innerWidth: window.innerWidth,
526
- }));
527
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
528
-
529
- const tooSmall = await page.evaluate((minPx: number): number => {
530
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
531
- let undersize: number = 0;
532
- tappable.forEach((el: HTMLElement): void => {
533
- const rect = el.getBoundingClientRect();
534
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
535
- undersize++;
536
- }
537
- });
538
- return undersize;
539
- }, 44);
540
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
541
-
542
- await page.screenshot({ path: 'e2e/screenshots/sandbox/textarea-field-new/mobile-l-light.png', fullPage: true });
543
-
544
- });
545
-
546
- test('textarea-field-new × tablet-p × dark', async ({ page }): Promise<void> => {
547
- await page.setViewportSize({ width: 768, height: 1024 });
548
- const response = await page.goto('/c/textarea-field-new');
549
- expect(response?.ok()).toBeTruthy();
550
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
551
- await page.waitForLoadState('networkidle');
552
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
553
- scrollWidth: document.documentElement.scrollWidth,
554
- innerWidth: window.innerWidth,
555
- }));
556
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
557
-
558
- const tooSmall = await page.evaluate((minPx: number): number => {
559
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
560
- let undersize: number = 0;
561
- tappable.forEach((el: HTMLElement): void => {
562
- const rect = el.getBoundingClientRect();
563
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
564
- undersize++;
565
- }
566
- });
567
- return undersize;
568
- }, 44);
569
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
570
-
571
- await page.screenshot({ path: 'e2e/screenshots/sandbox/textarea-field-new/tablet-p-dark.png', fullPage: true });
572
-
573
- });
574
-
575
- test('textarea-field-new × tablet-p × light', async ({ page }): Promise<void> => {
576
- await page.setViewportSize({ width: 768, height: 1024 });
577
- const response = await page.goto('/c/textarea-field-new');
578
- expect(response?.ok()).toBeTruthy();
579
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
580
- await page.waitForLoadState('networkidle');
581
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
582
- scrollWidth: document.documentElement.scrollWidth,
583
- innerWidth: window.innerWidth,
584
- }));
585
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
586
-
587
- const tooSmall = await page.evaluate((minPx: number): number => {
588
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
589
- let undersize: number = 0;
590
- tappable.forEach((el: HTMLElement): void => {
591
- const rect = el.getBoundingClientRect();
592
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
593
- undersize++;
594
- }
595
- });
596
- return undersize;
597
- }, 44);
598
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
599
-
600
- await page.screenshot({ path: 'e2e/screenshots/sandbox/textarea-field-new/tablet-p-light.png', fullPage: true });
601
-
602
- });
603
-
604
- test('textarea-field-new × tablet-l × dark', async ({ page }): Promise<void> => {
605
- await page.setViewportSize({ width: 1024, height: 768 });
606
- const response = await page.goto('/c/textarea-field-new');
607
- expect(response?.ok()).toBeTruthy();
608
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
609
- await page.waitForLoadState('networkidle');
610
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
611
- scrollWidth: document.documentElement.scrollWidth,
612
- innerWidth: window.innerWidth,
613
- }));
614
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
615
-
616
- const tooSmall = await page.evaluate((minPx: number): number => {
617
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
618
- let undersize: number = 0;
619
- tappable.forEach((el: HTMLElement): void => {
620
- const rect = el.getBoundingClientRect();
621
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
622
- undersize++;
623
- }
624
- });
625
- return undersize;
626
- }, 44);
627
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
628
-
629
- await page.screenshot({ path: 'e2e/screenshots/sandbox/textarea-field-new/tablet-l-dark.png', fullPage: true });
630
-
631
- });
632
-
633
- test('textarea-field-new × tablet-l × light', async ({ page }): Promise<void> => {
634
- await page.setViewportSize({ width: 1024, height: 768 });
635
- const response = await page.goto('/c/textarea-field-new');
636
- expect(response?.ok()).toBeTruthy();
637
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
638
- await page.waitForLoadState('networkidle');
639
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
640
- scrollWidth: document.documentElement.scrollWidth,
641
- innerWidth: window.innerWidth,
642
- }));
643
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
644
-
645
- const tooSmall = await page.evaluate((minPx: number): number => {
646
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
647
- let undersize: number = 0;
648
- tappable.forEach((el: HTMLElement): void => {
649
- const rect = el.getBoundingClientRect();
650
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
651
- undersize++;
652
- }
653
- });
654
- return undersize;
655
- }, 44);
656
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
657
-
658
- await page.screenshot({ path: 'e2e/screenshots/sandbox/textarea-field-new/tablet-l-light.png', fullPage: true });
659
-
660
- });
661
-
662
- test('textarea-field-new × desktop × dark', async ({ page }): Promise<void> => {
663
- await page.setViewportSize({ width: 1440, height: 900 });
664
- const response = await page.goto('/c/textarea-field-new');
665
- expect(response?.ok()).toBeTruthy();
666
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
667
- await page.waitForLoadState('networkidle');
668
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
669
- scrollWidth: document.documentElement.scrollWidth,
670
- innerWidth: window.innerWidth,
671
- }));
672
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
673
-
674
- await page.screenshot({ path: 'e2e/screenshots/sandbox/textarea-field-new/desktop-dark.png', fullPage: true });
675
-
676
- });
677
-
678
- test('textarea-field-new × desktop × light', async ({ page }): Promise<void> => {
679
- await page.setViewportSize({ width: 1440, height: 900 });
680
- const response = await page.goto('/c/textarea-field-new');
681
- expect(response?.ok()).toBeTruthy();
682
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
683
- await page.waitForLoadState('networkidle');
684
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
685
- scrollWidth: document.documentElement.scrollWidth,
686
- innerWidth: window.innerWidth,
687
- }));
688
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
689
-
690
- await page.screenshot({ path: 'e2e/screenshots/sandbox/textarea-field-new/desktop-light.png', fullPage: true });
691
-
692
- });
693
-
694
- test('textarea-field-new × desktop-wide × dark', async ({ page }): Promise<void> => {
695
- await page.setViewportSize({ width: 1920, height: 1080 });
696
- const response = await page.goto('/c/textarea-field-new');
697
- expect(response?.ok()).toBeTruthy();
698
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
699
- await page.waitForLoadState('networkidle');
700
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
701
- scrollWidth: document.documentElement.scrollWidth,
702
- innerWidth: window.innerWidth,
703
- }));
704
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
705
-
706
- await page.screenshot({ path: 'e2e/screenshots/sandbox/textarea-field-new/desktop-wide-dark.png', fullPage: true });
707
-
708
- });
709
-
710
- test('textarea-field-new × desktop-wide × light', async ({ page }): Promise<void> => {
711
- await page.setViewportSize({ width: 1920, height: 1080 });
712
- const response = await page.goto('/c/textarea-field-new');
713
- expect(response?.ok()).toBeTruthy();
714
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
715
- await page.waitForLoadState('networkidle');
716
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
717
- scrollWidth: document.documentElement.scrollWidth,
718
- innerWidth: window.innerWidth,
719
- }));
720
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
721
-
722
- await page.screenshot({ path: 'e2e/screenshots/sandbox/textarea-field-new/desktop-wide-light.png', fullPage: true });
723
-
724
- });
725
- });
726
-
727
- test.describe('Route: Sandbox number-field-new (/c/number-field-new)', (): void => {
728
- test('number-field-new × mobile-s × dark', async ({ page }): Promise<void> => {
729
- await page.setViewportSize({ width: 320, height: 568 });
730
- const response = await page.goto('/c/number-field-new');
731
- expect(response?.ok()).toBeTruthy();
732
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
733
- await page.waitForLoadState('networkidle');
734
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
735
- scrollWidth: document.documentElement.scrollWidth,
736
- innerWidth: window.innerWidth,
737
- }));
738
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
739
-
740
- const tooSmall = await page.evaluate((minPx: number): number => {
741
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
742
- let undersize: number = 0;
743
- tappable.forEach((el: HTMLElement): void => {
744
- const rect = el.getBoundingClientRect();
745
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
746
- undersize++;
747
- }
748
- });
749
- return undersize;
750
- }, 44);
751
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
752
-
753
- await page.screenshot({ path: 'e2e/screenshots/sandbox/number-field-new/mobile-s-dark.png', fullPage: true });
754
-
755
- });
756
-
757
- test('number-field-new × mobile-s × light', async ({ page }): Promise<void> => {
758
- await page.setViewportSize({ width: 320, height: 568 });
759
- const response = await page.goto('/c/number-field-new');
760
- expect(response?.ok()).toBeTruthy();
761
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
762
- await page.waitForLoadState('networkidle');
763
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
764
- scrollWidth: document.documentElement.scrollWidth,
765
- innerWidth: window.innerWidth,
766
- }));
767
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
768
-
769
- const tooSmall = await page.evaluate((minPx: number): number => {
770
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
771
- let undersize: number = 0;
772
- tappable.forEach((el: HTMLElement): void => {
773
- const rect = el.getBoundingClientRect();
774
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
775
- undersize++;
776
- }
777
- });
778
- return undersize;
779
- }, 44);
780
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
781
-
782
- await page.screenshot({ path: 'e2e/screenshots/sandbox/number-field-new/mobile-s-light.png', fullPage: true });
783
-
784
- });
785
-
786
- test('number-field-new × mobile-m × dark', async ({ page }): Promise<void> => {
787
- await page.setViewportSize({ width: 375, height: 667 });
788
- const response = await page.goto('/c/number-field-new');
789
- expect(response?.ok()).toBeTruthy();
790
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
791
- await page.waitForLoadState('networkidle');
792
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
793
- scrollWidth: document.documentElement.scrollWidth,
794
- innerWidth: window.innerWidth,
795
- }));
796
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
797
-
798
- const tooSmall = await page.evaluate((minPx: number): number => {
799
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
800
- let undersize: number = 0;
801
- tappable.forEach((el: HTMLElement): void => {
802
- const rect = el.getBoundingClientRect();
803
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
804
- undersize++;
805
- }
806
- });
807
- return undersize;
808
- }, 44);
809
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
810
-
811
- await page.screenshot({ path: 'e2e/screenshots/sandbox/number-field-new/mobile-m-dark.png', fullPage: true });
812
-
813
- });
814
-
815
- test('number-field-new × mobile-m × light', async ({ page }): Promise<void> => {
816
- await page.setViewportSize({ width: 375, height: 667 });
817
- const response = await page.goto('/c/number-field-new');
818
- expect(response?.ok()).toBeTruthy();
819
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
820
- await page.waitForLoadState('networkidle');
821
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
822
- scrollWidth: document.documentElement.scrollWidth,
823
- innerWidth: window.innerWidth,
824
- }));
825
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
826
-
827
- const tooSmall = await page.evaluate((minPx: number): number => {
828
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
829
- let undersize: number = 0;
830
- tappable.forEach((el: HTMLElement): void => {
831
- const rect = el.getBoundingClientRect();
832
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
833
- undersize++;
834
- }
835
- });
836
- return undersize;
837
- }, 44);
838
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
839
-
840
- await page.screenshot({ path: 'e2e/screenshots/sandbox/number-field-new/mobile-m-light.png', fullPage: true });
841
-
842
- });
843
-
844
- test('number-field-new × mobile-l × dark', async ({ page }): Promise<void> => {
845
- await page.setViewportSize({ width: 414, height: 896 });
846
- const response = await page.goto('/c/number-field-new');
847
- expect(response?.ok()).toBeTruthy();
848
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
849
- await page.waitForLoadState('networkidle');
850
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
851
- scrollWidth: document.documentElement.scrollWidth,
852
- innerWidth: window.innerWidth,
853
- }));
854
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
855
-
856
- const tooSmall = await page.evaluate((minPx: number): number => {
857
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
858
- let undersize: number = 0;
859
- tappable.forEach((el: HTMLElement): void => {
860
- const rect = el.getBoundingClientRect();
861
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
862
- undersize++;
863
- }
864
- });
865
- return undersize;
866
- }, 44);
867
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
868
-
869
- await page.screenshot({ path: 'e2e/screenshots/sandbox/number-field-new/mobile-l-dark.png', fullPage: true });
870
-
871
- });
872
-
873
- test('number-field-new × mobile-l × light', async ({ page }): Promise<void> => {
874
- await page.setViewportSize({ width: 414, height: 896 });
875
- const response = await page.goto('/c/number-field-new');
876
- expect(response?.ok()).toBeTruthy();
877
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
878
- await page.waitForLoadState('networkidle');
879
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
880
- scrollWidth: document.documentElement.scrollWidth,
881
- innerWidth: window.innerWidth,
882
- }));
883
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
884
-
885
- const tooSmall = await page.evaluate((minPx: number): number => {
886
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
887
- let undersize: number = 0;
888
- tappable.forEach((el: HTMLElement): void => {
889
- const rect = el.getBoundingClientRect();
890
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
891
- undersize++;
892
- }
893
- });
894
- return undersize;
895
- }, 44);
896
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
897
-
898
- await page.screenshot({ path: 'e2e/screenshots/sandbox/number-field-new/mobile-l-light.png', fullPage: true });
899
-
900
- });
901
-
902
- test('number-field-new × tablet-p × dark', async ({ page }): Promise<void> => {
903
- await page.setViewportSize({ width: 768, height: 1024 });
904
- const response = await page.goto('/c/number-field-new');
905
- expect(response?.ok()).toBeTruthy();
906
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
907
- await page.waitForLoadState('networkidle');
908
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
909
- scrollWidth: document.documentElement.scrollWidth,
910
- innerWidth: window.innerWidth,
911
- }));
912
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
913
-
914
- const tooSmall = await page.evaluate((minPx: number): number => {
915
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
916
- let undersize: number = 0;
917
- tappable.forEach((el: HTMLElement): void => {
918
- const rect = el.getBoundingClientRect();
919
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
920
- undersize++;
921
- }
922
- });
923
- return undersize;
924
- }, 44);
925
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
926
-
927
- await page.screenshot({ path: 'e2e/screenshots/sandbox/number-field-new/tablet-p-dark.png', fullPage: true });
928
-
929
- });
930
-
931
- test('number-field-new × tablet-p × light', async ({ page }): Promise<void> => {
932
- await page.setViewportSize({ width: 768, height: 1024 });
933
- const response = await page.goto('/c/number-field-new');
934
- expect(response?.ok()).toBeTruthy();
935
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
936
- await page.waitForLoadState('networkidle');
937
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
938
- scrollWidth: document.documentElement.scrollWidth,
939
- innerWidth: window.innerWidth,
940
- }));
941
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
942
-
943
- const tooSmall = await page.evaluate((minPx: number): number => {
944
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
945
- let undersize: number = 0;
946
- tappable.forEach((el: HTMLElement): void => {
947
- const rect = el.getBoundingClientRect();
948
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
949
- undersize++;
950
- }
951
- });
952
- return undersize;
953
- }, 44);
954
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
955
-
956
- await page.screenshot({ path: 'e2e/screenshots/sandbox/number-field-new/tablet-p-light.png', fullPage: true });
957
-
958
- });
959
-
960
- test('number-field-new × tablet-l × dark', async ({ page }): Promise<void> => {
961
- await page.setViewportSize({ width: 1024, height: 768 });
962
- const response = await page.goto('/c/number-field-new');
963
- expect(response?.ok()).toBeTruthy();
964
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
965
- await page.waitForLoadState('networkidle');
966
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
967
- scrollWidth: document.documentElement.scrollWidth,
968
- innerWidth: window.innerWidth,
969
- }));
970
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
971
-
972
- const tooSmall = await page.evaluate((minPx: number): number => {
973
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
974
- let undersize: number = 0;
975
- tappable.forEach((el: HTMLElement): void => {
976
- const rect = el.getBoundingClientRect();
977
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
978
- undersize++;
979
- }
980
- });
981
- return undersize;
982
- }, 44);
983
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
984
-
985
- await page.screenshot({ path: 'e2e/screenshots/sandbox/number-field-new/tablet-l-dark.png', fullPage: true });
986
-
987
- });
988
-
989
- test('number-field-new × tablet-l × light', async ({ page }): Promise<void> => {
990
- await page.setViewportSize({ width: 1024, height: 768 });
991
- const response = await page.goto('/c/number-field-new');
992
- expect(response?.ok()).toBeTruthy();
993
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
994
- await page.waitForLoadState('networkidle');
995
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
996
- scrollWidth: document.documentElement.scrollWidth,
997
- innerWidth: window.innerWidth,
998
- }));
999
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1000
-
1001
- const tooSmall = await page.evaluate((minPx: number): number => {
1002
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1003
- let undersize: number = 0;
1004
- tappable.forEach((el: HTMLElement): void => {
1005
- const rect = el.getBoundingClientRect();
1006
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1007
- undersize++;
1008
- }
1009
- });
1010
- return undersize;
1011
- }, 44);
1012
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1013
-
1014
- await page.screenshot({ path: 'e2e/screenshots/sandbox/number-field-new/tablet-l-light.png', fullPage: true });
1015
-
1016
- });
1017
-
1018
- test('number-field-new × desktop × dark', async ({ page }): Promise<void> => {
1019
- await page.setViewportSize({ width: 1440, height: 900 });
1020
- const response = await page.goto('/c/number-field-new');
1021
- expect(response?.ok()).toBeTruthy();
1022
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
1023
- await page.waitForLoadState('networkidle');
1024
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1025
- scrollWidth: document.documentElement.scrollWidth,
1026
- innerWidth: window.innerWidth,
1027
- }));
1028
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1029
-
1030
- await page.screenshot({ path: 'e2e/screenshots/sandbox/number-field-new/desktop-dark.png', fullPage: true });
1031
-
1032
- });
1033
-
1034
- test('number-field-new × desktop × light', async ({ page }): Promise<void> => {
1035
- await page.setViewportSize({ width: 1440, height: 900 });
1036
- const response = await page.goto('/c/number-field-new');
1037
- expect(response?.ok()).toBeTruthy();
1038
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
1039
- await page.waitForLoadState('networkidle');
1040
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1041
- scrollWidth: document.documentElement.scrollWidth,
1042
- innerWidth: window.innerWidth,
1043
- }));
1044
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1045
-
1046
- await page.screenshot({ path: 'e2e/screenshots/sandbox/number-field-new/desktop-light.png', fullPage: true });
1047
-
1048
- });
1049
-
1050
- test('number-field-new × desktop-wide × dark', async ({ page }): Promise<void> => {
1051
- await page.setViewportSize({ width: 1920, height: 1080 });
1052
- const response = await page.goto('/c/number-field-new');
1053
- expect(response?.ok()).toBeTruthy();
1054
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
1055
- await page.waitForLoadState('networkidle');
1056
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1057
- scrollWidth: document.documentElement.scrollWidth,
1058
- innerWidth: window.innerWidth,
1059
- }));
1060
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1061
-
1062
- await page.screenshot({ path: 'e2e/screenshots/sandbox/number-field-new/desktop-wide-dark.png', fullPage: true });
1063
-
1064
- });
1065
-
1066
- test('number-field-new × desktop-wide × light', async ({ page }): Promise<void> => {
1067
- await page.setViewportSize({ width: 1920, height: 1080 });
1068
- const response = await page.goto('/c/number-field-new');
1069
- expect(response?.ok()).toBeTruthy();
1070
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
1071
- await page.waitForLoadState('networkidle');
1072
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1073
- scrollWidth: document.documentElement.scrollWidth,
1074
- innerWidth: window.innerWidth,
1075
- }));
1076
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1077
-
1078
- await page.screenshot({ path: 'e2e/screenshots/sandbox/number-field-new/desktop-wide-light.png', fullPage: true });
1079
-
1080
- });
1081
- });
1082
-
1083
- test.describe('Route: Sandbox password-field-new (/c/password-field-new)', (): void => {
1084
- test('password-field-new × mobile-s × dark', async ({ page }): Promise<void> => {
1085
- await page.setViewportSize({ width: 320, height: 568 });
1086
- const response = await page.goto('/c/password-field-new');
1087
- expect(response?.ok()).toBeTruthy();
1088
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
1089
- await page.waitForLoadState('networkidle');
1090
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1091
- scrollWidth: document.documentElement.scrollWidth,
1092
- innerWidth: window.innerWidth,
1093
- }));
1094
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1095
-
1096
- const tooSmall = await page.evaluate((minPx: number): number => {
1097
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1098
- let undersize: number = 0;
1099
- tappable.forEach((el: HTMLElement): void => {
1100
- const rect = el.getBoundingClientRect();
1101
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1102
- undersize++;
1103
- }
1104
- });
1105
- return undersize;
1106
- }, 44);
1107
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1108
-
1109
- await page.screenshot({ path: 'e2e/screenshots/sandbox/password-field-new/mobile-s-dark.png', fullPage: true });
1110
-
1111
- });
1112
-
1113
- test('password-field-new × mobile-s × light', async ({ page }): Promise<void> => {
1114
- await page.setViewportSize({ width: 320, height: 568 });
1115
- const response = await page.goto('/c/password-field-new');
1116
- expect(response?.ok()).toBeTruthy();
1117
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
1118
- await page.waitForLoadState('networkidle');
1119
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1120
- scrollWidth: document.documentElement.scrollWidth,
1121
- innerWidth: window.innerWidth,
1122
- }));
1123
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1124
-
1125
- const tooSmall = await page.evaluate((minPx: number): number => {
1126
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1127
- let undersize: number = 0;
1128
- tappable.forEach((el: HTMLElement): void => {
1129
- const rect = el.getBoundingClientRect();
1130
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1131
- undersize++;
1132
- }
1133
- });
1134
- return undersize;
1135
- }, 44);
1136
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1137
-
1138
- await page.screenshot({ path: 'e2e/screenshots/sandbox/password-field-new/mobile-s-light.png', fullPage: true });
1139
-
1140
- });
1141
-
1142
- test('password-field-new × mobile-m × dark', async ({ page }): Promise<void> => {
1143
- await page.setViewportSize({ width: 375, height: 667 });
1144
- const response = await page.goto('/c/password-field-new');
1145
- expect(response?.ok()).toBeTruthy();
1146
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
1147
- await page.waitForLoadState('networkidle');
1148
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1149
- scrollWidth: document.documentElement.scrollWidth,
1150
- innerWidth: window.innerWidth,
1151
- }));
1152
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1153
-
1154
- const tooSmall = await page.evaluate((minPx: number): number => {
1155
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1156
- let undersize: number = 0;
1157
- tappable.forEach((el: HTMLElement): void => {
1158
- const rect = el.getBoundingClientRect();
1159
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1160
- undersize++;
1161
- }
1162
- });
1163
- return undersize;
1164
- }, 44);
1165
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1166
-
1167
- await page.screenshot({ path: 'e2e/screenshots/sandbox/password-field-new/mobile-m-dark.png', fullPage: true });
1168
-
1169
- });
1170
-
1171
- test('password-field-new × mobile-m × light', async ({ page }): Promise<void> => {
1172
- await page.setViewportSize({ width: 375, height: 667 });
1173
- const response = await page.goto('/c/password-field-new');
1174
- expect(response?.ok()).toBeTruthy();
1175
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
1176
- await page.waitForLoadState('networkidle');
1177
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1178
- scrollWidth: document.documentElement.scrollWidth,
1179
- innerWidth: window.innerWidth,
1180
- }));
1181
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1182
-
1183
- const tooSmall = await page.evaluate((minPx: number): number => {
1184
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1185
- let undersize: number = 0;
1186
- tappable.forEach((el: HTMLElement): void => {
1187
- const rect = el.getBoundingClientRect();
1188
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1189
- undersize++;
1190
- }
1191
- });
1192
- return undersize;
1193
- }, 44);
1194
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1195
-
1196
- await page.screenshot({ path: 'e2e/screenshots/sandbox/password-field-new/mobile-m-light.png', fullPage: true });
1197
-
1198
- });
1199
-
1200
- test('password-field-new × mobile-l × dark', async ({ page }): Promise<void> => {
1201
- await page.setViewportSize({ width: 414, height: 896 });
1202
- const response = await page.goto('/c/password-field-new');
1203
- expect(response?.ok()).toBeTruthy();
1204
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
1205
- await page.waitForLoadState('networkidle');
1206
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1207
- scrollWidth: document.documentElement.scrollWidth,
1208
- innerWidth: window.innerWidth,
1209
- }));
1210
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1211
-
1212
- const tooSmall = await page.evaluate((minPx: number): number => {
1213
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1214
- let undersize: number = 0;
1215
- tappable.forEach((el: HTMLElement): void => {
1216
- const rect = el.getBoundingClientRect();
1217
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1218
- undersize++;
1219
- }
1220
- });
1221
- return undersize;
1222
- }, 44);
1223
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1224
-
1225
- await page.screenshot({ path: 'e2e/screenshots/sandbox/password-field-new/mobile-l-dark.png', fullPage: true });
1226
-
1227
- });
1228
-
1229
- test('password-field-new × mobile-l × light', async ({ page }): Promise<void> => {
1230
- await page.setViewportSize({ width: 414, height: 896 });
1231
- const response = await page.goto('/c/password-field-new');
1232
- expect(response?.ok()).toBeTruthy();
1233
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
1234
- await page.waitForLoadState('networkidle');
1235
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1236
- scrollWidth: document.documentElement.scrollWidth,
1237
- innerWidth: window.innerWidth,
1238
- }));
1239
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1240
-
1241
- const tooSmall = await page.evaluate((minPx: number): number => {
1242
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1243
- let undersize: number = 0;
1244
- tappable.forEach((el: HTMLElement): void => {
1245
- const rect = el.getBoundingClientRect();
1246
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1247
- undersize++;
1248
- }
1249
- });
1250
- return undersize;
1251
- }, 44);
1252
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1253
-
1254
- await page.screenshot({ path: 'e2e/screenshots/sandbox/password-field-new/mobile-l-light.png', fullPage: true });
1255
-
1256
- });
1257
-
1258
- test('password-field-new × tablet-p × dark', async ({ page }): Promise<void> => {
1259
- await page.setViewportSize({ width: 768, height: 1024 });
1260
- const response = await page.goto('/c/password-field-new');
1261
- expect(response?.ok()).toBeTruthy();
1262
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
1263
- await page.waitForLoadState('networkidle');
1264
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1265
- scrollWidth: document.documentElement.scrollWidth,
1266
- innerWidth: window.innerWidth,
1267
- }));
1268
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1269
-
1270
- const tooSmall = await page.evaluate((minPx: number): number => {
1271
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1272
- let undersize: number = 0;
1273
- tappable.forEach((el: HTMLElement): void => {
1274
- const rect = el.getBoundingClientRect();
1275
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1276
- undersize++;
1277
- }
1278
- });
1279
- return undersize;
1280
- }, 44);
1281
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1282
-
1283
- await page.screenshot({ path: 'e2e/screenshots/sandbox/password-field-new/tablet-p-dark.png', fullPage: true });
1284
-
1285
- });
1286
-
1287
- test('password-field-new × tablet-p × light', async ({ page }): Promise<void> => {
1288
- await page.setViewportSize({ width: 768, height: 1024 });
1289
- const response = await page.goto('/c/password-field-new');
1290
- expect(response?.ok()).toBeTruthy();
1291
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
1292
- await page.waitForLoadState('networkidle');
1293
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1294
- scrollWidth: document.documentElement.scrollWidth,
1295
- innerWidth: window.innerWidth,
1296
- }));
1297
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1298
-
1299
- const tooSmall = await page.evaluate((minPx: number): number => {
1300
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1301
- let undersize: number = 0;
1302
- tappable.forEach((el: HTMLElement): void => {
1303
- const rect = el.getBoundingClientRect();
1304
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1305
- undersize++;
1306
- }
1307
- });
1308
- return undersize;
1309
- }, 44);
1310
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1311
-
1312
- await page.screenshot({ path: 'e2e/screenshots/sandbox/password-field-new/tablet-p-light.png', fullPage: true });
1313
-
1314
- });
1315
-
1316
- test('password-field-new × tablet-l × dark', async ({ page }): Promise<void> => {
1317
- await page.setViewportSize({ width: 1024, height: 768 });
1318
- const response = await page.goto('/c/password-field-new');
1319
- expect(response?.ok()).toBeTruthy();
1320
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
1321
- await page.waitForLoadState('networkidle');
1322
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1323
- scrollWidth: document.documentElement.scrollWidth,
1324
- innerWidth: window.innerWidth,
1325
- }));
1326
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1327
-
1328
- const tooSmall = await page.evaluate((minPx: number): number => {
1329
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1330
- let undersize: number = 0;
1331
- tappable.forEach((el: HTMLElement): void => {
1332
- const rect = el.getBoundingClientRect();
1333
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1334
- undersize++;
1335
- }
1336
- });
1337
- return undersize;
1338
- }, 44);
1339
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1340
-
1341
- await page.screenshot({ path: 'e2e/screenshots/sandbox/password-field-new/tablet-l-dark.png', fullPage: true });
1342
-
1343
- });
1344
-
1345
- test('password-field-new × tablet-l × light', async ({ page }): Promise<void> => {
1346
- await page.setViewportSize({ width: 1024, height: 768 });
1347
- const response = await page.goto('/c/password-field-new');
1348
- expect(response?.ok()).toBeTruthy();
1349
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
1350
- await page.waitForLoadState('networkidle');
1351
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1352
- scrollWidth: document.documentElement.scrollWidth,
1353
- innerWidth: window.innerWidth,
1354
- }));
1355
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1356
-
1357
- const tooSmall = await page.evaluate((minPx: number): number => {
1358
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1359
- let undersize: number = 0;
1360
- tappable.forEach((el: HTMLElement): void => {
1361
- const rect = el.getBoundingClientRect();
1362
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1363
- undersize++;
1364
- }
1365
- });
1366
- return undersize;
1367
- }, 44);
1368
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1369
-
1370
- await page.screenshot({ path: 'e2e/screenshots/sandbox/password-field-new/tablet-l-light.png', fullPage: true });
1371
-
1372
- });
1373
-
1374
- test('password-field-new × desktop × dark', async ({ page }): Promise<void> => {
1375
- await page.setViewportSize({ width: 1440, height: 900 });
1376
- const response = await page.goto('/c/password-field-new');
1377
- expect(response?.ok()).toBeTruthy();
1378
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
1379
- await page.waitForLoadState('networkidle');
1380
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1381
- scrollWidth: document.documentElement.scrollWidth,
1382
- innerWidth: window.innerWidth,
1383
- }));
1384
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1385
-
1386
- await page.screenshot({ path: 'e2e/screenshots/sandbox/password-field-new/desktop-dark.png', fullPage: true });
1387
-
1388
- });
1389
-
1390
- test('password-field-new × desktop × light', async ({ page }): Promise<void> => {
1391
- await page.setViewportSize({ width: 1440, height: 900 });
1392
- const response = await page.goto('/c/password-field-new');
1393
- expect(response?.ok()).toBeTruthy();
1394
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
1395
- await page.waitForLoadState('networkidle');
1396
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1397
- scrollWidth: document.documentElement.scrollWidth,
1398
- innerWidth: window.innerWidth,
1399
- }));
1400
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1401
-
1402
- await page.screenshot({ path: 'e2e/screenshots/sandbox/password-field-new/desktop-light.png', fullPage: true });
1403
-
1404
- });
1405
-
1406
- test('password-field-new × desktop-wide × dark', async ({ page }): Promise<void> => {
1407
- await page.setViewportSize({ width: 1920, height: 1080 });
1408
- const response = await page.goto('/c/password-field-new');
1409
- expect(response?.ok()).toBeTruthy();
1410
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
1411
- await page.waitForLoadState('networkidle');
1412
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1413
- scrollWidth: document.documentElement.scrollWidth,
1414
- innerWidth: window.innerWidth,
1415
- }));
1416
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1417
-
1418
- await page.screenshot({ path: 'e2e/screenshots/sandbox/password-field-new/desktop-wide-dark.png', fullPage: true });
1419
-
1420
- });
1421
-
1422
- test('password-field-new × desktop-wide × light', async ({ page }): Promise<void> => {
1423
- await page.setViewportSize({ width: 1920, height: 1080 });
1424
- const response = await page.goto('/c/password-field-new');
1425
- expect(response?.ok()).toBeTruthy();
1426
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
1427
- await page.waitForLoadState('networkidle');
1428
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1429
- scrollWidth: document.documentElement.scrollWidth,
1430
- innerWidth: window.innerWidth,
1431
- }));
1432
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1433
-
1434
- await page.screenshot({ path: 'e2e/screenshots/sandbox/password-field-new/desktop-wide-light.png', fullPage: true });
1435
-
1436
- });
1437
- });
1438
-
1439
- test.describe('Route: Sandbox slider-field-new (/c/slider-field-new)', (): void => {
1440
- test('slider-field-new × mobile-s × dark', async ({ page }): Promise<void> => {
1441
- await page.setViewportSize({ width: 320, height: 568 });
1442
- const response = await page.goto('/c/slider-field-new');
1443
- expect(response?.ok()).toBeTruthy();
1444
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
1445
- await page.waitForLoadState('networkidle');
1446
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1447
- scrollWidth: document.documentElement.scrollWidth,
1448
- innerWidth: window.innerWidth,
1449
- }));
1450
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1451
-
1452
- const tooSmall = await page.evaluate((minPx: number): number => {
1453
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1454
- let undersize: number = 0;
1455
- tappable.forEach((el: HTMLElement): void => {
1456
- const rect = el.getBoundingClientRect();
1457
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1458
- undersize++;
1459
- }
1460
- });
1461
- return undersize;
1462
- }, 44);
1463
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1464
-
1465
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-field-new/mobile-s-dark.png', fullPage: true });
1466
-
1467
- });
1468
-
1469
- test('slider-field-new × mobile-s × light', async ({ page }): Promise<void> => {
1470
- await page.setViewportSize({ width: 320, height: 568 });
1471
- const response = await page.goto('/c/slider-field-new');
1472
- expect(response?.ok()).toBeTruthy();
1473
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
1474
- await page.waitForLoadState('networkidle');
1475
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1476
- scrollWidth: document.documentElement.scrollWidth,
1477
- innerWidth: window.innerWidth,
1478
- }));
1479
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1480
-
1481
- const tooSmall = await page.evaluate((minPx: number): number => {
1482
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1483
- let undersize: number = 0;
1484
- tappable.forEach((el: HTMLElement): void => {
1485
- const rect = el.getBoundingClientRect();
1486
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1487
- undersize++;
1488
- }
1489
- });
1490
- return undersize;
1491
- }, 44);
1492
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1493
-
1494
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-field-new/mobile-s-light.png', fullPage: true });
1495
-
1496
- });
1497
-
1498
- test('slider-field-new × mobile-m × dark', async ({ page }): Promise<void> => {
1499
- await page.setViewportSize({ width: 375, height: 667 });
1500
- const response = await page.goto('/c/slider-field-new');
1501
- expect(response?.ok()).toBeTruthy();
1502
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
1503
- await page.waitForLoadState('networkidle');
1504
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1505
- scrollWidth: document.documentElement.scrollWidth,
1506
- innerWidth: window.innerWidth,
1507
- }));
1508
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1509
-
1510
- const tooSmall = await page.evaluate((minPx: number): number => {
1511
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1512
- let undersize: number = 0;
1513
- tappable.forEach((el: HTMLElement): void => {
1514
- const rect = el.getBoundingClientRect();
1515
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1516
- undersize++;
1517
- }
1518
- });
1519
- return undersize;
1520
- }, 44);
1521
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1522
-
1523
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-field-new/mobile-m-dark.png', fullPage: true });
1524
-
1525
- });
1526
-
1527
- test('slider-field-new × mobile-m × light', async ({ page }): Promise<void> => {
1528
- await page.setViewportSize({ width: 375, height: 667 });
1529
- const response = await page.goto('/c/slider-field-new');
1530
- expect(response?.ok()).toBeTruthy();
1531
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
1532
- await page.waitForLoadState('networkidle');
1533
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1534
- scrollWidth: document.documentElement.scrollWidth,
1535
- innerWidth: window.innerWidth,
1536
- }));
1537
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1538
-
1539
- const tooSmall = await page.evaluate((minPx: number): number => {
1540
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1541
- let undersize: number = 0;
1542
- tappable.forEach((el: HTMLElement): void => {
1543
- const rect = el.getBoundingClientRect();
1544
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1545
- undersize++;
1546
- }
1547
- });
1548
- return undersize;
1549
- }, 44);
1550
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1551
-
1552
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-field-new/mobile-m-light.png', fullPage: true });
1553
-
1554
- });
1555
-
1556
- test('slider-field-new × mobile-l × dark', async ({ page }): Promise<void> => {
1557
- await page.setViewportSize({ width: 414, height: 896 });
1558
- const response = await page.goto('/c/slider-field-new');
1559
- expect(response?.ok()).toBeTruthy();
1560
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
1561
- await page.waitForLoadState('networkidle');
1562
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1563
- scrollWidth: document.documentElement.scrollWidth,
1564
- innerWidth: window.innerWidth,
1565
- }));
1566
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1567
-
1568
- const tooSmall = await page.evaluate((minPx: number): number => {
1569
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1570
- let undersize: number = 0;
1571
- tappable.forEach((el: HTMLElement): void => {
1572
- const rect = el.getBoundingClientRect();
1573
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1574
- undersize++;
1575
- }
1576
- });
1577
- return undersize;
1578
- }, 44);
1579
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1580
-
1581
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-field-new/mobile-l-dark.png', fullPage: true });
1582
-
1583
- });
1584
-
1585
- test('slider-field-new × mobile-l × light', async ({ page }): Promise<void> => {
1586
- await page.setViewportSize({ width: 414, height: 896 });
1587
- const response = await page.goto('/c/slider-field-new');
1588
- expect(response?.ok()).toBeTruthy();
1589
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
1590
- await page.waitForLoadState('networkidle');
1591
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1592
- scrollWidth: document.documentElement.scrollWidth,
1593
- innerWidth: window.innerWidth,
1594
- }));
1595
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1596
-
1597
- const tooSmall = await page.evaluate((minPx: number): number => {
1598
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1599
- let undersize: number = 0;
1600
- tappable.forEach((el: HTMLElement): void => {
1601
- const rect = el.getBoundingClientRect();
1602
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1603
- undersize++;
1604
- }
1605
- });
1606
- return undersize;
1607
- }, 44);
1608
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1609
-
1610
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-field-new/mobile-l-light.png', fullPage: true });
1611
-
1612
- });
1613
-
1614
- test('slider-field-new × tablet-p × dark', async ({ page }): Promise<void> => {
1615
- await page.setViewportSize({ width: 768, height: 1024 });
1616
- const response = await page.goto('/c/slider-field-new');
1617
- expect(response?.ok()).toBeTruthy();
1618
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
1619
- await page.waitForLoadState('networkidle');
1620
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1621
- scrollWidth: document.documentElement.scrollWidth,
1622
- innerWidth: window.innerWidth,
1623
- }));
1624
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1625
-
1626
- const tooSmall = await page.evaluate((minPx: number): number => {
1627
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1628
- let undersize: number = 0;
1629
- tappable.forEach((el: HTMLElement): void => {
1630
- const rect = el.getBoundingClientRect();
1631
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1632
- undersize++;
1633
- }
1634
- });
1635
- return undersize;
1636
- }, 44);
1637
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1638
-
1639
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-field-new/tablet-p-dark.png', fullPage: true });
1640
-
1641
- });
1642
-
1643
- test('slider-field-new × tablet-p × light', async ({ page }): Promise<void> => {
1644
- await page.setViewportSize({ width: 768, height: 1024 });
1645
- const response = await page.goto('/c/slider-field-new');
1646
- expect(response?.ok()).toBeTruthy();
1647
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
1648
- await page.waitForLoadState('networkidle');
1649
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1650
- scrollWidth: document.documentElement.scrollWidth,
1651
- innerWidth: window.innerWidth,
1652
- }));
1653
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1654
-
1655
- const tooSmall = await page.evaluate((minPx: number): number => {
1656
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1657
- let undersize: number = 0;
1658
- tappable.forEach((el: HTMLElement): void => {
1659
- const rect = el.getBoundingClientRect();
1660
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1661
- undersize++;
1662
- }
1663
- });
1664
- return undersize;
1665
- }, 44);
1666
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1667
-
1668
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-field-new/tablet-p-light.png', fullPage: true });
1669
-
1670
- });
1671
-
1672
- test('slider-field-new × tablet-l × dark', async ({ page }): Promise<void> => {
1673
- await page.setViewportSize({ width: 1024, height: 768 });
1674
- const response = await page.goto('/c/slider-field-new');
1675
- expect(response?.ok()).toBeTruthy();
1676
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
1677
- await page.waitForLoadState('networkidle');
1678
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1679
- scrollWidth: document.documentElement.scrollWidth,
1680
- innerWidth: window.innerWidth,
1681
- }));
1682
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1683
-
1684
- const tooSmall = await page.evaluate((minPx: number): number => {
1685
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1686
- let undersize: number = 0;
1687
- tappable.forEach((el: HTMLElement): void => {
1688
- const rect = el.getBoundingClientRect();
1689
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1690
- undersize++;
1691
- }
1692
- });
1693
- return undersize;
1694
- }, 44);
1695
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1696
-
1697
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-field-new/tablet-l-dark.png', fullPage: true });
1698
-
1699
- });
1700
-
1701
- test('slider-field-new × tablet-l × light', async ({ page }): Promise<void> => {
1702
- await page.setViewportSize({ width: 1024, height: 768 });
1703
- const response = await page.goto('/c/slider-field-new');
1704
- expect(response?.ok()).toBeTruthy();
1705
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
1706
- await page.waitForLoadState('networkidle');
1707
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1708
- scrollWidth: document.documentElement.scrollWidth,
1709
- innerWidth: window.innerWidth,
1710
- }));
1711
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1712
-
1713
- const tooSmall = await page.evaluate((minPx: number): number => {
1714
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1715
- let undersize: number = 0;
1716
- tappable.forEach((el: HTMLElement): void => {
1717
- const rect = el.getBoundingClientRect();
1718
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1719
- undersize++;
1720
- }
1721
- });
1722
- return undersize;
1723
- }, 44);
1724
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1725
-
1726
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-field-new/tablet-l-light.png', fullPage: true });
1727
-
1728
- });
1729
-
1730
- test('slider-field-new × desktop × dark', async ({ page }): Promise<void> => {
1731
- await page.setViewportSize({ width: 1440, height: 900 });
1732
- const response = await page.goto('/c/slider-field-new');
1733
- expect(response?.ok()).toBeTruthy();
1734
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
1735
- await page.waitForLoadState('networkidle');
1736
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1737
- scrollWidth: document.documentElement.scrollWidth,
1738
- innerWidth: window.innerWidth,
1739
- }));
1740
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1741
-
1742
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-field-new/desktop-dark.png', fullPage: true });
1743
-
1744
- });
1745
-
1746
- test('slider-field-new × desktop × light', async ({ page }): Promise<void> => {
1747
- await page.setViewportSize({ width: 1440, height: 900 });
1748
- const response = await page.goto('/c/slider-field-new');
1749
- expect(response?.ok()).toBeTruthy();
1750
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
1751
- await page.waitForLoadState('networkidle');
1752
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1753
- scrollWidth: document.documentElement.scrollWidth,
1754
- innerWidth: window.innerWidth,
1755
- }));
1756
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1757
-
1758
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-field-new/desktop-light.png', fullPage: true });
1759
-
1760
- });
1761
-
1762
- test('slider-field-new × desktop-wide × dark', async ({ page }): Promise<void> => {
1763
- await page.setViewportSize({ width: 1920, height: 1080 });
1764
- const response = await page.goto('/c/slider-field-new');
1765
- expect(response?.ok()).toBeTruthy();
1766
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
1767
- await page.waitForLoadState('networkidle');
1768
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1769
- scrollWidth: document.documentElement.scrollWidth,
1770
- innerWidth: window.innerWidth,
1771
- }));
1772
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1773
-
1774
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-field-new/desktop-wide-dark.png', fullPage: true });
1775
-
1776
- });
1777
-
1778
- test('slider-field-new × desktop-wide × light', async ({ page }): Promise<void> => {
1779
- await page.setViewportSize({ width: 1920, height: 1080 });
1780
- const response = await page.goto('/c/slider-field-new');
1781
- expect(response?.ok()).toBeTruthy();
1782
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
1783
- await page.waitForLoadState('networkidle');
1784
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1785
- scrollWidth: document.documentElement.scrollWidth,
1786
- innerWidth: window.innerWidth,
1787
- }));
1788
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1789
-
1790
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-field-new/desktop-wide-light.png', fullPage: true });
1791
-
1792
- });
1793
- });
1794
-
1795
- test.describe('Route: Sandbox slider-range-field-new (/c/slider-range-field-new)', (): void => {
1796
- test('slider-range-field-new × mobile-s × dark', async ({ page }): Promise<void> => {
1797
- await page.setViewportSize({ width: 320, height: 568 });
1798
- const response = await page.goto('/c/slider-range-field-new');
1799
- expect(response?.ok()).toBeTruthy();
1800
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
1801
- await page.waitForLoadState('networkidle');
1802
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1803
- scrollWidth: document.documentElement.scrollWidth,
1804
- innerWidth: window.innerWidth,
1805
- }));
1806
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1807
-
1808
- const tooSmall = await page.evaluate((minPx: number): number => {
1809
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1810
- let undersize: number = 0;
1811
- tappable.forEach((el: HTMLElement): void => {
1812
- const rect = el.getBoundingClientRect();
1813
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1814
- undersize++;
1815
- }
1816
- });
1817
- return undersize;
1818
- }, 44);
1819
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1820
-
1821
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-range-field-new/mobile-s-dark.png', fullPage: true });
1822
-
1823
- });
1824
-
1825
- test('slider-range-field-new × mobile-s × light', async ({ page }): Promise<void> => {
1826
- await page.setViewportSize({ width: 320, height: 568 });
1827
- const response = await page.goto('/c/slider-range-field-new');
1828
- expect(response?.ok()).toBeTruthy();
1829
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
1830
- await page.waitForLoadState('networkidle');
1831
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1832
- scrollWidth: document.documentElement.scrollWidth,
1833
- innerWidth: window.innerWidth,
1834
- }));
1835
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1836
-
1837
- const tooSmall = await page.evaluate((minPx: number): number => {
1838
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1839
- let undersize: number = 0;
1840
- tappable.forEach((el: HTMLElement): void => {
1841
- const rect = el.getBoundingClientRect();
1842
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1843
- undersize++;
1844
- }
1845
- });
1846
- return undersize;
1847
- }, 44);
1848
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1849
-
1850
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-range-field-new/mobile-s-light.png', fullPage: true });
1851
-
1852
- });
1853
-
1854
- test('slider-range-field-new × mobile-m × dark', async ({ page }): Promise<void> => {
1855
- await page.setViewportSize({ width: 375, height: 667 });
1856
- const response = await page.goto('/c/slider-range-field-new');
1857
- expect(response?.ok()).toBeTruthy();
1858
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
1859
- await page.waitForLoadState('networkidle');
1860
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1861
- scrollWidth: document.documentElement.scrollWidth,
1862
- innerWidth: window.innerWidth,
1863
- }));
1864
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1865
-
1866
- const tooSmall = await page.evaluate((minPx: number): number => {
1867
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1868
- let undersize: number = 0;
1869
- tappable.forEach((el: HTMLElement): void => {
1870
- const rect = el.getBoundingClientRect();
1871
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1872
- undersize++;
1873
- }
1874
- });
1875
- return undersize;
1876
- }, 44);
1877
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1878
-
1879
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-range-field-new/mobile-m-dark.png', fullPage: true });
1880
-
1881
- });
1882
-
1883
- test('slider-range-field-new × mobile-m × light', async ({ page }): Promise<void> => {
1884
- await page.setViewportSize({ width: 375, height: 667 });
1885
- const response = await page.goto('/c/slider-range-field-new');
1886
- expect(response?.ok()).toBeTruthy();
1887
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
1888
- await page.waitForLoadState('networkidle');
1889
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1890
- scrollWidth: document.documentElement.scrollWidth,
1891
- innerWidth: window.innerWidth,
1892
- }));
1893
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1894
-
1895
- const tooSmall = await page.evaluate((minPx: number): number => {
1896
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1897
- let undersize: number = 0;
1898
- tappable.forEach((el: HTMLElement): void => {
1899
- const rect = el.getBoundingClientRect();
1900
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1901
- undersize++;
1902
- }
1903
- });
1904
- return undersize;
1905
- }, 44);
1906
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1907
-
1908
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-range-field-new/mobile-m-light.png', fullPage: true });
1909
-
1910
- });
1911
-
1912
- test('slider-range-field-new × mobile-l × dark', async ({ page }): Promise<void> => {
1913
- await page.setViewportSize({ width: 414, height: 896 });
1914
- const response = await page.goto('/c/slider-range-field-new');
1915
- expect(response?.ok()).toBeTruthy();
1916
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
1917
- await page.waitForLoadState('networkidle');
1918
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1919
- scrollWidth: document.documentElement.scrollWidth,
1920
- innerWidth: window.innerWidth,
1921
- }));
1922
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1923
-
1924
- const tooSmall = await page.evaluate((minPx: number): number => {
1925
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1926
- let undersize: number = 0;
1927
- tappable.forEach((el: HTMLElement): void => {
1928
- const rect = el.getBoundingClientRect();
1929
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1930
- undersize++;
1931
- }
1932
- });
1933
- return undersize;
1934
- }, 44);
1935
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1936
-
1937
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-range-field-new/mobile-l-dark.png', fullPage: true });
1938
-
1939
- });
1940
-
1941
- test('slider-range-field-new × mobile-l × light', async ({ page }): Promise<void> => {
1942
- await page.setViewportSize({ width: 414, height: 896 });
1943
- const response = await page.goto('/c/slider-range-field-new');
1944
- expect(response?.ok()).toBeTruthy();
1945
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
1946
- await page.waitForLoadState('networkidle');
1947
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1948
- scrollWidth: document.documentElement.scrollWidth,
1949
- innerWidth: window.innerWidth,
1950
- }));
1951
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1952
-
1953
- const tooSmall = await page.evaluate((minPx: number): number => {
1954
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1955
- let undersize: number = 0;
1956
- tappable.forEach((el: HTMLElement): void => {
1957
- const rect = el.getBoundingClientRect();
1958
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1959
- undersize++;
1960
- }
1961
- });
1962
- return undersize;
1963
- }, 44);
1964
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1965
-
1966
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-range-field-new/mobile-l-light.png', fullPage: true });
1967
-
1968
- });
1969
-
1970
- test('slider-range-field-new × tablet-p × dark', async ({ page }): Promise<void> => {
1971
- await page.setViewportSize({ width: 768, height: 1024 });
1972
- const response = await page.goto('/c/slider-range-field-new');
1973
- expect(response?.ok()).toBeTruthy();
1974
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
1975
- await page.waitForLoadState('networkidle');
1976
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
1977
- scrollWidth: document.documentElement.scrollWidth,
1978
- innerWidth: window.innerWidth,
1979
- }));
1980
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
1981
-
1982
- const tooSmall = await page.evaluate((minPx: number): number => {
1983
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
1984
- let undersize: number = 0;
1985
- tappable.forEach((el: HTMLElement): void => {
1986
- const rect = el.getBoundingClientRect();
1987
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
1988
- undersize++;
1989
- }
1990
- });
1991
- return undersize;
1992
- }, 44);
1993
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
1994
-
1995
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-range-field-new/tablet-p-dark.png', fullPage: true });
1996
-
1997
- });
1998
-
1999
- test('slider-range-field-new × tablet-p × light', async ({ page }): Promise<void> => {
2000
- await page.setViewportSize({ width: 768, height: 1024 });
2001
- const response = await page.goto('/c/slider-range-field-new');
2002
- expect(response?.ok()).toBeTruthy();
2003
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
2004
- await page.waitForLoadState('networkidle');
2005
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2006
- scrollWidth: document.documentElement.scrollWidth,
2007
- innerWidth: window.innerWidth,
2008
- }));
2009
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2010
-
2011
- const tooSmall = await page.evaluate((minPx: number): number => {
2012
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2013
- let undersize: number = 0;
2014
- tappable.forEach((el: HTMLElement): void => {
2015
- const rect = el.getBoundingClientRect();
2016
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2017
- undersize++;
2018
- }
2019
- });
2020
- return undersize;
2021
- }, 44);
2022
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2023
-
2024
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-range-field-new/tablet-p-light.png', fullPage: true });
2025
-
2026
- });
2027
-
2028
- test('slider-range-field-new × tablet-l × dark', async ({ page }): Promise<void> => {
2029
- await page.setViewportSize({ width: 1024, height: 768 });
2030
- const response = await page.goto('/c/slider-range-field-new');
2031
- expect(response?.ok()).toBeTruthy();
2032
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
2033
- await page.waitForLoadState('networkidle');
2034
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2035
- scrollWidth: document.documentElement.scrollWidth,
2036
- innerWidth: window.innerWidth,
2037
- }));
2038
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2039
-
2040
- const tooSmall = await page.evaluate((minPx: number): number => {
2041
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2042
- let undersize: number = 0;
2043
- tappable.forEach((el: HTMLElement): void => {
2044
- const rect = el.getBoundingClientRect();
2045
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2046
- undersize++;
2047
- }
2048
- });
2049
- return undersize;
2050
- }, 44);
2051
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2052
-
2053
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-range-field-new/tablet-l-dark.png', fullPage: true });
2054
-
2055
- });
2056
-
2057
- test('slider-range-field-new × tablet-l × light', async ({ page }): Promise<void> => {
2058
- await page.setViewportSize({ width: 1024, height: 768 });
2059
- const response = await page.goto('/c/slider-range-field-new');
2060
- expect(response?.ok()).toBeTruthy();
2061
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
2062
- await page.waitForLoadState('networkidle');
2063
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2064
- scrollWidth: document.documentElement.scrollWidth,
2065
- innerWidth: window.innerWidth,
2066
- }));
2067
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2068
-
2069
- const tooSmall = await page.evaluate((minPx: number): number => {
2070
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2071
- let undersize: number = 0;
2072
- tappable.forEach((el: HTMLElement): void => {
2073
- const rect = el.getBoundingClientRect();
2074
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2075
- undersize++;
2076
- }
2077
- });
2078
- return undersize;
2079
- }, 44);
2080
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2081
-
2082
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-range-field-new/tablet-l-light.png', fullPage: true });
2083
-
2084
- });
2085
-
2086
- test('slider-range-field-new × desktop × dark', async ({ page }): Promise<void> => {
2087
- await page.setViewportSize({ width: 1440, height: 900 });
2088
- const response = await page.goto('/c/slider-range-field-new');
2089
- expect(response?.ok()).toBeTruthy();
2090
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
2091
- await page.waitForLoadState('networkidle');
2092
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2093
- scrollWidth: document.documentElement.scrollWidth,
2094
- innerWidth: window.innerWidth,
2095
- }));
2096
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2097
-
2098
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-range-field-new/desktop-dark.png', fullPage: true });
2099
-
2100
- });
2101
-
2102
- test('slider-range-field-new × desktop × light', async ({ page }): Promise<void> => {
2103
- await page.setViewportSize({ width: 1440, height: 900 });
2104
- const response = await page.goto('/c/slider-range-field-new');
2105
- expect(response?.ok()).toBeTruthy();
2106
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
2107
- await page.waitForLoadState('networkidle');
2108
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2109
- scrollWidth: document.documentElement.scrollWidth,
2110
- innerWidth: window.innerWidth,
2111
- }));
2112
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2113
-
2114
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-range-field-new/desktop-light.png', fullPage: true });
2115
-
2116
- });
2117
-
2118
- test('slider-range-field-new × desktop-wide × dark', async ({ page }): Promise<void> => {
2119
- await page.setViewportSize({ width: 1920, height: 1080 });
2120
- const response = await page.goto('/c/slider-range-field-new');
2121
- expect(response?.ok()).toBeTruthy();
2122
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
2123
- await page.waitForLoadState('networkidle');
2124
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2125
- scrollWidth: document.documentElement.scrollWidth,
2126
- innerWidth: window.innerWidth,
2127
- }));
2128
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2129
-
2130
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-range-field-new/desktop-wide-dark.png', fullPage: true });
2131
-
2132
- });
2133
-
2134
- test('slider-range-field-new × desktop-wide × light', async ({ page }): Promise<void> => {
2135
- await page.setViewportSize({ width: 1920, height: 1080 });
2136
- const response = await page.goto('/c/slider-range-field-new');
2137
- expect(response?.ok()).toBeTruthy();
2138
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
2139
- await page.waitForLoadState('networkidle');
2140
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2141
- scrollWidth: document.documentElement.scrollWidth,
2142
- innerWidth: window.innerWidth,
2143
- }));
2144
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2145
-
2146
- await page.screenshot({ path: 'e2e/screenshots/sandbox/slider-range-field-new/desktop-wide-light.png', fullPage: true });
2147
-
2148
- });
2149
- });
2150
-
2151
- test.describe('Route: Sandbox checkbox-field-new (/c/checkbox-field-new)', (): void => {
2152
- test('checkbox-field-new × mobile-s × dark', async ({ page }): Promise<void> => {
2153
- await page.setViewportSize({ width: 320, height: 568 });
2154
- const response = await page.goto('/c/checkbox-field-new');
2155
- expect(response?.ok()).toBeTruthy();
2156
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
2157
- await page.waitForLoadState('networkidle');
2158
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2159
- scrollWidth: document.documentElement.scrollWidth,
2160
- innerWidth: window.innerWidth,
2161
- }));
2162
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2163
-
2164
- const tooSmall = await page.evaluate((minPx: number): number => {
2165
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2166
- let undersize: number = 0;
2167
- tappable.forEach((el: HTMLElement): void => {
2168
- const rect = el.getBoundingClientRect();
2169
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2170
- undersize++;
2171
- }
2172
- });
2173
- return undersize;
2174
- }, 44);
2175
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2176
-
2177
- await page.screenshot({ path: 'e2e/screenshots/sandbox/checkbox-field-new/mobile-s-dark.png', fullPage: true });
2178
-
2179
- });
2180
-
2181
- test('checkbox-field-new × mobile-s × light', async ({ page }): Promise<void> => {
2182
- await page.setViewportSize({ width: 320, height: 568 });
2183
- const response = await page.goto('/c/checkbox-field-new');
2184
- expect(response?.ok()).toBeTruthy();
2185
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
2186
- await page.waitForLoadState('networkidle');
2187
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2188
- scrollWidth: document.documentElement.scrollWidth,
2189
- innerWidth: window.innerWidth,
2190
- }));
2191
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2192
-
2193
- const tooSmall = await page.evaluate((minPx: number): number => {
2194
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2195
- let undersize: number = 0;
2196
- tappable.forEach((el: HTMLElement): void => {
2197
- const rect = el.getBoundingClientRect();
2198
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2199
- undersize++;
2200
- }
2201
- });
2202
- return undersize;
2203
- }, 44);
2204
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2205
-
2206
- await page.screenshot({ path: 'e2e/screenshots/sandbox/checkbox-field-new/mobile-s-light.png', fullPage: true });
2207
-
2208
- });
2209
-
2210
- test('checkbox-field-new × mobile-m × dark', async ({ page }): Promise<void> => {
2211
- await page.setViewportSize({ width: 375, height: 667 });
2212
- const response = await page.goto('/c/checkbox-field-new');
2213
- expect(response?.ok()).toBeTruthy();
2214
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
2215
- await page.waitForLoadState('networkidle');
2216
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2217
- scrollWidth: document.documentElement.scrollWidth,
2218
- innerWidth: window.innerWidth,
2219
- }));
2220
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2221
-
2222
- const tooSmall = await page.evaluate((minPx: number): number => {
2223
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2224
- let undersize: number = 0;
2225
- tappable.forEach((el: HTMLElement): void => {
2226
- const rect = el.getBoundingClientRect();
2227
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2228
- undersize++;
2229
- }
2230
- });
2231
- return undersize;
2232
- }, 44);
2233
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2234
-
2235
- await page.screenshot({ path: 'e2e/screenshots/sandbox/checkbox-field-new/mobile-m-dark.png', fullPage: true });
2236
-
2237
- });
2238
-
2239
- test('checkbox-field-new × mobile-m × light', async ({ page }): Promise<void> => {
2240
- await page.setViewportSize({ width: 375, height: 667 });
2241
- const response = await page.goto('/c/checkbox-field-new');
2242
- expect(response?.ok()).toBeTruthy();
2243
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
2244
- await page.waitForLoadState('networkidle');
2245
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2246
- scrollWidth: document.documentElement.scrollWidth,
2247
- innerWidth: window.innerWidth,
2248
- }));
2249
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2250
-
2251
- const tooSmall = await page.evaluate((minPx: number): number => {
2252
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2253
- let undersize: number = 0;
2254
- tappable.forEach((el: HTMLElement): void => {
2255
- const rect = el.getBoundingClientRect();
2256
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2257
- undersize++;
2258
- }
2259
- });
2260
- return undersize;
2261
- }, 44);
2262
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2263
-
2264
- await page.screenshot({ path: 'e2e/screenshots/sandbox/checkbox-field-new/mobile-m-light.png', fullPage: true });
2265
-
2266
- });
2267
-
2268
- test('checkbox-field-new × mobile-l × dark', async ({ page }): Promise<void> => {
2269
- await page.setViewportSize({ width: 414, height: 896 });
2270
- const response = await page.goto('/c/checkbox-field-new');
2271
- expect(response?.ok()).toBeTruthy();
2272
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
2273
- await page.waitForLoadState('networkidle');
2274
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2275
- scrollWidth: document.documentElement.scrollWidth,
2276
- innerWidth: window.innerWidth,
2277
- }));
2278
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2279
-
2280
- const tooSmall = await page.evaluate((minPx: number): number => {
2281
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2282
- let undersize: number = 0;
2283
- tappable.forEach((el: HTMLElement): void => {
2284
- const rect = el.getBoundingClientRect();
2285
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2286
- undersize++;
2287
- }
2288
- });
2289
- return undersize;
2290
- }, 44);
2291
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2292
-
2293
- await page.screenshot({ path: 'e2e/screenshots/sandbox/checkbox-field-new/mobile-l-dark.png', fullPage: true });
2294
-
2295
- });
2296
-
2297
- test('checkbox-field-new × mobile-l × light', async ({ page }): Promise<void> => {
2298
- await page.setViewportSize({ width: 414, height: 896 });
2299
- const response = await page.goto('/c/checkbox-field-new');
2300
- expect(response?.ok()).toBeTruthy();
2301
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
2302
- await page.waitForLoadState('networkidle');
2303
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2304
- scrollWidth: document.documentElement.scrollWidth,
2305
- innerWidth: window.innerWidth,
2306
- }));
2307
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2308
-
2309
- const tooSmall = await page.evaluate((minPx: number): number => {
2310
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2311
- let undersize: number = 0;
2312
- tappable.forEach((el: HTMLElement): void => {
2313
- const rect = el.getBoundingClientRect();
2314
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2315
- undersize++;
2316
- }
2317
- });
2318
- return undersize;
2319
- }, 44);
2320
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2321
-
2322
- await page.screenshot({ path: 'e2e/screenshots/sandbox/checkbox-field-new/mobile-l-light.png', fullPage: true });
2323
-
2324
- });
2325
-
2326
- test('checkbox-field-new × tablet-p × dark', async ({ page }): Promise<void> => {
2327
- await page.setViewportSize({ width: 768, height: 1024 });
2328
- const response = await page.goto('/c/checkbox-field-new');
2329
- expect(response?.ok()).toBeTruthy();
2330
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
2331
- await page.waitForLoadState('networkidle');
2332
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2333
- scrollWidth: document.documentElement.scrollWidth,
2334
- innerWidth: window.innerWidth,
2335
- }));
2336
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2337
-
2338
- const tooSmall = await page.evaluate((minPx: number): number => {
2339
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2340
- let undersize: number = 0;
2341
- tappable.forEach((el: HTMLElement): void => {
2342
- const rect = el.getBoundingClientRect();
2343
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2344
- undersize++;
2345
- }
2346
- });
2347
- return undersize;
2348
- }, 44);
2349
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2350
-
2351
- await page.screenshot({ path: 'e2e/screenshots/sandbox/checkbox-field-new/tablet-p-dark.png', fullPage: true });
2352
-
2353
- });
2354
-
2355
- test('checkbox-field-new × tablet-p × light', async ({ page }): Promise<void> => {
2356
- await page.setViewportSize({ width: 768, height: 1024 });
2357
- const response = await page.goto('/c/checkbox-field-new');
2358
- expect(response?.ok()).toBeTruthy();
2359
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
2360
- await page.waitForLoadState('networkidle');
2361
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2362
- scrollWidth: document.documentElement.scrollWidth,
2363
- innerWidth: window.innerWidth,
2364
- }));
2365
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2366
-
2367
- const tooSmall = await page.evaluate((minPx: number): number => {
2368
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2369
- let undersize: number = 0;
2370
- tappable.forEach((el: HTMLElement): void => {
2371
- const rect = el.getBoundingClientRect();
2372
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2373
- undersize++;
2374
- }
2375
- });
2376
- return undersize;
2377
- }, 44);
2378
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2379
-
2380
- await page.screenshot({ path: 'e2e/screenshots/sandbox/checkbox-field-new/tablet-p-light.png', fullPage: true });
2381
-
2382
- });
2383
-
2384
- test('checkbox-field-new × tablet-l × dark', async ({ page }): Promise<void> => {
2385
- await page.setViewportSize({ width: 1024, height: 768 });
2386
- const response = await page.goto('/c/checkbox-field-new');
2387
- expect(response?.ok()).toBeTruthy();
2388
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
2389
- await page.waitForLoadState('networkidle');
2390
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2391
- scrollWidth: document.documentElement.scrollWidth,
2392
- innerWidth: window.innerWidth,
2393
- }));
2394
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2395
-
2396
- const tooSmall = await page.evaluate((minPx: number): number => {
2397
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2398
- let undersize: number = 0;
2399
- tappable.forEach((el: HTMLElement): void => {
2400
- const rect = el.getBoundingClientRect();
2401
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2402
- undersize++;
2403
- }
2404
- });
2405
- return undersize;
2406
- }, 44);
2407
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2408
-
2409
- await page.screenshot({ path: 'e2e/screenshots/sandbox/checkbox-field-new/tablet-l-dark.png', fullPage: true });
2410
-
2411
- });
2412
-
2413
- test('checkbox-field-new × tablet-l × light', async ({ page }): Promise<void> => {
2414
- await page.setViewportSize({ width: 1024, height: 768 });
2415
- const response = await page.goto('/c/checkbox-field-new');
2416
- expect(response?.ok()).toBeTruthy();
2417
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
2418
- await page.waitForLoadState('networkidle');
2419
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2420
- scrollWidth: document.documentElement.scrollWidth,
2421
- innerWidth: window.innerWidth,
2422
- }));
2423
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2424
-
2425
- const tooSmall = await page.evaluate((minPx: number): number => {
2426
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2427
- let undersize: number = 0;
2428
- tappable.forEach((el: HTMLElement): void => {
2429
- const rect = el.getBoundingClientRect();
2430
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2431
- undersize++;
2432
- }
2433
- });
2434
- return undersize;
2435
- }, 44);
2436
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2437
-
2438
- await page.screenshot({ path: 'e2e/screenshots/sandbox/checkbox-field-new/tablet-l-light.png', fullPage: true });
2439
-
2440
- });
2441
-
2442
- test('checkbox-field-new × desktop × dark', async ({ page }): Promise<void> => {
2443
- await page.setViewportSize({ width: 1440, height: 900 });
2444
- const response = await page.goto('/c/checkbox-field-new');
2445
- expect(response?.ok()).toBeTruthy();
2446
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
2447
- await page.waitForLoadState('networkidle');
2448
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2449
- scrollWidth: document.documentElement.scrollWidth,
2450
- innerWidth: window.innerWidth,
2451
- }));
2452
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2453
-
2454
- await page.screenshot({ path: 'e2e/screenshots/sandbox/checkbox-field-new/desktop-dark.png', fullPage: true });
2455
-
2456
- });
2457
-
2458
- test('checkbox-field-new × desktop × light', async ({ page }): Promise<void> => {
2459
- await page.setViewportSize({ width: 1440, height: 900 });
2460
- const response = await page.goto('/c/checkbox-field-new');
2461
- expect(response?.ok()).toBeTruthy();
2462
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
2463
- await page.waitForLoadState('networkidle');
2464
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2465
- scrollWidth: document.documentElement.scrollWidth,
2466
- innerWidth: window.innerWidth,
2467
- }));
2468
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2469
-
2470
- await page.screenshot({ path: 'e2e/screenshots/sandbox/checkbox-field-new/desktop-light.png', fullPage: true });
2471
-
2472
- });
2473
-
2474
- test('checkbox-field-new × desktop-wide × dark', async ({ page }): Promise<void> => {
2475
- await page.setViewportSize({ width: 1920, height: 1080 });
2476
- const response = await page.goto('/c/checkbox-field-new');
2477
- expect(response?.ok()).toBeTruthy();
2478
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
2479
- await page.waitForLoadState('networkidle');
2480
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2481
- scrollWidth: document.documentElement.scrollWidth,
2482
- innerWidth: window.innerWidth,
2483
- }));
2484
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2485
-
2486
- await page.screenshot({ path: 'e2e/screenshots/sandbox/checkbox-field-new/desktop-wide-dark.png', fullPage: true });
2487
-
2488
- });
2489
-
2490
- test('checkbox-field-new × desktop-wide × light', async ({ page }): Promise<void> => {
2491
- await page.setViewportSize({ width: 1920, height: 1080 });
2492
- const response = await page.goto('/c/checkbox-field-new');
2493
- expect(response?.ok()).toBeTruthy();
2494
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
2495
- await page.waitForLoadState('networkidle');
2496
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2497
- scrollWidth: document.documentElement.scrollWidth,
2498
- innerWidth: window.innerWidth,
2499
- }));
2500
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2501
-
2502
- await page.screenshot({ path: 'e2e/screenshots/sandbox/checkbox-field-new/desktop-wide-light.png', fullPage: true });
2503
-
2504
- });
2505
- });
2506
-
2507
- test.describe('Route: Sandbox select-field-new (/c/select-field-new)', (): void => {
2508
- test('select-field-new × mobile-s × dark', async ({ page }): Promise<void> => {
2509
- await page.setViewportSize({ width: 320, height: 568 });
2510
- const response = await page.goto('/c/select-field-new');
2511
- expect(response?.ok()).toBeTruthy();
2512
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
2513
- await page.waitForLoadState('networkidle');
2514
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2515
- scrollWidth: document.documentElement.scrollWidth,
2516
- innerWidth: window.innerWidth,
2517
- }));
2518
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2519
-
2520
- const tooSmall = await page.evaluate((minPx: number): number => {
2521
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2522
- let undersize: number = 0;
2523
- tappable.forEach((el: HTMLElement): void => {
2524
- const rect = el.getBoundingClientRect();
2525
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2526
- undersize++;
2527
- }
2528
- });
2529
- return undersize;
2530
- }, 44);
2531
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2532
-
2533
- await page.screenshot({ path: 'e2e/screenshots/sandbox/select-field-new/mobile-s-dark.png', fullPage: true });
2534
-
2535
- });
2536
-
2537
- test('select-field-new × mobile-s × light', async ({ page }): Promise<void> => {
2538
- await page.setViewportSize({ width: 320, height: 568 });
2539
- const response = await page.goto('/c/select-field-new');
2540
- expect(response?.ok()).toBeTruthy();
2541
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
2542
- await page.waitForLoadState('networkidle');
2543
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2544
- scrollWidth: document.documentElement.scrollWidth,
2545
- innerWidth: window.innerWidth,
2546
- }));
2547
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2548
-
2549
- const tooSmall = await page.evaluate((minPx: number): number => {
2550
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2551
- let undersize: number = 0;
2552
- tappable.forEach((el: HTMLElement): void => {
2553
- const rect = el.getBoundingClientRect();
2554
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2555
- undersize++;
2556
- }
2557
- });
2558
- return undersize;
2559
- }, 44);
2560
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2561
-
2562
- await page.screenshot({ path: 'e2e/screenshots/sandbox/select-field-new/mobile-s-light.png', fullPage: true });
2563
-
2564
- });
2565
-
2566
- test('select-field-new × mobile-m × dark', async ({ page }): Promise<void> => {
2567
- await page.setViewportSize({ width: 375, height: 667 });
2568
- const response = await page.goto('/c/select-field-new');
2569
- expect(response?.ok()).toBeTruthy();
2570
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
2571
- await page.waitForLoadState('networkidle');
2572
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2573
- scrollWidth: document.documentElement.scrollWidth,
2574
- innerWidth: window.innerWidth,
2575
- }));
2576
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2577
-
2578
- const tooSmall = await page.evaluate((minPx: number): number => {
2579
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2580
- let undersize: number = 0;
2581
- tappable.forEach((el: HTMLElement): void => {
2582
- const rect = el.getBoundingClientRect();
2583
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2584
- undersize++;
2585
- }
2586
- });
2587
- return undersize;
2588
- }, 44);
2589
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2590
-
2591
- await page.screenshot({ path: 'e2e/screenshots/sandbox/select-field-new/mobile-m-dark.png', fullPage: true });
2592
-
2593
- });
2594
-
2595
- test('select-field-new × mobile-m × light', async ({ page }): Promise<void> => {
2596
- await page.setViewportSize({ width: 375, height: 667 });
2597
- const response = await page.goto('/c/select-field-new');
2598
- expect(response?.ok()).toBeTruthy();
2599
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
2600
- await page.waitForLoadState('networkidle');
2601
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2602
- scrollWidth: document.documentElement.scrollWidth,
2603
- innerWidth: window.innerWidth,
2604
- }));
2605
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2606
-
2607
- const tooSmall = await page.evaluate((minPx: number): number => {
2608
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2609
- let undersize: number = 0;
2610
- tappable.forEach((el: HTMLElement): void => {
2611
- const rect = el.getBoundingClientRect();
2612
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2613
- undersize++;
2614
- }
2615
- });
2616
- return undersize;
2617
- }, 44);
2618
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2619
-
2620
- await page.screenshot({ path: 'e2e/screenshots/sandbox/select-field-new/mobile-m-light.png', fullPage: true });
2621
-
2622
- });
2623
-
2624
- test('select-field-new × mobile-l × dark', async ({ page }): Promise<void> => {
2625
- await page.setViewportSize({ width: 414, height: 896 });
2626
- const response = await page.goto('/c/select-field-new');
2627
- expect(response?.ok()).toBeTruthy();
2628
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
2629
- await page.waitForLoadState('networkidle');
2630
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2631
- scrollWidth: document.documentElement.scrollWidth,
2632
- innerWidth: window.innerWidth,
2633
- }));
2634
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2635
-
2636
- const tooSmall = await page.evaluate((minPx: number): number => {
2637
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2638
- let undersize: number = 0;
2639
- tappable.forEach((el: HTMLElement): void => {
2640
- const rect = el.getBoundingClientRect();
2641
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2642
- undersize++;
2643
- }
2644
- });
2645
- return undersize;
2646
- }, 44);
2647
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2648
-
2649
- await page.screenshot({ path: 'e2e/screenshots/sandbox/select-field-new/mobile-l-dark.png', fullPage: true });
2650
-
2651
- });
2652
-
2653
- test('select-field-new × mobile-l × light', async ({ page }): Promise<void> => {
2654
- await page.setViewportSize({ width: 414, height: 896 });
2655
- const response = await page.goto('/c/select-field-new');
2656
- expect(response?.ok()).toBeTruthy();
2657
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
2658
- await page.waitForLoadState('networkidle');
2659
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2660
- scrollWidth: document.documentElement.scrollWidth,
2661
- innerWidth: window.innerWidth,
2662
- }));
2663
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2664
-
2665
- const tooSmall = await page.evaluate((minPx: number): number => {
2666
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2667
- let undersize: number = 0;
2668
- tappable.forEach((el: HTMLElement): void => {
2669
- const rect = el.getBoundingClientRect();
2670
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2671
- undersize++;
2672
- }
2673
- });
2674
- return undersize;
2675
- }, 44);
2676
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2677
-
2678
- await page.screenshot({ path: 'e2e/screenshots/sandbox/select-field-new/mobile-l-light.png', fullPage: true });
2679
-
2680
- });
2681
-
2682
- test('select-field-new × tablet-p × dark', async ({ page }): Promise<void> => {
2683
- await page.setViewportSize({ width: 768, height: 1024 });
2684
- const response = await page.goto('/c/select-field-new');
2685
- expect(response?.ok()).toBeTruthy();
2686
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
2687
- await page.waitForLoadState('networkidle');
2688
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2689
- scrollWidth: document.documentElement.scrollWidth,
2690
- innerWidth: window.innerWidth,
2691
- }));
2692
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2693
-
2694
- const tooSmall = await page.evaluate((minPx: number): number => {
2695
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2696
- let undersize: number = 0;
2697
- tappable.forEach((el: HTMLElement): void => {
2698
- const rect = el.getBoundingClientRect();
2699
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2700
- undersize++;
2701
- }
2702
- });
2703
- return undersize;
2704
- }, 44);
2705
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2706
-
2707
- await page.screenshot({ path: 'e2e/screenshots/sandbox/select-field-new/tablet-p-dark.png', fullPage: true });
2708
-
2709
- });
2710
-
2711
- test('select-field-new × tablet-p × light', async ({ page }): Promise<void> => {
2712
- await page.setViewportSize({ width: 768, height: 1024 });
2713
- const response = await page.goto('/c/select-field-new');
2714
- expect(response?.ok()).toBeTruthy();
2715
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
2716
- await page.waitForLoadState('networkidle');
2717
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2718
- scrollWidth: document.documentElement.scrollWidth,
2719
- innerWidth: window.innerWidth,
2720
- }));
2721
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2722
-
2723
- const tooSmall = await page.evaluate((minPx: number): number => {
2724
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2725
- let undersize: number = 0;
2726
- tappable.forEach((el: HTMLElement): void => {
2727
- const rect = el.getBoundingClientRect();
2728
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2729
- undersize++;
2730
- }
2731
- });
2732
- return undersize;
2733
- }, 44);
2734
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2735
-
2736
- await page.screenshot({ path: 'e2e/screenshots/sandbox/select-field-new/tablet-p-light.png', fullPage: true });
2737
-
2738
- });
2739
-
2740
- test('select-field-new × tablet-l × dark', async ({ page }): Promise<void> => {
2741
- await page.setViewportSize({ width: 1024, height: 768 });
2742
- const response = await page.goto('/c/select-field-new');
2743
- expect(response?.ok()).toBeTruthy();
2744
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
2745
- await page.waitForLoadState('networkidle');
2746
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2747
- scrollWidth: document.documentElement.scrollWidth,
2748
- innerWidth: window.innerWidth,
2749
- }));
2750
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2751
-
2752
- const tooSmall = await page.evaluate((minPx: number): number => {
2753
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2754
- let undersize: number = 0;
2755
- tappable.forEach((el: HTMLElement): void => {
2756
- const rect = el.getBoundingClientRect();
2757
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2758
- undersize++;
2759
- }
2760
- });
2761
- return undersize;
2762
- }, 44);
2763
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2764
-
2765
- await page.screenshot({ path: 'e2e/screenshots/sandbox/select-field-new/tablet-l-dark.png', fullPage: true });
2766
-
2767
- });
2768
-
2769
- test('select-field-new × tablet-l × light', async ({ page }): Promise<void> => {
2770
- await page.setViewportSize({ width: 1024, height: 768 });
2771
- const response = await page.goto('/c/select-field-new');
2772
- expect(response?.ok()).toBeTruthy();
2773
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
2774
- await page.waitForLoadState('networkidle');
2775
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2776
- scrollWidth: document.documentElement.scrollWidth,
2777
- innerWidth: window.innerWidth,
2778
- }));
2779
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2780
-
2781
- const tooSmall = await page.evaluate((minPx: number): number => {
2782
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2783
- let undersize: number = 0;
2784
- tappable.forEach((el: HTMLElement): void => {
2785
- const rect = el.getBoundingClientRect();
2786
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2787
- undersize++;
2788
- }
2789
- });
2790
- return undersize;
2791
- }, 44);
2792
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2793
-
2794
- await page.screenshot({ path: 'e2e/screenshots/sandbox/select-field-new/tablet-l-light.png', fullPage: true });
2795
-
2796
- });
2797
-
2798
- test('select-field-new × desktop × dark', async ({ page }): Promise<void> => {
2799
- await page.setViewportSize({ width: 1440, height: 900 });
2800
- const response = await page.goto('/c/select-field-new');
2801
- expect(response?.ok()).toBeTruthy();
2802
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
2803
- await page.waitForLoadState('networkidle');
2804
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2805
- scrollWidth: document.documentElement.scrollWidth,
2806
- innerWidth: window.innerWidth,
2807
- }));
2808
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2809
-
2810
- await page.screenshot({ path: 'e2e/screenshots/sandbox/select-field-new/desktop-dark.png', fullPage: true });
2811
-
2812
- });
2813
-
2814
- test('select-field-new × desktop × light', async ({ page }): Promise<void> => {
2815
- await page.setViewportSize({ width: 1440, height: 900 });
2816
- const response = await page.goto('/c/select-field-new');
2817
- expect(response?.ok()).toBeTruthy();
2818
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
2819
- await page.waitForLoadState('networkidle');
2820
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2821
- scrollWidth: document.documentElement.scrollWidth,
2822
- innerWidth: window.innerWidth,
2823
- }));
2824
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2825
-
2826
- await page.screenshot({ path: 'e2e/screenshots/sandbox/select-field-new/desktop-light.png', fullPage: true });
2827
-
2828
- });
2829
-
2830
- test('select-field-new × desktop-wide × dark', async ({ page }): Promise<void> => {
2831
- await page.setViewportSize({ width: 1920, height: 1080 });
2832
- const response = await page.goto('/c/select-field-new');
2833
- expect(response?.ok()).toBeTruthy();
2834
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
2835
- await page.waitForLoadState('networkidle');
2836
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2837
- scrollWidth: document.documentElement.scrollWidth,
2838
- innerWidth: window.innerWidth,
2839
- }));
2840
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2841
-
2842
- await page.screenshot({ path: 'e2e/screenshots/sandbox/select-field-new/desktop-wide-dark.png', fullPage: true });
2843
-
2844
- });
2845
-
2846
- test('select-field-new × desktop-wide × light', async ({ page }): Promise<void> => {
2847
- await page.setViewportSize({ width: 1920, height: 1080 });
2848
- const response = await page.goto('/c/select-field-new');
2849
- expect(response?.ok()).toBeTruthy();
2850
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
2851
- await page.waitForLoadState('networkidle');
2852
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2853
- scrollWidth: document.documentElement.scrollWidth,
2854
- innerWidth: window.innerWidth,
2855
- }));
2856
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2857
-
2858
- await page.screenshot({ path: 'e2e/screenshots/sandbox/select-field-new/desktop-wide-light.png', fullPage: true });
2859
-
2860
- });
2861
- });
2862
-
2863
- test.describe('Route: Sandbox multiselect-field-new (/c/multiselect-field-new)', (): void => {
2864
- test('multiselect-field-new × mobile-s × dark', async ({ page }): Promise<void> => {
2865
- await page.setViewportSize({ width: 320, height: 568 });
2866
- const response = await page.goto('/c/multiselect-field-new');
2867
- expect(response?.ok()).toBeTruthy();
2868
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
2869
- await page.waitForLoadState('networkidle');
2870
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2871
- scrollWidth: document.documentElement.scrollWidth,
2872
- innerWidth: window.innerWidth,
2873
- }));
2874
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2875
-
2876
- const tooSmall = await page.evaluate((minPx: number): number => {
2877
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2878
- let undersize: number = 0;
2879
- tappable.forEach((el: HTMLElement): void => {
2880
- const rect = el.getBoundingClientRect();
2881
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2882
- undersize++;
2883
- }
2884
- });
2885
- return undersize;
2886
- }, 44);
2887
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2888
-
2889
- await page.screenshot({ path: 'e2e/screenshots/sandbox/multiselect-field-new/mobile-s-dark.png', fullPage: true });
2890
-
2891
- });
2892
-
2893
- test('multiselect-field-new × mobile-s × light', async ({ page }): Promise<void> => {
2894
- await page.setViewportSize({ width: 320, height: 568 });
2895
- const response = await page.goto('/c/multiselect-field-new');
2896
- expect(response?.ok()).toBeTruthy();
2897
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
2898
- await page.waitForLoadState('networkidle');
2899
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2900
- scrollWidth: document.documentElement.scrollWidth,
2901
- innerWidth: window.innerWidth,
2902
- }));
2903
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2904
-
2905
- const tooSmall = await page.evaluate((minPx: number): number => {
2906
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2907
- let undersize: number = 0;
2908
- tappable.forEach((el: HTMLElement): void => {
2909
- const rect = el.getBoundingClientRect();
2910
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2911
- undersize++;
2912
- }
2913
- });
2914
- return undersize;
2915
- }, 44);
2916
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2917
-
2918
- await page.screenshot({ path: 'e2e/screenshots/sandbox/multiselect-field-new/mobile-s-light.png', fullPage: true });
2919
-
2920
- });
2921
-
2922
- test('multiselect-field-new × mobile-m × dark', async ({ page }): Promise<void> => {
2923
- await page.setViewportSize({ width: 375, height: 667 });
2924
- const response = await page.goto('/c/multiselect-field-new');
2925
- expect(response?.ok()).toBeTruthy();
2926
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
2927
- await page.waitForLoadState('networkidle');
2928
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2929
- scrollWidth: document.documentElement.scrollWidth,
2930
- innerWidth: window.innerWidth,
2931
- }));
2932
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2933
-
2934
- const tooSmall = await page.evaluate((minPx: number): number => {
2935
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2936
- let undersize: number = 0;
2937
- tappable.forEach((el: HTMLElement): void => {
2938
- const rect = el.getBoundingClientRect();
2939
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2940
- undersize++;
2941
- }
2942
- });
2943
- return undersize;
2944
- }, 44);
2945
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2946
-
2947
- await page.screenshot({ path: 'e2e/screenshots/sandbox/multiselect-field-new/mobile-m-dark.png', fullPage: true });
2948
-
2949
- });
2950
-
2951
- test('multiselect-field-new × mobile-m × light', async ({ page }): Promise<void> => {
2952
- await page.setViewportSize({ width: 375, height: 667 });
2953
- const response = await page.goto('/c/multiselect-field-new');
2954
- expect(response?.ok()).toBeTruthy();
2955
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
2956
- await page.waitForLoadState('networkidle');
2957
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2958
- scrollWidth: document.documentElement.scrollWidth,
2959
- innerWidth: window.innerWidth,
2960
- }));
2961
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2962
-
2963
- const tooSmall = await page.evaluate((minPx: number): number => {
2964
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2965
- let undersize: number = 0;
2966
- tappable.forEach((el: HTMLElement): void => {
2967
- const rect = el.getBoundingClientRect();
2968
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2969
- undersize++;
2970
- }
2971
- });
2972
- return undersize;
2973
- }, 44);
2974
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
2975
-
2976
- await page.screenshot({ path: 'e2e/screenshots/sandbox/multiselect-field-new/mobile-m-light.png', fullPage: true });
2977
-
2978
- });
2979
-
2980
- test('multiselect-field-new × mobile-l × dark', async ({ page }): Promise<void> => {
2981
- await page.setViewportSize({ width: 414, height: 896 });
2982
- const response = await page.goto('/c/multiselect-field-new');
2983
- expect(response?.ok()).toBeTruthy();
2984
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
2985
- await page.waitForLoadState('networkidle');
2986
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
2987
- scrollWidth: document.documentElement.scrollWidth,
2988
- innerWidth: window.innerWidth,
2989
- }));
2990
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
2991
-
2992
- const tooSmall = await page.evaluate((minPx: number): number => {
2993
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
2994
- let undersize: number = 0;
2995
- tappable.forEach((el: HTMLElement): void => {
2996
- const rect = el.getBoundingClientRect();
2997
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
2998
- undersize++;
2999
- }
3000
- });
3001
- return undersize;
3002
- }, 44);
3003
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3004
-
3005
- await page.screenshot({ path: 'e2e/screenshots/sandbox/multiselect-field-new/mobile-l-dark.png', fullPage: true });
3006
-
3007
- });
3008
-
3009
- test('multiselect-field-new × mobile-l × light', async ({ page }): Promise<void> => {
3010
- await page.setViewportSize({ width: 414, height: 896 });
3011
- const response = await page.goto('/c/multiselect-field-new');
3012
- expect(response?.ok()).toBeTruthy();
3013
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
3014
- await page.waitForLoadState('networkidle');
3015
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3016
- scrollWidth: document.documentElement.scrollWidth,
3017
- innerWidth: window.innerWidth,
3018
- }));
3019
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3020
-
3021
- const tooSmall = await page.evaluate((minPx: number): number => {
3022
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3023
- let undersize: number = 0;
3024
- tappable.forEach((el: HTMLElement): void => {
3025
- const rect = el.getBoundingClientRect();
3026
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3027
- undersize++;
3028
- }
3029
- });
3030
- return undersize;
3031
- }, 44);
3032
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3033
-
3034
- await page.screenshot({ path: 'e2e/screenshots/sandbox/multiselect-field-new/mobile-l-light.png', fullPage: true });
3035
-
3036
- });
3037
-
3038
- test('multiselect-field-new × tablet-p × dark', async ({ page }): Promise<void> => {
3039
- await page.setViewportSize({ width: 768, height: 1024 });
3040
- const response = await page.goto('/c/multiselect-field-new');
3041
- expect(response?.ok()).toBeTruthy();
3042
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
3043
- await page.waitForLoadState('networkidle');
3044
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3045
- scrollWidth: document.documentElement.scrollWidth,
3046
- innerWidth: window.innerWidth,
3047
- }));
3048
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3049
-
3050
- const tooSmall = await page.evaluate((minPx: number): number => {
3051
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3052
- let undersize: number = 0;
3053
- tappable.forEach((el: HTMLElement): void => {
3054
- const rect = el.getBoundingClientRect();
3055
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3056
- undersize++;
3057
- }
3058
- });
3059
- return undersize;
3060
- }, 44);
3061
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3062
-
3063
- await page.screenshot({ path: 'e2e/screenshots/sandbox/multiselect-field-new/tablet-p-dark.png', fullPage: true });
3064
-
3065
- });
3066
-
3067
- test('multiselect-field-new × tablet-p × light', async ({ page }): Promise<void> => {
3068
- await page.setViewportSize({ width: 768, height: 1024 });
3069
- const response = await page.goto('/c/multiselect-field-new');
3070
- expect(response?.ok()).toBeTruthy();
3071
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
3072
- await page.waitForLoadState('networkidle');
3073
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3074
- scrollWidth: document.documentElement.scrollWidth,
3075
- innerWidth: window.innerWidth,
3076
- }));
3077
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3078
-
3079
- const tooSmall = await page.evaluate((minPx: number): number => {
3080
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3081
- let undersize: number = 0;
3082
- tappable.forEach((el: HTMLElement): void => {
3083
- const rect = el.getBoundingClientRect();
3084
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3085
- undersize++;
3086
- }
3087
- });
3088
- return undersize;
3089
- }, 44);
3090
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3091
-
3092
- await page.screenshot({ path: 'e2e/screenshots/sandbox/multiselect-field-new/tablet-p-light.png', fullPage: true });
3093
-
3094
- });
3095
-
3096
- test('multiselect-field-new × tablet-l × dark', async ({ page }): Promise<void> => {
3097
- await page.setViewportSize({ width: 1024, height: 768 });
3098
- const response = await page.goto('/c/multiselect-field-new');
3099
- expect(response?.ok()).toBeTruthy();
3100
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
3101
- await page.waitForLoadState('networkidle');
3102
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3103
- scrollWidth: document.documentElement.scrollWidth,
3104
- innerWidth: window.innerWidth,
3105
- }));
3106
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3107
-
3108
- const tooSmall = await page.evaluate((minPx: number): number => {
3109
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3110
- let undersize: number = 0;
3111
- tappable.forEach((el: HTMLElement): void => {
3112
- const rect = el.getBoundingClientRect();
3113
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3114
- undersize++;
3115
- }
3116
- });
3117
- return undersize;
3118
- }, 44);
3119
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3120
-
3121
- await page.screenshot({ path: 'e2e/screenshots/sandbox/multiselect-field-new/tablet-l-dark.png', fullPage: true });
3122
-
3123
- });
3124
-
3125
- test('multiselect-field-new × tablet-l × light', async ({ page }): Promise<void> => {
3126
- await page.setViewportSize({ width: 1024, height: 768 });
3127
- const response = await page.goto('/c/multiselect-field-new');
3128
- expect(response?.ok()).toBeTruthy();
3129
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
3130
- await page.waitForLoadState('networkidle');
3131
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3132
- scrollWidth: document.documentElement.scrollWidth,
3133
- innerWidth: window.innerWidth,
3134
- }));
3135
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3136
-
3137
- const tooSmall = await page.evaluate((minPx: number): number => {
3138
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3139
- let undersize: number = 0;
3140
- tappable.forEach((el: HTMLElement): void => {
3141
- const rect = el.getBoundingClientRect();
3142
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3143
- undersize++;
3144
- }
3145
- });
3146
- return undersize;
3147
- }, 44);
3148
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3149
-
3150
- await page.screenshot({ path: 'e2e/screenshots/sandbox/multiselect-field-new/tablet-l-light.png', fullPage: true });
3151
-
3152
- });
3153
-
3154
- test('multiselect-field-new × desktop × dark', async ({ page }): Promise<void> => {
3155
- await page.setViewportSize({ width: 1440, height: 900 });
3156
- const response = await page.goto('/c/multiselect-field-new');
3157
- expect(response?.ok()).toBeTruthy();
3158
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
3159
- await page.waitForLoadState('networkidle');
3160
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3161
- scrollWidth: document.documentElement.scrollWidth,
3162
- innerWidth: window.innerWidth,
3163
- }));
3164
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3165
-
3166
- await page.screenshot({ path: 'e2e/screenshots/sandbox/multiselect-field-new/desktop-dark.png', fullPage: true });
3167
-
3168
- });
3169
-
3170
- test('multiselect-field-new × desktop × light', async ({ page }): Promise<void> => {
3171
- await page.setViewportSize({ width: 1440, height: 900 });
3172
- const response = await page.goto('/c/multiselect-field-new');
3173
- expect(response?.ok()).toBeTruthy();
3174
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
3175
- await page.waitForLoadState('networkidle');
3176
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3177
- scrollWidth: document.documentElement.scrollWidth,
3178
- innerWidth: window.innerWidth,
3179
- }));
3180
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3181
-
3182
- await page.screenshot({ path: 'e2e/screenshots/sandbox/multiselect-field-new/desktop-light.png', fullPage: true });
3183
-
3184
- });
3185
-
3186
- test('multiselect-field-new × desktop-wide × dark', async ({ page }): Promise<void> => {
3187
- await page.setViewportSize({ width: 1920, height: 1080 });
3188
- const response = await page.goto('/c/multiselect-field-new');
3189
- expect(response?.ok()).toBeTruthy();
3190
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
3191
- await page.waitForLoadState('networkidle');
3192
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3193
- scrollWidth: document.documentElement.scrollWidth,
3194
- innerWidth: window.innerWidth,
3195
- }));
3196
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3197
-
3198
- await page.screenshot({ path: 'e2e/screenshots/sandbox/multiselect-field-new/desktop-wide-dark.png', fullPage: true });
3199
-
3200
- });
3201
-
3202
- test('multiselect-field-new × desktop-wide × light', async ({ page }): Promise<void> => {
3203
- await page.setViewportSize({ width: 1920, height: 1080 });
3204
- const response = await page.goto('/c/multiselect-field-new');
3205
- expect(response?.ok()).toBeTruthy();
3206
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
3207
- await page.waitForLoadState('networkidle');
3208
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3209
- scrollWidth: document.documentElement.scrollWidth,
3210
- innerWidth: window.innerWidth,
3211
- }));
3212
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3213
-
3214
- await page.screenshot({ path: 'e2e/screenshots/sandbox/multiselect-field-new/desktop-wide-light.png', fullPage: true });
3215
-
3216
- });
3217
- });
3218
-
3219
- test.describe('Route: Sandbox radio-select-field-new (/c/radio-select-field-new)', (): void => {
3220
- test('radio-select-field-new × mobile-s × dark', async ({ page }): Promise<void> => {
3221
- await page.setViewportSize({ width: 320, height: 568 });
3222
- const response = await page.goto('/c/radio-select-field-new');
3223
- expect(response?.ok()).toBeTruthy();
3224
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
3225
- await page.waitForLoadState('networkidle');
3226
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3227
- scrollWidth: document.documentElement.scrollWidth,
3228
- innerWidth: window.innerWidth,
3229
- }));
3230
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3231
-
3232
- const tooSmall = await page.evaluate((minPx: number): number => {
3233
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3234
- let undersize: number = 0;
3235
- tappable.forEach((el: HTMLElement): void => {
3236
- const rect = el.getBoundingClientRect();
3237
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3238
- undersize++;
3239
- }
3240
- });
3241
- return undersize;
3242
- }, 44);
3243
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3244
-
3245
- await page.screenshot({ path: 'e2e/screenshots/sandbox/radio-select-field-new/mobile-s-dark.png', fullPage: true });
3246
-
3247
- });
3248
-
3249
- test('radio-select-field-new × mobile-s × light', async ({ page }): Promise<void> => {
3250
- await page.setViewportSize({ width: 320, height: 568 });
3251
- const response = await page.goto('/c/radio-select-field-new');
3252
- expect(response?.ok()).toBeTruthy();
3253
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
3254
- await page.waitForLoadState('networkidle');
3255
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3256
- scrollWidth: document.documentElement.scrollWidth,
3257
- innerWidth: window.innerWidth,
3258
- }));
3259
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3260
-
3261
- const tooSmall = await page.evaluate((minPx: number): number => {
3262
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3263
- let undersize: number = 0;
3264
- tappable.forEach((el: HTMLElement): void => {
3265
- const rect = el.getBoundingClientRect();
3266
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3267
- undersize++;
3268
- }
3269
- });
3270
- return undersize;
3271
- }, 44);
3272
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3273
-
3274
- await page.screenshot({ path: 'e2e/screenshots/sandbox/radio-select-field-new/mobile-s-light.png', fullPage: true });
3275
-
3276
- });
3277
-
3278
- test('radio-select-field-new × mobile-m × dark', async ({ page }): Promise<void> => {
3279
- await page.setViewportSize({ width: 375, height: 667 });
3280
- const response = await page.goto('/c/radio-select-field-new');
3281
- expect(response?.ok()).toBeTruthy();
3282
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
3283
- await page.waitForLoadState('networkidle');
3284
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3285
- scrollWidth: document.documentElement.scrollWidth,
3286
- innerWidth: window.innerWidth,
3287
- }));
3288
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3289
-
3290
- const tooSmall = await page.evaluate((minPx: number): number => {
3291
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3292
- let undersize: number = 0;
3293
- tappable.forEach((el: HTMLElement): void => {
3294
- const rect = el.getBoundingClientRect();
3295
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3296
- undersize++;
3297
- }
3298
- });
3299
- return undersize;
3300
- }, 44);
3301
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3302
-
3303
- await page.screenshot({ path: 'e2e/screenshots/sandbox/radio-select-field-new/mobile-m-dark.png', fullPage: true });
3304
-
3305
- });
3306
-
3307
- test('radio-select-field-new × mobile-m × light', async ({ page }): Promise<void> => {
3308
- await page.setViewportSize({ width: 375, height: 667 });
3309
- const response = await page.goto('/c/radio-select-field-new');
3310
- expect(response?.ok()).toBeTruthy();
3311
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
3312
- await page.waitForLoadState('networkidle');
3313
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3314
- scrollWidth: document.documentElement.scrollWidth,
3315
- innerWidth: window.innerWidth,
3316
- }));
3317
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3318
-
3319
- const tooSmall = await page.evaluate((minPx: number): number => {
3320
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3321
- let undersize: number = 0;
3322
- tappable.forEach((el: HTMLElement): void => {
3323
- const rect = el.getBoundingClientRect();
3324
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3325
- undersize++;
3326
- }
3327
- });
3328
- return undersize;
3329
- }, 44);
3330
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3331
-
3332
- await page.screenshot({ path: 'e2e/screenshots/sandbox/radio-select-field-new/mobile-m-light.png', fullPage: true });
3333
-
3334
- });
3335
-
3336
- test('radio-select-field-new × mobile-l × dark', async ({ page }): Promise<void> => {
3337
- await page.setViewportSize({ width: 414, height: 896 });
3338
- const response = await page.goto('/c/radio-select-field-new');
3339
- expect(response?.ok()).toBeTruthy();
3340
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
3341
- await page.waitForLoadState('networkidle');
3342
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3343
- scrollWidth: document.documentElement.scrollWidth,
3344
- innerWidth: window.innerWidth,
3345
- }));
3346
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3347
-
3348
- const tooSmall = await page.evaluate((minPx: number): number => {
3349
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3350
- let undersize: number = 0;
3351
- tappable.forEach((el: HTMLElement): void => {
3352
- const rect = el.getBoundingClientRect();
3353
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3354
- undersize++;
3355
- }
3356
- });
3357
- return undersize;
3358
- }, 44);
3359
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3360
-
3361
- await page.screenshot({ path: 'e2e/screenshots/sandbox/radio-select-field-new/mobile-l-dark.png', fullPage: true });
3362
-
3363
- });
3364
-
3365
- test('radio-select-field-new × mobile-l × light', async ({ page }): Promise<void> => {
3366
- await page.setViewportSize({ width: 414, height: 896 });
3367
- const response = await page.goto('/c/radio-select-field-new');
3368
- expect(response?.ok()).toBeTruthy();
3369
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
3370
- await page.waitForLoadState('networkidle');
3371
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3372
- scrollWidth: document.documentElement.scrollWidth,
3373
- innerWidth: window.innerWidth,
3374
- }));
3375
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3376
-
3377
- const tooSmall = await page.evaluate((minPx: number): number => {
3378
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3379
- let undersize: number = 0;
3380
- tappable.forEach((el: HTMLElement): void => {
3381
- const rect = el.getBoundingClientRect();
3382
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3383
- undersize++;
3384
- }
3385
- });
3386
- return undersize;
3387
- }, 44);
3388
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3389
-
3390
- await page.screenshot({ path: 'e2e/screenshots/sandbox/radio-select-field-new/mobile-l-light.png', fullPage: true });
3391
-
3392
- });
3393
-
3394
- test('radio-select-field-new × tablet-p × dark', async ({ page }): Promise<void> => {
3395
- await page.setViewportSize({ width: 768, height: 1024 });
3396
- const response = await page.goto('/c/radio-select-field-new');
3397
- expect(response?.ok()).toBeTruthy();
3398
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
3399
- await page.waitForLoadState('networkidle');
3400
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3401
- scrollWidth: document.documentElement.scrollWidth,
3402
- innerWidth: window.innerWidth,
3403
- }));
3404
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3405
-
3406
- const tooSmall = await page.evaluate((minPx: number): number => {
3407
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3408
- let undersize: number = 0;
3409
- tappable.forEach((el: HTMLElement): void => {
3410
- const rect = el.getBoundingClientRect();
3411
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3412
- undersize++;
3413
- }
3414
- });
3415
- return undersize;
3416
- }, 44);
3417
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3418
-
3419
- await page.screenshot({ path: 'e2e/screenshots/sandbox/radio-select-field-new/tablet-p-dark.png', fullPage: true });
3420
-
3421
- });
3422
-
3423
- test('radio-select-field-new × tablet-p × light', async ({ page }): Promise<void> => {
3424
- await page.setViewportSize({ width: 768, height: 1024 });
3425
- const response = await page.goto('/c/radio-select-field-new');
3426
- expect(response?.ok()).toBeTruthy();
3427
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
3428
- await page.waitForLoadState('networkidle');
3429
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3430
- scrollWidth: document.documentElement.scrollWidth,
3431
- innerWidth: window.innerWidth,
3432
- }));
3433
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3434
-
3435
- const tooSmall = await page.evaluate((minPx: number): number => {
3436
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3437
- let undersize: number = 0;
3438
- tappable.forEach((el: HTMLElement): void => {
3439
- const rect = el.getBoundingClientRect();
3440
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3441
- undersize++;
3442
- }
3443
- });
3444
- return undersize;
3445
- }, 44);
3446
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3447
-
3448
- await page.screenshot({ path: 'e2e/screenshots/sandbox/radio-select-field-new/tablet-p-light.png', fullPage: true });
3449
-
3450
- });
3451
-
3452
- test('radio-select-field-new × tablet-l × dark', async ({ page }): Promise<void> => {
3453
- await page.setViewportSize({ width: 1024, height: 768 });
3454
- const response = await page.goto('/c/radio-select-field-new');
3455
- expect(response?.ok()).toBeTruthy();
3456
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
3457
- await page.waitForLoadState('networkidle');
3458
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3459
- scrollWidth: document.documentElement.scrollWidth,
3460
- innerWidth: window.innerWidth,
3461
- }));
3462
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3463
-
3464
- const tooSmall = await page.evaluate((minPx: number): number => {
3465
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3466
- let undersize: number = 0;
3467
- tappable.forEach((el: HTMLElement): void => {
3468
- const rect = el.getBoundingClientRect();
3469
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3470
- undersize++;
3471
- }
3472
- });
3473
- return undersize;
3474
- }, 44);
3475
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3476
-
3477
- await page.screenshot({ path: 'e2e/screenshots/sandbox/radio-select-field-new/tablet-l-dark.png', fullPage: true });
3478
-
3479
- });
3480
-
3481
- test('radio-select-field-new × tablet-l × light', async ({ page }): Promise<void> => {
3482
- await page.setViewportSize({ width: 1024, height: 768 });
3483
- const response = await page.goto('/c/radio-select-field-new');
3484
- expect(response?.ok()).toBeTruthy();
3485
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
3486
- await page.waitForLoadState('networkidle');
3487
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3488
- scrollWidth: document.documentElement.scrollWidth,
3489
- innerWidth: window.innerWidth,
3490
- }));
3491
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3492
-
3493
- const tooSmall = await page.evaluate((minPx: number): number => {
3494
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3495
- let undersize: number = 0;
3496
- tappable.forEach((el: HTMLElement): void => {
3497
- const rect = el.getBoundingClientRect();
3498
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3499
- undersize++;
3500
- }
3501
- });
3502
- return undersize;
3503
- }, 44);
3504
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3505
-
3506
- await page.screenshot({ path: 'e2e/screenshots/sandbox/radio-select-field-new/tablet-l-light.png', fullPage: true });
3507
-
3508
- });
3509
-
3510
- test('radio-select-field-new × desktop × dark', async ({ page }): Promise<void> => {
3511
- await page.setViewportSize({ width: 1440, height: 900 });
3512
- const response = await page.goto('/c/radio-select-field-new');
3513
- expect(response?.ok()).toBeTruthy();
3514
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
3515
- await page.waitForLoadState('networkidle');
3516
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3517
- scrollWidth: document.documentElement.scrollWidth,
3518
- innerWidth: window.innerWidth,
3519
- }));
3520
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3521
-
3522
- await page.screenshot({ path: 'e2e/screenshots/sandbox/radio-select-field-new/desktop-dark.png', fullPage: true });
3523
-
3524
- });
3525
-
3526
- test('radio-select-field-new × desktop × light', async ({ page }): Promise<void> => {
3527
- await page.setViewportSize({ width: 1440, height: 900 });
3528
- const response = await page.goto('/c/radio-select-field-new');
3529
- expect(response?.ok()).toBeTruthy();
3530
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
3531
- await page.waitForLoadState('networkidle');
3532
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3533
- scrollWidth: document.documentElement.scrollWidth,
3534
- innerWidth: window.innerWidth,
3535
- }));
3536
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3537
-
3538
- await page.screenshot({ path: 'e2e/screenshots/sandbox/radio-select-field-new/desktop-light.png', fullPage: true });
3539
-
3540
- });
3541
-
3542
- test('radio-select-field-new × desktop-wide × dark', async ({ page }): Promise<void> => {
3543
- await page.setViewportSize({ width: 1920, height: 1080 });
3544
- const response = await page.goto('/c/radio-select-field-new');
3545
- expect(response?.ok()).toBeTruthy();
3546
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
3547
- await page.waitForLoadState('networkidle');
3548
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3549
- scrollWidth: document.documentElement.scrollWidth,
3550
- innerWidth: window.innerWidth,
3551
- }));
3552
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3553
-
3554
- await page.screenshot({ path: 'e2e/screenshots/sandbox/radio-select-field-new/desktop-wide-dark.png', fullPage: true });
3555
-
3556
- });
3557
-
3558
- test('radio-select-field-new × desktop-wide × light', async ({ page }): Promise<void> => {
3559
- await page.setViewportSize({ width: 1920, height: 1080 });
3560
- const response = await page.goto('/c/radio-select-field-new');
3561
- expect(response?.ok()).toBeTruthy();
3562
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
3563
- await page.waitForLoadState('networkidle');
3564
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3565
- scrollWidth: document.documentElement.scrollWidth,
3566
- innerWidth: window.innerWidth,
3567
- }));
3568
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3569
-
3570
- await page.screenshot({ path: 'e2e/screenshots/sandbox/radio-select-field-new/desktop-wide-light.png', fullPage: true });
3571
-
3572
- });
3573
- });
3574
-
3575
- test.describe('Route: Sandbox date-field-new (/c/date-field-new)', (): void => {
3576
- test('date-field-new × mobile-s × dark', async ({ page }): Promise<void> => {
3577
- await page.setViewportSize({ width: 320, height: 568 });
3578
- const response = await page.goto('/c/date-field-new');
3579
- expect(response?.ok()).toBeTruthy();
3580
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
3581
- await page.waitForLoadState('networkidle');
3582
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3583
- scrollWidth: document.documentElement.scrollWidth,
3584
- innerWidth: window.innerWidth,
3585
- }));
3586
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3587
-
3588
- const tooSmall = await page.evaluate((minPx: number): number => {
3589
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3590
- let undersize: number = 0;
3591
- tappable.forEach((el: HTMLElement): void => {
3592
- const rect = el.getBoundingClientRect();
3593
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3594
- undersize++;
3595
- }
3596
- });
3597
- return undersize;
3598
- }, 44);
3599
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3600
-
3601
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-field-new/mobile-s-dark.png', fullPage: true });
3602
-
3603
- });
3604
-
3605
- test('date-field-new × mobile-s × light', async ({ page }): Promise<void> => {
3606
- await page.setViewportSize({ width: 320, height: 568 });
3607
- const response = await page.goto('/c/date-field-new');
3608
- expect(response?.ok()).toBeTruthy();
3609
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
3610
- await page.waitForLoadState('networkidle');
3611
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3612
- scrollWidth: document.documentElement.scrollWidth,
3613
- innerWidth: window.innerWidth,
3614
- }));
3615
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3616
-
3617
- const tooSmall = await page.evaluate((minPx: number): number => {
3618
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3619
- let undersize: number = 0;
3620
- tappable.forEach((el: HTMLElement): void => {
3621
- const rect = el.getBoundingClientRect();
3622
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3623
- undersize++;
3624
- }
3625
- });
3626
- return undersize;
3627
- }, 44);
3628
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3629
-
3630
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-field-new/mobile-s-light.png', fullPage: true });
3631
-
3632
- });
3633
-
3634
- test('date-field-new × mobile-m × dark', async ({ page }): Promise<void> => {
3635
- await page.setViewportSize({ width: 375, height: 667 });
3636
- const response = await page.goto('/c/date-field-new');
3637
- expect(response?.ok()).toBeTruthy();
3638
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
3639
- await page.waitForLoadState('networkidle');
3640
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3641
- scrollWidth: document.documentElement.scrollWidth,
3642
- innerWidth: window.innerWidth,
3643
- }));
3644
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3645
-
3646
- const tooSmall = await page.evaluate((minPx: number): number => {
3647
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3648
- let undersize: number = 0;
3649
- tappable.forEach((el: HTMLElement): void => {
3650
- const rect = el.getBoundingClientRect();
3651
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3652
- undersize++;
3653
- }
3654
- });
3655
- return undersize;
3656
- }, 44);
3657
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3658
-
3659
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-field-new/mobile-m-dark.png', fullPage: true });
3660
-
3661
- });
3662
-
3663
- test('date-field-new × mobile-m × light', async ({ page }): Promise<void> => {
3664
- await page.setViewportSize({ width: 375, height: 667 });
3665
- const response = await page.goto('/c/date-field-new');
3666
- expect(response?.ok()).toBeTruthy();
3667
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
3668
- await page.waitForLoadState('networkidle');
3669
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3670
- scrollWidth: document.documentElement.scrollWidth,
3671
- innerWidth: window.innerWidth,
3672
- }));
3673
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3674
-
3675
- const tooSmall = await page.evaluate((minPx: number): number => {
3676
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3677
- let undersize: number = 0;
3678
- tappable.forEach((el: HTMLElement): void => {
3679
- const rect = el.getBoundingClientRect();
3680
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3681
- undersize++;
3682
- }
3683
- });
3684
- return undersize;
3685
- }, 44);
3686
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3687
-
3688
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-field-new/mobile-m-light.png', fullPage: true });
3689
-
3690
- });
3691
-
3692
- test('date-field-new × mobile-l × dark', async ({ page }): Promise<void> => {
3693
- await page.setViewportSize({ width: 414, height: 896 });
3694
- const response = await page.goto('/c/date-field-new');
3695
- expect(response?.ok()).toBeTruthy();
3696
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
3697
- await page.waitForLoadState('networkidle');
3698
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3699
- scrollWidth: document.documentElement.scrollWidth,
3700
- innerWidth: window.innerWidth,
3701
- }));
3702
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3703
-
3704
- const tooSmall = await page.evaluate((minPx: number): number => {
3705
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3706
- let undersize: number = 0;
3707
- tappable.forEach((el: HTMLElement): void => {
3708
- const rect = el.getBoundingClientRect();
3709
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3710
- undersize++;
3711
- }
3712
- });
3713
- return undersize;
3714
- }, 44);
3715
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3716
-
3717
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-field-new/mobile-l-dark.png', fullPage: true });
3718
-
3719
- });
3720
-
3721
- test('date-field-new × mobile-l × light', async ({ page }): Promise<void> => {
3722
- await page.setViewportSize({ width: 414, height: 896 });
3723
- const response = await page.goto('/c/date-field-new');
3724
- expect(response?.ok()).toBeTruthy();
3725
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
3726
- await page.waitForLoadState('networkidle');
3727
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3728
- scrollWidth: document.documentElement.scrollWidth,
3729
- innerWidth: window.innerWidth,
3730
- }));
3731
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3732
-
3733
- const tooSmall = await page.evaluate((minPx: number): number => {
3734
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3735
- let undersize: number = 0;
3736
- tappable.forEach((el: HTMLElement): void => {
3737
- const rect = el.getBoundingClientRect();
3738
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3739
- undersize++;
3740
- }
3741
- });
3742
- return undersize;
3743
- }, 44);
3744
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3745
-
3746
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-field-new/mobile-l-light.png', fullPage: true });
3747
-
3748
- });
3749
-
3750
- test('date-field-new × tablet-p × dark', async ({ page }): Promise<void> => {
3751
- await page.setViewportSize({ width: 768, height: 1024 });
3752
- const response = await page.goto('/c/date-field-new');
3753
- expect(response?.ok()).toBeTruthy();
3754
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
3755
- await page.waitForLoadState('networkidle');
3756
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3757
- scrollWidth: document.documentElement.scrollWidth,
3758
- innerWidth: window.innerWidth,
3759
- }));
3760
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3761
-
3762
- const tooSmall = await page.evaluate((minPx: number): number => {
3763
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3764
- let undersize: number = 0;
3765
- tappable.forEach((el: HTMLElement): void => {
3766
- const rect = el.getBoundingClientRect();
3767
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3768
- undersize++;
3769
- }
3770
- });
3771
- return undersize;
3772
- }, 44);
3773
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3774
-
3775
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-field-new/tablet-p-dark.png', fullPage: true });
3776
-
3777
- });
3778
-
3779
- test('date-field-new × tablet-p × light', async ({ page }): Promise<void> => {
3780
- await page.setViewportSize({ width: 768, height: 1024 });
3781
- const response = await page.goto('/c/date-field-new');
3782
- expect(response?.ok()).toBeTruthy();
3783
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
3784
- await page.waitForLoadState('networkidle');
3785
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3786
- scrollWidth: document.documentElement.scrollWidth,
3787
- innerWidth: window.innerWidth,
3788
- }));
3789
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3790
-
3791
- const tooSmall = await page.evaluate((minPx: number): number => {
3792
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3793
- let undersize: number = 0;
3794
- tappable.forEach((el: HTMLElement): void => {
3795
- const rect = el.getBoundingClientRect();
3796
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3797
- undersize++;
3798
- }
3799
- });
3800
- return undersize;
3801
- }, 44);
3802
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3803
-
3804
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-field-new/tablet-p-light.png', fullPage: true });
3805
-
3806
- });
3807
-
3808
- test('date-field-new × tablet-l × dark', async ({ page }): Promise<void> => {
3809
- await page.setViewportSize({ width: 1024, height: 768 });
3810
- const response = await page.goto('/c/date-field-new');
3811
- expect(response?.ok()).toBeTruthy();
3812
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
3813
- await page.waitForLoadState('networkidle');
3814
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3815
- scrollWidth: document.documentElement.scrollWidth,
3816
- innerWidth: window.innerWidth,
3817
- }));
3818
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3819
-
3820
- const tooSmall = await page.evaluate((minPx: number): number => {
3821
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3822
- let undersize: number = 0;
3823
- tappable.forEach((el: HTMLElement): void => {
3824
- const rect = el.getBoundingClientRect();
3825
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3826
- undersize++;
3827
- }
3828
- });
3829
- return undersize;
3830
- }, 44);
3831
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3832
-
3833
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-field-new/tablet-l-dark.png', fullPage: true });
3834
-
3835
- });
3836
-
3837
- test('date-field-new × tablet-l × light', async ({ page }): Promise<void> => {
3838
- await page.setViewportSize({ width: 1024, height: 768 });
3839
- const response = await page.goto('/c/date-field-new');
3840
- expect(response?.ok()).toBeTruthy();
3841
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
3842
- await page.waitForLoadState('networkidle');
3843
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3844
- scrollWidth: document.documentElement.scrollWidth,
3845
- innerWidth: window.innerWidth,
3846
- }));
3847
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3848
-
3849
- const tooSmall = await page.evaluate((minPx: number): number => {
3850
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3851
- let undersize: number = 0;
3852
- tappable.forEach((el: HTMLElement): void => {
3853
- const rect = el.getBoundingClientRect();
3854
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3855
- undersize++;
3856
- }
3857
- });
3858
- return undersize;
3859
- }, 44);
3860
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3861
-
3862
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-field-new/tablet-l-light.png', fullPage: true });
3863
-
3864
- });
3865
-
3866
- test('date-field-new × desktop × dark', async ({ page }): Promise<void> => {
3867
- await page.setViewportSize({ width: 1440, height: 900 });
3868
- const response = await page.goto('/c/date-field-new');
3869
- expect(response?.ok()).toBeTruthy();
3870
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
3871
- await page.waitForLoadState('networkidle');
3872
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3873
- scrollWidth: document.documentElement.scrollWidth,
3874
- innerWidth: window.innerWidth,
3875
- }));
3876
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3877
-
3878
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-field-new/desktop-dark.png', fullPage: true });
3879
-
3880
- });
3881
-
3882
- test('date-field-new × desktop × light', async ({ page }): Promise<void> => {
3883
- await page.setViewportSize({ width: 1440, height: 900 });
3884
- const response = await page.goto('/c/date-field-new');
3885
- expect(response?.ok()).toBeTruthy();
3886
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
3887
- await page.waitForLoadState('networkidle');
3888
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3889
- scrollWidth: document.documentElement.scrollWidth,
3890
- innerWidth: window.innerWidth,
3891
- }));
3892
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3893
-
3894
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-field-new/desktop-light.png', fullPage: true });
3895
-
3896
- });
3897
-
3898
- test('date-field-new × desktop-wide × dark', async ({ page }): Promise<void> => {
3899
- await page.setViewportSize({ width: 1920, height: 1080 });
3900
- const response = await page.goto('/c/date-field-new');
3901
- expect(response?.ok()).toBeTruthy();
3902
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
3903
- await page.waitForLoadState('networkidle');
3904
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3905
- scrollWidth: document.documentElement.scrollWidth,
3906
- innerWidth: window.innerWidth,
3907
- }));
3908
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3909
-
3910
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-field-new/desktop-wide-dark.png', fullPage: true });
3911
-
3912
- });
3913
-
3914
- test('date-field-new × desktop-wide × light', async ({ page }): Promise<void> => {
3915
- await page.setViewportSize({ width: 1920, height: 1080 });
3916
- const response = await page.goto('/c/date-field-new');
3917
- expect(response?.ok()).toBeTruthy();
3918
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
3919
- await page.waitForLoadState('networkidle');
3920
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3921
- scrollWidth: document.documentElement.scrollWidth,
3922
- innerWidth: window.innerWidth,
3923
- }));
3924
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3925
-
3926
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-field-new/desktop-wide-light.png', fullPage: true });
3927
-
3928
- });
3929
- });
3930
-
3931
- test.describe('Route: Sandbox datetime-field-new (/c/datetime-field-new)', (): void => {
3932
- test('datetime-field-new × mobile-s × dark', async ({ page }): Promise<void> => {
3933
- await page.setViewportSize({ width: 320, height: 568 });
3934
- const response = await page.goto('/c/datetime-field-new');
3935
- expect(response?.ok()).toBeTruthy();
3936
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
3937
- await page.waitForLoadState('networkidle');
3938
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3939
- scrollWidth: document.documentElement.scrollWidth,
3940
- innerWidth: window.innerWidth,
3941
- }));
3942
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3943
-
3944
- const tooSmall = await page.evaluate((minPx: number): number => {
3945
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3946
- let undersize: number = 0;
3947
- tappable.forEach((el: HTMLElement): void => {
3948
- const rect = el.getBoundingClientRect();
3949
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3950
- undersize++;
3951
- }
3952
- });
3953
- return undersize;
3954
- }, 44);
3955
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3956
-
3957
- await page.screenshot({ path: 'e2e/screenshots/sandbox/datetime-field-new/mobile-s-dark.png', fullPage: true });
3958
-
3959
- });
3960
-
3961
- test('datetime-field-new × mobile-s × light', async ({ page }): Promise<void> => {
3962
- await page.setViewportSize({ width: 320, height: 568 });
3963
- const response = await page.goto('/c/datetime-field-new');
3964
- expect(response?.ok()).toBeTruthy();
3965
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
3966
- await page.waitForLoadState('networkidle');
3967
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3968
- scrollWidth: document.documentElement.scrollWidth,
3969
- innerWidth: window.innerWidth,
3970
- }));
3971
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
3972
-
3973
- const tooSmall = await page.evaluate((minPx: number): number => {
3974
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
3975
- let undersize: number = 0;
3976
- tappable.forEach((el: HTMLElement): void => {
3977
- const rect = el.getBoundingClientRect();
3978
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
3979
- undersize++;
3980
- }
3981
- });
3982
- return undersize;
3983
- }, 44);
3984
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
3985
-
3986
- await page.screenshot({ path: 'e2e/screenshots/sandbox/datetime-field-new/mobile-s-light.png', fullPage: true });
3987
-
3988
- });
3989
-
3990
- test('datetime-field-new × mobile-m × dark', async ({ page }): Promise<void> => {
3991
- await page.setViewportSize({ width: 375, height: 667 });
3992
- const response = await page.goto('/c/datetime-field-new');
3993
- expect(response?.ok()).toBeTruthy();
3994
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
3995
- await page.waitForLoadState('networkidle');
3996
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
3997
- scrollWidth: document.documentElement.scrollWidth,
3998
- innerWidth: window.innerWidth,
3999
- }));
4000
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4001
-
4002
- const tooSmall = await page.evaluate((minPx: number): number => {
4003
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
4004
- let undersize: number = 0;
4005
- tappable.forEach((el: HTMLElement): void => {
4006
- const rect = el.getBoundingClientRect();
4007
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
4008
- undersize++;
4009
- }
4010
- });
4011
- return undersize;
4012
- }, 44);
4013
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
4014
-
4015
- await page.screenshot({ path: 'e2e/screenshots/sandbox/datetime-field-new/mobile-m-dark.png', fullPage: true });
4016
-
4017
- });
4018
-
4019
- test('datetime-field-new × mobile-m × light', async ({ page }): Promise<void> => {
4020
- await page.setViewportSize({ width: 375, height: 667 });
4021
- const response = await page.goto('/c/datetime-field-new');
4022
- expect(response?.ok()).toBeTruthy();
4023
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
4024
- await page.waitForLoadState('networkidle');
4025
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4026
- scrollWidth: document.documentElement.scrollWidth,
4027
- innerWidth: window.innerWidth,
4028
- }));
4029
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4030
-
4031
- const tooSmall = await page.evaluate((minPx: number): number => {
4032
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
4033
- let undersize: number = 0;
4034
- tappable.forEach((el: HTMLElement): void => {
4035
- const rect = el.getBoundingClientRect();
4036
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
4037
- undersize++;
4038
- }
4039
- });
4040
- return undersize;
4041
- }, 44);
4042
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
4043
-
4044
- await page.screenshot({ path: 'e2e/screenshots/sandbox/datetime-field-new/mobile-m-light.png', fullPage: true });
4045
-
4046
- });
4047
-
4048
- test('datetime-field-new × mobile-l × dark', async ({ page }): Promise<void> => {
4049
- await page.setViewportSize({ width: 414, height: 896 });
4050
- const response = await page.goto('/c/datetime-field-new');
4051
- expect(response?.ok()).toBeTruthy();
4052
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
4053
- await page.waitForLoadState('networkidle');
4054
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4055
- scrollWidth: document.documentElement.scrollWidth,
4056
- innerWidth: window.innerWidth,
4057
- }));
4058
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4059
-
4060
- const tooSmall = await page.evaluate((minPx: number): number => {
4061
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
4062
- let undersize: number = 0;
4063
- tappable.forEach((el: HTMLElement): void => {
4064
- const rect = el.getBoundingClientRect();
4065
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
4066
- undersize++;
4067
- }
4068
- });
4069
- return undersize;
4070
- }, 44);
4071
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
4072
-
4073
- await page.screenshot({ path: 'e2e/screenshots/sandbox/datetime-field-new/mobile-l-dark.png', fullPage: true });
4074
-
4075
- });
4076
-
4077
- test('datetime-field-new × mobile-l × light', async ({ page }): Promise<void> => {
4078
- await page.setViewportSize({ width: 414, height: 896 });
4079
- const response = await page.goto('/c/datetime-field-new');
4080
- expect(response?.ok()).toBeTruthy();
4081
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
4082
- await page.waitForLoadState('networkidle');
4083
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4084
- scrollWidth: document.documentElement.scrollWidth,
4085
- innerWidth: window.innerWidth,
4086
- }));
4087
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4088
-
4089
- const tooSmall = await page.evaluate((minPx: number): number => {
4090
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
4091
- let undersize: number = 0;
4092
- tappable.forEach((el: HTMLElement): void => {
4093
- const rect = el.getBoundingClientRect();
4094
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
4095
- undersize++;
4096
- }
4097
- });
4098
- return undersize;
4099
- }, 44);
4100
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
4101
-
4102
- await page.screenshot({ path: 'e2e/screenshots/sandbox/datetime-field-new/mobile-l-light.png', fullPage: true });
4103
-
4104
- });
4105
-
4106
- test('datetime-field-new × tablet-p × dark', async ({ page }): Promise<void> => {
4107
- await page.setViewportSize({ width: 768, height: 1024 });
4108
- const response = await page.goto('/c/datetime-field-new');
4109
- expect(response?.ok()).toBeTruthy();
4110
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
4111
- await page.waitForLoadState('networkidle');
4112
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4113
- scrollWidth: document.documentElement.scrollWidth,
4114
- innerWidth: window.innerWidth,
4115
- }));
4116
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4117
-
4118
- const tooSmall = await page.evaluate((minPx: number): number => {
4119
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
4120
- let undersize: number = 0;
4121
- tappable.forEach((el: HTMLElement): void => {
4122
- const rect = el.getBoundingClientRect();
4123
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
4124
- undersize++;
4125
- }
4126
- });
4127
- return undersize;
4128
- }, 44);
4129
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
4130
-
4131
- await page.screenshot({ path: 'e2e/screenshots/sandbox/datetime-field-new/tablet-p-dark.png', fullPage: true });
4132
-
4133
- });
4134
-
4135
- test('datetime-field-new × tablet-p × light', async ({ page }): Promise<void> => {
4136
- await page.setViewportSize({ width: 768, height: 1024 });
4137
- const response = await page.goto('/c/datetime-field-new');
4138
- expect(response?.ok()).toBeTruthy();
4139
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
4140
- await page.waitForLoadState('networkidle');
4141
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4142
- scrollWidth: document.documentElement.scrollWidth,
4143
- innerWidth: window.innerWidth,
4144
- }));
4145
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4146
-
4147
- const tooSmall = await page.evaluate((minPx: number): number => {
4148
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
4149
- let undersize: number = 0;
4150
- tappable.forEach((el: HTMLElement): void => {
4151
- const rect = el.getBoundingClientRect();
4152
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
4153
- undersize++;
4154
- }
4155
- });
4156
- return undersize;
4157
- }, 44);
4158
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
4159
-
4160
- await page.screenshot({ path: 'e2e/screenshots/sandbox/datetime-field-new/tablet-p-light.png', fullPage: true });
4161
-
4162
- });
4163
-
4164
- test('datetime-field-new × tablet-l × dark', async ({ page }): Promise<void> => {
4165
- await page.setViewportSize({ width: 1024, height: 768 });
4166
- const response = await page.goto('/c/datetime-field-new');
4167
- expect(response?.ok()).toBeTruthy();
4168
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
4169
- await page.waitForLoadState('networkidle');
4170
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4171
- scrollWidth: document.documentElement.scrollWidth,
4172
- innerWidth: window.innerWidth,
4173
- }));
4174
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4175
-
4176
- const tooSmall = await page.evaluate((minPx: number): number => {
4177
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
4178
- let undersize: number = 0;
4179
- tappable.forEach((el: HTMLElement): void => {
4180
- const rect = el.getBoundingClientRect();
4181
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
4182
- undersize++;
4183
- }
4184
- });
4185
- return undersize;
4186
- }, 44);
4187
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
4188
-
4189
- await page.screenshot({ path: 'e2e/screenshots/sandbox/datetime-field-new/tablet-l-dark.png', fullPage: true });
4190
-
4191
- });
4192
-
4193
- test('datetime-field-new × tablet-l × light', async ({ page }): Promise<void> => {
4194
- await page.setViewportSize({ width: 1024, height: 768 });
4195
- const response = await page.goto('/c/datetime-field-new');
4196
- expect(response?.ok()).toBeTruthy();
4197
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
4198
- await page.waitForLoadState('networkidle');
4199
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4200
- scrollWidth: document.documentElement.scrollWidth,
4201
- innerWidth: window.innerWidth,
4202
- }));
4203
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4204
-
4205
- const tooSmall = await page.evaluate((minPx: number): number => {
4206
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
4207
- let undersize: number = 0;
4208
- tappable.forEach((el: HTMLElement): void => {
4209
- const rect = el.getBoundingClientRect();
4210
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
4211
- undersize++;
4212
- }
4213
- });
4214
- return undersize;
4215
- }, 44);
4216
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
4217
-
4218
- await page.screenshot({ path: 'e2e/screenshots/sandbox/datetime-field-new/tablet-l-light.png', fullPage: true });
4219
-
4220
- });
4221
-
4222
- test('datetime-field-new × desktop × dark', async ({ page }): Promise<void> => {
4223
- await page.setViewportSize({ width: 1440, height: 900 });
4224
- const response = await page.goto('/c/datetime-field-new');
4225
- expect(response?.ok()).toBeTruthy();
4226
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
4227
- await page.waitForLoadState('networkidle');
4228
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4229
- scrollWidth: document.documentElement.scrollWidth,
4230
- innerWidth: window.innerWidth,
4231
- }));
4232
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4233
-
4234
- await page.screenshot({ path: 'e2e/screenshots/sandbox/datetime-field-new/desktop-dark.png', fullPage: true });
4235
-
4236
- });
4237
-
4238
- test('datetime-field-new × desktop × light', async ({ page }): Promise<void> => {
4239
- await page.setViewportSize({ width: 1440, height: 900 });
4240
- const response = await page.goto('/c/datetime-field-new');
4241
- expect(response?.ok()).toBeTruthy();
4242
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
4243
- await page.waitForLoadState('networkidle');
4244
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4245
- scrollWidth: document.documentElement.scrollWidth,
4246
- innerWidth: window.innerWidth,
4247
- }));
4248
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4249
-
4250
- await page.screenshot({ path: 'e2e/screenshots/sandbox/datetime-field-new/desktop-light.png', fullPage: true });
4251
-
4252
- });
4253
-
4254
- test('datetime-field-new × desktop-wide × dark', async ({ page }): Promise<void> => {
4255
- await page.setViewportSize({ width: 1920, height: 1080 });
4256
- const response = await page.goto('/c/datetime-field-new');
4257
- expect(response?.ok()).toBeTruthy();
4258
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
4259
- await page.waitForLoadState('networkidle');
4260
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4261
- scrollWidth: document.documentElement.scrollWidth,
4262
- innerWidth: window.innerWidth,
4263
- }));
4264
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4265
-
4266
- await page.screenshot({ path: 'e2e/screenshots/sandbox/datetime-field-new/desktop-wide-dark.png', fullPage: true });
4267
-
4268
- });
4269
-
4270
- test('datetime-field-new × desktop-wide × light', async ({ page }): Promise<void> => {
4271
- await page.setViewportSize({ width: 1920, height: 1080 });
4272
- const response = await page.goto('/c/datetime-field-new');
4273
- expect(response?.ok()).toBeTruthy();
4274
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
4275
- await page.waitForLoadState('networkidle');
4276
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4277
- scrollWidth: document.documentElement.scrollWidth,
4278
- innerWidth: window.innerWidth,
4279
- }));
4280
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4281
-
4282
- await page.screenshot({ path: 'e2e/screenshots/sandbox/datetime-field-new/desktop-wide-light.png', fullPage: true });
4283
-
4284
- });
4285
- });
4286
-
4287
- test.describe('Route: Sandbox date-range-field-new (/c/date-range-field-new)', (): void => {
4288
- test('date-range-field-new × mobile-s × dark', async ({ page }): Promise<void> => {
4289
- await page.setViewportSize({ width: 320, height: 568 });
4290
- const response = await page.goto('/c/date-range-field-new');
4291
- expect(response?.ok()).toBeTruthy();
4292
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
4293
- await page.waitForLoadState('networkidle');
4294
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4295
- scrollWidth: document.documentElement.scrollWidth,
4296
- innerWidth: window.innerWidth,
4297
- }));
4298
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4299
-
4300
- const tooSmall = await page.evaluate((minPx: number): number => {
4301
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
4302
- let undersize: number = 0;
4303
- tappable.forEach((el: HTMLElement): void => {
4304
- const rect = el.getBoundingClientRect();
4305
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
4306
- undersize++;
4307
- }
4308
- });
4309
- return undersize;
4310
- }, 44);
4311
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
4312
-
4313
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-range-field-new/mobile-s-dark.png', fullPage: true });
4314
-
4315
- });
4316
-
4317
- test('date-range-field-new × mobile-s × light', async ({ page }): Promise<void> => {
4318
- await page.setViewportSize({ width: 320, height: 568 });
4319
- const response = await page.goto('/c/date-range-field-new');
4320
- expect(response?.ok()).toBeTruthy();
4321
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
4322
- await page.waitForLoadState('networkidle');
4323
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4324
- scrollWidth: document.documentElement.scrollWidth,
4325
- innerWidth: window.innerWidth,
4326
- }));
4327
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4328
-
4329
- const tooSmall = await page.evaluate((minPx: number): number => {
4330
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
4331
- let undersize: number = 0;
4332
- tappable.forEach((el: HTMLElement): void => {
4333
- const rect = el.getBoundingClientRect();
4334
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
4335
- undersize++;
4336
- }
4337
- });
4338
- return undersize;
4339
- }, 44);
4340
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
4341
-
4342
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-range-field-new/mobile-s-light.png', fullPage: true });
4343
-
4344
- });
4345
-
4346
- test('date-range-field-new × mobile-m × dark', async ({ page }): Promise<void> => {
4347
- await page.setViewportSize({ width: 375, height: 667 });
4348
- const response = await page.goto('/c/date-range-field-new');
4349
- expect(response?.ok()).toBeTruthy();
4350
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
4351
- await page.waitForLoadState('networkidle');
4352
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4353
- scrollWidth: document.documentElement.scrollWidth,
4354
- innerWidth: window.innerWidth,
4355
- }));
4356
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4357
-
4358
- const tooSmall = await page.evaluate((minPx: number): number => {
4359
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
4360
- let undersize: number = 0;
4361
- tappable.forEach((el: HTMLElement): void => {
4362
- const rect = el.getBoundingClientRect();
4363
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
4364
- undersize++;
4365
- }
4366
- });
4367
- return undersize;
4368
- }, 44);
4369
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
4370
-
4371
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-range-field-new/mobile-m-dark.png', fullPage: true });
4372
-
4373
- });
4374
-
4375
- test('date-range-field-new × mobile-m × light', async ({ page }): Promise<void> => {
4376
- await page.setViewportSize({ width: 375, height: 667 });
4377
- const response = await page.goto('/c/date-range-field-new');
4378
- expect(response?.ok()).toBeTruthy();
4379
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
4380
- await page.waitForLoadState('networkidle');
4381
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4382
- scrollWidth: document.documentElement.scrollWidth,
4383
- innerWidth: window.innerWidth,
4384
- }));
4385
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4386
-
4387
- const tooSmall = await page.evaluate((minPx: number): number => {
4388
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
4389
- let undersize: number = 0;
4390
- tappable.forEach((el: HTMLElement): void => {
4391
- const rect = el.getBoundingClientRect();
4392
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
4393
- undersize++;
4394
- }
4395
- });
4396
- return undersize;
4397
- }, 44);
4398
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
4399
-
4400
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-range-field-new/mobile-m-light.png', fullPage: true });
4401
-
4402
- });
4403
-
4404
- test('date-range-field-new × mobile-l × dark', async ({ page }): Promise<void> => {
4405
- await page.setViewportSize({ width: 414, height: 896 });
4406
- const response = await page.goto('/c/date-range-field-new');
4407
- expect(response?.ok()).toBeTruthy();
4408
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
4409
- await page.waitForLoadState('networkidle');
4410
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4411
- scrollWidth: document.documentElement.scrollWidth,
4412
- innerWidth: window.innerWidth,
4413
- }));
4414
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4415
-
4416
- const tooSmall = await page.evaluate((minPx: number): number => {
4417
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
4418
- let undersize: number = 0;
4419
- tappable.forEach((el: HTMLElement): void => {
4420
- const rect = el.getBoundingClientRect();
4421
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
4422
- undersize++;
4423
- }
4424
- });
4425
- return undersize;
4426
- }, 44);
4427
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
4428
-
4429
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-range-field-new/mobile-l-dark.png', fullPage: true });
4430
-
4431
- });
4432
-
4433
- test('date-range-field-new × mobile-l × light', async ({ page }): Promise<void> => {
4434
- await page.setViewportSize({ width: 414, height: 896 });
4435
- const response = await page.goto('/c/date-range-field-new');
4436
- expect(response?.ok()).toBeTruthy();
4437
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
4438
- await page.waitForLoadState('networkidle');
4439
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4440
- scrollWidth: document.documentElement.scrollWidth,
4441
- innerWidth: window.innerWidth,
4442
- }));
4443
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4444
-
4445
- const tooSmall = await page.evaluate((minPx: number): number => {
4446
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
4447
- let undersize: number = 0;
4448
- tappable.forEach((el: HTMLElement): void => {
4449
- const rect = el.getBoundingClientRect();
4450
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
4451
- undersize++;
4452
- }
4453
- });
4454
- return undersize;
4455
- }, 44);
4456
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
4457
-
4458
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-range-field-new/mobile-l-light.png', fullPage: true });
4459
-
4460
- });
4461
-
4462
- test('date-range-field-new × tablet-p × dark', async ({ page }): Promise<void> => {
4463
- await page.setViewportSize({ width: 768, height: 1024 });
4464
- const response = await page.goto('/c/date-range-field-new');
4465
- expect(response?.ok()).toBeTruthy();
4466
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
4467
- await page.waitForLoadState('networkidle');
4468
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4469
- scrollWidth: document.documentElement.scrollWidth,
4470
- innerWidth: window.innerWidth,
4471
- }));
4472
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4473
-
4474
- const tooSmall = await page.evaluate((minPx: number): number => {
4475
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
4476
- let undersize: number = 0;
4477
- tappable.forEach((el: HTMLElement): void => {
4478
- const rect = el.getBoundingClientRect();
4479
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
4480
- undersize++;
4481
- }
4482
- });
4483
- return undersize;
4484
- }, 44);
4485
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
4486
-
4487
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-range-field-new/tablet-p-dark.png', fullPage: true });
4488
-
4489
- });
4490
-
4491
- test('date-range-field-new × tablet-p × light', async ({ page }): Promise<void> => {
4492
- await page.setViewportSize({ width: 768, height: 1024 });
4493
- const response = await page.goto('/c/date-range-field-new');
4494
- expect(response?.ok()).toBeTruthy();
4495
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
4496
- await page.waitForLoadState('networkidle');
4497
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4498
- scrollWidth: document.documentElement.scrollWidth,
4499
- innerWidth: window.innerWidth,
4500
- }));
4501
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4502
-
4503
- const tooSmall = await page.evaluate((minPx: number): number => {
4504
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
4505
- let undersize: number = 0;
4506
- tappable.forEach((el: HTMLElement): void => {
4507
- const rect = el.getBoundingClientRect();
4508
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
4509
- undersize++;
4510
- }
4511
- });
4512
- return undersize;
4513
- }, 44);
4514
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
4515
-
4516
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-range-field-new/tablet-p-light.png', fullPage: true });
4517
-
4518
- });
4519
-
4520
- test('date-range-field-new × tablet-l × dark', async ({ page }): Promise<void> => {
4521
- await page.setViewportSize({ width: 1024, height: 768 });
4522
- const response = await page.goto('/c/date-range-field-new');
4523
- expect(response?.ok()).toBeTruthy();
4524
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
4525
- await page.waitForLoadState('networkidle');
4526
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4527
- scrollWidth: document.documentElement.scrollWidth,
4528
- innerWidth: window.innerWidth,
4529
- }));
4530
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4531
-
4532
- const tooSmall = await page.evaluate((minPx: number): number => {
4533
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
4534
- let undersize: number = 0;
4535
- tappable.forEach((el: HTMLElement): void => {
4536
- const rect = el.getBoundingClientRect();
4537
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
4538
- undersize++;
4539
- }
4540
- });
4541
- return undersize;
4542
- }, 44);
4543
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
4544
-
4545
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-range-field-new/tablet-l-dark.png', fullPage: true });
4546
-
4547
- });
4548
-
4549
- test('date-range-field-new × tablet-l × light', async ({ page }): Promise<void> => {
4550
- await page.setViewportSize({ width: 1024, height: 768 });
4551
- const response = await page.goto('/c/date-range-field-new');
4552
- expect(response?.ok()).toBeTruthy();
4553
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
4554
- await page.waitForLoadState('networkidle');
4555
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4556
- scrollWidth: document.documentElement.scrollWidth,
4557
- innerWidth: window.innerWidth,
4558
- }));
4559
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4560
-
4561
- const tooSmall = await page.evaluate((minPx: number): number => {
4562
- const tappable: NodeListOf<HTMLElement> = document.querySelectorAll('button, a, [role="button"], input[type="checkbox"], input[type="radio"]');
4563
- let undersize: number = 0;
4564
- tappable.forEach((el: HTMLElement): void => {
4565
- const rect = el.getBoundingClientRect();
4566
- if (rect.width > 0 && rect.height > 0 && (rect.width < minPx || rect.height < minPx)) {
4567
- undersize++;
4568
- }
4569
- });
4570
- return undersize;
4571
- }, 44);
4572
- expect(tooSmall, 'tappable elements smaller than 44px').toBe(0);
4573
-
4574
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-range-field-new/tablet-l-light.png', fullPage: true });
4575
-
4576
- });
4577
-
4578
- test('date-range-field-new × desktop × dark', async ({ page }): Promise<void> => {
4579
- await page.setViewportSize({ width: 1440, height: 900 });
4580
- const response = await page.goto('/c/date-range-field-new');
4581
- expect(response?.ok()).toBeTruthy();
4582
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
4583
- await page.waitForLoadState('networkidle');
4584
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4585
- scrollWidth: document.documentElement.scrollWidth,
4586
- innerWidth: window.innerWidth,
4587
- }));
4588
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4589
-
4590
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-range-field-new/desktop-dark.png', fullPage: true });
4591
-
4592
- });
4593
-
4594
- test('date-range-field-new × desktop × light', async ({ page }): Promise<void> => {
4595
- await page.setViewportSize({ width: 1440, height: 900 });
4596
- const response = await page.goto('/c/date-range-field-new');
4597
- expect(response?.ok()).toBeTruthy();
4598
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
4599
- await page.waitForLoadState('networkidle');
4600
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4601
- scrollWidth: document.documentElement.scrollWidth,
4602
- innerWidth: window.innerWidth,
4603
- }));
4604
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4605
-
4606
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-range-field-new/desktop-light.png', fullPage: true });
4607
-
4608
- });
4609
-
4610
- test('date-range-field-new × desktop-wide × dark', async ({ page }): Promise<void> => {
4611
- await page.setViewportSize({ width: 1920, height: 1080 });
4612
- const response = await page.goto('/c/date-range-field-new');
4613
- expect(response?.ok()).toBeTruthy();
4614
- await page.evaluate((): void => { document.documentElement.classList.add('dark'); });
4615
- await page.waitForLoadState('networkidle');
4616
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4617
- scrollWidth: document.documentElement.scrollWidth,
4618
- innerWidth: window.innerWidth,
4619
- }));
4620
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4621
-
4622
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-range-field-new/desktop-wide-dark.png', fullPage: true });
4623
-
4624
- });
4625
-
4626
- test('date-range-field-new × desktop-wide × light', async ({ page }): Promise<void> => {
4627
- await page.setViewportSize({ width: 1920, height: 1080 });
4628
- const response = await page.goto('/c/date-range-field-new');
4629
- expect(response?.ok()).toBeTruthy();
4630
- await page.evaluate((): void => { document.documentElement.classList.remove('dark'); });
4631
- await page.waitForLoadState('networkidle');
4632
- const overflow = await page.evaluate((): { scrollWidth: number; innerWidth: number } => ({
4633
- scrollWidth: document.documentElement.scrollWidth,
4634
- innerWidth: window.innerWidth,
4635
- }));
4636
- expect(overflow.scrollWidth, 'horizontal overflow detected').toBeLessThanOrEqual(overflow.innerWidth);
4637
-
4638
- await page.screenshot({ path: 'e2e/screenshots/sandbox/date-range-field-new/desktop-wide-light.png', fullPage: true });
4639
-
4640
- });
4641
- });
4642
-
4643
- });