api-tests-coverage 1.0.0 → 1.0.2

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 (163) hide show
  1. package/dist/dashboard/assets/_basePickBy-DK6M9Uvz.js +1 -0
  2. package/dist/dashboard/assets/_baseUniq-BPCxdwlX.js +1 -0
  3. package/dist/dashboard/assets/arc-225azWF8.js +1 -0
  4. package/dist/dashboard/assets/architectureDiagram-VXUJARFQ-BW9j-2rE.js +36 -0
  5. package/dist/dashboard/assets/blockDiagram-VD42YOAC-CcWyVh_8.js +122 -0
  6. package/dist/dashboard/assets/c4Diagram-YG6GDRKO-Bq0y8Ms0.js +10 -0
  7. package/dist/dashboard/assets/channel-CPmdNASe.js +1 -0
  8. package/dist/dashboard/assets/chunk-4BX2VUAB-BrlBx_h4.js +1 -0
  9. package/dist/dashboard/assets/chunk-55IACEB6-BTGWaOkw.js +1 -0
  10. package/dist/dashboard/assets/chunk-B4BG7PRW-B-3Me5OV.js +165 -0
  11. package/dist/dashboard/assets/chunk-DI55MBZ5-BLZCyXU3.js +220 -0
  12. package/dist/dashboard/assets/chunk-FMBD7UC4-Bm9KRQE1.js +15 -0
  13. package/dist/dashboard/assets/chunk-QN33PNHL-DtWoo2Hn.js +1 -0
  14. package/dist/dashboard/assets/chunk-QZHKN3VN-DfaeFdsW.js +1 -0
  15. package/dist/dashboard/assets/chunk-TZMSLE5B-CM7Di7Gz.js +1 -0
  16. package/dist/dashboard/assets/classDiagram-2ON5EDUG-DTSnWk0q.js +1 -0
  17. package/dist/dashboard/assets/classDiagram-v2-WZHVMYZB-DTSnWk0q.js +1 -0
  18. package/dist/dashboard/assets/clone-DiFVAewv.js +1 -0
  19. package/dist/dashboard/assets/cose-bilkent-S5V4N54A-CI6S9tNC.js +1 -0
  20. package/dist/dashboard/assets/cytoscape.esm-CyJtwmzi.js +331 -0
  21. package/dist/dashboard/assets/dagre-6UL2VRFP-CD25jMwx.js +4 -0
  22. package/dist/dashboard/assets/diagram-PSM6KHXK-B2ziHyX_.js +24 -0
  23. package/dist/dashboard/assets/diagram-QEK2KX5R-DpPMBb2T.js +43 -0
  24. package/dist/dashboard/assets/diagram-S2PKOQOG-BplBVLaZ.js +24 -0
  25. package/dist/dashboard/assets/erDiagram-Q2GNP2WA-C6Kdrqa_.js +60 -0
  26. package/dist/dashboard/assets/flowDiagram-NV44I4VS-CBo4bgv8.js +162 -0
  27. package/dist/dashboard/assets/ganttDiagram-JELNMOA3-DL8oIX3C.js +267 -0
  28. package/dist/dashboard/assets/gitGraphDiagram-V2S2FVAM-5oPGxe6l.js +65 -0
  29. package/dist/dashboard/assets/graph-DWVIsnRu.js +1 -0
  30. package/dist/dashboard/assets/index-B2mS1bcV.js +522 -0
  31. package/dist/dashboard/assets/index-DBTGeaha.css +1 -0
  32. package/dist/dashboard/assets/infoDiagram-HS3SLOUP-D-bnjqH3.js +2 -0
  33. package/dist/dashboard/assets/journeyDiagram-XKPGCS4Q-DkT7QyWQ.js +139 -0
  34. package/dist/dashboard/assets/kanban-definition-3W4ZIXB7-CSO8OAdK.js +89 -0
  35. package/dist/dashboard/assets/katex-O9d3_IXG.js +261 -0
  36. package/dist/dashboard/assets/layout-BRUlIe_x.js +1 -0
  37. package/dist/dashboard/assets/mindmap-definition-VGOIOE7T-DabWpbNO.js +68 -0
  38. package/dist/dashboard/assets/pieDiagram-ADFJNKIX-x6W4JfPL.js +30 -0
  39. package/dist/dashboard/assets/quadrantDiagram-AYHSOK5B-Cs_QHGFN.js +7 -0
  40. package/dist/dashboard/assets/requirementDiagram-UZGBJVZJ-Y6IeHRvx.js +64 -0
  41. package/dist/dashboard/assets/sankeyDiagram-TZEHDZUN-CZT51ITh.js +10 -0
  42. package/dist/dashboard/assets/sequenceDiagram-WL72ISMW-DyAQKRQ-.js +145 -0
  43. package/dist/dashboard/assets/stateDiagram-FKZM4ZOC-DeadfBBo.js +1 -0
  44. package/dist/dashboard/assets/stateDiagram-v2-4FDKWEC3-D58eQQQS.js +1 -0
  45. package/dist/dashboard/assets/timeline-definition-IT6M3QCI-DYmeeClO.js +61 -0
  46. package/dist/dashboard/assets/treemap-GDKQZRPO-CKPSdFAX.js +162 -0
  47. package/dist/dashboard/assets/xychartDiagram-PRI3JC2R-Ch7ZZyVX.js +7 -0
  48. package/dist/dashboard/dist/assets/_basePickBy-DK6M9Uvz.js +1 -0
  49. package/dist/dashboard/dist/assets/_basePickBy-P9JMLvtQ.js +1 -0
  50. package/dist/dashboard/dist/assets/_baseUniq-BLr5OOl5.js +1 -0
  51. package/dist/dashboard/dist/assets/_baseUniq-BPCxdwlX.js +1 -0
  52. package/dist/dashboard/dist/assets/arc-225azWF8.js +1 -0
  53. package/dist/dashboard/dist/assets/arc-FwwTLzl4.js +1 -0
  54. package/dist/dashboard/dist/assets/architectureDiagram-VXUJARFQ-BW9j-2rE.js +36 -0
  55. package/dist/dashboard/dist/assets/architectureDiagram-VXUJARFQ-C7QAcrIt.js +36 -0
  56. package/dist/dashboard/dist/assets/blockDiagram-VD42YOAC-BYvjSDpK.js +122 -0
  57. package/dist/dashboard/dist/assets/blockDiagram-VD42YOAC-CcWyVh_8.js +122 -0
  58. package/dist/dashboard/dist/assets/c4Diagram-YG6GDRKO-Bq0y8Ms0.js +10 -0
  59. package/dist/dashboard/dist/assets/c4Diagram-YG6GDRKO-dUTtO4_k.js +10 -0
  60. package/dist/dashboard/dist/assets/channel-CPmdNASe.js +1 -0
  61. package/dist/dashboard/dist/assets/channel-DRY_ja-e.js +1 -0
  62. package/dist/dashboard/dist/assets/chunk-4BX2VUAB-BrlBx_h4.js +1 -0
  63. package/dist/dashboard/dist/assets/chunk-4BX2VUAB-NmyQ9Lvf.js +1 -0
  64. package/dist/dashboard/dist/assets/chunk-55IACEB6-BTGWaOkw.js +1 -0
  65. package/dist/dashboard/dist/assets/chunk-55IACEB6-GAN8BMbh.js +1 -0
  66. package/dist/dashboard/dist/assets/chunk-B4BG7PRW-B-3Me5OV.js +165 -0
  67. package/dist/dashboard/dist/assets/chunk-B4BG7PRW-CKtaL90X.js +165 -0
  68. package/dist/dashboard/dist/assets/chunk-DI55MBZ5-BLZCyXU3.js +220 -0
  69. package/dist/dashboard/dist/assets/chunk-DI55MBZ5-GokZ0alw.js +220 -0
  70. package/dist/dashboard/dist/assets/chunk-FMBD7UC4-Bm9KRQE1.js +15 -0
  71. package/dist/dashboard/dist/assets/chunk-FMBD7UC4-D8tBTVUA.js +15 -0
  72. package/dist/dashboard/dist/assets/chunk-QN33PNHL-C59bvcTc.js +1 -0
  73. package/dist/dashboard/dist/assets/chunk-QN33PNHL-DtWoo2Hn.js +1 -0
  74. package/dist/dashboard/dist/assets/chunk-QZHKN3VN-DfaeFdsW.js +1 -0
  75. package/dist/dashboard/dist/assets/chunk-QZHKN3VN-E7ncuJVt.js +1 -0
  76. package/dist/dashboard/dist/assets/chunk-TZMSLE5B-BcLpi7P1.js +1 -0
  77. package/dist/dashboard/dist/assets/chunk-TZMSLE5B-CM7Di7Gz.js +1 -0
  78. package/dist/dashboard/dist/assets/classDiagram-2ON5EDUG-DTSnWk0q.js +1 -0
  79. package/dist/dashboard/dist/assets/classDiagram-2ON5EDUG-Dy8_C5lE.js +1 -0
  80. package/dist/dashboard/dist/assets/classDiagram-v2-WZHVMYZB-DTSnWk0q.js +1 -0
  81. package/dist/dashboard/dist/assets/classDiagram-v2-WZHVMYZB-Dy8_C5lE.js +1 -0
  82. package/dist/dashboard/dist/assets/clone-B0_qHCw2.js +1 -0
  83. package/dist/dashboard/dist/assets/clone-DiFVAewv.js +1 -0
  84. package/dist/dashboard/dist/assets/cose-bilkent-S5V4N54A-BYK-qqpA.js +1 -0
  85. package/dist/dashboard/dist/assets/cose-bilkent-S5V4N54A-CI6S9tNC.js +1 -0
  86. package/dist/dashboard/dist/assets/cytoscape.esm-CyJtwmzi.js +331 -0
  87. package/dist/dashboard/dist/assets/dagre-6UL2VRFP-CD25jMwx.js +4 -0
  88. package/dist/dashboard/dist/assets/dagre-6UL2VRFP-CNIXE38x.js +4 -0
  89. package/dist/dashboard/dist/assets/diagram-PSM6KHXK-B2ziHyX_.js +24 -0
  90. package/dist/dashboard/dist/assets/diagram-PSM6KHXK-Dza_WM04.js +24 -0
  91. package/dist/dashboard/dist/assets/diagram-QEK2KX5R-175MJwNN.js +43 -0
  92. package/dist/dashboard/dist/assets/diagram-QEK2KX5R-DpPMBb2T.js +43 -0
  93. package/dist/dashboard/dist/assets/diagram-S2PKOQOG-BplBVLaZ.js +24 -0
  94. package/dist/dashboard/dist/assets/diagram-S2PKOQOG-DpUYqpiH.js +24 -0
  95. package/dist/dashboard/dist/assets/erDiagram-Q2GNP2WA-C6Kdrqa_.js +60 -0
  96. package/dist/dashboard/dist/assets/erDiagram-Q2GNP2WA-YGhaTIGv.js +60 -0
  97. package/dist/dashboard/dist/assets/flowDiagram-NV44I4VS-CBo4bgv8.js +162 -0
  98. package/dist/dashboard/dist/assets/flowDiagram-NV44I4VS-D9XX51TY.js +162 -0
  99. package/dist/dashboard/dist/assets/ganttDiagram-JELNMOA3-BnlL2FL1.js +267 -0
  100. package/dist/dashboard/dist/assets/ganttDiagram-JELNMOA3-DL8oIX3C.js +267 -0
  101. package/dist/dashboard/dist/assets/gitGraphDiagram-V2S2FVAM-5oPGxe6l.js +65 -0
  102. package/dist/dashboard/dist/assets/gitGraphDiagram-V2S2FVAM-IqGQHaKk.js +65 -0
  103. package/dist/dashboard/dist/assets/graph-DOoKbdQ6.js +1 -0
  104. package/dist/dashboard/dist/assets/graph-DWVIsnRu.js +1 -0
  105. package/dist/dashboard/dist/assets/index-B2mS1bcV.js +522 -0
  106. package/dist/dashboard/dist/assets/index-CTnNA-vP.js +522 -0
  107. package/dist/dashboard/dist/assets/index-DBTGeaha.css +1 -0
  108. package/dist/dashboard/dist/assets/infoDiagram-HS3SLOUP-D-PYXUrg.js +2 -0
  109. package/dist/dashboard/dist/assets/infoDiagram-HS3SLOUP-D-bnjqH3.js +2 -0
  110. package/dist/dashboard/dist/assets/journeyDiagram-XKPGCS4Q-DIxnZShx.js +139 -0
  111. package/dist/dashboard/dist/assets/journeyDiagram-XKPGCS4Q-DkT7QyWQ.js +139 -0
  112. package/dist/dashboard/dist/assets/kanban-definition-3W4ZIXB7-CSO8OAdK.js +89 -0
  113. package/dist/dashboard/dist/assets/kanban-definition-3W4ZIXB7-DIQJ-dLy.js +89 -0
  114. package/dist/dashboard/dist/assets/katex-O9d3_IXG.js +261 -0
  115. package/dist/dashboard/dist/assets/layout-BRUlIe_x.js +1 -0
  116. package/dist/dashboard/dist/assets/layout-Dx_sC6cU.js +1 -0
  117. package/dist/dashboard/dist/assets/mindmap-definition-VGOIOE7T-BWOv2jfH.js +68 -0
  118. package/dist/dashboard/dist/assets/mindmap-definition-VGOIOE7T-DabWpbNO.js +68 -0
  119. package/dist/dashboard/dist/assets/pieDiagram-ADFJNKIX-B-ZMfN-z.js +30 -0
  120. package/dist/dashboard/dist/assets/pieDiagram-ADFJNKIX-x6W4JfPL.js +30 -0
  121. package/dist/dashboard/dist/assets/quadrantDiagram-AYHSOK5B-Cs_QHGFN.js +7 -0
  122. package/dist/dashboard/dist/assets/quadrantDiagram-AYHSOK5B-lHEZJOJ6.js +7 -0
  123. package/dist/dashboard/dist/assets/requirementDiagram-UZGBJVZJ-Dmgv7ZrT.js +64 -0
  124. package/dist/dashboard/dist/assets/requirementDiagram-UZGBJVZJ-Y6IeHRvx.js +64 -0
  125. package/dist/dashboard/dist/assets/sankeyDiagram-TZEHDZUN-CZT51ITh.js +10 -0
  126. package/dist/dashboard/dist/assets/sankeyDiagram-TZEHDZUN-DYnsmtzq.js +10 -0
  127. package/dist/dashboard/dist/assets/sequenceDiagram-WL72ISMW-Cp0y_3Co.js +145 -0
  128. package/dist/dashboard/dist/assets/sequenceDiagram-WL72ISMW-DyAQKRQ-.js +145 -0
  129. package/dist/dashboard/dist/assets/stateDiagram-FKZM4ZOC-CmJ3FBc_.js +1 -0
  130. package/dist/dashboard/dist/assets/stateDiagram-FKZM4ZOC-DeadfBBo.js +1 -0
  131. package/dist/dashboard/dist/assets/stateDiagram-v2-4FDKWEC3-D58eQQQS.js +1 -0
  132. package/dist/dashboard/dist/assets/stateDiagram-v2-4FDKWEC3-DBJHmcPu.js +1 -0
  133. package/dist/dashboard/dist/assets/timeline-definition-IT6M3QCI-CnYcftUT.js +61 -0
  134. package/dist/dashboard/dist/assets/timeline-definition-IT6M3QCI-DYmeeClO.js +61 -0
  135. package/dist/dashboard/dist/assets/treemap-GDKQZRPO-B-4BtJ8O.js +162 -0
  136. package/dist/dashboard/dist/assets/treemap-GDKQZRPO-CKPSdFAX.js +162 -0
  137. package/dist/dashboard/dist/assets/xychartDiagram-PRI3JC2R-Ch7ZZyVX.js +7 -0
  138. package/dist/dashboard/dist/assets/xychartDiagram-PRI3JC2R-jiOJ2YB4.js +7 -0
  139. package/dist/dashboard/dist/index.html +14 -0
  140. package/dist/dashboard/dist/reports/business-coverage.json +201 -0
  141. package/dist/dashboard/dist/reports/coverage-intelligence.json +728 -0
  142. package/dist/dashboard/dist/reports/coverage-summary.json +763 -0
  143. package/dist/dashboard/dist/reports/endpoint-coverage.json +336 -0
  144. package/dist/dashboard/dist/reports/error-coverage.json +367 -0
  145. package/dist/dashboard/dist/reports/missing-tests-recommendations.json +285 -0
  146. package/dist/dashboard/dist/reports/risk-prioritization.json +312 -0
  147. package/dist/dashboard/dist/reports/security-coverage.json +299 -0
  148. package/dist/dashboard/dist/vite.svg +1 -0
  149. package/dist/dashboard/index.html +14 -0
  150. package/dist/dashboard/reports/business-coverage.json +201 -0
  151. package/dist/dashboard/reports/coverage-intelligence.json +728 -0
  152. package/dist/dashboard/reports/coverage-summary.json +763 -0
  153. package/dist/dashboard/reports/endpoint-coverage.json +336 -0
  154. package/dist/dashboard/reports/error-coverage.json +367 -0
  155. package/dist/dashboard/reports/missing-tests-recommendations.json +285 -0
  156. package/dist/dashboard/reports/risk-prioritization.json +312 -0
  157. package/dist/dashboard/reports/security-coverage.json +299 -0
  158. package/dist/dashboard/vite.svg +1 -0
  159. package/dist/src/index.js +74 -4
  160. package/dist/src/serveDashboard.d.ts +30 -0
  161. package/dist/src/serveDashboard.d.ts.map +1 -0
  162. package/dist/src/serveDashboard.js +191 -0
  163. package/package.json +3 -2
@@ -0,0 +1,285 @@
1
+ {
2
+ "generatedAt": "2026-03-09T05:11:14.932Z",
3
+ "recommendations": [
4
+ {
5
+ "id": "rec-1773033074931-68",
6
+ "priority": "P1",
7
+ "title": "Add auth test for: Missing auth/security test: unknown",
8
+ "rationale": "Security scenario for undefined has no test coverage. Jest + supertest: describe(\"unauthorized\") { it(\"returns 401\") }",
9
+ "recommendedTestType": "auth-test",
10
+ "likelyFramework": "jest",
11
+ "likelyLanguage": "typescript",
12
+ "linkedFindingIds": [
13
+ "ff-sec-cov-1773033074931-33"
14
+ ],
15
+ "riskScore": 76,
16
+ "confidence": "high"
17
+ },
18
+ {
19
+ "id": "rec-1773033074931-64",
20
+ "priority": "P1",
21
+ "title": "Add negative api test for: Missing error scenario tests for /payments",
22
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
23
+ "recommendedTestType": "negative-api-test",
24
+ "endpoint": {
25
+ "method": "POST",
26
+ "path": "/payments"
27
+ },
28
+ "likelyFramework": "jest",
29
+ "likelyLanguage": "typescript",
30
+ "linkedFindingIds": [
31
+ "ff-err-1773033074931-25"
32
+ ],
33
+ "riskScore": 65,
34
+ "confidence": "medium"
35
+ },
36
+ {
37
+ "id": "rec-1773033074931-65",
38
+ "priority": "P1",
39
+ "title": "Add negative api test for: Missing error scenario tests for /payments/{id}",
40
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
41
+ "recommendedTestType": "negative-api-test",
42
+ "endpoint": {
43
+ "method": "GET",
44
+ "path": "/payments/{id}"
45
+ },
46
+ "likelyFramework": "jest",
47
+ "likelyLanguage": "typescript",
48
+ "linkedFindingIds": [
49
+ "ff-err-1773033074931-27"
50
+ ],
51
+ "riskScore": 65,
52
+ "confidence": "medium"
53
+ },
54
+ {
55
+ "id": "rec-1773033074931-66",
56
+ "priority": "P1",
57
+ "title": "Add negative api test for: Missing error scenario tests for /payments/{id}/refund",
58
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
59
+ "recommendedTestType": "negative-api-test",
60
+ "endpoint": {
61
+ "method": "POST",
62
+ "path": "/payments/{id}/refund"
63
+ },
64
+ "likelyFramework": "jest",
65
+ "likelyLanguage": "typescript",
66
+ "linkedFindingIds": [
67
+ "ff-err-1773033074931-29"
68
+ ],
69
+ "riskScore": 65,
70
+ "confidence": "medium"
71
+ },
72
+ {
73
+ "id": "rec-1773033074931-55",
74
+ "priority": "P1",
75
+ "title": "Add negative api test for: Missing error scenario tests for /wallets",
76
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
77
+ "recommendedTestType": "negative-api-test",
78
+ "endpoint": {
79
+ "method": "GET",
80
+ "path": "/wallets"
81
+ },
82
+ "likelyFramework": "jest",
83
+ "likelyLanguage": "typescript",
84
+ "linkedFindingIds": [
85
+ "ff-err-1773033074931-3"
86
+ ],
87
+ "riskScore": 62,
88
+ "confidence": "medium"
89
+ },
90
+ {
91
+ "id": "rec-1773033074931-56",
92
+ "priority": "P1",
93
+ "title": "Add negative api test for: Missing error scenario tests for /wallets",
94
+ "rationale": "Error codes 400 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
95
+ "recommendedTestType": "negative-api-test",
96
+ "endpoint": {
97
+ "method": "POST",
98
+ "path": "/wallets"
99
+ },
100
+ "likelyFramework": "jest",
101
+ "likelyLanguage": "typescript",
102
+ "linkedFindingIds": [
103
+ "ff-err-1773033074931-4"
104
+ ],
105
+ "riskScore": 62,
106
+ "confidence": "medium"
107
+ },
108
+ {
109
+ "id": "rec-1773033074931-57",
110
+ "priority": "P1",
111
+ "title": "Add negative api test for: Missing error scenario tests for /wallets/{id}",
112
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
113
+ "recommendedTestType": "negative-api-test",
114
+ "endpoint": {
115
+ "method": "GET",
116
+ "path": "/wallets/{id}"
117
+ },
118
+ "likelyFramework": "jest",
119
+ "likelyLanguage": "typescript",
120
+ "linkedFindingIds": [
121
+ "ff-err-1773033074931-6"
122
+ ],
123
+ "riskScore": 62,
124
+ "confidence": "medium"
125
+ },
126
+ {
127
+ "id": "rec-1773033074931-58",
128
+ "priority": "P1",
129
+ "title": "Add negative api test for: Missing error scenario tests for /wallets/{id}",
130
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
131
+ "recommendedTestType": "negative-api-test",
132
+ "endpoint": {
133
+ "method": "DELETE",
134
+ "path": "/wallets/{id}"
135
+ },
136
+ "likelyFramework": "jest",
137
+ "likelyLanguage": "typescript",
138
+ "linkedFindingIds": [
139
+ "ff-err-1773033074931-8"
140
+ ],
141
+ "riskScore": 62,
142
+ "confidence": "medium"
143
+ },
144
+ {
145
+ "id": "rec-1773033074931-59",
146
+ "priority": "P1",
147
+ "title": "Add negative api test for: Missing error scenario tests for /wallets/{id}/freeze",
148
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
149
+ "recommendedTestType": "negative-api-test",
150
+ "endpoint": {
151
+ "method": "PATCH",
152
+ "path": "/wallets/{id}/freeze"
153
+ },
154
+ "likelyFramework": "jest",
155
+ "likelyLanguage": "typescript",
156
+ "linkedFindingIds": [
157
+ "ff-err-1773033074931-10"
158
+ ],
159
+ "riskScore": 62,
160
+ "confidence": "medium"
161
+ },
162
+ {
163
+ "id": "rec-1773033074931-60",
164
+ "priority": "P1",
165
+ "title": "Add negative api test for: Missing error scenario tests for /wallets/{id}/unfreeze",
166
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
167
+ "recommendedTestType": "negative-api-test",
168
+ "endpoint": {
169
+ "method": "PATCH",
170
+ "path": "/wallets/{id}/unfreeze"
171
+ },
172
+ "likelyFramework": "jest",
173
+ "likelyLanguage": "typescript",
174
+ "linkedFindingIds": [
175
+ "ff-err-1773033074931-13"
176
+ ],
177
+ "riskScore": 62,
178
+ "confidence": "medium"
179
+ },
180
+ {
181
+ "id": "rec-1773033074931-61",
182
+ "priority": "P1",
183
+ "title": "Add negative api test for: Missing error scenario tests for /wallets/{id}/fund",
184
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
185
+ "recommendedTestType": "negative-api-test",
186
+ "endpoint": {
187
+ "method": "POST",
188
+ "path": "/wallets/{id}/fund"
189
+ },
190
+ "likelyFramework": "jest",
191
+ "likelyLanguage": "typescript",
192
+ "linkedFindingIds": [
193
+ "ff-err-1773033074931-16"
194
+ ],
195
+ "riskScore": 62,
196
+ "confidence": "medium"
197
+ },
198
+ {
199
+ "id": "rec-1773033074931-62",
200
+ "priority": "P1",
201
+ "title": "Add negative api test for: Missing error scenario tests for /wallets/{id}/debit",
202
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
203
+ "recommendedTestType": "negative-api-test",
204
+ "endpoint": {
205
+ "method": "POST",
206
+ "path": "/wallets/{id}/debit"
207
+ },
208
+ "likelyFramework": "jest",
209
+ "likelyLanguage": "typescript",
210
+ "linkedFindingIds": [
211
+ "ff-err-1773033074931-19"
212
+ ],
213
+ "riskScore": 62,
214
+ "confidence": "medium"
215
+ },
216
+ {
217
+ "id": "rec-1773033074931-63",
218
+ "priority": "P1",
219
+ "title": "Add negative api test for: Missing error scenario tests for /wallets/{id}/transfer",
220
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
221
+ "recommendedTestType": "negative-api-test",
222
+ "endpoint": {
223
+ "method": "POST",
224
+ "path": "/wallets/{id}/transfer"
225
+ },
226
+ "likelyFramework": "jest",
227
+ "likelyLanguage": "typescript",
228
+ "linkedFindingIds": [
229
+ "ff-err-1773033074931-22"
230
+ ],
231
+ "riskScore": 62,
232
+ "confidence": "medium"
233
+ },
234
+ {
235
+ "id": "rec-1773033074931-53",
236
+ "priority": "P2",
237
+ "title": "Add positive api test for: Uncovered endpoint: GET /transactions",
238
+ "rationale": "Endpoint GET /transactions has no test coverage. Jest test case",
239
+ "recommendedTestType": "positive-api-test",
240
+ "endpoint": {
241
+ "method": "GET",
242
+ "path": "/transactions"
243
+ },
244
+ "likelyFramework": "jest",
245
+ "likelyLanguage": "typescript",
246
+ "linkedFindingIds": [
247
+ "ff-ep-1773033074931-1"
248
+ ],
249
+ "riskScore": 54,
250
+ "confidence": "high"
251
+ },
252
+ {
253
+ "id": "rec-1773033074931-54",
254
+ "priority": "P2",
255
+ "title": "Add business rule test for: Uncovered business rule: daily-limit",
256
+ "rationale": "Business rule \"daily-limit\" has no test coverage. Jest test case",
257
+ "recommendedTestType": "business-rule-test",
258
+ "likelyFramework": "jest",
259
+ "likelyLanguage": "typescript",
260
+ "linkedFindingIds": [
261
+ "ff-biz-1773033074931-2"
262
+ ],
263
+ "riskScore": 52,
264
+ "confidence": "medium"
265
+ },
266
+ {
267
+ "id": "rec-1773033074931-67",
268
+ "priority": "P3",
269
+ "title": "Add negative api test for: Missing error scenario tests for /transactions",
270
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
271
+ "recommendedTestType": "negative-api-test",
272
+ "endpoint": {
273
+ "method": "GET",
274
+ "path": "/transactions"
275
+ },
276
+ "likelyFramework": "jest",
277
+ "likelyLanguage": "typescript",
278
+ "linkedFindingIds": [
279
+ "ff-err-1773033074931-32"
280
+ ],
281
+ "riskScore": 48,
282
+ "confidence": "medium"
283
+ }
284
+ ]
285
+ }
@@ -0,0 +1,312 @@
1
+ {
2
+ "generatedAt": "2026-03-09T05:11:14.932Z",
3
+ "summary": {
4
+ "totalFindings": 16,
5
+ "findingsBySeverity": {
6
+ "LOW": 0,
7
+ "MEDIUM": 15,
8
+ "HIGH": 1,
9
+ "CRITICAL": 0
10
+ },
11
+ "totalRecommendations": 16,
12
+ "recommendationsByPriority": {
13
+ "P0": 0,
14
+ "P1": 13,
15
+ "P2": 2,
16
+ "P3": 1
17
+ },
18
+ "maxRiskScore": 76,
19
+ "avgRiskScore": 61,
20
+ "criticalUncoveredItems": 1,
21
+ "unprotectedSecurityFindings": 1,
22
+ "topRiskAreas": [
23
+ "Add auth test for: Missing auth/security test: unknown (score 76)",
24
+ "POST /payments (score 65)",
25
+ "GET /payments/{id} (score 65)",
26
+ "POST /payments/{id}/refund (score 65)",
27
+ "GET /wallets (score 62)"
28
+ ]
29
+ },
30
+ "recommendations": [
31
+ {
32
+ "id": "rec-1773033074931-68",
33
+ "priority": "P1",
34
+ "title": "Add auth test for: Missing auth/security test: unknown",
35
+ "rationale": "Security scenario for undefined has no test coverage. Jest + supertest: describe(\"unauthorized\") { it(\"returns 401\") }",
36
+ "recommendedTestType": "auth-test",
37
+ "likelyFramework": "jest",
38
+ "likelyLanguage": "typescript",
39
+ "linkedFindingIds": [
40
+ "ff-sec-cov-1773033074931-33"
41
+ ],
42
+ "riskScore": 76,
43
+ "confidence": "high"
44
+ },
45
+ {
46
+ "id": "rec-1773033074931-64",
47
+ "priority": "P1",
48
+ "title": "Add negative api test for: Missing error scenario tests for /payments",
49
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
50
+ "recommendedTestType": "negative-api-test",
51
+ "endpoint": {
52
+ "method": "POST",
53
+ "path": "/payments"
54
+ },
55
+ "likelyFramework": "jest",
56
+ "likelyLanguage": "typescript",
57
+ "linkedFindingIds": [
58
+ "ff-err-1773033074931-25"
59
+ ],
60
+ "riskScore": 65,
61
+ "confidence": "medium"
62
+ },
63
+ {
64
+ "id": "rec-1773033074931-65",
65
+ "priority": "P1",
66
+ "title": "Add negative api test for: Missing error scenario tests for /payments/{id}",
67
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
68
+ "recommendedTestType": "negative-api-test",
69
+ "endpoint": {
70
+ "method": "GET",
71
+ "path": "/payments/{id}"
72
+ },
73
+ "likelyFramework": "jest",
74
+ "likelyLanguage": "typescript",
75
+ "linkedFindingIds": [
76
+ "ff-err-1773033074931-27"
77
+ ],
78
+ "riskScore": 65,
79
+ "confidence": "medium"
80
+ },
81
+ {
82
+ "id": "rec-1773033074931-66",
83
+ "priority": "P1",
84
+ "title": "Add negative api test for: Missing error scenario tests for /payments/{id}/refund",
85
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
86
+ "recommendedTestType": "negative-api-test",
87
+ "endpoint": {
88
+ "method": "POST",
89
+ "path": "/payments/{id}/refund"
90
+ },
91
+ "likelyFramework": "jest",
92
+ "likelyLanguage": "typescript",
93
+ "linkedFindingIds": [
94
+ "ff-err-1773033074931-29"
95
+ ],
96
+ "riskScore": 65,
97
+ "confidence": "medium"
98
+ },
99
+ {
100
+ "id": "rec-1773033074931-55",
101
+ "priority": "P1",
102
+ "title": "Add negative api test for: Missing error scenario tests for /wallets",
103
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
104
+ "recommendedTestType": "negative-api-test",
105
+ "endpoint": {
106
+ "method": "GET",
107
+ "path": "/wallets"
108
+ },
109
+ "likelyFramework": "jest",
110
+ "likelyLanguage": "typescript",
111
+ "linkedFindingIds": [
112
+ "ff-err-1773033074931-3"
113
+ ],
114
+ "riskScore": 62,
115
+ "confidence": "medium"
116
+ },
117
+ {
118
+ "id": "rec-1773033074931-56",
119
+ "priority": "P1",
120
+ "title": "Add negative api test for: Missing error scenario tests for /wallets",
121
+ "rationale": "Error codes 400 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
122
+ "recommendedTestType": "negative-api-test",
123
+ "endpoint": {
124
+ "method": "POST",
125
+ "path": "/wallets"
126
+ },
127
+ "likelyFramework": "jest",
128
+ "likelyLanguage": "typescript",
129
+ "linkedFindingIds": [
130
+ "ff-err-1773033074931-4"
131
+ ],
132
+ "riskScore": 62,
133
+ "confidence": "medium"
134
+ },
135
+ {
136
+ "id": "rec-1773033074931-57",
137
+ "priority": "P1",
138
+ "title": "Add negative api test for: Missing error scenario tests for /wallets/{id}",
139
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
140
+ "recommendedTestType": "negative-api-test",
141
+ "endpoint": {
142
+ "method": "GET",
143
+ "path": "/wallets/{id}"
144
+ },
145
+ "likelyFramework": "jest",
146
+ "likelyLanguage": "typescript",
147
+ "linkedFindingIds": [
148
+ "ff-err-1773033074931-6"
149
+ ],
150
+ "riskScore": 62,
151
+ "confidence": "medium"
152
+ },
153
+ {
154
+ "id": "rec-1773033074931-58",
155
+ "priority": "P1",
156
+ "title": "Add negative api test for: Missing error scenario tests for /wallets/{id}",
157
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
158
+ "recommendedTestType": "negative-api-test",
159
+ "endpoint": {
160
+ "method": "DELETE",
161
+ "path": "/wallets/{id}"
162
+ },
163
+ "likelyFramework": "jest",
164
+ "likelyLanguage": "typescript",
165
+ "linkedFindingIds": [
166
+ "ff-err-1773033074931-8"
167
+ ],
168
+ "riskScore": 62,
169
+ "confidence": "medium"
170
+ },
171
+ {
172
+ "id": "rec-1773033074931-59",
173
+ "priority": "P1",
174
+ "title": "Add negative api test for: Missing error scenario tests for /wallets/{id}/freeze",
175
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
176
+ "recommendedTestType": "negative-api-test",
177
+ "endpoint": {
178
+ "method": "PATCH",
179
+ "path": "/wallets/{id}/freeze"
180
+ },
181
+ "likelyFramework": "jest",
182
+ "likelyLanguage": "typescript",
183
+ "linkedFindingIds": [
184
+ "ff-err-1773033074931-10"
185
+ ],
186
+ "riskScore": 62,
187
+ "confidence": "medium"
188
+ },
189
+ {
190
+ "id": "rec-1773033074931-60",
191
+ "priority": "P1",
192
+ "title": "Add negative api test for: Missing error scenario tests for /wallets/{id}/unfreeze",
193
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
194
+ "recommendedTestType": "negative-api-test",
195
+ "endpoint": {
196
+ "method": "PATCH",
197
+ "path": "/wallets/{id}/unfreeze"
198
+ },
199
+ "likelyFramework": "jest",
200
+ "likelyLanguage": "typescript",
201
+ "linkedFindingIds": [
202
+ "ff-err-1773033074931-13"
203
+ ],
204
+ "riskScore": 62,
205
+ "confidence": "medium"
206
+ },
207
+ {
208
+ "id": "rec-1773033074931-61",
209
+ "priority": "P1",
210
+ "title": "Add negative api test for: Missing error scenario tests for /wallets/{id}/fund",
211
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
212
+ "recommendedTestType": "negative-api-test",
213
+ "endpoint": {
214
+ "method": "POST",
215
+ "path": "/wallets/{id}/fund"
216
+ },
217
+ "likelyFramework": "jest",
218
+ "likelyLanguage": "typescript",
219
+ "linkedFindingIds": [
220
+ "ff-err-1773033074931-16"
221
+ ],
222
+ "riskScore": 62,
223
+ "confidence": "medium"
224
+ },
225
+ {
226
+ "id": "rec-1773033074931-62",
227
+ "priority": "P1",
228
+ "title": "Add negative api test for: Missing error scenario tests for /wallets/{id}/debit",
229
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
230
+ "recommendedTestType": "negative-api-test",
231
+ "endpoint": {
232
+ "method": "POST",
233
+ "path": "/wallets/{id}/debit"
234
+ },
235
+ "likelyFramework": "jest",
236
+ "likelyLanguage": "typescript",
237
+ "linkedFindingIds": [
238
+ "ff-err-1773033074931-19"
239
+ ],
240
+ "riskScore": 62,
241
+ "confidence": "medium"
242
+ },
243
+ {
244
+ "id": "rec-1773033074931-63",
245
+ "priority": "P1",
246
+ "title": "Add negative api test for: Missing error scenario tests for /wallets/{id}/transfer",
247
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
248
+ "recommendedTestType": "negative-api-test",
249
+ "endpoint": {
250
+ "method": "POST",
251
+ "path": "/wallets/{id}/transfer"
252
+ },
253
+ "likelyFramework": "jest",
254
+ "likelyLanguage": "typescript",
255
+ "linkedFindingIds": [
256
+ "ff-err-1773033074931-22"
257
+ ],
258
+ "riskScore": 62,
259
+ "confidence": "medium"
260
+ },
261
+ {
262
+ "id": "rec-1773033074931-53",
263
+ "priority": "P2",
264
+ "title": "Add positive api test for: Uncovered endpoint: GET /transactions",
265
+ "rationale": "Endpoint GET /transactions has no test coverage. Jest test case",
266
+ "recommendedTestType": "positive-api-test",
267
+ "endpoint": {
268
+ "method": "GET",
269
+ "path": "/transactions"
270
+ },
271
+ "likelyFramework": "jest",
272
+ "likelyLanguage": "typescript",
273
+ "linkedFindingIds": [
274
+ "ff-ep-1773033074931-1"
275
+ ],
276
+ "riskScore": 54,
277
+ "confidence": "high"
278
+ },
279
+ {
280
+ "id": "rec-1773033074931-54",
281
+ "priority": "P2",
282
+ "title": "Add business rule test for: Uncovered business rule: daily-limit",
283
+ "rationale": "Business rule \"daily-limit\" has no test coverage. Jest test case",
284
+ "recommendedTestType": "business-rule-test",
285
+ "likelyFramework": "jest",
286
+ "likelyLanguage": "typescript",
287
+ "linkedFindingIds": [
288
+ "ff-biz-1773033074931-2"
289
+ ],
290
+ "riskScore": 52,
291
+ "confidence": "medium"
292
+ },
293
+ {
294
+ "id": "rec-1773033074931-67",
295
+ "priority": "P3",
296
+ "title": "Add negative api test for: Missing error scenario tests for /transactions",
297
+ "rationale": "Error codes 401 are documented but have no matching test. Jest + supertest: test invalid inputs → 4xx responses",
298
+ "recommendedTestType": "negative-api-test",
299
+ "endpoint": {
300
+ "method": "GET",
301
+ "path": "/transactions"
302
+ },
303
+ "likelyFramework": "jest",
304
+ "likelyLanguage": "typescript",
305
+ "linkedFindingIds": [
306
+ "ff-err-1773033074931-32"
307
+ ],
308
+ "riskScore": 48,
309
+ "confidence": "medium"
310
+ }
311
+ ]
312
+ }