@futdevpro/dynamo-e2e 1.7.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/CONTRIBUTING.md +90 -0
  3. package/README.md +2 -2
  4. package/build/_modules/cwv/_collections/cwv-emission.util.d.ts.map +1 -1
  5. package/build/_modules/cwv/_collections/cwv-emission.util.js +6 -1
  6. package/build/_modules/cwv/_collections/cwv-emission.util.js.map +1 -1
  7. package/build/_modules/cwv/_collections/inp-interaction-script.const.d.ts +32 -0
  8. package/build/_modules/cwv/_collections/inp-interaction-script.const.d.ts.map +1 -0
  9. package/build/_modules/cwv/_collections/inp-interaction-script.const.js +59 -0
  10. package/build/_modules/cwv/_collections/inp-interaction-script.const.js.map +1 -0
  11. package/build/_modules/cwv/cwv-suite.generator.d.ts.map +1 -1
  12. package/build/_modules/cwv/cwv-suite.generator.js +9 -1
  13. package/build/_modules/cwv/cwv-suite.generator.js.map +1 -1
  14. package/build/_modules/cwv/index.d.ts +1 -0
  15. package/build/_modules/cwv/index.d.ts.map +1 -1
  16. package/build/_modules/cwv/index.js +1 -0
  17. package/build/_modules/cwv/index.js.map +1 -1
  18. package/build/_modules/cwv/inp-emit-integration.spec.d.ts +2 -0
  19. package/build/_modules/cwv/inp-emit-integration.spec.d.ts.map +1 -0
  20. package/build/_modules/cwv/inp-emit-integration.spec.js +43 -0
  21. package/build/_modules/cwv/inp-emit-integration.spec.js.map +1 -0
  22. package/build/_modules/cwv/inp-script.spec.d.ts +2 -0
  23. package/build/_modules/cwv/inp-script.spec.d.ts.map +1 -0
  24. package/build/_modules/cwv/inp-script.spec.js +35 -0
  25. package/build/_modules/cwv/inp-script.spec.js.map +1 -0
  26. package/build/_modules/runtime/_services/wave-2b-page-objects.d.ts +51 -0
  27. package/build/_modules/runtime/_services/wave-2b-page-objects.d.ts.map +1 -0
  28. package/build/_modules/runtime/_services/wave-2b-page-objects.js +106 -0
  29. package/build/_modules/runtime/_services/wave-2b-page-objects.js.map +1 -0
  30. package/build/_modules/runtime/fixtures.d.ts +12 -0
  31. package/build/_modules/runtime/fixtures.d.ts.map +1 -1
  32. package/build/_modules/runtime/fixtures.js +16 -0
  33. package/build/_modules/runtime/fixtures.js.map +1 -1
  34. package/build/_modules/runtime/index.d.ts +1 -0
  35. package/build/_modules/runtime/index.d.ts.map +1 -1
  36. package/build/_modules/runtime/index.js +1 -0
  37. package/build/_modules/runtime/index.js.map +1 -1
  38. package/build/_modules/runtime/wave-2b-page-objects.spec.d.ts +2 -0
  39. package/build/_modules/runtime/wave-2b-page-objects.spec.d.ts.map +1 -0
  40. package/build/_modules/runtime/wave-2b-page-objects.spec.js +130 -0
  41. package/build/_modules/runtime/wave-2b-page-objects.spec.js.map +1 -0
  42. package/coverage/contracts/_collections/index.html +1 -1
  43. package/coverage/contracts/_collections/index.ts.html +1 -1
  44. package/coverage/contracts/_collections/utils/index.html +1 -1
  45. package/coverage/contracts/_collections/utils/test-id.util.ts.html +1 -1
  46. package/coverage/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
  47. package/coverage/contracts/_enums/field-test-case-type.enum.ts.html +1 -1
  48. package/coverage/contracts/_enums/index.html +1 -1
  49. package/coverage/contracts/_enums/index.ts.html +1 -1
  50. package/coverage/contracts/_enums/standard-viewport.enum.ts.html +1 -1
  51. package/coverage/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
  52. package/coverage/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
  53. package/coverage/contracts/index.html +1 -1
  54. package/coverage/contracts/index.ts.html +1 -1
  55. package/coverage/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
  56. package/coverage/cwv/_collections/cwv-emission.util.ts.html +103 -88
  57. package/coverage/cwv/_collections/index.html +22 -7
  58. package/coverage/cwv/_collections/inp-interaction-script.const.ts.html +304 -0
  59. package/coverage/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
  60. package/coverage/cwv/cwv-suite.generator.ts.html +61 -34
  61. package/coverage/cwv/index.html +7 -7
  62. package/coverage/generators/_collections/cli-runner.util.ts.html +1 -1
  63. package/coverage/generators/_collections/field-emission.util.ts.html +1 -1
  64. package/coverage/generators/_collections/form-level-emission.util.ts.html +1 -1
  65. package/coverage/generators/_collections/index.html +1 -1
  66. package/coverage/generators/_collections/spec-emission.util.ts.html +33 -33
  67. package/coverage/generators/_collections/test-case-filter.util.ts.html +1 -1
  68. package/coverage/generators/_collections/viewport-emission.util.ts.html +1 -1
  69. package/coverage/generators/form-suite.generator.ts.html +1 -1
  70. package/coverage/generators/index.html +1 -1
  71. package/coverage/generators/viewport-suite.generator.ts.html +1 -1
  72. package/coverage/index.html +28 -28
  73. package/coverage/lcov-report/contracts/_collections/index.html +1 -1
  74. package/coverage/lcov-report/contracts/_collections/index.ts.html +1 -1
  75. package/coverage/lcov-report/contracts/_collections/utils/index.html +1 -1
  76. package/coverage/lcov-report/contracts/_collections/utils/test-id.util.ts.html +1 -1
  77. package/coverage/lcov-report/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
  78. package/coverage/lcov-report/contracts/_enums/field-test-case-type.enum.ts.html +1 -1
  79. package/coverage/lcov-report/contracts/_enums/index.html +1 -1
  80. package/coverage/lcov-report/contracts/_enums/index.ts.html +1 -1
  81. package/coverage/lcov-report/contracts/_enums/standard-viewport.enum.ts.html +1 -1
  82. package/coverage/lcov-report/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
  83. package/coverage/lcov-report/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
  84. package/coverage/lcov-report/contracts/index.html +1 -1
  85. package/coverage/lcov-report/contracts/index.ts.html +1 -1
  86. package/coverage/lcov-report/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
  87. package/coverage/lcov-report/cwv/_collections/cwv-emission.util.ts.html +103 -88
  88. package/coverage/lcov-report/cwv/_collections/index.html +22 -7
  89. package/coverage/lcov-report/cwv/_collections/inp-interaction-script.const.ts.html +304 -0
  90. package/coverage/lcov-report/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
  91. package/coverage/lcov-report/cwv/cwv-suite.generator.ts.html +61 -34
  92. package/coverage/lcov-report/cwv/index.html +7 -7
  93. package/coverage/lcov-report/generators/_collections/cli-runner.util.ts.html +1 -1
  94. package/coverage/lcov-report/generators/_collections/field-emission.util.ts.html +1 -1
  95. package/coverage/lcov-report/generators/_collections/form-level-emission.util.ts.html +1 -1
  96. package/coverage/lcov-report/generators/_collections/index.html +1 -1
  97. package/coverage/lcov-report/generators/_collections/spec-emission.util.ts.html +33 -33
  98. package/coverage/lcov-report/generators/_collections/test-case-filter.util.ts.html +1 -1
  99. package/coverage/lcov-report/generators/_collections/viewport-emission.util.ts.html +1 -1
  100. package/coverage/lcov-report/generators/form-suite.generator.ts.html +1 -1
  101. package/coverage/lcov-report/generators/index.html +1 -1
  102. package/coverage/lcov-report/generators/viewport-suite.generator.ts.html +1 -1
  103. package/coverage/lcov-report/index.html +28 -28
  104. package/coverage/lcov-report/runtime/_collections/assertion-helpers.util.ts.html +1 -1
  105. package/coverage/lcov-report/runtime/_collections/index.html +1 -1
  106. package/coverage/lcov-report/runtime/_collections/unique-generator.util.ts.html +1 -1
  107. package/coverage/lcov-report/runtime/_collections/wait-helpers.util.ts.html +5 -5
  108. package/coverage/lcov-report/runtime/_services/dialog-page-object.ts.html +1 -1
  109. package/coverage/lcov-report/runtime/_services/field-page-object.ts.html +1 -1
  110. package/coverage/lcov-report/runtime/_services/form-page-object.ts.html +1 -1
  111. package/coverage/lcov-report/runtime/_services/index.html +24 -9
  112. package/coverage/lcov-report/runtime/_services/loader-page-object.ts.html +1 -1
  113. package/coverage/lcov-report/runtime/_services/logger.service.ts.html +1 -1
  114. package/coverage/lcov-report/runtime/_services/login-flow-helper.base.ts.html +1 -1
  115. package/coverage/lcov-report/runtime/_services/nav-page-object.ts.html +1 -1
  116. package/coverage/lcov-report/runtime/_services/toast-page-object.ts.html +1 -1
  117. package/coverage/lcov-report/runtime/_services/wave-2b-page-objects.ts.html +397 -0
  118. package/coverage/lcov-report/runtime/index.html +5 -5
  119. package/coverage/lcov-report/runtime/index.ts.html +7 -4
  120. package/coverage/lcov.info +463 -186
  121. package/coverage/runtime/_collections/assertion-helpers.util.ts.html +1 -1
  122. package/coverage/runtime/_collections/index.html +1 -1
  123. package/coverage/runtime/_collections/unique-generator.util.ts.html +1 -1
  124. package/coverage/runtime/_collections/wait-helpers.util.ts.html +5 -5
  125. package/coverage/runtime/_services/dialog-page-object.ts.html +1 -1
  126. package/coverage/runtime/_services/field-page-object.ts.html +1 -1
  127. package/coverage/runtime/_services/form-page-object.ts.html +1 -1
  128. package/coverage/runtime/_services/index.html +24 -9
  129. package/coverage/runtime/_services/loader-page-object.ts.html +1 -1
  130. package/coverage/runtime/_services/logger.service.ts.html +1 -1
  131. package/coverage/runtime/_services/login-flow-helper.base.ts.html +1 -1
  132. package/coverage/runtime/_services/nav-page-object.ts.html +1 -1
  133. package/coverage/runtime/_services/toast-page-object.ts.html +1 -1
  134. package/coverage/runtime/_services/wave-2b-page-objects.ts.html +397 -0
  135. package/coverage/runtime/index.html +5 -5
  136. package/coverage/runtime/index.ts.html +7 -4
  137. package/coverage/tmp/coverage-222216-1781070051665-0.json +1 -0
  138. package/coverage/tmp/{coverage-221672-1781069317212-0.json → coverage-225712-1781070050591-0.json} +1 -1
  139. package/package.json +1 -1
  140. package/coverage/tmp/coverage-224768-1781069318181-0.json +0 -1
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>103/103</span>
28
+ <span class='fraction'>108/108</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>103/103</span>
49
+ <span class='fraction'>108/108</span>
50
50
  </div>
51
51
 
52
52
 
@@ -166,7 +166,12 @@
166
166
  <a name='L101'></a><a href='#L101'>101</a>
167
167
  <a name='L102'></a><a href='#L102'>102</a>
168
168
  <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
170
175
  <span class="cline-any cline-yes">1x</span>
171
176
  <span class="cline-any cline-yes">1x</span>
172
177
  <span class="cline-any cline-yes">1x</span>
@@ -185,89 +190,94 @@
185
190
  <span class="cline-any cline-yes">1x</span>
186
191
  <span class="cline-any cline-yes">1x</span>
187
192
  <span class="cline-any cline-yes">1x</span>
188
- <span class="cline-any cline-yes">7x</span>
189
- <span class="cline-any cline-yes">7x</span>
190
- <span class="cline-any cline-yes">7x</span>
191
- <span class="cline-any cline-yes">7x</span>
192
- <span class="cline-any cline-yes">7x</span>
193
- <span class="cline-any cline-yes">7x</span>
194
- <span class="cline-any cline-yes">7x</span>
195
- <span class="cline-any cline-yes">7x</span>
196
- <span class="cline-any cline-yes">7x</span>
197
- <span class="cline-any cline-yes">7x</span>
198
- <span class="cline-any cline-yes">7x</span>
199
- <span class="cline-any cline-yes">7x</span>
200
- <span class="cline-any cline-yes">7x</span>
201
- <span class="cline-any cline-yes">7x</span>
202
- <span class="cline-any cline-yes">7x</span>
203
- <span class="cline-any cline-yes">7x</span>
204
- <span class="cline-any cline-yes">7x</span>
205
- <span class="cline-any cline-yes">7x</span>
206
- <span class="cline-any cline-yes">7x</span>
207
- <span class="cline-any cline-yes">7x</span>
208
- <span class="cline-any cline-yes">7x</span>
209
- <span class="cline-any cline-yes">7x</span>
210
- <span class="cline-any cline-yes">7x</span>
211
- <span class="cline-any cline-yes">7x</span>
212
- <span class="cline-any cline-yes">7x</span>
213
- <span class="cline-any cline-yes">7x</span>
214
- <span class="cline-any cline-yes">7x</span>
215
- <span class="cline-any cline-yes">7x</span>
216
- <span class="cline-any cline-yes">7x</span>
217
- <span class="cline-any cline-yes">7x</span>
218
- <span class="cline-any cline-yes">7x</span>
219
- <span class="cline-any cline-yes">7x</span>
220
- <span class="cline-any cline-yes">7x</span>
221
- <span class="cline-any cline-yes">7x</span>
222
- <span class="cline-any cline-yes">7x</span>
223
- <span class="cline-any cline-yes">7x</span>
224
- <span class="cline-any cline-yes">7x</span>
225
- <span class="cline-any cline-yes">7x</span>
226
- <span class="cline-any cline-yes">7x</span>
227
- <span class="cline-any cline-yes">7x</span>
228
- <span class="cline-any cline-yes">7x</span>
229
- <span class="cline-any cline-yes">7x</span>
230
- <span class="cline-any cline-yes">7x</span>
231
- <span class="cline-any cline-yes">7x</span>
232
- <span class="cline-any cline-yes">7x</span>
233
- <span class="cline-any cline-yes">7x</span>
234
- <span class="cline-any cline-yes">7x</span>
235
- <span class="cline-any cline-yes">7x</span>
236
- <span class="cline-any cline-yes">7x</span>
237
- <span class="cline-any cline-yes">7x</span>
238
- <span class="cline-any cline-yes">7x</span>
239
- <span class="cline-any cline-yes">7x</span>
240
- <span class="cline-any cline-yes">7x</span>
241
- <span class="cline-any cline-yes">7x</span>
242
- <span class="cline-any cline-yes">7x</span>
243
- <span class="cline-any cline-yes">7x</span>
244
- <span class="cline-any cline-yes">7x</span>
245
- <span class="cline-any cline-yes">7x</span>
246
- <span class="cline-any cline-yes">7x</span>
247
- <span class="cline-any cline-yes">7x</span>
248
- <span class="cline-any cline-yes">7x</span>
249
- <span class="cline-any cline-yes">7x</span>
250
- <span class="cline-any cline-yes">7x</span>
251
- <span class="cline-any cline-yes">7x</span>
252
- <span class="cline-any cline-yes">7x</span>
253
- <span class="cline-any cline-yes">7x</span>
254
- <span class="cline-any cline-yes">7x</span>
255
- <span class="cline-any cline-yes">7x</span>
256
- <span class="cline-any cline-yes">7x</span>
257
- <span class="cline-any cline-yes">7x</span>
258
- <span class="cline-any cline-yes">7x</span>
259
- <span class="cline-any cline-yes">7x</span>
260
- <span class="cline-any cline-yes">7x</span>
261
- <span class="cline-any cline-yes">7x</span>
262
- <span class="cline-any cline-yes">7x</span>
263
- <span class="cline-any cline-yes">7x</span>
264
- <span class="cline-any cline-yes">7x</span>
265
- <span class="cline-any cline-yes">7x</span>
266
- <span class="cline-any cline-yes">7x</span>
267
- <span class="cline-any cline-yes">7x</span>
268
- <span class="cline-any cline-yes">7x</span>
269
- <span class="cline-any cline-yes">7x</span>
270
- <span class="cline-any cline-yes">7x</span>
193
+ <span class="cline-any cline-yes">12x</span>
194
+ <span class="cline-any cline-yes">12x</span>
195
+ <span class="cline-any cline-yes">12x</span>
196
+ <span class="cline-any cline-yes">12x</span>
197
+ <span class="cline-any cline-yes">12x</span>
198
+ <span class="cline-any cline-yes">12x</span>
199
+ <span class="cline-any cline-yes">12x</span>
200
+ <span class="cline-any cline-yes">12x</span>
201
+ <span class="cline-any cline-yes">12x</span>
202
+ <span class="cline-any cline-yes">12x</span>
203
+ <span class="cline-any cline-yes">12x</span>
204
+ <span class="cline-any cline-yes">12x</span>
205
+ <span class="cline-any cline-yes">12x</span>
206
+ <span class="cline-any cline-yes">12x</span>
207
+ <span class="cline-any cline-yes">12x</span>
208
+ <span class="cline-any cline-yes">12x</span>
209
+ <span class="cline-any cline-yes">12x</span>
210
+ <span class="cline-any cline-yes">12x</span>
211
+ <span class="cline-any cline-yes">12x</span>
212
+ <span class="cline-any cline-yes">12x</span>
213
+ <span class="cline-any cline-yes">12x</span>
214
+ <span class="cline-any cline-yes">12x</span>
215
+ <span class="cline-any cline-yes">12x</span>
216
+ <span class="cline-any cline-yes">12x</span>
217
+ <span class="cline-any cline-yes">12x</span>
218
+ <span class="cline-any cline-yes">12x</span>
219
+ <span class="cline-any cline-yes">12x</span>
220
+ <span class="cline-any cline-yes">12x</span>
221
+ <span class="cline-any cline-yes">12x</span>
222
+ <span class="cline-any cline-yes">12x</span>
223
+ <span class="cline-any cline-yes">12x</span>
224
+ <span class="cline-any cline-yes">12x</span>
225
+ <span class="cline-any cline-yes">12x</span>
226
+ <span class="cline-any cline-yes">12x</span>
227
+ <span class="cline-any cline-yes">12x</span>
228
+ <span class="cline-any cline-yes">12x</span>
229
+ <span class="cline-any cline-yes">12x</span>
230
+ <span class="cline-any cline-yes">12x</span>
231
+ <span class="cline-any cline-yes">12x</span>
232
+ <span class="cline-any cline-yes">12x</span>
233
+ <span class="cline-any cline-yes">12x</span>
234
+ <span class="cline-any cline-yes">12x</span>
235
+ <span class="cline-any cline-yes">12x</span>
236
+ <span class="cline-any cline-yes">12x</span>
237
+ <span class="cline-any cline-yes">12x</span>
238
+ <span class="cline-any cline-yes">12x</span>
239
+ <span class="cline-any cline-yes">12x</span>
240
+ <span class="cline-any cline-yes">12x</span>
241
+ <span class="cline-any cline-yes">12x</span>
242
+ <span class="cline-any cline-yes">12x</span>
243
+ <span class="cline-any cline-yes">12x</span>
244
+ <span class="cline-any cline-yes">12x</span>
245
+ <span class="cline-any cline-yes">12x</span>
246
+ <span class="cline-any cline-yes">12x</span>
247
+ <span class="cline-any cline-yes">12x</span>
248
+ <span class="cline-any cline-yes">12x</span>
249
+ <span class="cline-any cline-yes">12x</span>
250
+ <span class="cline-any cline-yes">12x</span>
251
+ <span class="cline-any cline-yes">12x</span>
252
+ <span class="cline-any cline-yes">12x</span>
253
+ <span class="cline-any cline-yes">12x</span>
254
+ <span class="cline-any cline-yes">12x</span>
255
+ <span class="cline-any cline-yes">12x</span>
256
+ <span class="cline-any cline-yes">12x</span>
257
+ <span class="cline-any cline-yes">12x</span>
258
+ <span class="cline-any cline-yes">12x</span>
259
+ <span class="cline-any cline-yes">12x</span>
260
+ <span class="cline-any cline-yes">12x</span>
261
+ <span class="cline-any cline-yes">12x</span>
262
+ <span class="cline-any cline-yes">12x</span>
263
+ <span class="cline-any cline-yes">12x</span>
264
+ <span class="cline-any cline-yes">12x</span>
265
+ <span class="cline-any cline-yes">12x</span>
266
+ <span class="cline-any cline-yes">12x</span>
267
+ <span class="cline-any cline-yes">12x</span>
268
+ <span class="cline-any cline-yes">12x</span>
269
+ <span class="cline-any cline-yes">12x</span>
270
+ <span class="cline-any cline-yes">12x</span>
271
+ <span class="cline-any cline-yes">12x</span>
272
+ <span class="cline-any cline-yes">12x</span>
273
+ <span class="cline-any cline-yes">12x</span>
274
+ <span class="cline-any cline-yes">12x</span>
275
+ <span class="cline-any cline-yes">12x</span>
276
+ <span class="cline-any cline-yes">12x</span>
277
+ <span class="cline-any cline-yes">12x</span>
278
+ <span class="cline-any cline-yes">12x</span>
279
+ <span class="cline-any cline-yes">12x</span>
280
+ <span class="cline-any cline-yes">12x</span>
271
281
  <span class="cline-any cline-yes">1x</span>
272
282
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { DyE2E_CWVThresholds_Interface } from '../../contracts/_models/interfaces/cwv-thresholds.interface';
273
283
  import { DyE2E_RouteDescriptor_Interface } from '../../generators/_models/route-descriptor.interface';
@@ -301,6 +311,7 @@ export class DyE2E_CWVEmission_Util {
301
311
  const assertions: string = [
302
312
  ['lcp', thresholds.lcp_p75_ms, 'ms'],
303
313
  ['cls', thresholds.cls_p75, ''],
314
+ ['inp', thresholds.inp_p75_ms, 'ms'],
304
315
  ['fcp', thresholds.fcp_p75_ms, 'ms'],
305
316
  ['ttfb', thresholds.ttfb_p75_ms, 'ms'],
306
317
  ]
@@ -315,13 +326,17 @@ export class DyE2E_CWVEmission_Util {
315
326
  &nbsp;
316
327
  for (let iter: number = 0; iter &lt; ${iterations}; iter++) {
317
328
  await page.addInitScript({ content: DYE2E_WEB_VITALS_PAGE_SCRIPT });
329
+ if (typeof DYE2E_INP_PAGE_SCRIPT !== 'undefined') {
330
+ await page.addInitScript({ content: DYE2E_INP_PAGE_SCRIPT });
331
+ }
318
332
  const response = await page.goto(${DyE2E_SpecEmission_Util.valueLiteral(fullPath)});
319
333
  expect(response?.ok()).toBeTruthy();
320
334
  ${readyWait}
321
- // Force snapshot — trigger pagehide via page.evaluate
335
+ // Force snapshot — trigger pagehide via page.evaluate (LCP/CLS + opcionálisan INP)
322
336
  await page.evaluate((): void =&gt; {
323
337
  const w = window as any;
324
338
  if (typeof w.__dye2e_cwv_snapshot__ === 'function') { w.__dye2e_cwv_snapshot__(); }
339
+ if (typeof w.__dye2e_inp_snapshot__ === 'function') { w.__dye2e_inp_snapshot__(); }
325
340
  });
326
341
  const events: any[] = await page.evaluate(() =&gt; (window as any).__dye2e_cwv_events__ || []);
327
342
  for (const ev of events) {
@@ -379,7 +394,7 @@ export class DyE2E_CWVEmission_Util {
379
394
  <div class='footer quiet pad2 space-top1 center small'>
380
395
  Code coverage generated by
381
396
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
382
- at 2026-06-10T05:28:38.440Z
397
+ at 2026-06-10T05:40:51.967Z
383
398
  </div>
384
399
  <script src="../../prettify.js"></script>
385
400
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">99.15% </span>
26
+ <span class="strong">99.36% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>235/237</span>
28
+ <span class='fraction'>313/315</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">99.15% </span>
47
+ <span class="strong">99.36% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>235/237</span>
49
+ <span class='fraction'>313/315</span>
50
50
  </div>
51
51
 
52
52
 
@@ -99,13 +99,28 @@
99
99
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
100
100
  </td>
101
101
  <td data-value="100" class="pct high">100%</td>
102
- <td data-value="103" class="abs high">103/103</td>
102
+ <td data-value="108" class="abs high">108/108</td>
103
103
  <td data-value="60" class="pct medium">60%</td>
104
104
  <td data-value="5" class="abs medium">3/5</td>
105
105
  <td data-value="100" class="pct high">100%</td>
106
106
  <td data-value="1" class="abs high">1/1</td>
107
107
  <td data-value="100" class="pct high">100%</td>
108
- <td data-value="103" class="abs high">103/103</td>
108
+ <td data-value="108" class="abs high">108/108</td>
109
+ </tr>
110
+
111
+ <tr>
112
+ <td class="file high" data-value="inp-interaction-script.const.ts"><a href="inp-interaction-script.const.ts.html">inp-interaction-script.const.ts</a></td>
113
+ <td data-value="100" class="pic high">
114
+ <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
115
+ </td>
116
+ <td data-value="100" class="pct high">100%</td>
117
+ <td data-value="73" class="abs high">73/73</td>
118
+ <td data-value="100" class="pct high">100%</td>
119
+ <td data-value="0" class="abs high">0/0</td>
120
+ <td data-value="100" class="pct high">100%</td>
121
+ <td data-value="0" class="abs high">0/0</td>
122
+ <td data-value="100" class="pct high">100%</td>
123
+ <td data-value="73" class="abs high">73/73</td>
109
124
  </tr>
110
125
 
111
126
  <tr>
@@ -131,7 +146,7 @@
131
146
  <div class='footer quiet pad2 space-top1 center small'>
132
147
  Code coverage generated by
133
148
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
134
- at 2026-06-10T05:28:38.440Z
149
+ at 2026-06-10T05:40:51.967Z
135
150
  </div>
136
151
  <script src="../../prettify.js"></script>
137
152
  <script>
@@ -0,0 +1,304 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for cwv/_collections/inp-interaction-script.const.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">cwv/_collections</a> inp-interaction-script.const.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>73/73</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>0/0</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>0/0</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>73/73</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
140
+ <span class="cline-any cline-yes">1x</span>
141
+ <span class="cline-any cline-yes">1x</span>
142
+ <span class="cline-any cline-yes">1x</span>
143
+ <span class="cline-any cline-yes">1x</span>
144
+ <span class="cline-any cline-yes">1x</span>
145
+ <span class="cline-any cline-yes">1x</span>
146
+ <span class="cline-any cline-yes">1x</span>
147
+ <span class="cline-any cline-yes">1x</span>
148
+ <span class="cline-any cline-yes">1x</span>
149
+ <span class="cline-any cline-yes">1x</span>
150
+ <span class="cline-any cline-yes">1x</span>
151
+ <span class="cline-any cline-yes">1x</span>
152
+ <span class="cline-any cline-yes">1x</span>
153
+ <span class="cline-any cline-yes">1x</span>
154
+ <span class="cline-any cline-yes">1x</span>
155
+ <span class="cline-any cline-yes">1x</span>
156
+ <span class="cline-any cline-yes">1x</span>
157
+ <span class="cline-any cline-yes">1x</span>
158
+ <span class="cline-any cline-yes">1x</span>
159
+ <span class="cline-any cline-yes">1x</span>
160
+ <span class="cline-any cline-yes">1x</span>
161
+ <span class="cline-any cline-yes">1x</span>
162
+ <span class="cline-any cline-yes">1x</span>
163
+ <span class="cline-any cline-yes">1x</span>
164
+ <span class="cline-any cline-yes">1x</span>
165
+ <span class="cline-any cline-yes">1x</span>
166
+ <span class="cline-any cline-yes">1x</span>
167
+ <span class="cline-any cline-yes">1x</span>
168
+ <span class="cline-any cline-yes">1x</span>
169
+ <span class="cline-any cline-yes">1x</span>
170
+ <span class="cline-any cline-yes">1x</span>
171
+ <span class="cline-any cline-yes">1x</span>
172
+ <span class="cline-any cline-yes">1x</span>
173
+ <span class="cline-any cline-yes">1x</span>
174
+ <span class="cline-any cline-yes">1x</span>
175
+ <span class="cline-any cline-yes">1x</span>
176
+ <span class="cline-any cline-yes">1x</span>
177
+ <span class="cline-any cline-yes">1x</span>
178
+ <span class="cline-any cline-yes">1x</span>
179
+ <span class="cline-any cline-yes">1x</span>
180
+ <span class="cline-any cline-yes">1x</span>
181
+ <span class="cline-any cline-yes">1x</span>
182
+ <span class="cline-any cline-yes">1x</span>
183
+ <span class="cline-any cline-yes">1x</span>
184
+ <span class="cline-any cline-yes">1x</span>
185
+ <span class="cline-any cline-yes">1x</span>
186
+ <span class="cline-any cline-yes">1x</span>
187
+ <span class="cline-any cline-yes">1x</span>
188
+ <span class="cline-any cline-yes">1x</span>
189
+ <span class="cline-any cline-yes">1x</span>
190
+ <span class="cline-any cline-yes">1x</span>
191
+ <span class="cline-any cline-yes">1x</span>
192
+ <span class="cline-any cline-yes">1x</span>
193
+ <span class="cline-any cline-yes">1x</span>
194
+ <span class="cline-any cline-yes">1x</span>
195
+ <span class="cline-any cline-yes">1x</span>
196
+ <span class="cline-any cline-yes">1x</span>
197
+ <span class="cline-any cline-yes">1x</span>
198
+ <span class="cline-any cline-yes">1x</span>
199
+ <span class="cline-any cline-yes">1x</span>
200
+ <span class="cline-any cline-yes">1x</span>
201
+ <span class="cline-any cline-yes">1x</span>
202
+ <span class="cline-any cline-yes">1x</span>
203
+ <span class="cline-any cline-yes">1x</span>
204
+ <span class="cline-any cline-yes">1x</span>
205
+ <span class="cline-any cline-yes">1x</span>
206
+ <span class="cline-any cline-yes">1x</span>
207
+ <span class="cline-any cline-yes">1x</span>
208
+ <span class="cline-any cline-yes">1x</span>
209
+ <span class="cline-any cline-yes">1x</span>
210
+ <span class="cline-any cline-yes">1x</span>
211
+ <span class="cline-any cline-yes">1x</span>
212
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/**
213
+ * Wave-3 — INP (Interaction to Next Paint) page-side instrumentation.
214
+ *
215
+ * Az INP a `web-vitals/attribution` v4 lib egyik kulcs-metrikája — a
216
+ * felhasználói interakciók (click, keypress, pointerup) és a következő
217
+ * paint közötti latency. P75-asszertelhető.
218
+ *
219
+ * **PURE JavaScript** — a browser direkt futtatja. Az eredményeket a
220
+ * `window.__dye2e_cwv_events__` tömbbe rakja (összhangban a
221
+ * `DYE2E_WEB_VITALS_PAGE_SCRIPT`-tel).
222
+ *
223
+ * Lefedi: INP via `event` PerformanceObserver-rel (Chrome 96+).
224
+ */
225
+ export const DYE2E_INP_PAGE_SCRIPT: string = `
226
+ (function () {
227
+ var w = window;
228
+ if (!w.__dye2e_cwv_events__) { w.__dye2e_cwv_events__ = []; }
229
+ if (w.__dye2e_inp_setup__) { return; }
230
+ w.__dye2e_inp_setup__ = true;
231
+ var events = w.__dye2e_cwv_events__;
232
+ function pushEvent(metric, value, attribution) {
233
+ events.push({ metric: metric, value: value, attribution: attribution, t: Date.now() });
234
+ }
235
+ &nbsp;
236
+ try {
237
+ var longestInteraction = 0;
238
+ var lastTarget = null;
239
+ var po = new PerformanceObserver(function (list) {
240
+ var entries = list.getEntries();
241
+ for (var i = 0; i &lt; entries.length; i++) {
242
+ var e = entries[i];
243
+ var duration = e.duration || 0;
244
+ // INP — az interaction-id-vel rendelkező event-ek
245
+ if (e.interactionId &amp;&amp; e.interactionId &gt; 0 &amp;&amp; duration &gt; longestInteraction) {
246
+ longestInteraction = duration;
247
+ lastTarget = e.target ? (e.target.tagName + (e.target.id ? '#' + e.target.id : '')) : null;
248
+ }
249
+ }
250
+ });
251
+ po.observe({ type: 'event', buffered: true, durationThreshold: 0 });
252
+ &nbsp;
253
+ // Snapshot on pagehide / visibility-change
254
+ var snapshot = function () {
255
+ if (longestInteraction &gt; 0) {
256
+ pushEvent('inp', longestInteraction, { target: lastTarget });
257
+ }
258
+ };
259
+ addEventListener('pagehide', snapshot, true);
260
+ addEventListener('visibilitychange', function () {
261
+ if (document.visibilityState === 'hidden') { snapshot(); }
262
+ }, true);
263
+ w.__dye2e_inp_snapshot__ = snapshot;
264
+ } catch (e) { /* PerformanceObserver / event-timing nem támogatott */ }
265
+ })();
266
+ `.trim();
267
+ &nbsp;
268
+ /**
269
+ * Interaction-driver — a Node oldali Playwright-script ami INP-input-ot
270
+ * generál (page.click / keyboard.press / mouse.move). Wave-3 entry-point.
271
+ *
272
+ * NEM az itt definiált — csak a typed shape; az interakció a generated
273
+ * spec.ts-ben jön létre per consumer-projekt.
274
+ */
275
+ export interface DyE2E_INPInteraction_Shape {
276
+ /** 'click' | 'keyboard' | 'pointerdown' — interakció-fajta. */
277
+ type: 'click' | 'keyboard' | 'pointerdown';
278
+ /** Selector vagy testId a target-re. */
279
+ selector?: string;
280
+ /** Keyboard esetén billentyű (pl. 'Enter', 'a'). */
281
+ key?: string;
282
+ /** Pre-action timeout ms-ben (settle előtti vár). */
283
+ preActionTimeout?: number;
284
+ }
285
+ &nbsp;</pre></td></tr></table></pre>
286
+
287
+ <div class='push'></div><!-- for sticky footer -->
288
+ </div><!-- /wrapper -->
289
+ <div class='footer quiet pad2 space-top1 center small'>
290
+ Code coverage generated by
291
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
292
+ at 2026-06-10T05:40:51.967Z
293
+ </div>
294
+ <script src="../../prettify.js"></script>
295
+ <script>
296
+ window.onload = function () {
297
+ prettyPrint();
298
+ };
299
+ </script>
300
+ <script src="../../sorter.js"></script>
301
+ <script src="../../block-navigation.js"></script>
302
+ </body>
303
+ </html>
304
+
@@ -316,7 +316,7 @@ export const DYE2E_WEB_VITALS_PAGE_SCRIPT: string = `
316
316
  <div class='footer quiet pad2 space-top1 center small'>
317
317
  Code coverage generated by
318
318
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
319
- at 2026-06-10T05:28:38.440Z
319
+ at 2026-06-10T05:40:51.967Z
320
320
  </div>
321
321
  <script src="../../prettify.js"></script>
322
322
  <script>