@futdevpro/dynamo-e2e 1.11.0 → 1.12.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 (123) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +2 -2
  3. package/bin/dye2e.js +57 -0
  4. package/build/_modules/cwv/_collections/cwv-summarize.util.d.ts +29 -0
  5. package/build/_modules/cwv/_collections/cwv-summarize.util.d.ts.map +1 -0
  6. package/build/_modules/cwv/_collections/cwv-summarize.util.js +63 -0
  7. package/build/_modules/cwv/_collections/cwv-summarize.util.js.map +1 -0
  8. package/build/_modules/cwv/cwv-summarize.spec.d.ts +2 -0
  9. package/build/_modules/cwv/cwv-summarize.spec.d.ts.map +1 -0
  10. package/build/_modules/cwv/cwv-summarize.spec.js +70 -0
  11. package/build/_modules/cwv/cwv-summarize.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.map +1 -1
  17. package/build/_modules/generators/_collections/cli-runner.util.js +11 -0
  18. package/build/_modules/generators/_collections/cli-runner.util.js.map +1 -1
  19. package/coverage/contracts/_collections/index.html +1 -1
  20. package/coverage/contracts/_collections/index.ts.html +1 -1
  21. package/coverage/contracts/_collections/utils/index.html +1 -1
  22. package/coverage/contracts/_collections/utils/test-id.util.ts.html +1 -1
  23. package/coverage/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
  24. package/coverage/contracts/_enums/field-test-case-type.enum.ts.html +1 -1
  25. package/coverage/contracts/_enums/index.html +1 -1
  26. package/coverage/contracts/_enums/index.ts.html +1 -1
  27. package/coverage/contracts/_enums/standard-viewport.enum.ts.html +1 -1
  28. package/coverage/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
  29. package/coverage/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
  30. package/coverage/contracts/index.html +1 -1
  31. package/coverage/contracts/index.ts.html +1 -1
  32. package/coverage/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
  33. package/coverage/cwv/_collections/cwv-comparison.util.ts.html +1 -1
  34. package/coverage/cwv/_collections/cwv-diagnose.util.ts.html +1 -1
  35. package/coverage/cwv/_collections/cwv-emission.util.ts.html +1 -1
  36. package/coverage/cwv/_collections/cwv-summarize.util.ts.html +325 -0
  37. package/coverage/cwv/_collections/index.html +23 -8
  38. package/coverage/cwv/_collections/inp-interaction-script.const.ts.html +1 -1
  39. package/coverage/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
  40. package/coverage/cwv/cwv-suite.generator.ts.html +1 -1
  41. package/coverage/cwv/index.html +1 -1
  42. package/coverage/generators/_collections/cli-runner.util.ts.html +37 -4
  43. package/coverage/generators/_collections/field-emission.util.ts.html +1 -1
  44. package/coverage/generators/_collections/form-level-emission.util.ts.html +1 -1
  45. package/coverage/generators/_collections/index.html +7 -7
  46. package/coverage/generators/_collections/spec-emission.util.ts.html +1 -1
  47. package/coverage/generators/_collections/test-case-filter.util.ts.html +1 -1
  48. package/coverage/generators/_collections/viewport-emission.util.ts.html +1 -1
  49. package/coverage/generators/form-suite.generator.ts.html +1 -1
  50. package/coverage/generators/index.html +1 -1
  51. package/coverage/generators/viewport-suite.generator.ts.html +1 -1
  52. package/coverage/index.html +22 -22
  53. package/coverage/lcov-report/contracts/_collections/index.html +1 -1
  54. package/coverage/lcov-report/contracts/_collections/index.ts.html +1 -1
  55. package/coverage/lcov-report/contracts/_collections/utils/index.html +1 -1
  56. package/coverage/lcov-report/contracts/_collections/utils/test-id.util.ts.html +1 -1
  57. package/coverage/lcov-report/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
  58. package/coverage/lcov-report/contracts/_enums/field-test-case-type.enum.ts.html +1 -1
  59. package/coverage/lcov-report/contracts/_enums/index.html +1 -1
  60. package/coverage/lcov-report/contracts/_enums/index.ts.html +1 -1
  61. package/coverage/lcov-report/contracts/_enums/standard-viewport.enum.ts.html +1 -1
  62. package/coverage/lcov-report/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
  63. package/coverage/lcov-report/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
  64. package/coverage/lcov-report/contracts/index.html +1 -1
  65. package/coverage/lcov-report/contracts/index.ts.html +1 -1
  66. package/coverage/lcov-report/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
  67. package/coverage/lcov-report/cwv/_collections/cwv-comparison.util.ts.html +1 -1
  68. package/coverage/lcov-report/cwv/_collections/cwv-diagnose.util.ts.html +1 -1
  69. package/coverage/lcov-report/cwv/_collections/cwv-emission.util.ts.html +1 -1
  70. package/coverage/lcov-report/cwv/_collections/cwv-summarize.util.ts.html +325 -0
  71. package/coverage/lcov-report/cwv/_collections/index.html +23 -8
  72. package/coverage/lcov-report/cwv/_collections/inp-interaction-script.const.ts.html +1 -1
  73. package/coverage/lcov-report/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
  74. package/coverage/lcov-report/cwv/cwv-suite.generator.ts.html +1 -1
  75. package/coverage/lcov-report/cwv/index.html +1 -1
  76. package/coverage/lcov-report/generators/_collections/cli-runner.util.ts.html +37 -4
  77. package/coverage/lcov-report/generators/_collections/field-emission.util.ts.html +1 -1
  78. package/coverage/lcov-report/generators/_collections/form-level-emission.util.ts.html +1 -1
  79. package/coverage/lcov-report/generators/_collections/index.html +7 -7
  80. package/coverage/lcov-report/generators/_collections/spec-emission.util.ts.html +1 -1
  81. package/coverage/lcov-report/generators/_collections/test-case-filter.util.ts.html +1 -1
  82. package/coverage/lcov-report/generators/_collections/viewport-emission.util.ts.html +1 -1
  83. package/coverage/lcov-report/generators/form-suite.generator.ts.html +1 -1
  84. package/coverage/lcov-report/generators/index.html +1 -1
  85. package/coverage/lcov-report/generators/viewport-suite.generator.ts.html +1 -1
  86. package/coverage/lcov-report/index.html +22 -22
  87. package/coverage/lcov-report/runtime/_collections/assertion-helpers.util.ts.html +1 -1
  88. package/coverage/lcov-report/runtime/_collections/index.html +1 -1
  89. package/coverage/lcov-report/runtime/_collections/unique-generator.util.ts.html +1 -1
  90. package/coverage/lcov-report/runtime/_collections/wait-helpers.util.ts.html +5 -5
  91. package/coverage/lcov-report/runtime/_services/dialog-page-object.ts.html +1 -1
  92. package/coverage/lcov-report/runtime/_services/field-page-object.ts.html +1 -1
  93. package/coverage/lcov-report/runtime/_services/form-page-object.ts.html +1 -1
  94. package/coverage/lcov-report/runtime/_services/index.html +1 -1
  95. package/coverage/lcov-report/runtime/_services/loader-page-object.ts.html +1 -1
  96. package/coverage/lcov-report/runtime/_services/logger.service.ts.html +1 -1
  97. package/coverage/lcov-report/runtime/_services/login-flow-helper.base.ts.html +1 -1
  98. package/coverage/lcov-report/runtime/_services/nav-page-object.ts.html +1 -1
  99. package/coverage/lcov-report/runtime/_services/toast-page-object.ts.html +1 -1
  100. package/coverage/lcov-report/runtime/_services/wave-2b-page-objects.ts.html +1 -1
  101. package/coverage/lcov-report/runtime/index.html +1 -1
  102. package/coverage/lcov-report/runtime/index.ts.html +1 -1
  103. package/coverage/lcov.info +258 -122
  104. package/coverage/runtime/_collections/assertion-helpers.util.ts.html +1 -1
  105. package/coverage/runtime/_collections/index.html +1 -1
  106. package/coverage/runtime/_collections/unique-generator.util.ts.html +1 -1
  107. package/coverage/runtime/_collections/wait-helpers.util.ts.html +5 -5
  108. package/coverage/runtime/_services/dialog-page-object.ts.html +1 -1
  109. package/coverage/runtime/_services/field-page-object.ts.html +1 -1
  110. package/coverage/runtime/_services/form-page-object.ts.html +1 -1
  111. package/coverage/runtime/_services/index.html +1 -1
  112. package/coverage/runtime/_services/loader-page-object.ts.html +1 -1
  113. package/coverage/runtime/_services/logger.service.ts.html +1 -1
  114. package/coverage/runtime/_services/login-flow-helper.base.ts.html +1 -1
  115. package/coverage/runtime/_services/nav-page-object.ts.html +1 -1
  116. package/coverage/runtime/_services/toast-page-object.ts.html +1 -1
  117. package/coverage/runtime/_services/wave-2b-page-objects.ts.html +1 -1
  118. package/coverage/runtime/index.html +1 -1
  119. package/coverage/runtime/index.ts.html +1 -1
  120. package/coverage/tmp/coverage-213156-1781073300871-0.json +1 -0
  121. package/coverage/tmp/{coverage-224696-1781072711012-0.json → coverage-220640-1781073299508-0.json} +1 -1
  122. package/package.json +1 -1
  123. package/coverage/tmp/coverage-221932-1781072712070-0.json +0 -1
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2026-06-10T06:25:12.353Z
119
+ at 2026-06-10T06:35:01.345Z
120
120
  </div>
121
121
  <script src="../prettify.js"></script>
122
122
  <script>
@@ -292,7 +292,7 @@ ${blocks.join('\n\n')}
292
292
  <div class='footer quiet pad2 space-top1 center small'>
293
293
  Code coverage generated by
294
294
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
295
- at 2026-06-10T06:25:12.353Z
295
+ at 2026-06-10T06:35:01.345Z
296
296
  </div>
297
297
  <script src="../prettify.js"></script>
298
298
  <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.32% </span>
26
+ <span class="strong">98.38% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>2346/2386</span>
28
+ <span class='fraction'>2437/2477</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">86.28% </span>
33
+ <span class="strong">86.15% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>365/423</span>
35
+ <span class='fraction'>392/455</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">97.45% </span>
40
+ <span class="strong">97.5% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>115/118</span>
42
+ <span class='fraction'>117/120</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">98.32% </span>
47
+ <span class="strong">98.38% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>2346/2386</span>
49
+ <span class='fraction'>2437/2477</span>
50
50
  </div>
51
51
 
52
52
 
@@ -155,17 +155,17 @@
155
155
 
156
156
  <tr>
157
157
  <td class="file high" data-value="cwv/_collections"><a href="cwv/_collections/index.html">cwv/_collections</a></td>
158
- <td data-value="98.57" class="pic high">
158
+ <td data-value="98.75" class="pic high">
159
159
  <div class="chart"><div class="cover-fill" style="width: 98%"></div><div class="cover-empty" style="width: 2%"></div></div>
160
160
  </td>
161
- <td data-value="98.57" class="pct high">98.57%</td>
162
- <td data-value="561" class="abs high">553/561</td>
163
- <td data-value="84.84" class="pct high">84.84%</td>
164
- <td data-value="99" class="abs high">84/99</td>
161
+ <td data-value="98.75" class="pct high">98.75%</td>
162
+ <td data-value="641" class="abs high">633/641</td>
163
+ <td data-value="84.73" class="pct high">84.73%</td>
164
+ <td data-value="131" class="abs high">111/131</td>
165
165
  <td data-value="100" class="pct high">100%</td>
166
- <td data-value="10" class="abs high">10/10</td>
167
- <td data-value="98.57" class="pct high">98.57%</td>
168
- <td data-value="561" class="abs high">553/561</td>
166
+ <td data-value="12" class="abs high">12/12</td>
167
+ <td data-value="98.75" class="pct high">98.75%</td>
168
+ <td data-value="641" class="abs high">633/641</td>
169
169
  </tr>
170
170
 
171
171
  <tr>
@@ -185,17 +185,17 @@
185
185
 
186
186
  <tr>
187
187
  <td class="file high" data-value="generators/_collections"><a href="generators/_collections/index.html">generators/_collections</a></td>
188
- <td data-value="99.04" class="pic high">
188
+ <td data-value="99.06" class="pic high">
189
189
  <div class="chart"><div class="cover-fill" style="width: 99%"></div><div class="cover-empty" style="width: 1%"></div></div>
190
190
  </td>
191
- <td data-value="99.04" class="pct high">99.04%</td>
192
- <td data-value="736" class="abs high">729/736</td>
191
+ <td data-value="99.06" class="pct high">99.06%</td>
192
+ <td data-value="747" class="abs high">740/747</td>
193
193
  <td data-value="83.05" class="pct high">83.05%</td>
194
194
  <td data-value="177" class="abs high">147/177</td>
195
195
  <td data-value="100" class="pct high">100%</td>
196
196
  <td data-value="21" class="abs high">21/21</td>
197
- <td data-value="99.04" class="pct high">99.04%</td>
198
- <td data-value="736" class="abs high">729/736</td>
197
+ <td data-value="99.06" class="pct high">99.06%</td>
198
+ <td data-value="747" class="abs high">740/747</td>
199
199
  </tr>
200
200
 
201
201
  <tr>
@@ -251,7 +251,7 @@
251
251
  <div class='footer quiet pad2 space-top1 center small'>
252
252
  Code coverage generated by
253
253
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
254
- at 2026-06-10T06:25:12.353Z
254
+ at 2026-06-10T06:35:01.345Z
255
255
  </div>
256
256
  <script src="prettify.js"></script>
257
257
  <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:25:12.717Z
104
+ at 2026-06-10T06:35:01.436Z
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:25:12.717Z
85
+ at 2026-06-10T06:35:01.436Z
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:25:12.717Z
104
+ at 2026-06-10T06:35:01.436Z
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:25:12.717Z
160
+ at 2026-06-10T06:35:01.436Z
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:25:12.717Z
133
+ at 2026-06-10T06:35:01.436Z
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:25:12.717Z
382
+ at 2026-06-10T06:35:01.436Z
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:25:12.717Z
179
+ at 2026-06-10T06:35:01.436Z
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:25:12.717Z
88
+ at 2026-06-10T06:35:01.436Z
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:25:12.717Z
115
+ at 2026-06-10T06:35:01.436Z
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:25:12.717Z
121
+ at 2026-06-10T06:35:01.436Z
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:25:12.717Z
118
+ at 2026-06-10T06:35:01.436Z
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:25:12.717Z
104
+ at 2026-06-10T06:35:01.436Z
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:25:12.717Z
109
+ at 2026-06-10T06:35:01.436Z
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:25:12.717Z
229
+ at 2026-06-10T06:35:01.436Z
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:25:12.717Z
343
+ at 2026-06-10T06:35:01.436Z
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:25:12.717Z
541
+ at 2026-06-10T06:35:01.436Z
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:25:12.717Z
397
+ at 2026-06-10T06:35:01.436Z
398
398
  </div>
399
399
  <script src="../../prettify.js"></script>
400
400
  <script>
@@ -0,0 +1,325 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for cwv/_collections/cwv-summarize.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-summarize.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'>80/80</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">84.37% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>27/32</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'>2/2</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'>80/80</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></td><td class="line-coverage quiet"><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">5x</span>
166
+ <span class="cline-any cline-yes">5x</span>
167
+ <span class="cline-any cline-yes">5x</span>
168
+ <span class="cline-any cline-yes">5x</span>
169
+ <span class="cline-any cline-yes">5x</span>
170
+ <span class="cline-any cline-yes">5x</span>
171
+ <span class="cline-any cline-yes">5x</span>
172
+ <span class="cline-any cline-yes">5x</span>
173
+ <span class="cline-any cline-yes">5x</span>
174
+ <span class="cline-any cline-yes">5x</span>
175
+ <span class="cline-any cline-yes">5x</span>
176
+ <span class="cline-any cline-yes">5x</span>
177
+ <span class="cline-any cline-yes">5x</span>
178
+ <span class="cline-any cline-yes">5x</span>
179
+ <span class="cline-any cline-yes">5x</span>
180
+ <span class="cline-any cline-yes">5x</span>
181
+ <span class="cline-any cline-yes">25x</span>
182
+ <span class="cline-any cline-yes">25x</span>
183
+ <span class="cline-any cline-yes">22x</span>
184
+ <span class="cline-any cline-yes">22x</span>
185
+ <span class="cline-any cline-yes">3x</span>
186
+ <span class="cline-any cline-yes">25x</span>
187
+ <span class="cline-any cline-yes">25x</span>
188
+ <span class="cline-any cline-yes">25x</span>
189
+ <span class="cline-any cline-yes">25x</span>
190
+ <span class="cline-any cline-yes">25x</span>
191
+ <span class="cline-any cline-yes">25x</span>
192
+ <span class="cline-any cline-yes">25x</span>
193
+ <span class="cline-any cline-yes">25x</span>
194
+ <span class="cline-any cline-yes">5x</span>
195
+ <span class="cline-any cline-yes">5x</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">4x</span>
200
+ <span class="cline-any cline-yes">4x</span>
201
+ <span class="cline-any cline-yes">4x</span>
202
+ <span class="cline-any cline-yes">4x</span>
203
+ <span class="cline-any cline-yes">4x</span>
204
+ <span class="cline-any cline-yes">4x</span>
205
+ <span class="cline-any cline-yes">4x</span>
206
+ <span class="cline-any cline-yes">4x</span>
207
+ <span class="cline-any cline-yes">4x</span>
208
+ <span class="cline-any cline-yes">4x</span>
209
+ <span class="cline-any cline-yes">4x</span>
210
+ <span class="cline-any cline-yes">4x</span>
211
+ <span class="cline-any cline-yes">20x</span>
212
+ <span class="cline-any cline-yes">20x</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">4x</span>
217
+ <span class="cline-any cline-yes">4x</span>
218
+ <span class="cline-any cline-yes">4x</span>
219
+ <span class="cline-any cline-yes">20x</span>
220
+ <span class="cline-any cline-yes">20x</span>
221
+ <span class="cline-any cline-yes">20x</span>
222
+ <span class="cline-any cline-yes">20x</span>
223
+ <span class="cline-any cline-yes">4x</span>
224
+ <span class="cline-any cline-yes">4x</span>
225
+ <span class="cline-any cline-yes">1x</span>
226
+ <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';
227
+ import { DyE2E_CWVThresholds_Interface } from '../../contracts/_models/interfaces/cwv-thresholds.interface';
228
+ import { CWV_GOOD_THRESHOLDS } from '../../contracts/_collections/constants/cwv-default-thresholds.const';
229
+ &nbsp;
230
+ /**
231
+ * Wave-3 — CWV JSON-report summarizer util.
232
+ *
233
+ * Bemenet: a `DyE2E_CWVEmission_Util.emitRouteBlock()` által írt JSON-shape
234
+ * ({ route, summary, raw }). Kimenet: ember-olvasható markdown vagy JSON.
235
+ */
236
+ export interface DyE2E_CWVReportShape_Min {
237
+ route?: string;
238
+ summary?: Record&lt;string, { n?: number; p50?: number; p75?: number; p95?: number; mean?: number; min?: number; max?: number }&gt;;
239
+ }
240
+ &nbsp;
241
+ export class DyE2E_CWVSummarize_Util {
242
+ &nbsp;
243
+ /** Markdown-tablázat egy report-ról. */
244
+ static toMarkdown(
245
+ report: DyE2E_CWVReportShape_Min,
246
+ thresholds: DyE2E_CWVThresholds_Interface = CWV_GOOD_THRESHOLDS,
247
+ ): string {
248
+ const lines: string[] = [];
249
+ lines.push(`## CWV summary — ${report.route ?? 'unknown route'}`);
250
+ lines.push('');
251
+ lines.push('| Metric | n | p50 | p75 | p95 | Target | Status |');
252
+ lines.push('|---|---|---|---|---|---|---|');
253
+ const metrics: { key: DyE2E_CWVMetric_Type; thresholdKey: keyof DyE2E_CWVThresholds_Interface; unit: string }[] = [
254
+ { key: DyE2E_CWVMetric_Type.lcp, thresholdKey: 'lcp_p75_ms', unit: 'ms' },
255
+ { key: DyE2E_CWVMetric_Type.cls, thresholdKey: 'cls_p75', unit: '' },
256
+ { key: DyE2E_CWVMetric_Type.inp, thresholdKey: 'inp_p75_ms', unit: 'ms' },
257
+ { key: DyE2E_CWVMetric_Type.ttfb, thresholdKey: 'ttfb_p75_ms', unit: 'ms' },
258
+ { key: DyE2E_CWVMetric_Type.fcp, thresholdKey: 'fcp_p75_ms', unit: 'ms' },
259
+ ];
260
+ for (const m of metrics) {
261
+ const stat = report.summary?.[m.key];
262
+ if (!stat || !stat.n || stat.n === 0) {
263
+ continue;
264
+ }
265
+ const threshold: number | undefined = thresholds[m.thresholdKey];
266
+ const passing: boolean = typeof threshold === 'number' &amp;&amp; typeof stat.p75 === 'number' &amp;&amp; stat.p75 &lt;= threshold;
267
+ const icon: string = passing ? '🟢' : (typeof threshold === 'number' ? '🔴' <span class="branch-0 cbranch-no" title="branch not covered" >: '⚪')</span>;
268
+ const targetText: string = typeof threshold === 'number' ? `≤ ${threshold}${m.unit}` <span class="branch-0 cbranch-no" title="branch not covered" >: 'n/a';</span>
269
+ const p50: string = typeof stat.p50 === 'number' ? `${stat.p50.toFixed(2)}${m.unit}` : '—';
270
+ const p75: string = typeof stat.p75 === 'number' ? `${stat.p75.toFixed(2)}${m.unit}` <span class="branch-0 cbranch-no" title="branch not covered" >: '—';</span>
271
+ const p95: string = typeof stat.p95 === 'number' ? `${stat.p95.toFixed(2)}${m.unit}` : '—';
272
+ lines.push(`| ${m.key.toUpperCase()} | ${stat.n} | ${p50} | ${p75} | ${p95} | ${targetText} | ${icon} |`);
273
+ }
274
+ return lines.join('\n');
275
+ }
276
+ &nbsp;
277
+ /** Egyszerű JSON-summary (csak p75 + status). */
278
+ static toJsonSummary(
279
+ report: DyE2E_CWVReportShape_Min,
280
+ thresholds: DyE2E_CWVThresholds_Interface = CWV_GOOD_THRESHOLDS,
281
+ ): Record&lt;string, { p75: number | null; status: 'pass' | 'fail' | 'no-data' }&gt; {
282
+ const out: Record&lt;string, { p75: number | null; status: 'pass' | 'fail' | 'no-data' }&gt; = {};
283
+ const mapping: { key: DyE2E_CWVMetric_Type; thresholdKey: keyof DyE2E_CWVThresholds_Interface }[] = [
284
+ { key: DyE2E_CWVMetric_Type.lcp, thresholdKey: 'lcp_p75_ms' },
285
+ { key: DyE2E_CWVMetric_Type.cls, thresholdKey: 'cls_p75' },
286
+ { key: DyE2E_CWVMetric_Type.inp, thresholdKey: 'inp_p75_ms' },
287
+ { key: DyE2E_CWVMetric_Type.ttfb, thresholdKey: 'ttfb_p75_ms' },
288
+ { key: DyE2E_CWVMetric_Type.fcp, thresholdKey: 'fcp_p75_ms' },
289
+ ];
290
+ for (const m of mapping) {
291
+ const stat = report.summary?.[m.key];
292
+ if (!stat || !stat.n || stat.n === 0) {
293
+ out[m.key] = { p75: null, status: 'no-data' };
294
+ continue;
295
+ }
296
+ const threshold: number | undefined = thresholds[m.thresholdKey];
297
+ const status: 'pass' | 'fail' | 'no-data' =
298
+ typeof threshold === 'number' &amp;&amp; typeof stat.p75 === 'number'
299
+ ? (stat.p75 &lt;= threshold ? 'pass' : 'fail')
300
+ <span class="branch-0 cbranch-no" title="branch not covered" > : 'no-data';</span>
301
+ out[m.key] = { p75: stat.p75<span class="branch-0 cbranch-no" title="branch not covered" > ?? null,</span> status: status };
302
+ }
303
+ return out;
304
+ }
305
+ }
306
+ &nbsp;</pre></td></tr></table></pre>
307
+
308
+ <div class='push'></div><!-- for sticky footer -->
309
+ </div><!-- /wrapper -->
310
+ <div class='footer quiet pad2 space-top1 center small'>
311
+ Code coverage generated by
312
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
313
+ at 2026-06-10T06:35:01.436Z
314
+ </div>
315
+ <script src="../../prettify.js"></script>
316
+ <script>
317
+ window.onload = function () {
318
+ prettyPrint();
319
+ };
320
+ </script>
321
+ <script src="../../sorter.js"></script>
322
+ <script src="../../block-navigation.js"></script>
323
+ </body>
324
+ </html>
325
+