@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
@@ -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:52.028Z
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.490Z
319
+ at 2026-06-10T05:40:52.028Z
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:28:38.490Z
247
+ at 2026-06-10T05:40:52.028Z
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:28:38.490Z
104
+ at 2026-06-10T05:40:52.028Z
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:28:38.490Z
349
+ at 2026-06-10T05:40:52.028Z
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:28:38.490Z
592
+ at 2026-06-10T05:40:52.028Z
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:28:38.490Z
208
+ at 2026-06-10T05:40:52.028Z
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:28:38.490Z
179
+ at 2026-06-10T05:40:52.028Z
180
180
  </div>
181
181
  <script src="../../prettify.js"></script>
182
182
  <script>