@futdevpro/dynamo-e2e 1.12.1 → 1.13.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 (114) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +2 -2
  3. package/build/_modules/cwv/_collections/cwv-emission.util.d.ts.map +1 -1
  4. package/build/_modules/cwv/_collections/cwv-emission.util.js +13 -0
  5. package/build/_modules/cwv/_collections/cwv-emission.util.js.map +1 -1
  6. package/build/_modules/cwv/inp-interaction-driver.spec.d.ts +2 -0
  7. package/build/_modules/cwv/inp-interaction-driver.spec.d.ts.map +1 -0
  8. package/build/_modules/cwv/inp-interaction-driver.spec.js +44 -0
  9. package/build/_modules/cwv/inp-interaction-driver.spec.js.map +1 -0
  10. package/coverage/contracts/_collections/index.html +1 -1
  11. package/coverage/contracts/_collections/index.ts.html +1 -1
  12. package/coverage/contracts/_collections/utils/index.html +1 -1
  13. package/coverage/contracts/_collections/utils/test-id.util.ts.html +1 -1
  14. package/coverage/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
  15. package/coverage/contracts/_enums/field-test-case-type.enum.ts.html +1 -1
  16. package/coverage/contracts/_enums/index.html +1 -1
  17. package/coverage/contracts/_enums/index.ts.html +1 -1
  18. package/coverage/contracts/_enums/standard-viewport.enum.ts.html +1 -1
  19. package/coverage/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
  20. package/coverage/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
  21. package/coverage/contracts/index.html +1 -1
  22. package/coverage/contracts/index.ts.html +1 -1
  23. package/coverage/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
  24. package/coverage/cwv/_collections/cwv-comparison.util.ts.html +1 -1
  25. package/coverage/cwv/_collections/cwv-diagnose.util.ts.html +1 -1
  26. package/coverage/cwv/_collections/cwv-emission.util.ts.html +131 -92
  27. package/coverage/cwv/_collections/cwv-summarize.util.ts.html +1 -1
  28. package/coverage/cwv/_collections/index.html +7 -7
  29. package/coverage/cwv/_collections/inp-interaction-script.const.ts.html +1 -1
  30. package/coverage/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
  31. package/coverage/cwv/cwv-suite.generator.ts.html +37 -37
  32. package/coverage/cwv/index.html +1 -1
  33. package/coverage/generators/_collections/cli-runner.util.ts.html +1 -1
  34. package/coverage/generators/_collections/field-emission.util.ts.html +1 -1
  35. package/coverage/generators/_collections/form-level-emission.util.ts.html +1 -1
  36. package/coverage/generators/_collections/index.html +1 -1
  37. package/coverage/generators/_collections/spec-emission.util.ts.html +33 -33
  38. package/coverage/generators/_collections/test-case-filter.util.ts.html +1 -1
  39. package/coverage/generators/_collections/viewport-emission.util.ts.html +1 -1
  40. package/coverage/generators/form-suite.generator.ts.html +1 -1
  41. package/coverage/generators/index.html +1 -1
  42. package/coverage/generators/viewport-suite.generator.ts.html +1 -1
  43. package/coverage/index.html +10 -10
  44. package/coverage/lcov-report/contracts/_collections/index.html +1 -1
  45. package/coverage/lcov-report/contracts/_collections/index.ts.html +1 -1
  46. package/coverage/lcov-report/contracts/_collections/utils/index.html +1 -1
  47. package/coverage/lcov-report/contracts/_collections/utils/test-id.util.ts.html +1 -1
  48. package/coverage/lcov-report/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
  49. package/coverage/lcov-report/contracts/_enums/field-test-case-type.enum.ts.html +1 -1
  50. package/coverage/lcov-report/contracts/_enums/index.html +1 -1
  51. package/coverage/lcov-report/contracts/_enums/index.ts.html +1 -1
  52. package/coverage/lcov-report/contracts/_enums/standard-viewport.enum.ts.html +1 -1
  53. package/coverage/lcov-report/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
  54. package/coverage/lcov-report/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
  55. package/coverage/lcov-report/contracts/index.html +1 -1
  56. package/coverage/lcov-report/contracts/index.ts.html +1 -1
  57. package/coverage/lcov-report/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
  58. package/coverage/lcov-report/cwv/_collections/cwv-comparison.util.ts.html +1 -1
  59. package/coverage/lcov-report/cwv/_collections/cwv-diagnose.util.ts.html +1 -1
  60. package/coverage/lcov-report/cwv/_collections/cwv-emission.util.ts.html +131 -92
  61. package/coverage/lcov-report/cwv/_collections/cwv-summarize.util.ts.html +1 -1
  62. package/coverage/lcov-report/cwv/_collections/index.html +7 -7
  63. package/coverage/lcov-report/cwv/_collections/inp-interaction-script.const.ts.html +1 -1
  64. package/coverage/lcov-report/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
  65. package/coverage/lcov-report/cwv/cwv-suite.generator.ts.html +37 -37
  66. package/coverage/lcov-report/cwv/index.html +1 -1
  67. package/coverage/lcov-report/generators/_collections/cli-runner.util.ts.html +1 -1
  68. package/coverage/lcov-report/generators/_collections/field-emission.util.ts.html +1 -1
  69. package/coverage/lcov-report/generators/_collections/form-level-emission.util.ts.html +1 -1
  70. package/coverage/lcov-report/generators/_collections/index.html +1 -1
  71. package/coverage/lcov-report/generators/_collections/spec-emission.util.ts.html +33 -33
  72. package/coverage/lcov-report/generators/_collections/test-case-filter.util.ts.html +1 -1
  73. package/coverage/lcov-report/generators/_collections/viewport-emission.util.ts.html +1 -1
  74. package/coverage/lcov-report/generators/form-suite.generator.ts.html +1 -1
  75. package/coverage/lcov-report/generators/index.html +1 -1
  76. package/coverage/lcov-report/generators/viewport-suite.generator.ts.html +1 -1
  77. package/coverage/lcov-report/index.html +10 -10
  78. package/coverage/lcov-report/runtime/_collections/assertion-helpers.util.ts.html +1 -1
  79. package/coverage/lcov-report/runtime/_collections/index.html +1 -1
  80. package/coverage/lcov-report/runtime/_collections/unique-generator.util.ts.html +1 -1
  81. package/coverage/lcov-report/runtime/_collections/wait-helpers.util.ts.html +1 -1
  82. package/coverage/lcov-report/runtime/_services/dialog-page-object.ts.html +1 -1
  83. package/coverage/lcov-report/runtime/_services/field-page-object.ts.html +1 -1
  84. package/coverage/lcov-report/runtime/_services/form-page-object.ts.html +1 -1
  85. package/coverage/lcov-report/runtime/_services/index.html +1 -1
  86. package/coverage/lcov-report/runtime/_services/loader-page-object.ts.html +1 -1
  87. package/coverage/lcov-report/runtime/_services/logger.service.ts.html +1 -1
  88. package/coverage/lcov-report/runtime/_services/login-flow-helper.base.ts.html +1 -1
  89. package/coverage/lcov-report/runtime/_services/nav-page-object.ts.html +1 -1
  90. package/coverage/lcov-report/runtime/_services/toast-page-object.ts.html +1 -1
  91. package/coverage/lcov-report/runtime/_services/wave-2b-page-objects.ts.html +1 -1
  92. package/coverage/lcov-report/runtime/index.html +1 -1
  93. package/coverage/lcov-report/runtime/index.ts.html +1 -1
  94. package/coverage/lcov.info +197 -184
  95. package/coverage/runtime/_collections/assertion-helpers.util.ts.html +1 -1
  96. package/coverage/runtime/_collections/index.html +1 -1
  97. package/coverage/runtime/_collections/unique-generator.util.ts.html +1 -1
  98. package/coverage/runtime/_collections/wait-helpers.util.ts.html +1 -1
  99. package/coverage/runtime/_services/dialog-page-object.ts.html +1 -1
  100. package/coverage/runtime/_services/field-page-object.ts.html +1 -1
  101. package/coverage/runtime/_services/form-page-object.ts.html +1 -1
  102. package/coverage/runtime/_services/index.html +1 -1
  103. package/coverage/runtime/_services/loader-page-object.ts.html +1 -1
  104. package/coverage/runtime/_services/logger.service.ts.html +1 -1
  105. package/coverage/runtime/_services/login-flow-helper.base.ts.html +1 -1
  106. package/coverage/runtime/_services/nav-page-object.ts.html +1 -1
  107. package/coverage/runtime/_services/toast-page-object.ts.html +1 -1
  108. package/coverage/runtime/_services/wave-2b-page-objects.ts.html +1 -1
  109. package/coverage/runtime/index.html +1 -1
  110. package/coverage/runtime/index.ts.html +1 -1
  111. package/coverage/tmp/coverage-224316-1781074340663-0.json +1 -0
  112. package/coverage/tmp/{coverage-196508-1781073401450-0.json → coverage-226744-1781074339654-0.json} +1 -1
  113. package/package.json +1 -1
  114. package/coverage/tmp/coverage-209804-1781073402771-0.json +0 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
3
3
  Minden release a `dynamo-e2e-foundation` HYPERPLAN MP-N ütemezést követi.
4
4
  Verzióformátum: `MM.mm.p` (két-számjegyes major-minor, Dynamo-konvenció).
5
5
 
6
+ ## [01.13.0] — 2026-06-10
7
+
8
+ ### Added (Wave-3 INP interaction-driver — closure)
9
+ - `cwv-emission.util.ts` Wave-3 INP synthetic interaction-driver:
10
+ - `inp_p75_ms` threshold-tal feltételesen emit-eli a szintetikus
11
+ click + Tab + Enter interakció-szekvenciát (50ms settle között)
12
+ - try/catch swallow — interaction-target hiánya nem dob
13
+ - INP page-script interactionId-vel rendelkező event-eket figyel,
14
+ a longestInteraction-t pushja a `__dye2e_cwv_events__`-be
15
+ - **INP mérés most ténylegesen működik** — előtte 0 lett volna a
16
+ navigation-only spec-en
17
+
18
+ ### Test
19
+ - 211/0 Jasmine (207 előbb + 4 INP interaction-driver spec)
20
+ - Coverage: 98.39% / 86.15% / 97.5% / 98.39%
21
+
6
22
  ## [01.12.1] — 2026-06-10
7
23
 
8
24
  ### Fixed (E2E env convention compliance)
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # @futdevpro/dynamo-e2e
2
2
 
3
3
  [![npm](https://img.shields.io/npm/v/@futdevpro/dynamo-e2e.svg?label=npm)](https://www.npmjs.com/package/@futdevpro/dynamo-e2e)
4
- [![coverage](https://img.shields.io/badge/coverage-98.38%25-brightgreen.svg)](./coverage/)
5
- [![specs](https://img.shields.io/badge/specs-206%2F0-brightgreen.svg)](./src/)
4
+ [![coverage](https://img.shields.io/badge/coverage-98.39%25-brightgreen.svg)](./coverage/)
5
+ [![specs](https://img.shields.io/badge/specs-211%2F0-brightgreen.svg)](./src/)
6
6
  [![hyperplan](https://img.shields.io/badge/hyperplan-109%2F112-brightgreen.svg)](./__documentations/plans/dynamo-e2e-foundation/HYPERPLAN.md)
7
7
 
8
8
  End-to-end testing engine for the Dynamo + FDP ecosystem.
@@ -1 +1 @@
1
- {"version":3,"file":"cwv-emission.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/cwv/_collections/cwv-emission.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,6DAA6D,CAAC;AAC5G,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AAGtG;;;;;;;;;;;GAWG;AACH,qBAAa,sBAAsB;IAEjC,MAAM,CAAC,cAAc,CACnB,KAAK,EAAE,+BAA+B,EACtC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,6BAA6B,EACzC,SAAS,EAAE,MAAM,GAChB,MAAM;CAoFV"}
1
+ {"version":3,"file":"cwv-emission.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/cwv/_collections/cwv-emission.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,6DAA6D,CAAC;AAC5G,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AAGtG;;;;;;;;;;;GAWG;AACH,qBAAa,sBAAsB;IAEjC,MAAM,CAAC,cAAc,CACnB,KAAK,EAAE,+BAA+B,EACtC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,6BAA6B,EACzC,SAAS,EAAE,MAAM,GAChB,MAAM;CAiGV"}
@@ -41,6 +41,19 @@ class DyE2E_CWVEmission_Util {
41
41
  const response = await page.goto(${spec_emission_util_1.DyE2E_SpecEmission_Util.valueLiteral(fullPath)});
42
42
  expect(response?.ok()).toBeTruthy();
43
43
  ${readyWait}
44
+ // Wave-3 INP interaction-driver — szintetikus interakciók, hogy INP mérhető legyen.
45
+ // Az INP page-script interactionId-vel rendelkező event-eket figyel.
46
+ if (typeof DYE2E_INP_PAGE_SCRIPT !== 'undefined') {
47
+ // 3 interakció — click + Tab + Enter; biztonsági settle-wait
48
+ try {
49
+ await page.mouse.click(50, 50, { delay: 10 });
50
+ await page.waitForTimeout(50);
51
+ await page.keyboard.press('Tab');
52
+ await page.waitForTimeout(50);
53
+ await page.keyboard.press('Enter');
54
+ await page.waitForTimeout(50);
55
+ } catch (e: unknown) { /* swallow — interaction-target may not exist */ }
56
+ }
44
57
  // Force snapshot — trigger pagehide via page.evaluate (LCP/CLS + opcionálisan INP)
45
58
  await page.evaluate((): void => {
46
59
  const w = window as any;
@@ -1 +1 @@
1
- {"version":3,"file":"cwv-emission.util.js","sourceRoot":"","sources":["../../../../src/_modules/cwv/_collections/cwv-emission.util.ts"],"names":[],"mappings":";;;AAEA,yFAA2F;AAE3F;;;;;;;;;;;GAWG;AACH,MAAa,sBAAsB;IAEjC,MAAM,CAAC,cAAc,CACnB,KAAsC,EACtC,UAAkB,EAClB,UAAyC,EACzC,SAAiB;QAEjB,MAAM,QAAQ,GAAW,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACpF,MAAM,SAAS,GAAW,KAAK,CAAC,YAAY;YAC1C,CAAC,CAAC,sBAAsB,4CAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,0CAA0C;YAC1H,CAAC,CAAC,6CAA6C,CAAC;QAElD,MAAM,UAAU,GAAW;YACzB,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;YACpC,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/B,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;YACpC,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;YACpC,CAAC,MAAM,EAAE,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC;SACvC;aACE,MAAM,CAAC,CAAC,CAAuC,EAAW,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;aACtF,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAuC,EAAU,EAAE,CAC5E,gBAAgB,GAAG,kCAAkC,GAAG,gBAAgB,GAAG,CAAC,WAAW,EAAE,cAAc,SAAS,GAAG,IAAI,0BAA0B,SAAS,OAAO,CAClK;aACA,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO,cAAc,4CAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,4CAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;;;sCAGtG,UAAU;;;;;uCAKT,4CAAuB,CAAC,YAAY,CAAC,QAAQ,CAAC;;MAE/E,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BA6Ce,4CAAuB,CAAC,YAAY,CAAC,SAAS,CAAC;;;2BAGlD,4CAAuB,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC;8BACtD,4CAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;;;IAGzE,UAAU;IACV,CAAC;IACH,CAAC;CACF;AA3FD,wDA2FC"}
1
+ {"version":3,"file":"cwv-emission.util.js","sourceRoot":"","sources":["../../../../src/_modules/cwv/_collections/cwv-emission.util.ts"],"names":[],"mappings":";;;AAEA,yFAA2F;AAE3F;;;;;;;;;;;GAWG;AACH,MAAa,sBAAsB;IAEjC,MAAM,CAAC,cAAc,CACnB,KAAsC,EACtC,UAAkB,EAClB,UAAyC,EACzC,SAAiB;QAEjB,MAAM,QAAQ,GAAW,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACpF,MAAM,SAAS,GAAW,KAAK,CAAC,YAAY;YAC1C,CAAC,CAAC,sBAAsB,4CAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,0CAA0C;YAC1H,CAAC,CAAC,6CAA6C,CAAC;QAElD,MAAM,UAAU,GAAW;YACzB,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;YACpC,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/B,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;YACpC,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;YACpC,CAAC,MAAM,EAAE,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC;SACvC;aACE,MAAM,CAAC,CAAC,CAAuC,EAAW,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;aACtF,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAuC,EAAU,EAAE,CAC5E,gBAAgB,GAAG,kCAAkC,GAAG,gBAAgB,GAAG,CAAC,WAAW,EAAE,cAAc,SAAS,GAAG,IAAI,0BAA0B,SAAS,OAAO,CAClK;aACA,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO,cAAc,4CAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,4CAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;;;sCAGtG,UAAU;;;;;uCAKT,4CAAuB,CAAC,YAAY,CAAC,QAAQ,CAAC;;MAE/E,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BA0De,4CAAuB,CAAC,YAAY,CAAC,SAAS,CAAC;;;2BAGlD,4CAAuB,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC;8BACtD,4CAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;;;IAGzE,UAAU;IACV,CAAC;IACH,CAAC;CACF;AAxGD,wDAwGC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=inp-interaction-driver.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inp-interaction-driver.spec.d.ts","sourceRoot":"","sources":["../../../src/_modules/cwv/inp-interaction-driver.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const cwv_suite_generator_1 = require("./cwv-suite.generator");
4
+ describe('| dynamo-e2e | INP interaction-driver (Wave-3 closure)', () => {
5
+ it('| inp_p75_ms threshold → emit-el szintetikus interakciókat', () => {
6
+ const spec = cwv_suite_generator_1.DyE2E_CWVSuite_Generator.emit({
7
+ routes: [{ key: 'home', path: '/' }],
8
+ thresholds: { lcp_p75_ms: 2500, inp_p75_ms: 200 },
9
+ });
10
+ expect(spec).toContain('page.mouse.click');
11
+ expect(spec).toContain(`page.keyboard.press('Tab')`);
12
+ expect(spec).toContain(`page.keyboard.press('Enter')`);
13
+ });
14
+ it('| inp_p75_ms threshold nélkül NEM emit-eli az INP-driver interakciókat (typeof guard)', () => {
15
+ const spec = cwv_suite_generator_1.DyE2E_CWVSuite_Generator.emit({
16
+ routes: [{ key: 'home', path: '/' }],
17
+ thresholds: { lcp_p75_ms: 2500 },
18
+ });
19
+ // A typeof DYE2E_INP_PAGE_SCRIPT !== 'undefined' guard kondicionalja a mouse.click-et,
20
+ // és a script-deklaráció nincs az emit-ben, tehát az IF nem fut.
21
+ expect(spec).not.toContain('const DYE2E_INP_PAGE_SCRIPT');
22
+ // Az interakció-block változatlanul a spec-ben (futtatás-időben skip-elve a guard alatt)
23
+ expect(spec).toContain('Wave-3 INP interaction-driver');
24
+ });
25
+ it('| try/catch swallow — interaction-target hiánya nem dob', () => {
26
+ const spec = cwv_suite_generator_1.DyE2E_CWVSuite_Generator.emit({
27
+ routes: [{ key: 'home', path: '/' }],
28
+ thresholds: { inp_p75_ms: 200 },
29
+ });
30
+ expect(spec).toContain('try');
31
+ expect(spec).toContain('catch');
32
+ expect(spec).toContain('swallow');
33
+ });
34
+ it('| settle-wait minden interakció között', () => {
35
+ const spec = cwv_suite_generator_1.DyE2E_CWVSuite_Generator.emit({
36
+ routes: [{ key: 'home', path: '/' }],
37
+ thresholds: { inp_p75_ms: 200 },
38
+ });
39
+ const settleCount = (spec.match(/waitForTimeout\(50\)/g) ?? []).length;
40
+ // 3 settle-wait — minden interakció után
41
+ expect(settleCount).toBeGreaterThanOrEqual(3);
42
+ });
43
+ });
44
+ //# sourceMappingURL=inp-interaction-driver.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inp-interaction-driver.spec.js","sourceRoot":"","sources":["../../../src/_modules/cwv/inp-interaction-driver.spec.ts"],"names":[],"mappings":";;AAAA,+DAAiE;AAEjE,QAAQ,CAAC,wDAAwD,EAAE,GAAS,EAAE;IAE5E,EAAE,CAAC,4DAA4D,EAAE,GAAS,EAAE;QAC1E,MAAM,IAAI,GAAW,8CAAwB,CAAC,IAAI,CAAC;YACjD,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;YACpC,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE;SAClD,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uFAAuF,EAAE,GAAS,EAAE;QACrG,MAAM,IAAI,GAAW,8CAAwB,CAAC,IAAI,CAAC;YACjD,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;YACpC,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;SACjC,CAAC,CAAC;QACH,uFAAuF;QACvF,iEAAiE;QACjE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QAC1D,yFAAyF;QACzF,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAS,EAAE;QACvE,MAAM,IAAI,GAAW,8CAAwB,CAAC,IAAI,CAAC;YACjD,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;YACpC,UAAU,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE;SAChC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAS,EAAE;QACtD,MAAM,IAAI,GAAW,8CAAwB,CAAC,IAAI,CAAC;YACjD,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;YACpC,UAAU,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE;SAChC,CAAC,CAAC;QACH,MAAM,WAAW,GAAW,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAC/E,yCAAyC;QACzC,MAAM,CAAC,WAAW,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AAEL,CAAC,CAAC,CAAC"}
@@ -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-10T06:36:43.161Z
104
+ at 2026-06-10T06:52:20.935Z
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -82,7 +82,7 @@ export * from './test-case-sets/field-type-registry.const';
82
82
  <div class='footer quiet pad2 space-top1 center small'>
83
83
  Code coverage generated by
84
84
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
85
- at 2026-06-10T06:36:43.161Z
85
+ at 2026-06-10T06:52:20.935Z
86
86
  </div>
87
87
  <script src="../../prettify.js"></script>
88
88
  <script>
@@ -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-10T06:36:43.161Z
104
+ at 2026-06-10T06:52:20.935Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -157,7 +157,7 @@ export class DyE2E_TestId_Util {
157
157
  <div class='footer quiet pad2 space-top1 center small'>
158
158
  Code coverage generated by
159
159
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
160
- at 2026-06-10T06:36:43.161Z
160
+ at 2026-06-10T06:52:20.935Z
161
161
  </div>
162
162
  <script src="../../../prettify.js"></script>
163
163
  <script>
@@ -130,7 +130,7 @@ export enum DyE2E_CWVMetric_Type {
130
130
  <div class='footer quiet pad2 space-top1 center small'>
131
131
  Code coverage generated by
132
132
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
133
- at 2026-06-10T06:36:43.161Z
133
+ at 2026-06-10T06:52:20.935Z
134
134
  </div>
135
135
  <script src="../../prettify.js"></script>
136
136
  <script>
@@ -379,7 +379,7 @@ export enum DyE2E_FieldTestCase_Type {
379
379
  <div class='footer quiet pad2 space-top1 center small'>
380
380
  Code coverage generated by
381
381
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
382
- at 2026-06-10T06:36:43.161Z
382
+ at 2026-06-10T06:52:20.935Z
383
383
  </div>
384
384
  <script src="../../prettify.js"></script>
385
385
  <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-10T06:36:43.161Z
179
+ at 2026-06-10T06:52:20.935Z
180
180
  </div>
181
181
  <script src="../../prettify.js"></script>
182
182
  <script>
@@ -85,7 +85,7 @@ export * from './test-run-mode-type.enum';
85
85
  <div class='footer quiet pad2 space-top1 center small'>
86
86
  Code coverage generated by
87
87
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
88
- at 2026-06-10T06:36:43.161Z
88
+ at 2026-06-10T06:52:20.935Z
89
89
  </div>
90
90
  <script src="../../prettify.js"></script>
91
91
  <script>
@@ -112,7 +112,7 @@ export enum DyE2E_StandardViewport_Type {
112
112
  <div class='footer quiet pad2 space-top1 center small'>
113
113
  Code coverage generated by
114
114
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
115
- at 2026-06-10T06:36:43.161Z
115
+ at 2026-06-10T06:52:20.935Z
116
116
  </div>
117
117
  <script src="../../prettify.js"></script>
118
118
  <script>
@@ -118,7 +118,7 @@ export enum DyE2E_TestExpectation_Type {
118
118
  <div class='footer quiet pad2 space-top1 center small'>
119
119
  Code coverage generated by
120
120
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
121
- at 2026-06-10T06:36:43.161Z
121
+ at 2026-06-10T06:52:20.935Z
122
122
  </div>
123
123
  <script src="../../prettify.js"></script>
124
124
  <script>
@@ -115,7 +115,7 @@ export enum DyE2E_TestRunMode_Type {
115
115
  <div class='footer quiet pad2 space-top1 center small'>
116
116
  Code coverage generated by
117
117
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
118
- at 2026-06-10T06:36:43.161Z
118
+ at 2026-06-10T06:52:20.935Z
119
119
  </div>
120
120
  <script src="../../prettify.js"></script>
121
121
  <script>
@@ -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-10T06:36:43.161Z
104
+ at 2026-06-10T06:52:20.935Z
105
105
  </div>
106
106
  <script src="../prettify.js"></script>
107
107
  <script>
@@ -106,7 +106,7 @@ export * from './_collections/utils/test-id.util';
106
106
  <div class='footer quiet pad2 space-top1 center small'>
107
107
  Code coverage generated by
108
108
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
109
- at 2026-06-10T06:36:43.161Z
109
+ at 2026-06-10T06:52:20.935Z
110
110
  </div>
111
111
  <script src="../prettify.js"></script>
112
112
  <script>
@@ -226,7 +226,7 @@ export class DyE2E_CWVAggregator_Util {
226
226
  <div class='footer quiet pad2 space-top1 center small'>
227
227
  Code coverage generated by
228
228
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
229
- at 2026-06-10T06:36:43.161Z
229
+ at 2026-06-10T06:52:20.935Z
230
230
  </div>
231
231
  <script src="../../prettify.js"></script>
232
232
  <script>
@@ -340,7 +340,7 @@ export class DyE2E_CWVComparison_Util {
340
340
  <div class='footer quiet pad2 space-top1 center small'>
341
341
  Code coverage generated by
342
342
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
343
- at 2026-06-10T06:36:43.161Z
343
+ at 2026-06-10T06:52:20.935Z
344
344
  </div>
345
345
  <script src="../../prettify.js"></script>
346
346
  <script>
@@ -538,7 +538,7 @@ export class DyE2E_CWVDiagnose_Util {
538
538
  <div class='footer quiet pad2 space-top1 center small'>
539
539
  Code coverage generated by
540
540
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
541
- at 2026-06-10T06:36:43.161Z
541
+ at 2026-06-10T06:52:20.935Z
542
542
  </div>
543
543
  <script src="../../prettify.js"></script>
544
544
  <script>
@@ -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'>108/108</span>
28
+ <span class='fraction'>121/121</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'>108/108</span>
49
+ <span class='fraction'>121/121</span>
50
50
  </div>
51
51
 
52
52
 
@@ -171,7 +171,20 @@
171
171
  <a name='L106'></a><a href='#L106'>106</a>
172
172
  <a name='L107'></a><a href='#L107'>107</a>
173
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>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
175
188
  <span class="cline-any cline-yes">1x</span>
176
189
  <span class="cline-any cline-yes">1x</span>
177
190
  <span class="cline-any cline-yes">1x</span>
@@ -190,94 +203,107 @@
190
203
  <span class="cline-any cline-yes">1x</span>
191
204
  <span class="cline-any cline-yes">1x</span>
192
205
  <span class="cline-any cline-yes">1x</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>
206
+ <span class="cline-any cline-yes">16x</span>
207
+ <span class="cline-any cline-yes">16x</span>
208
+ <span class="cline-any cline-yes">16x</span>
209
+ <span class="cline-any cline-yes">16x</span>
210
+ <span class="cline-any cline-yes">16x</span>
211
+ <span class="cline-any cline-yes">16x</span>
212
+ <span class="cline-any cline-yes">16x</span>
213
+ <span class="cline-any cline-yes">16x</span>
214
+ <span class="cline-any cline-yes">16x</span>
215
+ <span class="cline-any cline-yes">16x</span>
216
+ <span class="cline-any cline-yes">16x</span>
217
+ <span class="cline-any cline-yes">16x</span>
218
+ <span class="cline-any cline-yes">16x</span>
219
+ <span class="cline-any cline-yes">16x</span>
220
+ <span class="cline-any cline-yes">16x</span>
221
+ <span class="cline-any cline-yes">16x</span>
222
+ <span class="cline-any cline-yes">16x</span>
223
+ <span class="cline-any cline-yes">16x</span>
224
+ <span class="cline-any cline-yes">16x</span>
225
+ <span class="cline-any cline-yes">16x</span>
226
+ <span class="cline-any cline-yes">16x</span>
227
+ <span class="cline-any cline-yes">16x</span>
228
+ <span class="cline-any cline-yes">16x</span>
229
+ <span class="cline-any cline-yes">16x</span>
230
+ <span class="cline-any cline-yes">16x</span>
231
+ <span class="cline-any cline-yes">16x</span>
232
+ <span class="cline-any cline-yes">16x</span>
233
+ <span class="cline-any cline-yes">16x</span>
234
+ <span class="cline-any cline-yes">16x</span>
235
+ <span class="cline-any cline-yes">16x</span>
236
+ <span class="cline-any cline-yes">16x</span>
237
+ <span class="cline-any cline-yes">16x</span>
238
+ <span class="cline-any cline-yes">16x</span>
239
+ <span class="cline-any cline-yes">16x</span>
240
+ <span class="cline-any cline-yes">16x</span>
241
+ <span class="cline-any cline-yes">16x</span>
242
+ <span class="cline-any cline-yes">16x</span>
243
+ <span class="cline-any cline-yes">16x</span>
244
+ <span class="cline-any cline-yes">16x</span>
245
+ <span class="cline-any cline-yes">16x</span>
246
+ <span class="cline-any cline-yes">16x</span>
247
+ <span class="cline-any cline-yes">16x</span>
248
+ <span class="cline-any cline-yes">16x</span>
249
+ <span class="cline-any cline-yes">16x</span>
250
+ <span class="cline-any cline-yes">16x</span>
251
+ <span class="cline-any cline-yes">16x</span>
252
+ <span class="cline-any cline-yes">16x</span>
253
+ <span class="cline-any cline-yes">16x</span>
254
+ <span class="cline-any cline-yes">16x</span>
255
+ <span class="cline-any cline-yes">16x</span>
256
+ <span class="cline-any cline-yes">16x</span>
257
+ <span class="cline-any cline-yes">16x</span>
258
+ <span class="cline-any cline-yes">16x</span>
259
+ <span class="cline-any cline-yes">16x</span>
260
+ <span class="cline-any cline-yes">16x</span>
261
+ <span class="cline-any cline-yes">16x</span>
262
+ <span class="cline-any cline-yes">16x</span>
263
+ <span class="cline-any cline-yes">16x</span>
264
+ <span class="cline-any cline-yes">16x</span>
265
+ <span class="cline-any cline-yes">16x</span>
266
+ <span class="cline-any cline-yes">16x</span>
267
+ <span class="cline-any cline-yes">16x</span>
268
+ <span class="cline-any cline-yes">16x</span>
269
+ <span class="cline-any cline-yes">16x</span>
270
+ <span class="cline-any cline-yes">16x</span>
271
+ <span class="cline-any cline-yes">16x</span>
272
+ <span class="cline-any cline-yes">16x</span>
273
+ <span class="cline-any cline-yes">16x</span>
274
+ <span class="cline-any cline-yes">16x</span>
275
+ <span class="cline-any cline-yes">16x</span>
276
+ <span class="cline-any cline-yes">16x</span>
277
+ <span class="cline-any cline-yes">16x</span>
278
+ <span class="cline-any cline-yes">16x</span>
279
+ <span class="cline-any cline-yes">16x</span>
280
+ <span class="cline-any cline-yes">16x</span>
281
+ <span class="cline-any cline-yes">16x</span>
282
+ <span class="cline-any cline-yes">16x</span>
283
+ <span class="cline-any cline-yes">16x</span>
284
+ <span class="cline-any cline-yes">16x</span>
285
+ <span class="cline-any cline-yes">16x</span>
286
+ <span class="cline-any cline-yes">16x</span>
287
+ <span class="cline-any cline-yes">16x</span>
288
+ <span class="cline-any cline-yes">16x</span>
289
+ <span class="cline-any cline-yes">16x</span>
290
+ <span class="cline-any cline-yes">16x</span>
291
+ <span class="cline-any cline-yes">16x</span>
292
+ <span class="cline-any cline-yes">16x</span>
293
+ <span class="cline-any cline-yes">16x</span>
294
+ <span class="cline-any cline-yes">16x</span>
295
+ <span class="cline-any cline-yes">16x</span>
296
+ <span class="cline-any cline-yes">16x</span>
297
+ <span class="cline-any cline-yes">16x</span>
298
+ <span class="cline-any cline-yes">16x</span>
299
+ <span class="cline-any cline-yes">16x</span>
300
+ <span class="cline-any cline-yes">16x</span>
301
+ <span class="cline-any cline-yes">16x</span>
302
+ <span class="cline-any cline-yes">16x</span>
303
+ <span class="cline-any cline-yes">16x</span>
304
+ <span class="cline-any cline-yes">16x</span>
305
+ <span class="cline-any cline-yes">16x</span>
306
+ <span class="cline-any cline-yes">16x</span>
281
307
  <span class="cline-any cline-yes">1x</span>
282
308
  <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';
283
309
  import { DyE2E_RouteDescriptor_Interface } from '../../generators/_models/route-descriptor.interface';
@@ -332,6 +358,19 @@ export class DyE2E_CWVEmission_Util {
332
358
  const response = await page.goto(${DyE2E_SpecEmission_Util.valueLiteral(fullPath)});
333
359
  expect(response?.ok()).toBeTruthy();
334
360
  ${readyWait}
361
+ // Wave-3 INP interaction-driver — szintetikus interakciók, hogy INP mérhető legyen.
362
+ // Az INP page-script interactionId-vel rendelkező event-eket figyel.
363
+ if (typeof DYE2E_INP_PAGE_SCRIPT !== 'undefined') {
364
+ // 3 interakció — click + Tab + Enter; biztonsági settle-wait
365
+ try {
366
+ await page.mouse.click(50, 50, { delay: 10 });
367
+ await page.waitForTimeout(50);
368
+ await page.keyboard.press('Tab');
369
+ await page.waitForTimeout(50);
370
+ await page.keyboard.press('Enter');
371
+ await page.waitForTimeout(50);
372
+ } catch (e: unknown) { /* swallow — interaction-target may not exist */ }
373
+ }
335
374
  // Force snapshot — trigger pagehide via page.evaluate (LCP/CLS + opcionálisan INP)
336
375
  await page.evaluate((): void =&gt; {
337
376
  const w = window as any;
@@ -394,7 +433,7 @@ export class DyE2E_CWVEmission_Util {
394
433
  <div class='footer quiet pad2 space-top1 center small'>
395
434
  Code coverage generated by
396
435
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
397
- at 2026-06-10T06:36:43.161Z
436
+ at 2026-06-10T06:52:20.935Z
398
437
  </div>
399
438
  <script src="../../prettify.js"></script>
400
439
  <script>
@@ -310,7 +310,7 @@ export class DyE2E_CWVSummarize_Util {
310
310
  <div class='footer quiet pad2 space-top1 center small'>
311
311
  Code coverage generated by
312
312
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
313
- at 2026-06-10T06:36:43.161Z
313
+ at 2026-06-10T06:52:20.935Z
314
314
  </div>
315
315
  <script src="../../prettify.js"></script>
316
316
  <script>