@futdevpro/dynamo-e2e 1.8.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 (116) hide show
  1. package/CHANGELOG.md +18 -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/cwv-suite.generator.d.ts.map +1 -1
  8. package/build/_modules/cwv/cwv-suite.generator.js +9 -1
  9. package/build/_modules/cwv/cwv-suite.generator.js.map +1 -1
  10. package/build/_modules/cwv/inp-emit-integration.spec.d.ts +2 -0
  11. package/build/_modules/cwv/inp-emit-integration.spec.d.ts.map +1 -0
  12. package/build/_modules/cwv/inp-emit-integration.spec.js +43 -0
  13. package/build/_modules/cwv/inp-emit-integration.spec.js.map +1 -0
  14. package/build/_modules/runtime/fixtures.d.ts +12 -0
  15. package/build/_modules/runtime/fixtures.d.ts.map +1 -1
  16. package/build/_modules/runtime/fixtures.js +16 -0
  17. package/build/_modules/runtime/fixtures.js.map +1 -1
  18. package/coverage/contracts/_collections/index.html +1 -1
  19. package/coverage/contracts/_collections/index.ts.html +1 -1
  20. package/coverage/contracts/_collections/utils/index.html +1 -1
  21. package/coverage/contracts/_collections/utils/test-id.util.ts.html +1 -1
  22. package/coverage/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
  23. package/coverage/contracts/_enums/field-test-case-type.enum.ts.html +1 -1
  24. package/coverage/contracts/_enums/index.html +1 -1
  25. package/coverage/contracts/_enums/index.ts.html +1 -1
  26. package/coverage/contracts/_enums/standard-viewport.enum.ts.html +1 -1
  27. package/coverage/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
  28. package/coverage/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
  29. package/coverage/contracts/index.html +1 -1
  30. package/coverage/contracts/index.ts.html +1 -1
  31. package/coverage/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
  32. package/coverage/cwv/_collections/cwv-emission.util.ts.html +103 -88
  33. package/coverage/cwv/_collections/index.html +7 -7
  34. package/coverage/cwv/_collections/inp-interaction-script.const.ts.html +1 -1
  35. package/coverage/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
  36. package/coverage/cwv/cwv-suite.generator.ts.html +61 -34
  37. package/coverage/cwv/index.html +7 -7
  38. package/coverage/generators/_collections/cli-runner.util.ts.html +1 -1
  39. package/coverage/generators/_collections/field-emission.util.ts.html +1 -1
  40. package/coverage/generators/_collections/form-level-emission.util.ts.html +1 -1
  41. package/coverage/generators/_collections/index.html +1 -1
  42. package/coverage/generators/_collections/spec-emission.util.ts.html +33 -33
  43. package/coverage/generators/_collections/test-case-filter.util.ts.html +1 -1
  44. package/coverage/generators/_collections/viewport-emission.util.ts.html +1 -1
  45. package/coverage/generators/form-suite.generator.ts.html +1 -1
  46. package/coverage/generators/index.html +1 -1
  47. package/coverage/generators/viewport-suite.generator.ts.html +1 -1
  48. package/coverage/index.html +15 -15
  49. package/coverage/lcov-report/contracts/_collections/index.html +1 -1
  50. package/coverage/lcov-report/contracts/_collections/index.ts.html +1 -1
  51. package/coverage/lcov-report/contracts/_collections/utils/index.html +1 -1
  52. package/coverage/lcov-report/contracts/_collections/utils/test-id.util.ts.html +1 -1
  53. package/coverage/lcov-report/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
  54. package/coverage/lcov-report/contracts/_enums/field-test-case-type.enum.ts.html +1 -1
  55. package/coverage/lcov-report/contracts/_enums/index.html +1 -1
  56. package/coverage/lcov-report/contracts/_enums/index.ts.html +1 -1
  57. package/coverage/lcov-report/contracts/_enums/standard-viewport.enum.ts.html +1 -1
  58. package/coverage/lcov-report/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
  59. package/coverage/lcov-report/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
  60. package/coverage/lcov-report/contracts/index.html +1 -1
  61. package/coverage/lcov-report/contracts/index.ts.html +1 -1
  62. package/coverage/lcov-report/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
  63. package/coverage/lcov-report/cwv/_collections/cwv-emission.util.ts.html +103 -88
  64. package/coverage/lcov-report/cwv/_collections/index.html +7 -7
  65. package/coverage/lcov-report/cwv/_collections/inp-interaction-script.const.ts.html +1 -1
  66. package/coverage/lcov-report/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
  67. package/coverage/lcov-report/cwv/cwv-suite.generator.ts.html +61 -34
  68. package/coverage/lcov-report/cwv/index.html +7 -7
  69. package/coverage/lcov-report/generators/_collections/cli-runner.util.ts.html +1 -1
  70. package/coverage/lcov-report/generators/_collections/field-emission.util.ts.html +1 -1
  71. package/coverage/lcov-report/generators/_collections/form-level-emission.util.ts.html +1 -1
  72. package/coverage/lcov-report/generators/_collections/index.html +1 -1
  73. package/coverage/lcov-report/generators/_collections/spec-emission.util.ts.html +33 -33
  74. package/coverage/lcov-report/generators/_collections/test-case-filter.util.ts.html +1 -1
  75. package/coverage/lcov-report/generators/_collections/viewport-emission.util.ts.html +1 -1
  76. package/coverage/lcov-report/generators/form-suite.generator.ts.html +1 -1
  77. package/coverage/lcov-report/generators/index.html +1 -1
  78. package/coverage/lcov-report/generators/viewport-suite.generator.ts.html +1 -1
  79. package/coverage/lcov-report/index.html +15 -15
  80. package/coverage/lcov-report/runtime/_collections/assertion-helpers.util.ts.html +1 -1
  81. package/coverage/lcov-report/runtime/_collections/index.html +1 -1
  82. package/coverage/lcov-report/runtime/_collections/unique-generator.util.ts.html +1 -1
  83. package/coverage/lcov-report/runtime/_collections/wait-helpers.util.ts.html +1 -1
  84. package/coverage/lcov-report/runtime/_services/dialog-page-object.ts.html +1 -1
  85. package/coverage/lcov-report/runtime/_services/field-page-object.ts.html +1 -1
  86. package/coverage/lcov-report/runtime/_services/form-page-object.ts.html +1 -1
  87. package/coverage/lcov-report/runtime/_services/index.html +1 -1
  88. package/coverage/lcov-report/runtime/_services/loader-page-object.ts.html +1 -1
  89. package/coverage/lcov-report/runtime/_services/logger.service.ts.html +1 -1
  90. package/coverage/lcov-report/runtime/_services/login-flow-helper.base.ts.html +1 -1
  91. package/coverage/lcov-report/runtime/_services/nav-page-object.ts.html +1 -1
  92. package/coverage/lcov-report/runtime/_services/toast-page-object.ts.html +1 -1
  93. package/coverage/lcov-report/runtime/_services/wave-2b-page-objects.ts.html +1 -1
  94. package/coverage/lcov-report/runtime/index.html +1 -1
  95. package/coverage/lcov-report/runtime/index.ts.html +1 -1
  96. package/coverage/lcov.info +192 -176
  97. package/coverage/runtime/_collections/assertion-helpers.util.ts.html +1 -1
  98. package/coverage/runtime/_collections/index.html +1 -1
  99. package/coverage/runtime/_collections/unique-generator.util.ts.html +1 -1
  100. package/coverage/runtime/_collections/wait-helpers.util.ts.html +1 -1
  101. package/coverage/runtime/_services/dialog-page-object.ts.html +1 -1
  102. package/coverage/runtime/_services/field-page-object.ts.html +1 -1
  103. package/coverage/runtime/_services/form-page-object.ts.html +1 -1
  104. package/coverage/runtime/_services/index.html +1 -1
  105. package/coverage/runtime/_services/loader-page-object.ts.html +1 -1
  106. package/coverage/runtime/_services/logger.service.ts.html +1 -1
  107. package/coverage/runtime/_services/login-flow-helper.base.ts.html +1 -1
  108. package/coverage/runtime/_services/nav-page-object.ts.html +1 -1
  109. package/coverage/runtime/_services/toast-page-object.ts.html +1 -1
  110. package/coverage/runtime/_services/wave-2b-page-objects.ts.html +1 -1
  111. package/coverage/runtime/index.html +1 -1
  112. package/coverage/runtime/index.ts.html +1 -1
  113. package/coverage/tmp/coverage-222216-1781070051665-0.json +1 -0
  114. package/coverage/tmp/{coverage-212504-1781069698881-0.json → coverage-225712-1781070050591-0.json} +1 -1
  115. package/package.json +1 -1
  116. package/coverage/tmp/coverage-78800-1781069699908-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:35:00.162Z
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.35% </span>
26
+ <span class="strong">99.36% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>308/310</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.35% </span>
47
+ <span class="strong">99.36% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>308/310</span>
49
+ <span class='fraction'>313/315</span>
50
50
  </div>
51
51
 
52
52
 
@@ -99,13 +99,13 @@
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
109
  </tr>
110
110
 
111
111
  <tr>
@@ -146,7 +146,7 @@
146
146
  <div class='footer quiet pad2 space-top1 center small'>
147
147
  Code coverage generated by
148
148
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
149
- at 2026-06-10T05:35:00.162Z
149
+ at 2026-06-10T05:40:51.967Z
150
150
  </div>
151
151
  <script src="../../prettify.js"></script>
152
152
  <script>
@@ -289,7 +289,7 @@ export interface DyE2E_INPInteraction_Shape {
289
289
  <div class='footer quiet pad2 space-top1 center small'>
290
290
  Code coverage generated by
291
291
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
292
- at 2026-06-10T05:35:00.162Z
292
+ at 2026-06-10T05:40:51.967Z
293
293
  </div>
294
294
  <script src="../../prettify.js"></script>
295
295
  <script>
@@ -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:35:00.162Z
319
+ at 2026-06-10T05:40:51.967Z
320
320
  </div>
321
321
  <script src="../../prettify.js"></script>
322
322
  <script>
@@ -25,14 +25,14 @@
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'>49/49</span>
28
+ <span class='fraction'>58/58</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>5/5</span>
35
+ <span class='fraction'>7/7</span>
36
36
  </div>
37
37
 
38
38
 
@@ -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'>49/49</span>
49
+ <span class='fraction'>58/58</span>
50
50
  </div>
51
51
 
52
52
 
@@ -112,7 +112,16 @@
112
112
  <a name='L47'></a><a href='#L47'>47</a>
113
113
  <a name='L48'></a><a href='#L48'>48</a>
114
114
  <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
116
125
  <span class="cline-any cline-yes">1x</span>
117
126
  <span class="cline-any cline-yes">1x</span>
118
127
  <span class="cline-any cline-yes">1x</span>
@@ -132,40 +141,50 @@
132
141
  <span class="cline-any cline-yes">1x</span>
133
142
  <span class="cline-any cline-yes">1x</span>
134
143
  <span class="cline-any cline-yes">1x</span>
135
- <span class="cline-any cline-yes">8x</span>
136
- <span class="cline-any cline-yes">8x</span>
137
- <span class="cline-any cline-yes">8x</span>
138
- <span class="cline-any cline-yes">8x</span>
139
- <span class="cline-any cline-yes">8x</span>
140
- <span class="cline-any cline-yes">8x</span>
141
- <span class="cline-any cline-yes">8x</span>
142
- <span class="cline-any cline-yes">8x</span>
143
- <span class="cline-any cline-yes">8x</span>
144
- <span class="cline-any cline-yes">8x</span>
145
- <span class="cline-any cline-yes">8x</span>
146
- <span class="cline-any cline-yes">8x</span>
147
- <span class="cline-any cline-yes">8x</span>
148
- <span class="cline-any cline-yes">8x</span>
149
- <span class="cline-any cline-yes">8x</span>
150
- <span class="cline-any cline-yes">8x</span>
151
- <span class="cline-any cline-yes">8x</span>
152
- <span class="cline-any cline-yes">8x</span>
153
- <span class="cline-any cline-yes">8x</span>
154
- <span class="cline-any cline-yes">8x</span>
155
- <span class="cline-any cline-yes">8x</span>
156
- <span class="cline-any cline-yes">8x</span>
157
- <span class="cline-any cline-yes">8x</span>
158
- <span class="cline-any cline-yes">8x</span>
159
- <span class="cline-any cline-yes">8x</span>
160
- <span class="cline-any cline-yes">8x</span>
161
- <span class="cline-any cline-yes">8x</span>
162
- <span class="cline-any cline-yes">8x</span>
144
+ <span class="cline-any cline-yes">1x</span>
145
+ <span class="cline-any cline-yes">13x</span>
146
+ <span class="cline-any cline-yes">13x</span>
147
+ <span class="cline-any cline-yes">13x</span>
148
+ <span class="cline-any cline-yes">13x</span>
149
+ <span class="cline-any cline-yes">13x</span>
150
+ <span class="cline-any cline-yes">13x</span>
151
+ <span class="cline-any cline-yes">13x</span>
152
+ <span class="cline-any cline-yes">13x</span>
153
+ <span class="cline-any cline-yes">13x</span>
154
+ <span class="cline-any cline-yes">13x</span>
155
+ <span class="cline-any cline-yes">13x</span>
156
+ <span class="cline-any cline-yes">13x</span>
157
+ <span class="cline-any cline-yes">13x</span>
158
+ <span class="cline-any cline-yes">13x</span>
159
+ <span class="cline-any cline-yes">13x</span>
160
+ <span class="cline-any cline-yes">13x</span>
161
+ <span class="cline-any cline-yes">13x</span>
162
+ <span class="cline-any cline-yes">13x</span>
163
+ <span class="cline-any cline-yes">13x</span>
164
+ <span class="cline-any cline-yes">13x</span>
165
+ <span class="cline-any cline-yes">13x</span>
166
+ <span class="cline-any cline-yes">13x</span>
167
+ <span class="cline-any cline-yes">13x</span>
168
+ <span class="cline-any cline-yes">13x</span>
169
+ <span class="cline-any cline-yes">13x</span>
170
+ <span class="cline-any cline-yes">13x</span>
171
+ <span class="cline-any cline-yes">13x</span>
172
+ <span class="cline-any cline-yes">13x</span>
173
+ <span class="cline-any cline-yes">13x</span>
174
+ <span class="cline-any cline-yes">13x</span>
175
+ <span class="cline-any cline-yes">13x</span>
176
+ <span class="cline-any cline-yes">13x</span>
177
+ <span class="cline-any cline-yes">13x</span>
178
+ <span class="cline-any cline-yes">13x</span>
179
+ <span class="cline-any cline-yes">13x</span>
180
+ <span class="cline-any cline-yes">13x</span>
163
181
  <span class="cline-any cline-yes">1x</span>
164
182
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { CWV_GOOD_THRESHOLDS } from '../contracts/_collections/constants/cwv-default-thresholds.const';
165
183
  import { DyE2E_CWVThresholds_Interface } from '../contracts/_models/interfaces/cwv-thresholds.interface';
166
184
  import { DyE2E_RouteDescriptor_Interface } from '../generators/_models/route-descriptor.interface';
167
185
  import { DyE2E_SpecEmission_Util } from '../generators/_collections/spec-emission.util';
168
186
  import { DyE2E_CWVEmission_Util } from './_collections/cwv-emission.util';
187
+ import { DYE2E_INP_PAGE_SCRIPT } from './_collections/inp-interaction-script.const';
169
188
  import { DYE2E_WEB_VITALS_PAGE_SCRIPT } from './_collections/web-vitals-page-script.const';
170
189
  import { DyE2E_CWVSuiteGenerate_Options } from './_models/cwv-suite-generate-options.interface';
171
190
  &nbsp;
@@ -196,11 +215,19 @@ export class DyE2E_CWVSuite_Generator {
196
215
  const routeBlocks: string[] = options.routes.map(
197
216
  (r: DyE2E_RouteDescriptor_Interface): string =&gt; DyE2E_CWVEmission_Util.emitRouteBlock(r, iterations, thresholds, reportDir),
198
217
  );
218
+ &nbsp;
219
+ // Wave-3 — ha LCP/CLS/FCP/TTFB MELLETT INP-t is mérünk, mindkét page-scriptet
220
+ // kell injektálni. A `DyE2E_CWVSuiteGenerate_Options.thresholds.inp_p75_ms`
221
+ // jelenléte signalizálja az INP-mérés-szándékot.
222
+ const wantsInp: boolean = typeof thresholds.inp_p75_ms === 'number';
223
+ const inpScriptDecl: string = wantsInp
224
+ ? `\nconst DYE2E_INP_PAGE_SCRIPT: string = ${JSON.stringify(DYE2E_INP_PAGE_SCRIPT)};`
225
+ : '';
199
226
  &nbsp;
200
227
  return `${header}
201
228
  import { test, expect } from '@playwright/test';
202
229
  &nbsp;
203
- const DYE2E_WEB_VITALS_PAGE_SCRIPT: string = ${JSON.stringify(DYE2E_WEB_VITALS_PAGE_SCRIPT)};
230
+ const DYE2E_WEB_VITALS_PAGE_SCRIPT: string = ${JSON.stringify(DYE2E_WEB_VITALS_PAGE_SCRIPT)};${inpScriptDecl}
204
231
  &nbsp;
205
232
  test.describe('${DyE2E_SpecEmission_Util.escapeString(describePrefix)}', (): void =&gt; {
206
233
  &nbsp;
@@ -217,7 +244,7 @@ ${DyE2E_SpecEmission_Util.indent(routeBlocks.join('\n\n'), 1)}
217
244
  <div class='footer quiet pad2 space-top1 center small'>
218
245
  Code coverage generated by
219
246
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
220
- at 2026-06-10T05:35:00.162Z
247
+ at 2026-06-10T05:40:51.967Z
221
248
  </div>
222
249
  <script src="../prettify.js"></script>
223
250
  <script>
@@ -25,14 +25,14 @@
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'>49/49</span>
28
+ <span class='fraction'>58/58</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>5/5</span>
35
+ <span class='fraction'>7/7</span>
36
36
  </div>
37
37
 
38
38
 
@@ -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'>49/49</span>
49
+ <span class='fraction'>58/58</span>
50
50
  </div>
51
51
 
52
52
 
@@ -84,13 +84,13 @@
84
84
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
85
85
  </td>
86
86
  <td data-value="100" class="pct high">100%</td>
87
- <td data-value="49" class="abs high">49/49</td>
87
+ <td data-value="58" class="abs high">58/58</td>
88
88
  <td data-value="100" class="pct high">100%</td>
89
- <td data-value="5" class="abs high">5/5</td>
89
+ <td data-value="7" class="abs high">7/7</td>
90
90
  <td data-value="100" class="pct high">100%</td>
91
91
  <td data-value="1" class="abs high">1/1</td>
92
92
  <td data-value="100" class="pct high">100%</td>
93
- <td data-value="49" class="abs high">49/49</td>
93
+ <td data-value="58" class="abs high">58/58</td>
94
94
  </tr>
95
95
 
96
96
  </tbody>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2026-06-10T05:35:00.162Z
104
+ at 2026-06-10T05:40:51.967Z
105
105
  </div>
106
106
  <script src="../prettify.js"></script>
107
107
  <script>
@@ -346,7 +346,7 @@ Flags (generate-cwv-diag):
346
346
  <div class='footer quiet pad2 space-top1 center small'>
347
347
  Code coverage generated by
348
348
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
349
- at 2026-06-10T05:35:00.162Z
349
+ at 2026-06-10T05:40:51.967Z
350
350
  </div>
351
351
  <script src="../../prettify.js"></script>
352
352
  <script>
@@ -589,7 +589,7 @@ expect(true).toBe(true);`;
589
589
  <div class='footer quiet pad2 space-top1 center small'>
590
590
  Code coverage generated by
591
591
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
592
- at 2026-06-10T05:35:00.162Z
592
+ at 2026-06-10T05:40:51.967Z
593
593
  </div>
594
594
  <script src="../../prettify.js"></script>
595
595
  <script>
@@ -205,7 +205,7 @@ ${requiredFieldCount &gt; 0
205
205
  <div class='footer quiet pad2 space-top1 center small'>
206
206
  Code coverage generated by
207
207
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
208
- at 2026-06-10T05:35:00.162Z
208
+ at 2026-06-10T05:40:51.967Z
209
209
  </div>
210
210
  <script src="../../prettify.js"></script>
211
211
  <script>
@@ -176,7 +176,7 @@
176
176
  <div class='footer quiet pad2 space-top1 center small'>
177
177
  Code coverage generated by
178
178
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
179
- at 2026-06-10T05:35:00.162Z
179
+ at 2026-06-10T05:40:51.967Z
180
180
  </div>
181
181
  <script src="../../prettify.js"></script>
182
182
  <script>