@futdevpro/dynamo-e2e 1.10.0 → 1.11.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 (126) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +2 -2
  3. package/bin/dye2e.js +25 -0
  4. package/build/_modules/cwv/_collections/cwv-comparison.util.d.ts +48 -0
  5. package/build/_modules/cwv/_collections/cwv-comparison.util.d.ts.map +1 -0
  6. package/build/_modules/cwv/_collections/cwv-comparison.util.js +59 -0
  7. package/build/_modules/cwv/_collections/cwv-comparison.util.js.map +1 -0
  8. package/build/_modules/cwv/cwv-comparison.spec.d.ts +2 -0
  9. package/build/_modules/cwv/cwv-comparison.spec.d.ts.map +1 -0
  10. package/build/_modules/cwv/cwv-comparison.spec.js +77 -0
  11. package/build/_modules/cwv/cwv-comparison.spec.js.map +1 -0
  12. package/build/_modules/cwv/index.d.ts +1 -0
  13. package/build/_modules/cwv/index.d.ts.map +1 -1
  14. package/build/_modules/cwv/index.js +1 -0
  15. package/build/_modules/cwv/index.js.map +1 -1
  16. package/build/_modules/generators/_collections/cli-runner.util.d.ts +5 -0
  17. package/build/_modules/generators/_collections/cli-runner.util.d.ts.map +1 -1
  18. package/build/_modules/generators/_collections/cli-runner.util.js +66 -0
  19. package/build/_modules/generators/_collections/cli-runner.util.js.map +1 -1
  20. package/build/_modules/generators/bootstrap.spec.d.ts +2 -0
  21. package/build/_modules/generators/bootstrap.spec.d.ts.map +1 -0
  22. package/build/_modules/generators/bootstrap.spec.js +38 -0
  23. package/build/_modules/generators/bootstrap.spec.js.map +1 -0
  24. package/coverage/contracts/_collections/index.html +1 -1
  25. package/coverage/contracts/_collections/index.ts.html +1 -1
  26. package/coverage/contracts/_collections/utils/index.html +1 -1
  27. package/coverage/contracts/_collections/utils/test-id.util.ts.html +1 -1
  28. package/coverage/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
  29. package/coverage/contracts/_enums/field-test-case-type.enum.ts.html +1 -1
  30. package/coverage/contracts/_enums/index.html +1 -1
  31. package/coverage/contracts/_enums/index.ts.html +1 -1
  32. package/coverage/contracts/_enums/standard-viewport.enum.ts.html +1 -1
  33. package/coverage/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
  34. package/coverage/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
  35. package/coverage/contracts/index.html +1 -1
  36. package/coverage/contracts/index.ts.html +1 -1
  37. package/coverage/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
  38. package/coverage/cwv/_collections/cwv-comparison.util.ts.html +355 -0
  39. package/coverage/cwv/_collections/cwv-diagnose.util.ts.html +1 -1
  40. package/coverage/cwv/_collections/cwv-emission.util.ts.html +1 -1
  41. package/coverage/cwv/_collections/index.html +23 -8
  42. package/coverage/cwv/_collections/inp-interaction-script.const.ts.html +1 -1
  43. package/coverage/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
  44. package/coverage/cwv/cwv-suite.generator.ts.html +1 -1
  45. package/coverage/cwv/index.html +1 -1
  46. package/coverage/generators/_collections/cli-runner.util.ts.html +240 -39
  47. package/coverage/generators/_collections/field-emission.util.ts.html +1 -1
  48. package/coverage/generators/_collections/form-level-emission.util.ts.html +1 -1
  49. package/coverage/generators/_collections/index.html +13 -13
  50. package/coverage/generators/_collections/spec-emission.util.ts.html +1 -1
  51. package/coverage/generators/_collections/test-case-filter.util.ts.html +1 -1
  52. package/coverage/generators/_collections/viewport-emission.util.ts.html +1 -1
  53. package/coverage/generators/form-suite.generator.ts.html +1 -1
  54. package/coverage/generators/index.html +1 -1
  55. package/coverage/generators/viewport-suite.generator.ts.html +1 -1
  56. package/coverage/index.html +26 -26
  57. package/coverage/lcov-report/contracts/_collections/index.html +1 -1
  58. package/coverage/lcov-report/contracts/_collections/index.ts.html +1 -1
  59. package/coverage/lcov-report/contracts/_collections/utils/index.html +1 -1
  60. package/coverage/lcov-report/contracts/_collections/utils/test-id.util.ts.html +1 -1
  61. package/coverage/lcov-report/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
  62. package/coverage/lcov-report/contracts/_enums/field-test-case-type.enum.ts.html +1 -1
  63. package/coverage/lcov-report/contracts/_enums/index.html +1 -1
  64. package/coverage/lcov-report/contracts/_enums/index.ts.html +1 -1
  65. package/coverage/lcov-report/contracts/_enums/standard-viewport.enum.ts.html +1 -1
  66. package/coverage/lcov-report/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
  67. package/coverage/lcov-report/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
  68. package/coverage/lcov-report/contracts/index.html +1 -1
  69. package/coverage/lcov-report/contracts/index.ts.html +1 -1
  70. package/coverage/lcov-report/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
  71. package/coverage/lcov-report/cwv/_collections/cwv-comparison.util.ts.html +355 -0
  72. package/coverage/lcov-report/cwv/_collections/cwv-diagnose.util.ts.html +1 -1
  73. package/coverage/lcov-report/cwv/_collections/cwv-emission.util.ts.html +1 -1
  74. package/coverage/lcov-report/cwv/_collections/index.html +23 -8
  75. package/coverage/lcov-report/cwv/_collections/inp-interaction-script.const.ts.html +1 -1
  76. package/coverage/lcov-report/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
  77. package/coverage/lcov-report/cwv/cwv-suite.generator.ts.html +1 -1
  78. package/coverage/lcov-report/cwv/index.html +1 -1
  79. package/coverage/lcov-report/generators/_collections/cli-runner.util.ts.html +240 -39
  80. package/coverage/lcov-report/generators/_collections/field-emission.util.ts.html +1 -1
  81. package/coverage/lcov-report/generators/_collections/form-level-emission.util.ts.html +1 -1
  82. package/coverage/lcov-report/generators/_collections/index.html +13 -13
  83. package/coverage/lcov-report/generators/_collections/spec-emission.util.ts.html +1 -1
  84. package/coverage/lcov-report/generators/_collections/test-case-filter.util.ts.html +1 -1
  85. package/coverage/lcov-report/generators/_collections/viewport-emission.util.ts.html +1 -1
  86. package/coverage/lcov-report/generators/form-suite.generator.ts.html +1 -1
  87. package/coverage/lcov-report/generators/index.html +1 -1
  88. package/coverage/lcov-report/generators/viewport-suite.generator.ts.html +1 -1
  89. package/coverage/lcov-report/index.html +26 -26
  90. package/coverage/lcov-report/runtime/_collections/assertion-helpers.util.ts.html +1 -1
  91. package/coverage/lcov-report/runtime/_collections/index.html +1 -1
  92. package/coverage/lcov-report/runtime/_collections/unique-generator.util.ts.html +1 -1
  93. package/coverage/lcov-report/runtime/_collections/wait-helpers.util.ts.html +1 -1
  94. package/coverage/lcov-report/runtime/_services/dialog-page-object.ts.html +1 -1
  95. package/coverage/lcov-report/runtime/_services/field-page-object.ts.html +1 -1
  96. package/coverage/lcov-report/runtime/_services/form-page-object.ts.html +1 -1
  97. package/coverage/lcov-report/runtime/_services/index.html +1 -1
  98. package/coverage/lcov-report/runtime/_services/loader-page-object.ts.html +1 -1
  99. package/coverage/lcov-report/runtime/_services/logger.service.ts.html +1 -1
  100. package/coverage/lcov-report/runtime/_services/login-flow-helper.base.ts.html +1 -1
  101. package/coverage/lcov-report/runtime/_services/nav-page-object.ts.html +1 -1
  102. package/coverage/lcov-report/runtime/_services/toast-page-object.ts.html +1 -1
  103. package/coverage/lcov-report/runtime/_services/wave-2b-page-objects.ts.html +1 -1
  104. package/coverage/lcov-report/runtime/index.html +1 -1
  105. package/coverage/lcov-report/runtime/index.ts.html +1 -1
  106. package/coverage/lcov.info +335 -136
  107. package/coverage/runtime/_collections/assertion-helpers.util.ts.html +1 -1
  108. package/coverage/runtime/_collections/index.html +1 -1
  109. package/coverage/runtime/_collections/unique-generator.util.ts.html +1 -1
  110. package/coverage/runtime/_collections/wait-helpers.util.ts.html +1 -1
  111. package/coverage/runtime/_services/dialog-page-object.ts.html +1 -1
  112. package/coverage/runtime/_services/field-page-object.ts.html +1 -1
  113. package/coverage/runtime/_services/form-page-object.ts.html +1 -1
  114. package/coverage/runtime/_services/index.html +1 -1
  115. package/coverage/runtime/_services/loader-page-object.ts.html +1 -1
  116. package/coverage/runtime/_services/logger.service.ts.html +1 -1
  117. package/coverage/runtime/_services/login-flow-helper.base.ts.html +1 -1
  118. package/coverage/runtime/_services/nav-page-object.ts.html +1 -1
  119. package/coverage/runtime/_services/toast-page-object.ts.html +1 -1
  120. package/coverage/runtime/_services/wave-2b-page-objects.ts.html +1 -1
  121. package/coverage/runtime/index.html +1 -1
  122. package/coverage/runtime/index.ts.html +1 -1
  123. package/coverage/tmp/coverage-221932-1781072712070-0.json +1 -0
  124. package/coverage/tmp/{coverage-224932-1781071393426-0.json → coverage-224696-1781072711012-0.json} +1 -1
  125. package/package.json +1 -1
  126. package/coverage/tmp/coverage-226960-1781071394780-0.json +0 -1
@@ -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:03:15.288Z
160
+ at 2026-06-10T06:25:12.717Z
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:03:15.288Z
133
+ at 2026-06-10T06:25:12.717Z
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:03:15.288Z
382
+ at 2026-06-10T06:25:12.717Z
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:03:15.288Z
179
+ at 2026-06-10T06:25:12.717Z
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:03:15.288Z
88
+ at 2026-06-10T06:25:12.717Z
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:03:15.288Z
115
+ at 2026-06-10T06:25:12.717Z
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:03:15.288Z
121
+ at 2026-06-10T06:25:12.717Z
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:03:15.288Z
118
+ at 2026-06-10T06:25:12.717Z
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:03:15.288Z
104
+ at 2026-06-10T06:25:12.717Z
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:03:15.288Z
109
+ at 2026-06-10T06:25:12.717Z
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:03:15.288Z
229
+ at 2026-06-10T06:25:12.717Z
230
230
  </div>
231
231
  <script src="../../prettify.js"></script>
232
232
  <script>
@@ -0,0 +1,355 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for cwv/_collections/cwv-comparison.util.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> cwv-comparison.util.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'>90/90</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">83.33% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>20/24</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'>3/3</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'>90/90</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>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a></td><td class="line-coverage quiet"><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">9x</span>
198
+ <span class="cline-any cline-yes">9x</span>
199
+ <span class="cline-any cline-yes">9x</span>
200
+ <span class="cline-any cline-yes">9x</span>
201
+ <span class="cline-any cline-yes">9x</span>
202
+ <span class="cline-any cline-yes">9x</span>
203
+ <span class="cline-any cline-yes">9x</span>
204
+ <span class="cline-any cline-yes">9x</span>
205
+ <span class="cline-any cline-yes">9x</span>
206
+ <span class="cline-any cline-yes">9x</span>
207
+ <span class="cline-any cline-yes">9x</span>
208
+ <span class="cline-any cline-yes">9x</span>
209
+ <span class="cline-any cline-yes">9x</span>
210
+ <span class="cline-any cline-yes">45x</span>
211
+ <span class="cline-any cline-yes">45x</span>
212
+ <span class="cline-any cline-yes">45x</span>
213
+ <span class="cline-any cline-yes">34x</span>
214
+ <span class="cline-any cline-yes">34x</span>
215
+ <span class="cline-any cline-yes">11x</span>
216
+ <span class="cline-any cline-yes">45x</span>
217
+ <span class="cline-any cline-yes">45x</span>
218
+ <span class="cline-any cline-yes">45x</span>
219
+ <span class="cline-any cline-yes">7x</span>
220
+ <span class="cline-any cline-yes">45x</span>
221
+ <span class="cline-any cline-yes">45x</span>
222
+ <span class="cline-any cline-yes">45x</span>
223
+ <span class="cline-any cline-yes">9x</span>
224
+ <span class="cline-any cline-yes">9x</span>
225
+ <span class="cline-any cline-yes">1x</span>
226
+ <span class="cline-any cline-yes">1x</span>
227
+ <span class="cline-any cline-yes">1x</span>
228
+ <span class="cline-any cline-yes">1x</span>
229
+ <span class="cline-any cline-yes">1x</span>
230
+ <span class="cline-any cline-yes">1x</span>
231
+ <span class="cline-any cline-yes">1x</span>
232
+ <span class="cline-any cline-yes">1x</span>
233
+ <span class="cline-any cline-yes">2x</span>
234
+ <span class="cline-any cline-yes">1x</span>
235
+ <span class="cline-any cline-yes">1x</span>
236
+ <span class="cline-any cline-yes">1x</span>
237
+ <span class="cline-any cline-yes">1x</span>
238
+ <span class="cline-any cline-yes">1x</span>
239
+ <span class="cline-any cline-yes">1x</span>
240
+ <span class="cline-any cline-yes">1x</span>
241
+ <span class="cline-any cline-yes">1x</span>
242
+ <span class="cline-any cline-yes">1x</span>
243
+ <span class="cline-any cline-yes">1x</span>
244
+ <span class="cline-any cline-yes">1x</span>
245
+ <span class="cline-any cline-yes">1x</span>
246
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { DyE2E_CWVMetric_Type } from '../../contracts/_enums/cwv-metric-type.enum';
247
+ &nbsp;
248
+ /**
249
+ * MP-05/Wave-3 — CWV report comparison util.
250
+ *
251
+ * Két JSON-report-ot összevet (régi vs új) és visszaadja a regressziókat.
252
+ * Tipikus use-case: nightly CICD vs előző-stable, vagy PR-build vs main.
253
+ */
254
+ &nbsp;
255
+ export interface DyE2E_CWVComparison_Summary {
256
+ metric: DyE2E_CWVMetric_Type;
257
+ oldP75: number;
258
+ newP75: number;
259
+ /** Delta = newP75 − oldP75. Pozitív = romlás (LCP/CLS/INP/TTFB/FCP-nél). */
260
+ delta: number;
261
+ /** Százalékos változás. */
262
+ deltaPercent: number;
263
+ /** "improved" | "regressed" | "stable". */
264
+ status: 'improved' | 'regressed' | 'stable';
265
+ }
266
+ &nbsp;
267
+ export interface DyE2E_CWVReport_Shape {
268
+ route?: string;
269
+ summary?: Record&lt;string, { p75?: number; n?: number }&gt;;
270
+ raw?: Array&lt;{ metric?: string; value?: number; iter?: number }&gt;;
271
+ [extra: string]: unknown;
272
+ }
273
+ &nbsp;
274
+ export class DyE2E_CWVComparison_Util {
275
+ &nbsp;
276
+ /** Delta-tűrés (% alatti változás "stable"-nek számít). Default 5%. */
277
+ static defaultStableTolerancePercent: number = 5;
278
+ &nbsp;
279
+ /**
280
+ * Összevet két CWV-JSON-report-ot.
281
+ *
282
+ * @param oldReport — előző (baseline) report
283
+ * @param newReport — új (current) report
284
+ * @param tolerance — % alatti változás "stable". Default `defaultStableTolerancePercent`.
285
+ */
286
+ static compareReports(
287
+ oldReport: DyE2E_CWVReport_Shape,
288
+ newReport: DyE2E_CWVReport_Shape,
289
+ tolerance: number = DyE2E_CWVComparison_Util.defaultStableTolerancePercent,
290
+ ): DyE2E_CWVComparison_Summary[] {
291
+ const metrics: DyE2E_CWVMetric_Type[] = [
292
+ DyE2E_CWVMetric_Type.lcp,
293
+ DyE2E_CWVMetric_Type.cls,
294
+ DyE2E_CWVMetric_Type.inp,
295
+ DyE2E_CWVMetric_Type.ttfb,
296
+ DyE2E_CWVMetric_Type.fcp,
297
+ ];
298
+ const result: DyE2E_CWVComparison_Summary[] = [];
299
+ for (const metric of metrics) {
300
+ const oldP75: number = oldReport.summary?.[metric]?.p75 ?? NaN;
301
+ const newP75: number = newReport.summary?.[metric]?.p75 ?? NaN;
302
+ if (!isFinite(oldP75) || !isFinite(newP75)) {
303
+ continue;
304
+ }
305
+ const delta: number = newP75 - oldP75;
306
+ const deltaPercent: number = oldP75 &gt; 0 ? (delta / oldP75) * 100 <span class="branch-0 cbranch-no" title="branch not covered" >: 0;</span>
307
+ const status: 'improved' | 'regressed' | 'stable' =
308
+ Math.abs(deltaPercent) &lt;= tolerance ? 'stable' :
309
+ delta &lt; 0 ? 'improved' :
310
+ 'regressed';
311
+ result.push({ metric, oldP75, newP75, delta, deltaPercent, status });
312
+ }
313
+ return result;
314
+ }
315
+ &nbsp;
316
+ /** Csak a regresszióknak a leírása (kiemelve). */
317
+ static regressionsOnly(comparisons: DyE2E_CWVComparison_Summary[]): DyE2E_CWVComparison_Summary[] {
318
+ return comparisons.filter((c: DyE2E_CWVComparison_Summary): boolean =&gt; c.status === 'regressed');
319
+ }
320
+ &nbsp;
321
+ /** Ember-olvasható összegzés markdown-tablázatra. */
322
+ static formatMarkdownTable(comparisons: DyE2E_CWVComparison_Summary[]): string {
323
+ if (comparisons.length === 0) {
324
+ return '_No comparable metrics._';
325
+ }
326
+ const header: string = '| Metric | Old p75 | New p75 | Delta | Δ% | Status |\n|---|---|---|---|---|---|';
327
+ const rows: string[] = comparisons.map((c: DyE2E_CWVComparison_Summary): string =&gt; {
328
+ const unit: string = c.metric === DyE2E_CWVMetric_Type.cls <span class="branch-0 cbranch-no" title="branch not covered" >? '' </span>: 'ms';
329
+ const icon: string = c.status === 'improved' <span class="branch-0 cbranch-no" title="branch not covered" >? '🟢' </span>:
330
+ c.status === 'regressed' ? '🔴' <span class="branch-0 cbranch-no" title="branch not covered" >: '⚪';</span>
331
+ return `| ${c.metric.toUpperCase()} | ${c.oldP75.toFixed(2)}${unit} | ${c.newP75.toFixed(2)}${unit} | ${c.delta.toFixed(2)}${unit} | ${c.deltaPercent.toFixed(1)}% | ${icon} ${c.status} |`;
332
+ });
333
+ return `${header}\n${rows.join('\n')}`;
334
+ }
335
+ }
336
+ &nbsp;</pre></td></tr></table></pre>
337
+
338
+ <div class='push'></div><!-- for sticky footer -->
339
+ </div><!-- /wrapper -->
340
+ <div class='footer quiet pad2 space-top1 center small'>
341
+ Code coverage generated by
342
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
343
+ at 2026-06-10T06:25:12.717Z
344
+ </div>
345
+ <script src="../../prettify.js"></script>
346
+ <script>
347
+ window.onload = function () {
348
+ prettyPrint();
349
+ };
350
+ </script>
351
+ <script src="../../sorter.js"></script>
352
+ <script src="../../block-navigation.js"></script>
353
+ </body>
354
+ </html>
355
+
@@ -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:03:15.288Z
541
+ at 2026-06-10T06:25:12.717Z
542
542
  </div>
543
543
  <script src="../../prettify.js"></script>
544
544
  <script>
@@ -394,7 +394,7 @@ export class DyE2E_CWVEmission_Util {
394
394
  <div class='footer quiet pad2 space-top1 center small'>
395
395
  Code coverage generated by
396
396
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
397
- at 2026-06-10T06:03:15.288Z
397
+ at 2026-06-10T06:25:12.717Z
398
398
  </div>
399
399
  <script src="../../prettify.js"></script>
400
400
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">98.3% </span>
26
+ <span class="strong">98.57% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>463/471</span>
28
+ <span class='fraction'>553/561</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">85.33% </span>
33
+ <span class="strong">84.84% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>64/75</span>
35
+ <span class='fraction'>84/99</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>7/7</span>
42
+ <span class='fraction'>10/10</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">98.3% </span>
47
+ <span class="strong">98.57% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>463/471</span>
49
+ <span class='fraction'>553/561</span>
50
50
  </div>
51
51
 
52
52
 
@@ -93,6 +93,21 @@
93
93
  <td data-value="52" class="abs high">50/52</td>
94
94
  </tr>
95
95
 
96
+ <tr>
97
+ <td class="file high" data-value="cwv-comparison.util.ts"><a href="cwv-comparison.util.ts.html">cwv-comparison.util.ts</a></td>
98
+ <td data-value="100" class="pic high">
99
+ <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
100
+ </td>
101
+ <td data-value="100" class="pct high">100%</td>
102
+ <td data-value="90" class="abs high">90/90</td>
103
+ <td data-value="83.33" class="pct high">83.33%</td>
104
+ <td data-value="24" class="abs high">20/24</td>
105
+ <td data-value="100" class="pct high">100%</td>
106
+ <td data-value="3" class="abs high">3/3</td>
107
+ <td data-value="100" class="pct high">100%</td>
108
+ <td data-value="90" class="abs high">90/90</td>
109
+ </tr>
110
+
96
111
  <tr>
97
112
  <td class="file high" data-value="cwv-diagnose.util.ts"><a href="cwv-diagnose.util.ts.html">cwv-diagnose.util.ts</a></td>
98
113
  <td data-value="96.15" class="pic high">
@@ -161,7 +176,7 @@
161
176
  <div class='footer quiet pad2 space-top1 center small'>
162
177
  Code coverage generated by
163
178
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
164
- at 2026-06-10T06:03:15.288Z
179
+ at 2026-06-10T06:25:12.717Z
165
180
  </div>
166
181
  <script src="../../prettify.js"></script>
167
182
  <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-10T06:03:15.288Z
292
+ at 2026-06-10T06:25:12.717Z
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-10T06:03:15.288Z
319
+ at 2026-06-10T06:25:12.717Z
320
320
  </div>
321
321
  <script src="../../prettify.js"></script>
322
322
  <script>
@@ -244,7 +244,7 @@ ${DyE2E_SpecEmission_Util.indent(routeBlocks.join('\n\n'), 1)}
244
244
  <div class='footer quiet pad2 space-top1 center small'>
245
245
  Code coverage generated by
246
246
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
247
- at 2026-06-10T06:03:15.288Z
247
+ at 2026-06-10T06:25:12.717Z
248
248
  </div>
249
249
  <script src="../prettify.js"></script>
250
250
  <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:03:15.288Z
104
+ at 2026-06-10T06:25:12.717Z
105
105
  </div>
106
106
  <script src="../prettify.js"></script>
107
107
  <script>