@piwitests/server 0.18.2 → 0.19.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 (773) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{BlnwU1OO.js → -09h6CA9.js} +1 -1
  3. package/.output/public/_nuxt/279D2RYp.js +1 -0
  4. package/.output/public/_nuxt/81InBX9v.js +1 -0
  5. package/.output/public/_nuxt/{CUvGJXY3.js → Ar3IelOY.js} +1 -1
  6. package/.output/public/_nuxt/B33iXw77.js +1 -0
  7. package/.output/public/_nuxt/B3B9Ii2A.js +1 -0
  8. package/.output/public/_nuxt/B3HO8kuh.js +1 -0
  9. package/.output/public/_nuxt/B44A4LSJ.js +1 -0
  10. package/.output/public/_nuxt/{C8OCrfDP.js → B7NBP1C-.js} +1 -1
  11. package/.output/public/_nuxt/{DZ3Vfcpz.js → B9WhzpKO.js} +1 -1
  12. package/.output/public/_nuxt/{DWowvnwc.js → BCMuIgP5.js} +1 -1
  13. package/.output/public/_nuxt/BDicZ1gQ.js +1 -0
  14. package/.output/public/_nuxt/BJ0XQElc.js +1 -0
  15. package/.output/public/_nuxt/{xqiPI_FQ.js → BMvCSA6h.js} +1 -1
  16. package/.output/public/_nuxt/BPQoBGg5.js +1 -0
  17. package/.output/public/_nuxt/BPRffDuo.js +1 -0
  18. package/.output/public/_nuxt/BSIxhGsh.js +1 -0
  19. package/.output/public/_nuxt/BVaxh6Nl.js +4 -0
  20. package/.output/public/_nuxt/{hgHc4teu.js → BX9ZXe98.js} +1 -1
  21. package/.output/public/_nuxt/{CcXaak_K.js → BYDaY0Z7.js} +1 -1
  22. package/.output/public/_nuxt/{S5DLdEpg.js → Bc8mOoz9.js} +2 -2
  23. package/.output/public/_nuxt/BccXfBfI.js +1 -0
  24. package/.output/public/_nuxt/{Bd3HqPMF.js → BeLWlVK0.js} +1 -1
  25. package/.output/public/_nuxt/{D5oNv2cB.js → BfTuX0wq.js} +1 -1
  26. package/.output/public/_nuxt/BjaRappk.js +1 -0
  27. package/.output/public/_nuxt/{By4YL7mx.js → Bn0YQDyy.js} +1 -1
  28. package/.output/public/_nuxt/Bp5ELvx9.js +1 -0
  29. package/.output/public/_nuxt/BpUaY9nH.js +2 -0
  30. package/.output/public/_nuxt/BqV0l12c.js +1 -0
  31. package/.output/public/_nuxt/{BjCHB89N.js → Bti38m-M.js} +1 -1
  32. package/.output/public/_nuxt/{QmMoMxLM.js → Bu2aaVIY.js} +3 -3
  33. package/.output/public/_nuxt/{DZUgX70W.js → BuMC3WjZ.js} +1 -1
  34. package/.output/public/_nuxt/{BJtlcTrb.js → BxCKKeYs.js} +1 -1
  35. package/.output/public/_nuxt/{CfOLBbW9.js → C-elpgyr.js} +1 -1
  36. package/.output/public/_nuxt/C2_3mdPC.js +1 -0
  37. package/.output/public/_nuxt/{BLIRKrbM.js → C5iG7O4O.js} +4 -4
  38. package/.output/public/_nuxt/C7P1UCO2.js +1 -0
  39. package/.output/public/_nuxt/{hH1UFE3Z.js → C95YAaJq.js} +1 -1
  40. package/.output/public/_nuxt/{BXY_PWcx.js → C9_jrmk9.js} +2 -2
  41. package/.output/public/_nuxt/CDk0q2hV.js +2 -0
  42. package/.output/public/_nuxt/{kjYMoWWx.js → CGNkHojN.js} +3 -3
  43. package/.output/public/_nuxt/CHEFCN8Q.js +1 -0
  44. package/.output/public/_nuxt/CHNwfU1y.js +1 -0
  45. package/.output/public/_nuxt/CK_2LZBS.js +1 -0
  46. package/.output/public/_nuxt/CNFYDQmj.js +1 -0
  47. package/.output/public/_nuxt/{DZOS7Fh7.js → CTxDO9fB.js} +1 -1
  48. package/.output/public/_nuxt/{kS3boz40.js → CU5S9GCh.js} +1 -1
  49. package/.output/public/_nuxt/{DZ1zNBVM.js → CUtJobDm.js} +1 -1
  50. package/.output/public/_nuxt/CV9-fTmY.js +1 -0
  51. package/.output/public/_nuxt/{e7zD3uJ0.js → CYsTqbBS.js} +1 -1
  52. package/.output/public/_nuxt/{C9YzQCiq.js → CZfMdzfk.js} +1 -1
  53. package/.output/public/_nuxt/{B-IcwqZ2.js → Cdff9XNh.js} +1 -1
  54. package/.output/public/_nuxt/{CNMoZYMv.js → ClOqkAcc.js} +1 -1
  55. package/.output/public/_nuxt/{DXbPFI1d.js → CpjgB2aY.js} +1 -1
  56. package/.output/public/_nuxt/CrwJAwhk.js +1 -0
  57. package/.output/public/_nuxt/CtQBsNUb.js +1 -0
  58. package/.output/public/_nuxt/CuSVQEkS.js +3 -0
  59. package/.output/public/_nuxt/{Df7kUO0m.js → CylWPruw.js} +1 -1
  60. package/.output/public/_nuxt/CzGyac8q.js +1 -0
  61. package/.output/public/_nuxt/D-c8ZSws.js +1 -0
  62. package/.output/public/_nuxt/{B2oUeBbA.js → D0HNloZ9.js} +1 -1
  63. package/.output/public/_nuxt/{DBtBvrYc.js → D55D4EYo.js} +1 -1
  64. package/.output/public/_nuxt/{CfPSts5n.js → DDDpCFpF.js} +1 -1
  65. package/.output/public/_nuxt/{CPLJeOCb.js → DEFEpYzn.js} +1 -1
  66. package/.output/public/_nuxt/DGfAxLHV.js +1 -0
  67. package/.output/public/_nuxt/DHDtnj7p.js +1 -0
  68. package/.output/public/_nuxt/DLSrtpsA.js +1 -0
  69. package/.output/public/_nuxt/DP8hfJ9h.js +1 -0
  70. package/.output/public/_nuxt/DS636elg.js +1 -0
  71. package/.output/public/_nuxt/{Cng9gj7q.js → DT53RWbC.js} +1 -1
  72. package/.output/public/_nuxt/DVDXJYq2.js +2 -0
  73. package/.output/public/_nuxt/DW0xl3I6.js +17 -0
  74. package/.output/public/_nuxt/{4TxgDGVa.js → DX-MDGb3.js} +1 -1
  75. package/.output/public/_nuxt/DcmZRa_F.js +1 -0
  76. package/.output/public/_nuxt/DgE2YE3R.js +1 -0
  77. package/.output/public/_nuxt/Dgf5N4Ng.js +1 -0
  78. package/.output/public/_nuxt/DiOLdHBC.js +1 -0
  79. package/.output/public/_nuxt/DiZyJYez.js +1 -0
  80. package/.output/public/_nuxt/Dk9fwOCm.js +34 -0
  81. package/.output/public/_nuxt/{BlA8mIS-.js → Dnpkl-1q.js} +1 -1
  82. package/.output/public/_nuxt/DoUy4UHi.js +44 -0
  83. package/.output/public/_nuxt/{CN1mJlvD.js → DprVVyUQ.js} +1 -1
  84. package/.output/public/_nuxt/{DD5HpaW9.js → DslPMqfa.js} +1 -1
  85. package/.output/public/_nuxt/{BFP6M-20.js → FUXhyidq.js} +1 -1
  86. package/.output/public/_nuxt/HXerICAi.js +79 -0
  87. package/.output/public/_nuxt/{gnCL8GjZ.js → IvQlbZk6.js} +1 -1
  88. package/.output/public/_nuxt/{BOCwBVnz.js → Jo8kRmHz.js} +1 -1
  89. package/.output/public/_nuxt/{oFM1KLWA.js → KnfsST6Y.js} +1 -1
  90. package/.output/public/_nuxt/NQikbhmK.js +253 -0
  91. package/.output/public/_nuxt/OSduWzyz.js +1 -0
  92. package/.output/public/_nuxt/SfMRXW25.js +5 -0
  93. package/.output/public/_nuxt/{BBK2-Krn.js → SlIRLREZ.js} +2 -2
  94. package/.output/public/_nuxt/TagBadge.By1E6r4y.css +1 -0
  95. package/.output/public/_nuxt/WsxFTEFq.js +10 -0
  96. package/.output/public/_nuxt/YVN7WG7q.js +1 -0
  97. package/.output/public/_nuxt/{rTvJTef_.js → ZFiQCMUB.js} +1 -1
  98. package/.output/public/_nuxt/aQgs_c6e.js +9 -0
  99. package/.output/public/_nuxt/builds/latest.json +1 -1
  100. package/.output/public/_nuxt/builds/meta/ab473028-4b37-4884-b243-b8f6e5046e5e.json +1 -0
  101. package/.output/public/_nuxt/{B1X__ilH.js → cHAnlQbv.js} +1 -1
  102. package/.output/public/_nuxt/dYCKgE-3.js +5 -0
  103. package/.output/public/_nuxt/{BeFDVhpA.js → eaVkJRSa.js} +1 -1
  104. package/.output/public/_nuxt/entry.CPhW41mh.css +1 -0
  105. package/.output/public/_nuxt/{Dwws9U0D.js → eptP4pGv.js} +1 -1
  106. package/.output/public/_nuxt/fVcG504p.js +1 -0
  107. package/.output/public/_nuxt/g26aVPxc.js +1 -0
  108. package/.output/public/_nuxt/{CsUoYK75.js → ndShiWE8.js} +1 -1
  109. package/.output/public/_nuxt/nv9-6vBK.js +1 -0
  110. package/.output/public/_nuxt/rWNTSFD6.js +3 -0
  111. package/.output/public/_nuxt/tvgqrYDd.js +1 -0
  112. package/.output/public/_nuxt/{wHnZ9OaL.js → y17lMTFy.js} +1 -1
  113. package/.output/public/_nuxt/{qpI-_f9Q.js → ybDYeNxd.js} +1 -1
  114. package/.output/public/_nuxt/{D0cnIs93.js → zQyPuvV1.js} +1 -1
  115. package/.output/public/demo/seed.version.json +2 -2
  116. package/.output/server/chunks/_/ai-prompt-preview.mjs +38 -0
  117. package/.output/server/chunks/_/ai-prompt-preview.mjs.map +1 -0
  118. package/.output/server/chunks/_/collect.mjs +122 -0
  119. package/.output/server/chunks/_/collect.mjs.map +1 -0
  120. package/.output/server/chunks/_/import-runs.mjs +351 -0
  121. package/.output/server/chunks/_/import-runs.mjs.map +1 -0
  122. package/.output/server/chunks/_/markers.mjs +1 -1
  123. package/.output/server/chunks/_/quarantine.mjs +112 -0
  124. package/.output/server/chunks/_/quarantine.mjs.map +1 -0
  125. package/.output/server/chunks/_/users.mjs +1 -1
  126. package/.output/server/chunks/build/{Alert-Bp1Wz_sq.mjs → Alert-C4xq8lao.mjs} +2 -2
  127. package/.output/server/chunks/build/Alert-C4xq8lao.mjs.map +1 -0
  128. package/.output/server/chunks/build/{Breadcrumb-C9ZPTLym.mjs → Breadcrumb-Ak2Lg3oM.mjs} +3 -3
  129. package/.output/server/chunks/build/Breadcrumb-Ak2Lg3oM.mjs.map +1 -0
  130. package/.output/server/chunks/build/{BreadcrumbNav-C3y42Vun.mjs → BreadcrumbNav-DO7I_z-n.mjs} +3 -3
  131. package/.output/server/chunks/build/BreadcrumbNav-DO7I_z-n.mjs.map +1 -0
  132. package/.output/server/chunks/build/{BrowserBadge-DNCp9pF-.mjs → BrowserBadge-D33lqUcj.mjs} +5 -5
  133. package/.output/server/chunks/build/BrowserBadge-D33lqUcj.mjs.map +1 -0
  134. package/.output/server/chunks/build/{ChartCard-Fr557IbV.mjs → ChartCard-Y1UKwMsf.mjs} +2 -2
  135. package/.output/server/chunks/build/ChartCard-Y1UKwMsf.mjs.map +1 -0
  136. package/.output/server/chunks/build/{Checkbox-cVOSIY93.mjs → Checkbox-DvUBGagc.mjs} +8 -8
  137. package/.output/server/chunks/build/Checkbox-DvUBGagc.mjs.map +1 -0
  138. package/.output/server/chunks/build/{CiEnvCard-DXPOhdSG.mjs → CiEnvCard-CrjOM17n.mjs} +25 -34
  139. package/.output/server/chunks/build/CiEnvCard-CrjOM17n.mjs.map +1 -0
  140. package/.output/server/chunks/build/{CodeBlock-BGwNmJ8J.mjs → CodeBlock-BgE-NSmE.mjs} +7 -22
  141. package/.output/server/chunks/build/CodeBlock-BgE-NSmE.mjs.map +1 -0
  142. package/.output/server/chunks/build/{DashboardNavbar-Bdp-OwTN.mjs → DashboardNavbar-BHmMSPX7.mjs} +3 -3
  143. package/.output/server/chunks/build/DashboardNavbar-BHmMSPX7.mjs.map +1 -0
  144. package/.output/server/chunks/build/{DashboardSidebarToggle-Ji6ADuqF.mjs → DashboardSidebarToggle-DCTnHiIv.mjs} +3 -3
  145. package/.output/server/chunks/build/DashboardSidebarToggle-DCTnHiIv.mjs.map +1 -0
  146. package/.output/server/chunks/build/{DataLocationCard-D6xSOrme.mjs → DataLocationCard-B_YHdzSz.mjs} +3 -3
  147. package/.output/server/chunks/build/DataLocationCard-B_YHdzSz.mjs.map +1 -0
  148. package/.output/server/chunks/build/{DiagnosisPanel-DV1xwGu4.mjs → DiagnosisPanel-B646dK4p.mjs} +17 -528
  149. package/.output/server/chunks/build/DiagnosisPanel-B646dK4p.mjs.map +1 -0
  150. package/.output/server/chunks/build/DurationValue-D20oGbnc.mjs +43 -0
  151. package/.output/server/chunks/build/DurationValue-D20oGbnc.mjs.map +1 -0
  152. package/.output/server/chunks/build/{EmptyState-DV3oT_xz.mjs → EmptyState-Dtlab7S9.mjs} +3 -3
  153. package/.output/server/chunks/build/EmptyState-Dtlab7S9.mjs.map +1 -0
  154. package/.output/server/chunks/build/{EntityLinks-DeOP13Kr.mjs → EntityLinks-D3fp57pR.mjs} +6 -6
  155. package/.output/server/chunks/build/EntityLinks-D3fp57pR.mjs.map +1 -0
  156. package/.output/server/chunks/build/{EnvManagedBadge-Qpn58Nmr.mjs → EnvManagedBadge-Bg3FSiU1.mjs} +3 -3
  157. package/.output/server/chunks/build/EnvManagedBadge-Bg3FSiU1.mjs.map +1 -0
  158. package/.output/server/chunks/build/{FormField-B-GSn_VR.mjs → FormField-B0HKsdMd.mjs} +3 -3
  159. package/.output/server/chunks/build/FormField-B0HKsdMd.mjs.map +1 -0
  160. package/.output/server/chunks/build/{HelpHint-YEMWtKu1.mjs → HelpHint-DrcIv-Oj.mjs} +53 -6
  161. package/.output/server/chunks/build/HelpHint-DrcIv-Oj.mjs.map +1 -0
  162. package/.output/server/chunks/build/{Label-DBvbHd3A.mjs → Label-DYDR1Oeh.mjs} +2 -2
  163. package/.output/server/chunks/build/Label-DYDR1Oeh.mjs.map +1 -0
  164. package/.output/server/chunks/build/{MiniRunBars-C3HG-EYm.mjs → MiniRunBars-CZMugDrh.mjs} +2 -2
  165. package/.output/server/chunks/build/MiniRunBars-CZMugDrh.mjs.map +1 -0
  166. package/.output/server/chunks/build/{Modal-CfA78Hm1.mjs → Modal-Ck2XLt8d.mjs} +2 -2
  167. package/.output/server/chunks/build/Modal-Ck2XLt8d.mjs.map +1 -0
  168. package/.output/server/chunks/build/{OpenInIdeLink-B92wosXu.mjs → OpenInIdeLink-C4MXA8ya.mjs} +6 -6
  169. package/.output/server/chunks/build/{OpenInIdeLink-B92wosXu.mjs.map → OpenInIdeLink-C4MXA8ya.mjs.map} +1 -1
  170. package/.output/server/chunks/build/{ProjectTestCasesTable-9Ia825h8.mjs → ProjectTestCasesTable-CxfQ5wtN.mjs} +120 -45
  171. package/.output/server/chunks/build/ProjectTestCasesTable-CxfQ5wtN.mjs.map +1 -0
  172. package/.output/server/chunks/build/{RovingFocusItem-CxhHdNGo.mjs → RovingFocusItem-BJSzTBjy.mjs} +2 -2
  173. package/.output/server/chunks/build/RovingFocusItem-BJSzTBjy.mjs.map +1 -0
  174. package/.output/server/chunks/build/{RunReports-BpJqLHY9.mjs → RunReports-DFLv51TX.mjs} +8 -6
  175. package/.output/server/chunks/build/RunReports-DFLv51TX.mjs.map +1 -0
  176. package/.output/server/chunks/build/{RunStatusBadge-BhmJ_RKM.mjs → RunStatusBadge-FfGb6bkW.mjs} +3 -2
  177. package/.output/server/chunks/build/RunStatusBadge-FfGb6bkW.mjs.map +1 -0
  178. package/.output/server/chunks/build/{SectionCard-COd9TuDq.mjs → SectionCard-CN-v0FZ_.mjs} +2 -2
  179. package/.output/server/chunks/build/SectionCard-CN-v0FZ_.mjs.map +1 -0
  180. package/.output/server/chunks/build/{Select-ppPz926C.mjs → Select-CUqj50wi.mjs} +4 -4
  181. package/.output/server/chunks/build/Select-CUqj50wi.mjs.map +1 -0
  182. package/.output/server/chunks/build/{SelectMenu-799c_Ils.mjs → SelectMenu-Db7osY7J.mjs} +4 -4
  183. package/.output/server/chunks/build/{SelectMenu-799c_Ils.mjs.map → SelectMenu-Db7osY7J.mjs.map} +1 -1
  184. package/.output/server/chunks/build/{Separator-CxZdx8kw.mjs → Separator-CR4WcEKD.mjs} +2 -2
  185. package/.output/server/chunks/build/Separator-CR4WcEKD.mjs.map +1 -0
  186. package/.output/server/chunks/build/{SettingsField-DDD4oqys.mjs → SettingsField-D6iEYbEc.mjs} +6 -6
  187. package/.output/server/chunks/build/SettingsField-D6iEYbEc.mjs.map +1 -0
  188. package/.output/server/chunks/build/{Slideover-B95Rj237.mjs → Slideover-DgCa80mf.mjs} +3 -3
  189. package/.output/server/chunks/build/Slideover-DgCa80mf.mjs.map +1 -0
  190. package/.output/server/chunks/build/{Switch-xQQ3_ME1.mjs → Switch-CgUioOYB.mjs} +5 -5
  191. package/.output/server/chunks/build/Switch-CgUioOYB.mjs.map +1 -0
  192. package/.output/server/chunks/build/{Table-CPhhVzDv.mjs → Table-BRk04Hd2.mjs} +3 -3
  193. package/.output/server/chunks/build/Table-BRk04Hd2.mjs.map +1 -0
  194. package/.output/server/chunks/build/{Tabs-BV9XqjoO.mjs → Tabs-Bbsg9wag.mjs} +3 -3
  195. package/.output/server/chunks/build/Tabs-Bbsg9wag.mjs.map +1 -0
  196. package/.output/server/chunks/build/TagBadge-DwzoFCBb.mjs +31 -0
  197. package/.output/server/chunks/build/TagBadge-DwzoFCBb.mjs.map +1 -0
  198. package/.output/server/chunks/build/TagBadge-styles.jhuZ4NjP.mjs +8 -0
  199. package/.output/server/chunks/build/TagBadge-styles.jhuZ4NjP.mjs.map +1 -0
  200. package/.output/server/chunks/build/{TestCaseHistoryChart-DMb-xSJa.mjs → TestCaseHistoryChart-nMLPhdvD.mjs} +6 -6
  201. package/.output/server/chunks/build/TestCaseHistoryChart-nMLPhdvD.mjs.map +1 -0
  202. package/.output/server/chunks/build/TestMetaBadges-D5_yUtIP.mjs +200 -0
  203. package/.output/server/chunks/build/TestMetaBadges-D5_yUtIP.mjs.map +1 -0
  204. package/.output/server/chunks/build/{TestStatusBar-CEzt76wk.mjs → TestStatusBar-j6h2Jp6A.mjs} +15 -15
  205. package/.output/server/chunks/build/TestStatusBar-j6h2Jp6A.mjs.map +1 -0
  206. package/.output/server/chunks/build/{Textarea-DrrqQUVG.mjs → Textarea-Dv2-lOvW.mjs} +2 -2
  207. package/.output/server/chunks/build/Textarea-Dv2-lOvW.mjs.map +1 -0
  208. package/.output/server/chunks/build/{Tooltip-7vwuDPrZ.mjs → Tooltip-BOazooWP.mjs} +3 -3
  209. package/.output/server/chunks/build/Tooltip-BOazooWP.mjs.map +1 -0
  210. package/.output/server/chunks/build/{VisuallyHiddenInput-C9eJVpPW.mjs → VisuallyHiddenInput-D6kBJxVd.mjs} +2 -2
  211. package/.output/server/chunks/build/VisuallyHiddenInput-D6kBJxVd.mjs.map +1 -0
  212. package/.output/server/chunks/build/{_id_-B2yirIuA.mjs → _id_-B78ky13D.mjs} +798 -358
  213. package/.output/server/chunks/build/_id_-B78ky13D.mjs.map +1 -0
  214. package/.output/server/chunks/build/{_id_-bWcP2xFl.mjs → _id_-BHh65pfg.mjs} +690 -443
  215. package/.output/server/chunks/build/_id_-BHh65pfg.mjs.map +1 -0
  216. package/.output/server/chunks/build/{_id_-B4V5fop6.mjs → _id_-Rzkqx55x.mjs} +297 -60
  217. package/.output/server/chunks/build/{_id_-B4V5fop6.mjs.map → _id_-Rzkqx55x.mjs.map} +1 -1
  218. package/.output/server/chunks/build/{_id_-CE0Gso6i.mjs → _id_-z5N6HPyC.mjs} +89 -40
  219. package/.output/server/chunks/build/_id_-z5N6HPyC.mjs.map +1 -0
  220. package/.output/server/chunks/build/{about-CoJjvUwM.mjs → about-CvSP73Ug.mjs} +100 -52
  221. package/.output/server/chunks/build/about-CvSP73Ug.mjs.map +1 -0
  222. package/.output/server/chunks/build/{account-Cn-eZqXM.mjs → account-DAfvaD-F.mjs} +21 -9
  223. package/.output/server/chunks/build/account-DAfvaD-F.mjs.map +1 -0
  224. package/.output/server/chunks/build/{ai-7jdaPOmj.mjs → ai-B4VJ9K1K.mjs} +45 -23
  225. package/.output/server/chunks/build/{ai-7jdaPOmj.mjs.map → ai-B4VJ9K1K.mjs.map} +1 -1
  226. package/.output/server/chunks/build/{analytics-B276WPeU.mjs → analytics-CJPC6t4L.mjs} +65 -39
  227. package/.output/server/chunks/build/{analytics-B276WPeU.mjs.map → analytics-CJPC6t4L.mjs.map} +1 -1
  228. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  229. package/.output/server/chunks/build/compare-RxHSOdsO.mjs +12 -0
  230. package/.output/server/chunks/build/{db.client-aHcD0wyX.mjs → db.client-CQoVTYB9.mjs} +83 -5
  231. package/.output/server/chunks/build/db.client-CQoVTYB9.mjs.map +1 -0
  232. package/.output/server/chunks/build/{default-BSzdkM_L.mjs → default-zvbFgDJG.mjs} +36 -24
  233. package/.output/server/chunks/build/default-zvbFgDJG.mjs.map +1 -0
  234. package/.output/server/chunks/build/{docs-BN_x1OW3.mjs → docs-DyuVEgtB.mjs} +30 -49
  235. package/.output/server/chunks/build/{docs-BN_x1OW3.mjs.map → docs-DyuVEgtB.mjs.map} +1 -1
  236. package/.output/server/chunks/build/{edit-C9Z7oZeu.mjs → edit-CFR5g2Qf.mjs} +30 -18
  237. package/.output/server/chunks/build/edit-CFR5g2Qf.mjs.map +1 -0
  238. package/.output/server/chunks/build/{fetch-8kznMtBM.mjs → fetch-B4FwBOzu.mjs} +3 -3
  239. package/.output/server/chunks/build/fetch-B4FwBOzu.mjs.map +1 -0
  240. package/.output/server/chunks/build/{forgot-password-BqPF4Rxs.mjs → forgot-password-CC__1OnV.mjs} +17 -5
  241. package/.output/server/chunks/build/forgot-password-CC__1OnV.mjs.map +1 -0
  242. package/.output/server/chunks/build/{help-content-DmFnuhNu.mjs → help-content-C876a9WD.mjs} +37 -8
  243. package/.output/server/chunks/build/help-content-C876a9WD.mjs.map +1 -0
  244. package/.output/server/chunks/build/import-CZo3djDi.mjs +1021 -0
  245. package/.output/server/chunks/build/import-CZo3djDi.mjs.map +1 -0
  246. package/.output/server/chunks/build/{index-CULN3-en.mjs → index-CU2nZhAa.mjs} +113 -42
  247. package/.output/server/chunks/build/index-CU2nZhAa.mjs.map +1 -0
  248. package/.output/server/chunks/build/{index-DVUtBexc.mjs → index-D7fe97l3.mjs} +1305 -281
  249. package/.output/server/chunks/build/index-D7fe97l3.mjs.map +1 -0
  250. package/.output/server/chunks/build/{index-BR9hw6qk.mjs → index-Stqw0dEI.mjs} +50 -30
  251. package/.output/server/chunks/build/index-Stqw0dEI.mjs.map +1 -0
  252. package/.output/server/chunks/build/{index-BK9PTRpd.mjs → index-gCw_y4ZJ.mjs} +87 -70
  253. package/.output/server/chunks/build/{index-BK9PTRpd.mjs.map → index-gCw_y4ZJ.mjs.map} +1 -1
  254. package/.output/server/chunks/build/{index-Ba-Fifra.mjs → index-tR6owKzj.mjs} +18 -6
  255. package/.output/server/chunks/build/index-tR6owKzj.mjs.map +1 -0
  256. package/.output/server/chunks/build/{isValueEqualOrExist-DBZjbD_3.mjs → isValueEqualOrExist-D2qw9YEr.mjs} +3 -3
  257. package/.output/server/chunks/build/isValueEqualOrExist-D2qw9YEr.mjs.map +1 -0
  258. package/.output/server/chunks/build/{login-D2XZDuek.mjs → login-Da4u1IlW.mjs} +19 -7
  259. package/.output/server/chunks/build/login-Da4u1IlW.mjs.map +1 -0
  260. package/.output/server/chunks/build/{mcp-_o6cMS6m.mjs → mcp-B3IUvRgD.mjs} +27 -21
  261. package/.output/server/chunks/build/mcp-B3IUvRgD.mjs.map +1 -0
  262. package/.output/server/chunks/build/{notifications-Dzm9c0u_.mjs → notifications-abDv0id8.mjs} +27 -21
  263. package/.output/server/chunks/build/notifications-abDv0id8.mjs.map +1 -0
  264. package/.output/server/chunks/build/pr-feedback-DjZID6q-.mjs +368 -0
  265. package/.output/server/chunks/build/pr-feedback-DjZID6q-.mjs.map +1 -0
  266. package/.output/server/chunks/build/{reset-password-gpFzIEDj.mjs → reset-password-BmrUS4ZD.mjs} +17 -5
  267. package/.output/server/chunks/build/reset-password-BmrUS4ZD.mjs.map +1 -0
  268. package/.output/server/chunks/build/server.mjs +238 -36
  269. package/.output/server/chunks/build/{settings-pNyPBXVa.mjs → settings-Du7YqF8i.mjs} +23 -10
  270. package/.output/server/chunks/build/settings-Du7YqF8i.mjs.map +1 -0
  271. package/.output/server/chunks/build/{settings-metadata-B0wo5R-W.mjs → settings-metadata-DrEqWcW-.mjs} +11 -2
  272. package/.output/server/chunks/build/settings-metadata-DrEqWcW-.mjs.map +1 -0
  273. package/.output/server/chunks/build/{storage-XelzuyPy.mjs → storage-B4vzxd8G.mjs} +41 -31
  274. package/.output/server/chunks/build/storage-B4vzxd8G.mjs.map +1 -0
  275. package/.output/server/chunks/build/styles.mjs +1 -0
  276. package/.output/server/chunks/build/{tags-DrCQ7QSw.mjs → tags-DauTe_F-.mjs} +22 -10
  277. package/.output/server/chunks/build/tags-DauTe_F-.mjs.map +1 -0
  278. package/.output/server/chunks/build/{test-cases-pmOxi-AN.mjs → test-cases-DUvaO1He.mjs} +38 -24
  279. package/.output/server/chunks/build/test-cases-DUvaO1He.mjs.map +1 -0
  280. package/.output/server/chunks/build/{timeout-hygiene-CNs71Iah.mjs → timeout-hygiene-CbnSaVbK.mjs} +20 -8
  281. package/.output/server/chunks/build/timeout-hygiene-CbnSaVbK.mjs.map +1 -0
  282. package/.output/server/chunks/build/{useAiStatus-ZO987RY7.mjs → useAiStatus-CWvIo32Q.mjs} +89 -89
  283. package/.output/server/chunks/build/useAiStatus-CWvIo32Q.mjs.map +1 -0
  284. package/.output/server/chunks/build/{useCopy-BQQKcwlq.mjs → useCopy-CeKWgHyT.mjs} +2 -2
  285. package/.output/server/chunks/build/useCopy-CeKWgHyT.mjs.map +1 -0
  286. package/.output/server/chunks/build/{PageStateCard-Bwee6JTk.mjs → useCopyRich-BemRsKgv.mjs} +418 -39
  287. package/.output/server/chunks/build/useCopyRich-BemRsKgv.mjs.map +1 -0
  288. package/.output/server/chunks/build/useDesktopDownload-D49JRQSw.mjs +46 -0
  289. package/.output/server/chunks/build/useDesktopDownload-D49JRQSw.mjs.map +1 -0
  290. package/.output/server/chunks/build/{useFormControl-BLpq1s4O.mjs → useFormControl-CZ9So7iX.mjs} +2 -2
  291. package/.output/server/chunks/build/useFormControl-CZ9So7iX.mjs.map +1 -0
  292. package/.output/server/chunks/build/{useOpenInIde-kMZ7Jw5c.mjs → useOpenInIde-4GFf-kdi.mjs} +2 -2
  293. package/.output/server/chunks/build/useOpenInIde-4GFf-kdi.mjs.map +1 -0
  294. package/.output/server/chunks/build/{useSettingsNav-NjI2seBy.mjs → useSettingsNav-C3O866KC.mjs} +6 -6
  295. package/.output/server/chunks/build/useSettingsNav-C3O866KC.mjs.map +1 -0
  296. package/.output/server/chunks/build/{useTreeViewCookie-DVYpxW-p.mjs → useTreeViewCookie-CQjQdTkH.mjs} +2 -2
  297. package/.output/server/chunks/build/useTreeViewCookie-CQjQdTkH.mjs.map +1 -0
  298. package/.output/server/chunks/build/{users-NmAUZs3i.mjs → users-CTUqXyGh.mjs} +22 -10
  299. package/.output/server/chunks/build/users-CTUqXyGh.mjs.map +1 -0
  300. package/.output/server/chunks/build/{virtualizer-ZaqK4guJ.mjs → virtualizer-Cd1hhlxC.mjs} +5 -5
  301. package/.output/server/chunks/build/virtualizer-Cd1hhlxC.mjs.map +1 -0
  302. package/.output/server/chunks/build/{wasted-time-CguAF9zc.mjs → wasted-time-lYkx5YO4.mjs} +26 -14
  303. package/.output/server/chunks/build/wasted-time-lYkx5YO4.mjs.map +1 -0
  304. package/.output/server/chunks/nitro/nitro.mjs +4960 -1155
  305. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  306. package/.output/server/chunks/routes/__piwi/session.get.mjs +13 -1
  307. package/.output/server/chunks/routes/__piwi/session.get.mjs.map +1 -1
  308. package/.output/server/chunks/routes/api/admin/cleanup.delete.mjs +12 -0
  309. package/.output/server/chunks/routes/api/admin/cleanup.delete.mjs.map +1 -1
  310. package/.output/server/chunks/routes/api/admin/stats.get.mjs +12 -0
  311. package/.output/server/chunks/routes/api/admin/stats.get.mjs.map +1 -1
  312. package/.output/server/chunks/routes/api/ai/status.get.mjs +12 -0
  313. package/.output/server/chunks/routes/api/ai/status.get.mjs.map +1 -1
  314. package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs +12 -0
  315. package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs.map +1 -1
  316. package/.output/server/chunks/routes/api/auth/change-password.post.mjs +12 -0
  317. package/.output/server/chunks/routes/api/auth/change-password.post.mjs.map +1 -1
  318. package/.output/server/chunks/routes/api/auth/forgot-password.post.mjs +12 -0
  319. package/.output/server/chunks/routes/api/auth/forgot-password.post.mjs.map +1 -1
  320. package/.output/server/chunks/routes/api/auth/login.post.mjs +12 -0
  321. package/.output/server/chunks/routes/api/auth/login.post.mjs.map +1 -1
  322. package/.output/server/chunks/routes/api/auth/logout.post.mjs +12 -0
  323. package/.output/server/chunks/routes/api/auth/logout.post.mjs.map +1 -1
  324. package/.output/server/chunks/routes/api/auth/me.get.mjs +12 -0
  325. package/.output/server/chunks/routes/api/auth/me.get.mjs.map +1 -1
  326. package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs +12 -0
  327. package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs.map +1 -1
  328. package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs +12 -0
  329. package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs.map +1 -1
  330. package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs +12 -0
  331. package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs.map +1 -1
  332. package/.output/server/chunks/routes/api/auth/reset-password.post.mjs +12 -0
  333. package/.output/server/chunks/routes/api/auth/reset-password.post.mjs.map +1 -1
  334. package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs +12 -0
  335. package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs.map +1 -1
  336. package/.output/server/chunks/routes/api/auth/setup.get.mjs +12 -0
  337. package/.output/server/chunks/routes/api/auth/setup.get.mjs.map +1 -1
  338. package/.output/server/chunks/routes/api/auth/setup.post.mjs +12 -0
  339. package/.output/server/chunks/routes/api/auth/setup.post.mjs.map +1 -1
  340. package/.output/server/chunks/routes/api/auth/verify-email.get.mjs +12 -0
  341. package/.output/server/chunks/routes/api/auth/verify-email.get.mjs.map +1 -1
  342. package/.output/server/chunks/routes/api/channels/_id/test.post.mjs +12 -0
  343. package/.output/server/chunks/routes/api/channels/_id/test.post.mjs.map +1 -1
  344. package/.output/server/chunks/routes/api/channels/_id_.delete.mjs +12 -0
  345. package/.output/server/chunks/routes/api/channels/_id_.delete.mjs.map +1 -1
  346. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs +12 -0
  347. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs.map +1 -1
  348. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs +12 -0
  349. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs.map +1 -1
  350. package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs +12 -0
  351. package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs.map +1 -1
  352. package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs +12 -0
  353. package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs.map +1 -1
  354. package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs +12 -0
  355. package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs.map +1 -1
  356. package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs +12 -0
  357. package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs.map +1 -1
  358. package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs +12 -0
  359. package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs.map +1 -1
  360. package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs +24 -1
  361. package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs.map +1 -1
  362. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs +13 -1
  363. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs.map +1 -1
  364. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs +13 -1
  365. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs.map +1 -1
  366. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs +13 -1
  367. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs.map +1 -1
  368. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs +13 -1
  369. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs.map +1 -1
  370. package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs +64 -0
  371. package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs.map +1 -0
  372. package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs +13 -1
  373. package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs.map +1 -1
  374. package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs +56 -0
  375. package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs.map +1 -0
  376. package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs +13 -1
  377. package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs.map +1 -1
  378. package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs +12 -0
  379. package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs.map +1 -1
  380. package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs +13 -1
  381. package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs.map +1 -1
  382. package/.output/server/chunks/routes/api/files/_...path_.get.mjs +13 -32
  383. package/.output/server/chunks/routes/api/files/_...path_.get.mjs.map +1 -1
  384. package/.output/server/chunks/routes/api/health.get.mjs +13 -1
  385. package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
  386. package/.output/server/chunks/routes/api/index.get.mjs +12 -0
  387. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
  388. package/.output/server/chunks/routes/api/index.get2.mjs +13 -1
  389. package/.output/server/chunks/routes/api/index.get2.mjs.map +1 -1
  390. package/.output/server/chunks/routes/api/index.get3.mjs +13 -1
  391. package/.output/server/chunks/routes/api/index.get3.mjs.map +1 -1
  392. package/.output/server/chunks/routes/api/index.get4.mjs +13 -1
  393. package/.output/server/chunks/routes/api/index.get4.mjs.map +1 -1
  394. package/.output/server/chunks/routes/api/index.get5.mjs +12 -0
  395. package/.output/server/chunks/routes/api/index.get5.mjs.map +1 -1
  396. package/.output/server/chunks/routes/api/index.post.mjs +12 -0
  397. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
  398. package/.output/server/chunks/routes/api/index.post2.mjs +13 -1
  399. package/.output/server/chunks/routes/api/index.post2.mjs.map +1 -1
  400. package/.output/server/chunks/routes/api/index.post3.mjs +13 -1
  401. package/.output/server/chunks/routes/api/index.post3.mjs.map +1 -1
  402. package/.output/server/chunks/routes/api/index.post4.mjs +13 -1
  403. package/.output/server/chunks/routes/api/index.post4.mjs.map +1 -1
  404. package/.output/server/chunks/routes/api/index.post5.mjs +13 -1
  405. package/.output/server/chunks/routes/api/index.post5.mjs.map +1 -1
  406. package/.output/server/chunks/routes/api/index.post6.mjs +12 -0
  407. package/.output/server/chunks/routes/api/index.post6.mjs.map +1 -1
  408. package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs +13 -1
  409. package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs.map +1 -1
  410. package/.output/server/chunks/routes/api/links/_id_.delete.mjs +13 -1
  411. package/.output/server/chunks/routes/api/links/_id_.delete.mjs.map +1 -1
  412. package/.output/server/chunks/routes/api/links/_id_.patch.mjs +13 -1
  413. package/.output/server/chunks/routes/api/links/_id_.patch.mjs.map +1 -1
  414. package/.output/server/chunks/routes/api/markers/_id_.delete.mjs +13 -1
  415. package/.output/server/chunks/routes/api/markers/_id_.delete.mjs.map +1 -1
  416. package/.output/server/chunks/routes/api/markers/_id_.put.mjs +13 -1
  417. package/.output/server/chunks/routes/api/markers/_id_.put.mjs.map +1 -1
  418. package/.output/server/chunks/routes/api/notifications/stream.get.mjs +13 -1
  419. package/.output/server/chunks/routes/api/notifications/stream.get.mjs.map +1 -1
  420. package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs +13 -1
  421. package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs.map +1 -1
  422. package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs +13 -1
  423. package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs.map +1 -1
  424. package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs +13 -1
  425. package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs.map +1 -1
  426. package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs +22 -2
  427. package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs.map +1 -1
  428. package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs +13 -1
  429. package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs.map +1 -1
  430. package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs +13 -1
  431. package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs.map +1 -1
  432. package/.output/server/chunks/routes/api/projects/_id/markers.post.mjs +13 -1
  433. package/.output/server/chunks/routes/api/projects/_id/markers.post.mjs.map +1 -1
  434. package/.output/server/chunks/routes/api/projects/_id/members.get.mjs +13 -1
  435. package/.output/server/chunks/routes/api/projects/_id/members.get.mjs.map +1 -1
  436. package/.output/server/chunks/routes/api/projects/_id/members.put.mjs +13 -1
  437. package/.output/server/chunks/routes/api/projects/_id/members.put.mjs.map +1 -1
  438. package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs +13 -1
  439. package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs.map +1 -1
  440. package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs +58 -0
  441. package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs.map +1 -0
  442. package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs +57 -0
  443. package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs.map +1 -0
  444. package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs +72 -0
  445. package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs.map +1 -0
  446. package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs +13 -1
  447. package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs.map +1 -1
  448. package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs +13 -1
  449. package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs.map +1 -1
  450. package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs +13 -1
  451. package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs.map +1 -1
  452. package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs +13 -1
  453. package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs.map +1 -1
  454. package/.output/server/chunks/routes/api/projects/_id_.delete.mjs +13 -1
  455. package/.output/server/chunks/routes/api/projects/_id_.delete.mjs.map +1 -1
  456. package/.output/server/chunks/routes/api/projects/_id_.get.mjs +13 -1
  457. package/.output/server/chunks/routes/api/projects/_id_.get.mjs.map +1 -1
  458. package/.output/server/chunks/routes/api/projects/_id_.put.mjs +13 -1
  459. package/.output/server/chunks/routes/api/projects/_id_.put.mjs.map +1 -1
  460. package/.output/server/chunks/routes/api/projects/menu.get.mjs +13 -1
  461. package/.output/server/chunks/routes/api/projects/menu.get.mjs.map +1 -1
  462. package/.output/server/chunks/routes/api/projects/overview.get.mjs +13 -1
  463. package/.output/server/chunks/routes/api/projects/overview.get.mjs.map +1 -1
  464. package/.output/server/chunks/routes/api/projects.get.mjs +13 -1
  465. package/.output/server/chunks/routes/api/projects.get.mjs.map +1 -1
  466. package/.output/server/chunks/routes/api/search.get.mjs +13 -1
  467. package/.output/server/chunks/routes/api/search.get.mjs.map +1 -1
  468. package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs +13 -1
  469. package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs.map +1 -1
  470. package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs +13 -1
  471. package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs.map +1 -1
  472. package/.output/server/chunks/routes/api/settings/ai/models.post.mjs +12 -0
  473. package/.output/server/chunks/routes/api/settings/ai/models.post.mjs.map +1 -1
  474. package/.output/server/chunks/routes/api/settings/ai/test.post.mjs +13 -1
  475. package/.output/server/chunks/routes/api/settings/ai/test.post.mjs.map +1 -1
  476. package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs +13 -1
  477. package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs.map +1 -1
  478. package/.output/server/chunks/routes/api/settings/ai.get.mjs +13 -1
  479. package/.output/server/chunks/routes/api/settings/ai.get.mjs.map +1 -1
  480. package/.output/server/chunks/routes/api/settings/ai.put.mjs +13 -1
  481. package/.output/server/chunks/routes/api/settings/ai.put.mjs.map +1 -1
  482. package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs +57 -0
  483. package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs.map +1 -0
  484. package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs +63 -0
  485. package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs.map +1 -0
  486. package/.output/server/chunks/routes/api/settings/smtp/test.post.mjs +12 -0
  487. package/.output/server/chunks/routes/api/settings/smtp/test.post.mjs.map +1 -1
  488. package/.output/server/chunks/routes/api/settings/smtp.get.mjs +13 -1
  489. package/.output/server/chunks/routes/api/settings/smtp.get.mjs.map +1 -1
  490. package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs +13 -1
  491. package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs.map +1 -1
  492. package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs +13 -1
  493. package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs.map +1 -1
  494. package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs +13 -1
  495. package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs.map +1 -1
  496. package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs +13 -1
  497. package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs.map +1 -1
  498. package/.output/server/chunks/routes/api/stream.get.mjs +13 -1
  499. package/.output/server/chunks/routes/api/stream.get.mjs.map +1 -1
  500. package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs +13 -1
  501. package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs.map +1 -1
  502. package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs +13 -1
  503. package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs.map +1 -1
  504. package/.output/server/chunks/routes/api/tags/_id_.delete.mjs +13 -1
  505. package/.output/server/chunks/routes/api/tags/_id_.delete.mjs.map +1 -1
  506. package/.output/server/chunks/routes/api/tags/_id_.put.mjs +13 -1
  507. package/.output/server/chunks/routes/api/tags/_id_.put.mjs.map +1 -1
  508. package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs +13 -1
  509. package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs.map +1 -1
  510. package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs +13 -1
  511. package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs.map +1 -1
  512. package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs +13 -1
  513. package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs.map +1 -1
  514. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs +13 -1
  515. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs.map +1 -1
  516. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs +25 -3
  517. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs.map +1 -1
  518. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs +13 -1
  519. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs.map +1 -1
  520. package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs +60 -0
  521. package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs.map +1 -0
  522. package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs +13 -1
  523. package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs.map +1 -1
  524. package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs +13 -1
  525. package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs.map +1 -1
  526. package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs +13 -1
  527. package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs.map +1 -1
  528. package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs +13 -1
  529. package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs.map +1 -1
  530. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs +13 -1
  531. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs.map +1 -1
  532. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs +13 -1
  533. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs.map +1 -1
  534. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs +13 -1
  535. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs.map +1 -1
  536. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs +13 -1
  537. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs.map +1 -1
  538. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs +13 -1
  539. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs.map +1 -1
  540. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs +13 -1
  541. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs.map +1 -1
  542. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs +13 -1
  543. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs.map +1 -1
  544. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs +13 -1
  545. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs.map +1 -1
  546. package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs +13 -1
  547. package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs.map +1 -1
  548. package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs +13 -1
  549. package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs.map +1 -1
  550. package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs +15 -1
  551. package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs.map +1 -1
  552. package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs +196 -0
  553. package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs.map +1 -0
  554. package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs +13 -1
  555. package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs.map +1 -1
  556. package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs +13 -1
  557. package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs.map +1 -1
  558. package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs +13 -1
  559. package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs.map +1 -1
  560. package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs +13 -1
  561. package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs.map +1 -1
  562. package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs +13 -1
  563. package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs.map +1 -1
  564. package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs +13 -1
  565. package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs.map +1 -1
  566. package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs +13 -1
  567. package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs.map +1 -1
  568. package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs +13 -1
  569. package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs.map +1 -1
  570. package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs +13 -1
  571. package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs.map +1 -1
  572. package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs +78 -0
  573. package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs.map +1 -0
  574. package/.output/server/chunks/routes/api/test-runs/import.post.mjs +201 -0
  575. package/.output/server/chunks/routes/api/test-runs/import.post.mjs.map +1 -0
  576. package/.output/server/chunks/routes/api/test-runs/recent.get.mjs +13 -1
  577. package/.output/server/chunks/routes/api/test-runs/recent.get.mjs.map +1 -1
  578. package/.output/server/chunks/routes/api/test-runs/setup.post.mjs +13 -1
  579. package/.output/server/chunks/routes/api/test-runs/setup.post.mjs.map +1 -1
  580. package/.output/server/chunks/routes/api/test-runs/start.post.mjs +13 -1
  581. package/.output/server/chunks/routes/api/test-runs/start.post.mjs.map +1 -1
  582. package/.output/server/chunks/routes/api/test-runs/submit.post.mjs +32 -15
  583. package/.output/server/chunks/routes/api/test-runs/submit.post.mjs.map +1 -1
  584. package/.output/server/chunks/routes/api/test-runs/upload.post.mjs +21 -6
  585. package/.output/server/chunks/routes/api/test-runs/upload.post.mjs.map +1 -1
  586. package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs +154 -3
  587. package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs.map +1 -1
  588. package/.output/server/chunks/routes/api/traces/check.post.mjs +13 -1
  589. package/.output/server/chunks/routes/api/traces/check.post.mjs.map +1 -1
  590. package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs +12 -0
  591. package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs.map +1 -1
  592. package/.output/server/chunks/routes/api/users/_id/index.get.mjs +12 -0
  593. package/.output/server/chunks/routes/api/users/_id/index.get.mjs.map +1 -1
  594. package/.output/server/chunks/routes/api/users/_id/index.post.mjs +13 -1
  595. package/.output/server/chunks/routes/api/users/_id/index.post.mjs.map +1 -1
  596. package/.output/server/chunks/routes/api/users/_id/invite.post.mjs +13 -1
  597. package/.output/server/chunks/routes/api/users/_id/invite.post.mjs.map +1 -1
  598. package/.output/server/chunks/routes/api/users/_id/projects.get.mjs +13 -1
  599. package/.output/server/chunks/routes/api/users/_id/projects.get.mjs.map +1 -1
  600. package/.output/server/chunks/routes/api/users/_id/projects.put.mjs +13 -1
  601. package/.output/server/chunks/routes/api/users/_id/projects.put.mjs.map +1 -1
  602. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +12 -0
  603. package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
  604. package/.output/server/chunks/routes/api/users/_id_.patch.mjs +12 -0
  605. package/.output/server/chunks/routes/api/users/_id_.patch.mjs.map +1 -1
  606. package/.output/server/chunks/routes/api/version.get.mjs +13 -1
  607. package/.output/server/chunks/routes/api/version.get.mjs.map +1 -1
  608. package/.output/server/chunks/routes/mcp.post.mjs +13 -1
  609. package/.output/server/chunks/routes/mcp.post.mjs.map +1 -1
  610. package/.output/server/chunks/routes/renderer.mjs +1 -1
  611. package/.output/server/chunks/tasks/sweep.mjs +12 -0
  612. package/.output/server/chunks/tasks/sweep.mjs.map +1 -1
  613. package/.output/server/chunks/tasks/sweep2.mjs +12 -0
  614. package/.output/server/chunks/tasks/sweep2.mjs.map +1 -1
  615. package/.output/server/database/migrations/0039_remarkable_jean_grey.sql +2 -0
  616. package/.output/server/database/migrations/0040_organic_phalanx.sql +8 -0
  617. package/.output/server/database/migrations/0041_tense_gravity.sql +5 -0
  618. package/.output/server/database/migrations/0042_burly_hemingway.sql +19 -0
  619. package/.output/server/database/migrations/meta/0039_snapshot.json +3403 -0
  620. package/.output/server/database/migrations/meta/0040_snapshot.json +3457 -0
  621. package/.output/server/database/migrations/meta/0041_snapshot.json +3492 -0
  622. package/.output/server/database/migrations/meta/0042_snapshot.json +3618 -0
  623. package/.output/server/database/migrations/meta/_journal.json +28 -0
  624. package/.output/server/database/migrations-pg/0040_lazy_layla_miller.sql +2 -0
  625. package/.output/server/database/migrations-pg/0041_light_screwball.sql +8 -0
  626. package/.output/server/database/migrations-pg/0042_serious_layla_miller.sql +5 -0
  627. package/.output/server/database/migrations-pg/0043_wonderful_mordo.sql +19 -0
  628. package/.output/server/database/migrations-pg/meta/0040_snapshot.json +4060 -0
  629. package/.output/server/database/migrations-pg/meta/0041_snapshot.json +4123 -0
  630. package/.output/server/database/migrations-pg/meta/0042_snapshot.json +4153 -0
  631. package/.output/server/database/migrations-pg/meta/0043_snapshot.json +4308 -0
  632. package/.output/server/database/migrations-pg/meta/_journal.json +28 -0
  633. package/.output/server/index.mjs +13 -1
  634. package/.output/server/index.mjs.map +1 -1
  635. package/.output/server/node_modules/fflate/esm/index.mjs +2710 -0
  636. package/.output/server/node_modules/fflate/package.json +128 -0
  637. package/.output/server/node_modules/highlight.js/es/languages/yaml.js +213 -0
  638. package/.output/server/node_modules/marked/lib/marked.esm.js +72 -0
  639. package/.output/server/node_modules/marked/package.json +103 -0
  640. package/.output/server/package.json +3 -1
  641. package/package.json +2 -2
  642. package/.output/public/_nuxt/9-wVZMur.js +0 -4
  643. package/.output/public/_nuxt/B-5GukRk.js +0 -1
  644. package/.output/public/_nuxt/B1G3GGhQ.js +0 -1
  645. package/.output/public/_nuxt/B1zMFx24.js +0 -1
  646. package/.output/public/_nuxt/B4jvLMfS.js +0 -1
  647. package/.output/public/_nuxt/BBnX5xw4.js +0 -2
  648. package/.output/public/_nuxt/BHpUiv6j.js +0 -3
  649. package/.output/public/_nuxt/BLOUs6AE.js +0 -5
  650. package/.output/public/_nuxt/BT6p4Pgt.js +0 -2
  651. package/.output/public/_nuxt/BUXSUkJ_.js +0 -1
  652. package/.output/public/_nuxt/BVf6Yx9V.js +0 -26
  653. package/.output/public/_nuxt/BbS6Bwby.js +0 -1
  654. package/.output/public/_nuxt/BeKvLsja.js +0 -2
  655. package/.output/public/_nuxt/BeUm5UNV.js +0 -1
  656. package/.output/public/_nuxt/BfV444H3.js +0 -3
  657. package/.output/public/_nuxt/BjKamgHq.js +0 -1
  658. package/.output/public/_nuxt/BoJdjCVl.js +0 -4
  659. package/.output/public/_nuxt/BreO2PiA.js +0 -1
  660. package/.output/public/_nuxt/BvIDC_R-.js +0 -1
  661. package/.output/public/_nuxt/ByuJWADR.js +0 -34
  662. package/.output/public/_nuxt/C1dyLp_j.js +0 -1
  663. package/.output/public/_nuxt/CAUgpKsF.js +0 -2
  664. package/.output/public/_nuxt/CL9-VLTJ.js +0 -1
  665. package/.output/public/_nuxt/CazDIG_m.js +0 -1
  666. package/.output/public/_nuxt/CdMuck_X.js +0 -1
  667. package/.output/public/_nuxt/CfROFPse.js +0 -1
  668. package/.output/public/_nuxt/Cnapl7lZ.js +0 -1
  669. package/.output/public/_nuxt/CscWZxCi.js +0 -1
  670. package/.output/public/_nuxt/CuicKV-B.js +0 -34
  671. package/.output/public/_nuxt/Cyiu1VQD.js +0 -1
  672. package/.output/public/_nuxt/D6PUPmRC.js +0 -1
  673. package/.output/public/_nuxt/DCl2yo4g.js +0 -8
  674. package/.output/public/_nuxt/DHXWp5yD.js +0 -1
  675. package/.output/public/_nuxt/DHltYerF.js +0 -114
  676. package/.output/public/_nuxt/DLXydYJb.js +0 -47
  677. package/.output/public/_nuxt/DRPSi76A.js +0 -1
  678. package/.output/public/_nuxt/DS53kyHJ.js +0 -1
  679. package/.output/public/_nuxt/DWhBqv_7.js +0 -1
  680. package/.output/public/_nuxt/Dd0kK5WH.js +0 -1
  681. package/.output/public/_nuxt/Dga3Av-m.js +0 -1
  682. package/.output/public/_nuxt/DgwTpwfB.js +0 -1
  683. package/.output/public/_nuxt/DkI145a5.js +0 -1
  684. package/.output/public/_nuxt/DoFBTaDR.js +0 -1
  685. package/.output/public/_nuxt/Dr_dI5hB.js +0 -1
  686. package/.output/public/_nuxt/EPZOxdgq.js +0 -1
  687. package/.output/public/_nuxt/R1nNqTru.js +0 -1
  688. package/.output/public/_nuxt/builds/meta/7caf3cb3-d272-4dbd-bb3f-1eeb64fab5d1.json +0 -1
  689. package/.output/public/_nuxt/entry.ChQMshd4.css +0 -1
  690. package/.output/public/_nuxt/gCELhaU9.js +0 -1
  691. package/.output/public/_nuxt/ipDzNHcs.js +0 -5
  692. package/.output/public/_nuxt/qH_j2A3a.js +0 -1
  693. package/.output/public/_nuxt/r3SBLxtE.js +0 -1
  694. package/.output/public/_nuxt/rsiRgrVM.js +0 -1
  695. package/.output/public/_nuxt/swrbBdtB.js +0 -1
  696. package/.output/public/sw.js +0 -1
  697. package/.output/public/workbox-2fbc6a65.js +0 -1
  698. package/.output/server/chunks/build/Alert-Bp1Wz_sq.mjs.map +0 -1
  699. package/.output/server/chunks/build/Breadcrumb-C9ZPTLym.mjs.map +0 -1
  700. package/.output/server/chunks/build/BreadcrumbNav-C3y42Vun.mjs.map +0 -1
  701. package/.output/server/chunks/build/BrowserBadge-DNCp9pF-.mjs.map +0 -1
  702. package/.output/server/chunks/build/ChartCard-Fr557IbV.mjs.map +0 -1
  703. package/.output/server/chunks/build/Checkbox-cVOSIY93.mjs.map +0 -1
  704. package/.output/server/chunks/build/CiEnvCard-DXPOhdSG.mjs.map +0 -1
  705. package/.output/server/chunks/build/CodeBlock-BGwNmJ8J.mjs.map +0 -1
  706. package/.output/server/chunks/build/DashboardNavbar-Bdp-OwTN.mjs.map +0 -1
  707. package/.output/server/chunks/build/DashboardSidebarToggle-Ji6ADuqF.mjs.map +0 -1
  708. package/.output/server/chunks/build/DataLocationCard-D6xSOrme.mjs.map +0 -1
  709. package/.output/server/chunks/build/DiagnosisPanel-DV1xwGu4.mjs.map +0 -1
  710. package/.output/server/chunks/build/EmptyState-DV3oT_xz.mjs.map +0 -1
  711. package/.output/server/chunks/build/EntityLinks-DeOP13Kr.mjs.map +0 -1
  712. package/.output/server/chunks/build/EnvManagedBadge-Qpn58Nmr.mjs.map +0 -1
  713. package/.output/server/chunks/build/FormField-B-GSn_VR.mjs.map +0 -1
  714. package/.output/server/chunks/build/HelpHint-YEMWtKu1.mjs.map +0 -1
  715. package/.output/server/chunks/build/Label-DBvbHd3A.mjs.map +0 -1
  716. package/.output/server/chunks/build/MiniRunBars-C3HG-EYm.mjs.map +0 -1
  717. package/.output/server/chunks/build/Modal-CfA78Hm1.mjs.map +0 -1
  718. package/.output/server/chunks/build/PageStateCard-Bwee6JTk.mjs.map +0 -1
  719. package/.output/server/chunks/build/ProjectTestCasesTable-9Ia825h8.mjs.map +0 -1
  720. package/.output/server/chunks/build/RovingFocusItem-CxhHdNGo.mjs.map +0 -1
  721. package/.output/server/chunks/build/RunReports-BpJqLHY9.mjs.map +0 -1
  722. package/.output/server/chunks/build/RunStatusBadge-BhmJ_RKM.mjs.map +0 -1
  723. package/.output/server/chunks/build/SectionCard-COd9TuDq.mjs.map +0 -1
  724. package/.output/server/chunks/build/Select-ppPz926C.mjs.map +0 -1
  725. package/.output/server/chunks/build/Separator-CxZdx8kw.mjs.map +0 -1
  726. package/.output/server/chunks/build/SettingsField-DDD4oqys.mjs.map +0 -1
  727. package/.output/server/chunks/build/Slideover-B95Rj237.mjs.map +0 -1
  728. package/.output/server/chunks/build/Switch-xQQ3_ME1.mjs.map +0 -1
  729. package/.output/server/chunks/build/Table-CPhhVzDv.mjs.map +0 -1
  730. package/.output/server/chunks/build/Tabs-BV9XqjoO.mjs.map +0 -1
  731. package/.output/server/chunks/build/TagBadge-BDcvvGxw.mjs +0 -47
  732. package/.output/server/chunks/build/TagBadge-BDcvvGxw.mjs.map +0 -1
  733. package/.output/server/chunks/build/TestCaseHistoryChart-DMb-xSJa.mjs.map +0 -1
  734. package/.output/server/chunks/build/TestStatusBar-CEzt76wk.mjs.map +0 -1
  735. package/.output/server/chunks/build/Textarea-DrrqQUVG.mjs.map +0 -1
  736. package/.output/server/chunks/build/Tooltip-7vwuDPrZ.mjs.map +0 -1
  737. package/.output/server/chunks/build/VisuallyHiddenInput-C9eJVpPW.mjs.map +0 -1
  738. package/.output/server/chunks/build/_id_-B2yirIuA.mjs.map +0 -1
  739. package/.output/server/chunks/build/_id_-CE0Gso6i.mjs.map +0 -1
  740. package/.output/server/chunks/build/_id_-bWcP2xFl.mjs.map +0 -1
  741. package/.output/server/chunks/build/about-CoJjvUwM.mjs.map +0 -1
  742. package/.output/server/chunks/build/account-Cn-eZqXM.mjs.map +0 -1
  743. package/.output/server/chunks/build/db.client-aHcD0wyX.mjs.map +0 -1
  744. package/.output/server/chunks/build/default-BSzdkM_L.mjs.map +0 -1
  745. package/.output/server/chunks/build/edit-C9Z7oZeu.mjs.map +0 -1
  746. package/.output/server/chunks/build/fetch-8kznMtBM.mjs.map +0 -1
  747. package/.output/server/chunks/build/forgot-password-BqPF4Rxs.mjs.map +0 -1
  748. package/.output/server/chunks/build/help-content-DmFnuhNu.mjs.map +0 -1
  749. package/.output/server/chunks/build/index-BR9hw6qk.mjs.map +0 -1
  750. package/.output/server/chunks/build/index-Ba-Fifra.mjs.map +0 -1
  751. package/.output/server/chunks/build/index-CULN3-en.mjs.map +0 -1
  752. package/.output/server/chunks/build/index-DVUtBexc.mjs.map +0 -1
  753. package/.output/server/chunks/build/isValueEqualOrExist-DBZjbD_3.mjs.map +0 -1
  754. package/.output/server/chunks/build/login-D2XZDuek.mjs.map +0 -1
  755. package/.output/server/chunks/build/mcp-_o6cMS6m.mjs.map +0 -1
  756. package/.output/server/chunks/build/notifications-Dzm9c0u_.mjs.map +0 -1
  757. package/.output/server/chunks/build/reset-password-gpFzIEDj.mjs.map +0 -1
  758. package/.output/server/chunks/build/settings-metadata-B0wo5R-W.mjs.map +0 -1
  759. package/.output/server/chunks/build/settings-pNyPBXVa.mjs.map +0 -1
  760. package/.output/server/chunks/build/storage-XelzuyPy.mjs.map +0 -1
  761. package/.output/server/chunks/build/tags-DrCQ7QSw.mjs.map +0 -1
  762. package/.output/server/chunks/build/test-cases-pmOxi-AN.mjs.map +0 -1
  763. package/.output/server/chunks/build/timeout-hygiene-CNs71Iah.mjs.map +0 -1
  764. package/.output/server/chunks/build/useAiStatus-ZO987RY7.mjs.map +0 -1
  765. package/.output/server/chunks/build/useCopy-BQQKcwlq.mjs.map +0 -1
  766. package/.output/server/chunks/build/useFormControl-BLpq1s4O.mjs.map +0 -1
  767. package/.output/server/chunks/build/useOpenInIde-kMZ7Jw5c.mjs.map +0 -1
  768. package/.output/server/chunks/build/useSettingsNav-NjI2seBy.mjs.map +0 -1
  769. package/.output/server/chunks/build/useTreeViewCookie-DVYpxW-p.mjs.map +0 -1
  770. package/.output/server/chunks/build/users-NmAUZs3i.mjs.map +0 -1
  771. package/.output/server/chunks/build/virtualizer-ZaqK4guJ.mjs.map +0 -1
  772. package/.output/server/chunks/build/wasted-time-CguAF9zc.mjs.map +0 -1
  773. /package/.output/public/_nuxt/{PageStateCard.BrM5HWjY.css → useCopyRich.BrM5HWjY.css} +0 -0
@@ -1,41 +1,44 @@
1
- import { _ as _sfc_main$1$1, a as _sfc_main$f } from './DashboardNavbar-Bdp-OwTN.mjs';
2
- import { _ as _sfc_main$1$2 } from './Breadcrumb-C9ZPTLym.mjs';
3
- import { _ as __nuxt_component_3$1 } from './BreadcrumbNav-C3y42Vun.mjs';
4
- import { u as useRoute, k as useRouter, r as useRuntimeConfig, l as useHead, j as useToast, n as _sfc_main$7$1, m as _sfc_main$k, p as __nuxt_component_12$1, o as _sfc_main$p, w as __nuxt_component_7, _ as _sfc_main$d$1, q as _sfc_main$8$1, G as _sfc_main$j$1 } from './server.mjs';
5
- import { _ as _sfc_main$g } from './Tooltip-7vwuDPrZ.mjs';
1
+ import { _ as _sfc_main$1$1, a as _sfc_main$g } from './DashboardNavbar-BHmMSPX7.mjs';
2
+ import { _ as _sfc_main$1$2 } from './Breadcrumb-Ak2Lg3oM.mjs';
3
+ import { _ as __nuxt_component_3$1 } from './BreadcrumbNav-DO7I_z-n.mjs';
4
+ import { u as useRoute, k as useRouter, r as useRuntimeConfig, l as useHead, j as useToast, n as _sfc_main$7$1, m as _sfc_main$k, s as __nuxt_component_12$1, o as _sfc_main$p, y as __nuxt_component_7$1, _ as _sfc_main$d$1, v as _sfc_main$8$1, p as _sfc_main$j$1 } from './server.mjs';
5
+ import { _ as _sfc_main$h } from './Tooltip-BOazooWP.mjs';
6
6
  import { _ as __nuxt_component_4 } from './NavbarActions-_YjrSUat.mjs';
7
- import { _ as __nuxt_component_8, a as __nuxt_component_1$2, c as __nuxt_component_12$2, b as __nuxt_component_13$3, d as __nuxt_component_14$1 } from './CiEnvCard-DXPOhdSG.mjs';
8
- import { a as useDetailGrid, _ as __nuxt_component_0$1 } from './useAiStatus-ZO987RY7.mjs';
9
- import { _ as __nuxt_component_13$2 } from './TestStatusBar-CEzt76wk.mjs';
10
- import { _ as _sfc_main$l } from './Card-BQP_oZkQ.mjs';
11
- import { _ as __nuxt_component_2$1 } from './HelpHint-YEMWtKu1.mjs';
7
+ import { _ as __nuxt_component_8, a as __nuxt_component_1$2, c as __nuxt_component_13$2, b as __nuxt_component_14$3, d as __nuxt_component_15$1 } from './CiEnvCard-CrjOM17n.mjs';
8
+ import { u as useDetailGrid, _ as __nuxt_component_0$1 } from './useAiStatus-CWvIo32Q.mjs';
9
+ import { _ as __nuxt_component_14$2 } from './TestStatusBar-j6h2Jp6A.mjs';
10
+ import { _ as __nuxt_component_14$1 } from './DurationValue-D20oGbnc.mjs';
11
+ import { _ as _sfc_main$m } from './Card-BQP_oZkQ.mjs';
12
+ import { _ as __nuxt_component_2$2 } from './HelpHint-DrcIv-Oj.mjs';
12
13
  import { _ as __nuxt_component_5 } from './MarkerBadge-D7meXy4u.mjs';
13
- import { _ as __nuxt_component_16$1 } from './EntityLinks-DeOP13Kr.mjs';
14
- import { a as formatDuration, p as prettyDateFormat, j as getStatusColor, f as formatRelativeTime, d as copyPreview, h as clusterStatusColor, g as clusterErrorTypeColor, q as formatBytes, x as reportIcon, o as getFileApiPath, u as createSortHeader, b as formatStatusLabel } from './index-CULN3-en.mjs';
14
+ import { _ as __nuxt_component_17$1 } from './EntityLinks-D3fp57pR.mjs';
15
+ import { p as prettyDateFormat, v as getStatusColor, f as formatRelativeTime, c as copyPreview, j as clusterStatusColor, i as clusterErrorTypeColor, z as reportIcon, n as fileApiUrl, w as createSortHeader, d as formatDuration, F as getStatusTextClass, E as getStatusIcon, a as formatStatusLabel, D as isStatusInFlight, C as isPiwiAnnotation } from './index-CU2nZhAa.mjs';
16
+ import { cB as formatBytes, bI as DEFAULT_WASTED_WAIT_PATTERNS, dP as isWastedWait } from '../nitro/nitro.mjs';
15
17
  import { defineComponent, withAsyncContext, ref, computed, watch, withCtx, isRef, unref, createVNode, createTextVNode, openBlock, createBlock, createCommentVNode, toDisplayString, nextTick, mergeProps, Fragment, renderList, useModel, mergeModels, withDirectives, vModelText, useSSRContext } from 'vue';
16
18
  import { ssrRenderComponent, ssrInterpolate, ssrRenderAttrs, ssrRenderClass, ssrRenderList, ssrRenderStyle, ssrRenderAttr, ssrRenderTeleport, ssrIncludeBooleanAttr } from 'vue/server-renderer';
17
- import { b as buildRetryCommand } from './useOpenInIde-kMZ7Jw5c.mjs';
18
- import { u as useCopy } from './useCopy-BQQKcwlq.mjs';
19
+ import { b as buildRetryCommand } from './useOpenInIde-4GFf-kdi.mjs';
20
+ import { u as useCopy } from './useCopy-CeKWgHyT.mjs';
19
21
  import { _ as __nuxt_component_4$1 } from './FilterToolbar-BwXy8xSk.mjs';
20
- import { _ as _sfc_main$n } from './Select-ppPz926C.mjs';
21
- import { _ as _sfc_main$o } from './Checkbox-cVOSIY93.mjs';
22
- import { _ as __nuxt_component_1$3 } from './OpenInIdeLink-B92wosXu.mjs';
23
- import { u as useTreeViewCookie } from './useTreeViewCookie-DVYpxW-p.mjs';
22
+ import { _ as _sfc_main$o } from './Select-CUqj50wi.mjs';
23
+ import { _ as _sfc_main$q } from './Checkbox-DvUBGagc.mjs';
24
+ import { _ as __nuxt_component_1$3 } from './OpenInIdeLink-C4MXA8ya.mjs';
25
+ import { _ as __nuxt_component_2$3 } from './TestMetaBadges-D5_yUtIP.mjs';
26
+ import { _ as __nuxt_component_3$3 } from './BrowserBadge-D33lqUcj.mjs';
27
+ import { u as useTreeViewCookie } from './useTreeViewCookie-CQjQdTkH.mjs';
24
28
  import { _ as __nuxt_component_5$1 } from './ErrorState-CktYyeEZ.mjs';
25
29
  import { _ as __nuxt_component_1$1 } from './LoadingState-C3pBSuOO.mjs';
26
- import { _ as __nuxt_component_8$1 } from './EmptyState-DV3oT_xz.mjs';
27
- import { _ as __nuxt_component_11 } from './SectionCard-COd9TuDq.mjs';
30
+ import { _ as __nuxt_component_9$2 } from './EmptyState-Dtlab7S9.mjs';
31
+ import { _ as __nuxt_component_11 } from './SectionCard-CN-v0FZ_.mjs';
28
32
  import { _ as __nuxt_component_3$2 } from './TableScroller-DMcdCVrH.mjs';
29
- import { _ as _sfc_main$h } from './Table-CPhhVzDv.mjs';
30
- import { _ as _sfc_main$m } from './Modal-CfA78Hm1.mjs';
31
- import { _ as __nuxt_component_0$2 } from './DiagnosisPanel-DV1xwGu4.mjs';
32
- import { u as useFetch } from './fetch-8kznMtBM.mjs';
33
- import { bm as DEFAULT_WASTED_WAIT_PATTERNS, de as isWastedWait } from '../nitro/nitro.mjs';
34
- import { _ as _sfc_main$i } from './SelectMenu-799c_Ils.mjs';
35
- import { _ as __nuxt_component_13$1 } from './RunStatusBadge-BhmJ_RKM.mjs';
36
- import { _ as _sfc_main$j } from './Alert-Bp1Wz_sq.mjs';
33
+ import { _ as _sfc_main$i } from './Table-BRk04Hd2.mjs';
34
+ import { _ as _sfc_main$n } from './Modal-Ck2XLt8d.mjs';
35
+ import { _ as __nuxt_component_0$2 } from './DiagnosisPanel-B646dK4p.mjs';
36
+ import { u as useFetch } from './fetch-B4FwBOzu.mjs';
37
+ import { _ as _sfc_main$j } from './SelectMenu-Db7osY7J.mjs';
38
+ import { _ as __nuxt_component_13$1 } from './RunStatusBadge-FfGb6bkW.mjs';
39
+ import { _ as _sfc_main$l } from './Alert-C4xq8lao.mjs';
37
40
  import { u as useRunComparison } from './useRunComparison-CiMBLpe2.mjs';
38
- import './DashboardSidebarToggle-Ji6ADuqF.mjs';
41
+ import './DashboardSidebarToggle-DCTnHiIv.mjs';
39
42
  import 'vue-router';
40
43
  import '@iconify/vue';
41
44
  import 'tailwindcss/colors';
@@ -56,6 +59,18 @@ import 'path';
56
59
  import 'fs/promises';
57
60
  import 'zlib';
58
61
  import 'util';
62
+ import 'marked';
63
+ import 'highlight.js/lib/core';
64
+ import 'highlight.js/lib/languages/bash';
65
+ import 'highlight.js/lib/languages/css';
66
+ import 'highlight.js/lib/languages/diff';
67
+ import 'highlight.js/lib/languages/javascript';
68
+ import 'highlight.js/lib/languages/json';
69
+ import 'highlight.js/lib/languages/python';
70
+ import 'highlight.js/lib/languages/typescript';
71
+ import 'highlight.js/lib/languages/xml';
72
+ import 'highlight.js/lib/languages/yaml';
73
+ import 'fflate';
59
74
  import 'pixelmatch';
60
75
  import 'sharp';
61
76
  import '@anthropic-ai/sdk';
@@ -79,36 +94,26 @@ import 'node:zlib';
79
94
  import 'consola';
80
95
  import 'node:url';
81
96
  import '@iconify/utils';
82
- import './Tabs-BV9XqjoO.mjs';
83
- import './RovingFocusItem-CxhHdNGo.mjs';
84
- import './BrowserBadge-DNCp9pF-.mjs';
85
- import 'highlight.js/lib/core';
86
- import 'highlight.js/lib/languages/javascript';
87
- import 'highlight.js/lib/languages/typescript';
88
- import 'highlight.js/lib/languages/python';
89
- import 'highlight.js/lib/languages/bash';
90
- import 'highlight.js/lib/languages/json';
91
- import 'highlight.js/lib/languages/css';
92
- import 'highlight.js/lib/languages/xml';
93
- import 'highlight.js/lib/languages/diff';
94
- import './CodeBlock-BGwNmJ8J.mjs';
95
- import './Textarea-DrrqQUVG.mjs';
96
- import './help-content-DmFnuhNu.mjs';
97
+ import './Tabs-Bbsg9wag.mjs';
98
+ import './RovingFocusItem-BJSzTBjy.mjs';
99
+ import './CodeBlock-BgE-NSmE.mjs';
100
+ import './Textarea-Dv2-lOvW.mjs';
101
+ import './help-content-C876a9WD.mjs';
97
102
  import '../_/marker-categories.mjs';
98
103
  import 'date-fns';
99
- import './useFormControl-BLpq1s4O.mjs';
104
+ import './useFormControl-CZ9So7iX.mjs';
100
105
  import './handleAndDispatchCustomEvent-Bk_AVSSo.mjs';
101
- import './isValueEqualOrExist-DBZjbD_3.mjs';
106
+ import './isValueEqualOrExist-D2qw9YEr.mjs';
102
107
  import './useForwardScopeId-D0ameaSU.mjs';
103
- import './VisuallyHiddenInput-C9eJVpPW.mjs';
104
- import './Label-DBvbHd3A.mjs';
105
- import './Separator-CxZdx8kw.mjs';
108
+ import './VisuallyHiddenInput-D6kBJxVd.mjs';
109
+ import './Label-DYDR1Oeh.mjs';
110
+ import './Separator-CR4WcEKD.mjs';
106
111
  import '@tanstack/vue-table';
107
112
  import '@tanstack/vue-virtual';
108
113
  import '@vue/shared';
109
- import './virtualizer-ZaqK4guJ.mjs';
114
+ import './virtualizer-Cd1hhlxC.mjs';
110
115
 
111
- const _sfc_main$e = /* @__PURE__ */ defineComponent({
116
+ const _sfc_main$f = /* @__PURE__ */ defineComponent({
112
117
  __name: "RunSummary",
113
118
  __ssrInlineRender: true,
114
119
  props: {
@@ -125,6 +130,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
125
130
  const props = __props;
126
131
  const emit = __emit;
127
132
  const toast = useToast();
133
+ const config = useRuntimeConfig();
128
134
  const storageStats = computed(() => props.testRun?.storageStats);
129
135
  const showCiEnv = computed(
130
136
  () => !!(props.testRun?.metadata?.ci || props.testRun?.environment || props.testRun?.playwrightVersion || props.testRun?.reporterVersion)
@@ -234,19 +240,20 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
234
240
  const _component_StatusBlock = __nuxt_component_1$2;
235
241
  const _component_UIcon = _sfc_main$p;
236
242
  const _component_UBadge = _sfc_main$7$1;
237
- const _component_TestStatusBar = __nuxt_component_13$2;
238
- const _component_UCard = _sfc_main$l;
239
- const _component_HelpHint = __nuxt_component_2$1;
240
- const _component_UTooltip = _sfc_main$g;
243
+ const _component_TestStatusBar = __nuxt_component_14$2;
244
+ const _component_DurationValue = __nuxt_component_14$1;
245
+ const _component_UCard = _sfc_main$m;
246
+ const _component_HelpHint = __nuxt_component_2$2;
247
+ const _component_UTooltip = _sfc_main$h;
241
248
  const _component_NuxtLink = __nuxt_component_12$1;
242
249
  const _component_MarkerBadge = __nuxt_component_5;
243
250
  const _component_UButton = _sfc_main$k;
244
251
  const _component_UPopover = _sfc_main$8$1;
245
- const _component_CiEnvCard = __nuxt_component_12$2;
246
- const _component_SourceInfoCard = __nuxt_component_13$3;
247
- const _component_BlockCard = __nuxt_component_14$1;
252
+ const _component_CiEnvCard = __nuxt_component_13$2;
253
+ const _component_SourceInfoCard = __nuxt_component_14$3;
254
+ const _component_BlockCard = __nuxt_component_15$1;
248
255
  const _component_UProgress = _sfc_main$j$1;
249
- const _component_EntityLinks = __nuxt_component_16$1;
256
+ const _component_EntityLinks = __nuxt_component_17$1;
250
257
  _push(ssrRenderComponent(_component_FoldableSummary, mergeProps({ "storage-key": "test-run" }, _attrs), {
251
258
  folded: withCtx((_, _push2, _parent2, _scopeId) => {
252
259
  if (_push2) {
@@ -257,11 +264,11 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
257
264
  }, null, _parent2, _scopeId));
258
265
  _push2(`<span class="text-sm font-semibold truncate flex items-center gap-1"${_scopeId}> Run #${ssrInterpolate(__props.testRun?.id)} `);
259
266
  if (unref(editingLabel)) {
260
- _push2(`<!--[--><input${ssrRenderAttr("value", unref(labelInput))} type="text" placeholder="Add a label..." class="inline-block w-40 text-sm font-normal border-b border-dashed border-gray-400 bg-transparent outline-none focus:border-primary px-0.5 py-0"${_scopeId}>`);
267
+ _push2(`<!--[--><input${ssrRenderAttr("value", unref(labelInput))} type="text" placeholder="Add a label..." class="inline-block w-40 text-sm font-normal border-b border-dashed border-zinc-400 bg-transparent outline-none focus:border-primary px-0.5 py-0"${_scopeId}>`);
261
268
  if (unref(savingLabel)) {
262
269
  _push2(ssrRenderComponent(_component_UIcon, {
263
270
  name: "i-lucide-loader-circle",
264
- class: "size-3.5 text-gray-400 animate-spin shrink-0"
271
+ class: "size-3.5 text-zinc-400 animate-spin shrink-0"
265
272
  }, null, _parent2, _scopeId));
266
273
  } else {
267
274
  _push2(`<!---->`);
@@ -270,9 +277,9 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
270
277
  } else {
271
278
  _push2(`<!--[-->`);
272
279
  if (__props.testRun?.label) {
273
- _push2(`<span class="font-normal text-gray-500 ml-1.5 cursor-pointer hover:text-gray-700 dark:hover:text-gray-300 border-b border-dashed border-transparent hover:border-gray-400"${_scopeId}>— ${ssrInterpolate(__props.testRun.label)}</span>`);
280
+ _push2(`<span class="font-normal text-zinc-500 ml-1.5 cursor-pointer hover:text-zinc-700 dark:hover:text-zinc-300 border-b border-dashed border-transparent hover:border-zinc-400"${_scopeId}>— ${ssrInterpolate(__props.testRun.label)}</span>`);
274
281
  } else {
275
- _push2(`<button class="text-xs text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 border-b border-dashed border-transparent hover:border-gray-400 ml-1" title="Add a label"${_scopeId}> + label </button>`);
282
+ _push2(`<button class="text-xs text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-300 border-b border-dashed border-transparent hover:border-zinc-400 ml-1" title="Add a label"${_scopeId}> + label </button>`);
276
283
  }
277
284
  _push2(`<!--]-->`);
278
285
  }
@@ -307,7 +314,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
307
314
  } else {
308
315
  _push2(`<!---->`);
309
316
  }
310
- _push2(`</div><div class="flex items-center gap-3 shrink-0 max-sm:hidden"${_scopeId}><span class="text-xs text-gray-500 tabular-nums whitespace-nowrap"${_scopeId}> T: <strong class="text-gray-700 dark:text-gray-300"${_scopeId}>${ssrInterpolate(__props.displayProgress?.totalTests ?? __props.testRun?.totalTests ?? 0)}</strong></span><span class="text-xs text-green-600 dark:text-green-400 tabular-nums whitespace-nowrap"${_scopeId}> P: <strong${_scopeId}>${ssrInterpolate(__props.displayProgress?.passedTests ?? __props.testRun?.passedTests ?? 0)}</strong></span><span class="text-xs text-red-600 dark:text-red-400 tabular-nums whitespace-nowrap"${_scopeId}> F: <strong${_scopeId}>${ssrInterpolate(__props.displayProgress?.failedTests ?? __props.testRun?.failedTests ?? 0)}</strong></span><span class="text-xs text-gray-500 tabular-nums whitespace-nowrap"${_scopeId}> S: <strong${_scopeId}>${ssrInterpolate(__props.displayProgress?.skippedTests ?? __props.testRun?.skippedTests ?? 0)}</strong></span><span class="text-xs text-amber-600 dark:text-amber-400 tabular-nums whitespace-nowrap" title="Tests that never ran (maxFailures cutoff or a serial-group failure)"${_scopeId}> DNR: <strong${_scopeId}>${ssrInterpolate(__props.testRun?.didNotRunTests ?? 0)}</strong></span><span class="text-xs text-orange-600 dark:text-orange-400 tabular-nums whitespace-nowrap"${_scopeId}> Fl: <strong${_scopeId}>${ssrInterpolate(__props.testRun?.flakyTests ?? 0)}</strong></span>`);
317
+ _push2(`</div><div class="flex items-center gap-3 shrink-0 max-sm:hidden"${_scopeId}><span class="text-xs text-zinc-500 tabular-nums whitespace-nowrap"${_scopeId}> T: <strong class="text-zinc-700 dark:text-zinc-300"${_scopeId}>${ssrInterpolate(__props.displayProgress?.totalTests ?? __props.testRun?.totalTests ?? 0)}</strong></span><span class="text-xs text-emerald-600 dark:text-emerald-400 tabular-nums whitespace-nowrap"${_scopeId}> P: <strong${_scopeId}>${ssrInterpolate(__props.displayProgress?.passedTests ?? __props.testRun?.passedTests ?? 0)}</strong></span><span class="text-xs text-rose-600 dark:text-rose-400 tabular-nums whitespace-nowrap"${_scopeId}> F: <strong${_scopeId}>${ssrInterpolate(__props.displayProgress?.failedTests ?? __props.testRun?.failedTests ?? 0)}</strong></span><span class="text-xs text-zinc-500 tabular-nums whitespace-nowrap"${_scopeId}> S: <strong${_scopeId}>${ssrInterpolate(__props.displayProgress?.skippedTests ?? __props.testRun?.skippedTests ?? 0)}</strong></span><span class="text-xs text-amber-600 dark:text-amber-400 tabular-nums whitespace-nowrap" title="Tests that never ran (maxFailures cutoff or a serial-group failure)"${_scopeId}> DNR: <strong${_scopeId}>${ssrInterpolate(__props.testRun?.didNotRunTests ?? 0)}</strong></span><span class="text-xs text-orange-600 dark:text-orange-400 tabular-nums whitespace-nowrap"${_scopeId}> Fl: <strong${_scopeId}>${ssrInterpolate(__props.testRun?.flakyTests ?? 0)}</strong></span>`);
311
318
  _push2(ssrRenderComponent(_component_TestStatusBar, {
312
319
  passed: __props.displayProgress?.passedTests ?? __props.testRun?.passedTests ?? 0,
313
320
  failed: __props.displayProgress?.failedTests ?? __props.testRun?.failedTests ?? 0,
@@ -316,7 +323,11 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
316
323
  "did-not-run": __props.testRun?.didNotRunTests ?? 0,
317
324
  total: __props.displayProgress?.totalTests ?? __props.testRun?.totalTests ?? 0
318
325
  }, null, _parent2, _scopeId));
319
- _push2(`<span class="text-xs text-gray-400 tabular-nums whitespace-nowrap"${_scopeId}>${ssrInterpolate(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(__props.testRun?.duration))}</span></div></div>`);
326
+ _push2(ssrRenderComponent(_component_DurationValue, {
327
+ ms: __props.testRun?.duration,
328
+ class: "text-xs text-zinc-400"
329
+ }, null, _parent2, _scopeId));
330
+ _push2(`</div></div>`);
320
331
  } else {
321
332
  return [
322
333
  createVNode("div", { class: "flex items-center gap-3 flex-1 min-w-0 justify-between" }, [
@@ -334,7 +345,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
334
345
  "onUpdate:modelValue": ($event) => isRef(labelInput) ? labelInput.value = $event : null,
335
346
  type: "text",
336
347
  placeholder: "Add a label...",
337
- class: "inline-block w-40 text-sm font-normal border-b border-dashed border-gray-400 bg-transparent outline-none focus:border-primary px-0.5 py-0",
348
+ class: "inline-block w-40 text-sm font-normal border-b border-dashed border-zinc-400 bg-transparent outline-none focus:border-primary px-0.5 py-0",
338
349
  onKeydown: onLabelKeydown,
339
350
  onBlur: saveLabel
340
351
  }, null, 40, ["onUpdate:modelValue"]), [
@@ -343,16 +354,16 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
343
354
  unref(savingLabel) ? (openBlock(), createBlock(_component_UIcon, {
344
355
  key: 0,
345
356
  name: "i-lucide-loader-circle",
346
- class: "size-3.5 text-gray-400 animate-spin shrink-0"
357
+ class: "size-3.5 text-zinc-400 animate-spin shrink-0"
347
358
  })) : createCommentVNode("", true)
348
359
  ], 64)) : (openBlock(), createBlock(Fragment, { key: 1 }, [
349
360
  __props.testRun?.label ? (openBlock(), createBlock("span", {
350
361
  key: 0,
351
- class: "font-normal text-gray-500 ml-1.5 cursor-pointer hover:text-gray-700 dark:hover:text-gray-300 border-b border-dashed border-transparent hover:border-gray-400",
362
+ class: "font-normal text-zinc-500 ml-1.5 cursor-pointer hover:text-zinc-700 dark:hover:text-zinc-300 border-b border-dashed border-transparent hover:border-zinc-400",
352
363
  onClick: startEditLabel
353
364
  }, "— " + toDisplayString(__props.testRun.label), 1)) : (openBlock(), createBlock("button", {
354
365
  key: 1,
355
- class: "text-xs text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 border-b border-dashed border-transparent hover:border-gray-400 ml-1",
366
+ class: "text-xs text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-300 border-b border-dashed border-transparent hover:border-zinc-400 ml-1",
356
367
  title: "Add a label",
357
368
  onClick: startEditLabel
358
369
  }, " + label "))
@@ -377,19 +388,19 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
377
388
  }, 8, ["title"])) : createCommentVNode("", true)
378
389
  ]),
379
390
  createVNode("div", { class: "flex items-center gap-3 shrink-0 max-sm:hidden" }, [
380
- createVNode("span", { class: "text-xs text-gray-500 tabular-nums whitespace-nowrap" }, [
391
+ createVNode("span", { class: "text-xs text-zinc-500 tabular-nums whitespace-nowrap" }, [
381
392
  createTextVNode(" T: "),
382
- createVNode("strong", { class: "text-gray-700 dark:text-gray-300" }, toDisplayString(__props.displayProgress?.totalTests ?? __props.testRun?.totalTests ?? 0), 1)
393
+ createVNode("strong", { class: "text-zinc-700 dark:text-zinc-300" }, toDisplayString(__props.displayProgress?.totalTests ?? __props.testRun?.totalTests ?? 0), 1)
383
394
  ]),
384
- createVNode("span", { class: "text-xs text-green-600 dark:text-green-400 tabular-nums whitespace-nowrap" }, [
395
+ createVNode("span", { class: "text-xs text-emerald-600 dark:text-emerald-400 tabular-nums whitespace-nowrap" }, [
385
396
  createTextVNode(" P: "),
386
397
  createVNode("strong", null, toDisplayString(__props.displayProgress?.passedTests ?? __props.testRun?.passedTests ?? 0), 1)
387
398
  ]),
388
- createVNode("span", { class: "text-xs text-red-600 dark:text-red-400 tabular-nums whitespace-nowrap" }, [
399
+ createVNode("span", { class: "text-xs text-rose-600 dark:text-rose-400 tabular-nums whitespace-nowrap" }, [
389
400
  createTextVNode(" F: "),
390
401
  createVNode("strong", null, toDisplayString(__props.displayProgress?.failedTests ?? __props.testRun?.failedTests ?? 0), 1)
391
402
  ]),
392
- createVNode("span", { class: "text-xs text-gray-500 tabular-nums whitespace-nowrap" }, [
403
+ createVNode("span", { class: "text-xs text-zinc-500 tabular-nums whitespace-nowrap" }, [
393
404
  createTextVNode(" S: "),
394
405
  createVNode("strong", null, toDisplayString(__props.displayProgress?.skippedTests ?? __props.testRun?.skippedTests ?? 0), 1)
395
406
  ]),
@@ -412,7 +423,10 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
412
423
  "did-not-run": __props.testRun?.didNotRunTests ?? 0,
413
424
  total: __props.displayProgress?.totalTests ?? __props.testRun?.totalTests ?? 0
414
425
  }, null, 8, ["passed", "failed", "skipped", "flaky", "did-not-run", "total"]),
415
- createVNode("span", { class: "text-xs text-gray-400 tabular-nums whitespace-nowrap" }, toDisplayString(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(__props.testRun?.duration)), 1)
426
+ createVNode(_component_DurationValue, {
427
+ ms: __props.testRun?.duration,
428
+ class: "text-xs text-zinc-400"
429
+ }, null, 8, ["ms"])
416
430
  ])
417
431
  ])
418
432
  ];
@@ -431,11 +445,11 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
431
445
  }, null, _parent3, _scopeId2));
432
446
  _push3(`<div class="min-w-0 flex-1"${_scopeId2}><div class="flex items-center gap-2"${_scopeId2}><h2 class="text-base font-bold shrink-0 flex items-center gap-1"${_scopeId2}> Run #${ssrInterpolate(__props.testRun?.id)} `);
433
447
  if (unref(editingLabel)) {
434
- _push3(`<!--[--><input${ssrRenderAttr("value", unref(labelInput))} type="text" placeholder="Add a label..." class="inline-block w-48 text-sm font-normal border-b border-dashed border-gray-400 bg-transparent outline-none focus:border-primary px-0.5 py-0"${_scopeId2}>`);
448
+ _push3(`<!--[--><input${ssrRenderAttr("value", unref(labelInput))} type="text" placeholder="Add a label..." class="inline-block w-48 text-sm font-normal border-b border-dashed border-zinc-400 bg-transparent outline-none focus:border-primary px-0.5 py-0"${_scopeId2}>`);
435
449
  if (unref(savingLabel)) {
436
450
  _push3(ssrRenderComponent(_component_UIcon, {
437
451
  name: "i-lucide-loader-circle",
438
- class: "size-3.5 text-gray-400 animate-spin shrink-0"
452
+ class: "size-3.5 text-zinc-400 animate-spin shrink-0"
439
453
  }, null, _parent3, _scopeId2));
440
454
  } else {
441
455
  _push3(`<!---->`);
@@ -444,9 +458,9 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
444
458
  } else {
445
459
  _push3(`<!--[-->`);
446
460
  if (__props.testRun?.label) {
447
- _push3(`<span class="font-normal text-gray-500 ml-1.5 cursor-pointer hover:text-gray-700 dark:hover:text-gray-300 border-b border-dashed border-transparent hover:border-gray-400"${_scopeId2}>— ${ssrInterpolate(__props.testRun.label)}</span>`);
461
+ _push3(`<span class="font-normal text-zinc-500 ml-1.5 cursor-pointer hover:text-zinc-700 dark:hover:text-zinc-300 border-b border-dashed border-transparent hover:border-zinc-400"${_scopeId2}>— ${ssrInterpolate(__props.testRun.label)}</span>`);
448
462
  } else {
449
- _push3(`<button class="text-xs text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 border-b border-dashed border-transparent hover:border-gray-400 ml-1.5" title="Add a label"${_scopeId2}> + label </button>`);
463
+ _push3(`<button class="text-xs text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-300 border-b border-dashed border-transparent hover:border-zinc-400 ml-1.5" title="Add a label"${_scopeId2}> + label </button>`);
450
464
  }
451
465
  _push3(`<!--]-->`);
452
466
  }
@@ -534,7 +548,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
534
548
  } else {
535
549
  _push3(`<!---->`);
536
550
  }
537
- _push3(`<span class="text-xs text-gray-500 ml-auto whitespace-nowrap"${_scopeId2}>${ssrInterpolate(__props.testRun?.project?.label ?? __props.testRun?.project?.name)} · Started ${ssrInterpolate(("prettyDateFormat" in _ctx ? _ctx.prettyDateFormat : unref(prettyDateFormat))(__props.testRun?.startTime))}</span>`);
551
+ _push3(`<span class="text-xs text-zinc-500 ml-auto whitespace-nowrap"${_scopeId2}>${ssrInterpolate(__props.testRun?.project?.label ?? __props.testRun?.project?.name)} · Started ${ssrInterpolate(("prettyDateFormat" in _ctx ? _ctx.prettyDateFormat : unref(prettyDateFormat))(__props.testRun?.startTime))}</span>`);
538
552
  _push3(ssrRenderComponent(_component_UTooltip, {
539
553
  text: unref(copied) ? "Copied!" : "Copy run summary"
540
554
  }, {
@@ -545,7 +559,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
545
559
  variant: "ghost",
546
560
  color: "neutral",
547
561
  icon: unref(copied) ? "i-lucide-check" : "i-lucide-clipboard",
548
- class: "shrink-0 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300",
562
+ class: "shrink-0 text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-300",
549
563
  onClick: ($event) => unref(copy)(buildRunSummary(), { toast: "Run summary copied" })
550
564
  }, null, _parent4, _scopeId3));
551
565
  } else {
@@ -555,7 +569,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
555
569
  variant: "ghost",
556
570
  color: "neutral",
557
571
  icon: unref(copied) ? "i-lucide-check" : "i-lucide-clipboard",
558
- class: "shrink-0 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300",
572
+ class: "shrink-0 text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-300",
559
573
  onClick: ($event) => unref(copy)(buildRunSummary(), { toast: "Run summary copied" })
560
574
  }, null, 8, ["icon", "onClick"])
561
575
  ];
@@ -567,19 +581,19 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
567
581
  _push3(ssrRenderComponent(_component_UPopover, null, {
568
582
  content: withCtx((_3, _push4, _parent4, _scopeId3) => {
569
583
  if (_push4) {
570
- _push4(`<div class="p-2 space-y-1 min-w-32"${_scopeId3}><p class="text-xs font-medium text-gray-500 px-2 py-1"${_scopeId3}>Mode</p><!--[-->`);
584
+ _push4(`<div class="p-2 space-y-1 min-w-32"${_scopeId3}><p class="text-xs font-medium text-zinc-500 px-2 py-1"${_scopeId3}>Mode</p><!--[-->`);
571
585
  ssrRenderList(["file-line", "grep", "file"], (m) => {
572
- _push4(`<button class="${ssrRenderClass([unref(retryMode) === m ? "bg-primary/10 text-primary" : "", "w-full text-left px-2 py-1 text-sm rounded hover:bg-gray-100 dark:hover:bg-gray-800"])}"${_scopeId3}>${ssrInterpolate(m === "file-line" ? "File:line" : m === "grep" ? "Title (grep)" : "File only")}</button>`);
586
+ _push4(`<button class="${ssrRenderClass([unref(retryMode) === m ? "bg-primary/10 text-primary" : "", "w-full text-left px-2 py-1 text-sm rounded hover:bg-zinc-100 dark:hover:bg-zinc-800"])}"${_scopeId3}>${ssrInterpolate(m === "file-line" ? "File:line" : m === "grep" ? "Title (grep)" : "File only")}</button>`);
573
587
  });
574
588
  _push4(`<!--]--></div>`);
575
589
  } else {
576
590
  return [
577
591
  createVNode("div", { class: "p-2 space-y-1 min-w-32" }, [
578
- createVNode("p", { class: "text-xs font-medium text-gray-500 px-2 py-1" }, "Mode"),
592
+ createVNode("p", { class: "text-xs font-medium text-zinc-500 px-2 py-1" }, "Mode"),
579
593
  (openBlock(), createBlock(Fragment, null, renderList(["file-line", "grep", "file"], (m) => {
580
594
  return createVNode("button", {
581
595
  key: m,
582
- class: ["w-full text-left px-2 py-1 text-sm rounded hover:bg-gray-100 dark:hover:bg-gray-800", unref(retryMode) === m ? "bg-primary/10 text-primary" : ""],
596
+ class: ["w-full text-left px-2 py-1 text-sm rounded hover:bg-zinc-100 dark:hover:bg-zinc-800", unref(retryMode) === m ? "bg-primary/10 text-primary" : ""],
583
597
  onClick: ($event) => retryMode.value = m
584
598
  }, toDisplayString(m === "file-line" ? "File:line" : m === "grep" ? "Title (grep)" : "File only"), 11, ["onClick"]);
585
599
  }), 64))
@@ -632,12 +646,12 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
632
646
  _push3(`<!---->`);
633
647
  }
634
648
  _push3(`</div></div></div></div><div class="grid grid-cols-3 sm:grid-cols-5 gap-2"${_scopeId2}><button class="${ssrRenderClass([
635
- __props.activeFilter === "all" ? "bg-gray-200 dark:bg-gray-700 ring-2 ring-gray-400 dark:ring-gray-500" : "bg-gray-50 dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800",
649
+ __props.activeFilter === "all" ? "bg-accented ring-2 ring-zinc-400 dark:ring-zinc-500" : "bg-elevated/60 hover:bg-elevated",
636
650
  "rounded-lg p-3 text-left w-full transition-colors cursor-pointer"
637
- ])}"${_scopeId2}><p class="text-xs font-medium text-gray-500 uppercase tracking-wider"${_scopeId2}>Total</p><p class="text-xl font-bold mt-0.5"${_scopeId2}>${ssrInterpolate(__props.displayProgress?.totalTests ?? __props.testRun?.totalTests ?? 0)}</p></button><div class="relative"${_scopeId2}><button class="${ssrRenderClass([
638
- __props.activeFilter === "passed" ? "bg-green-100 dark:bg-green-900/30 ring-2 ring-green-400 dark:ring-green-600" : "bg-green-50 dark:bg-green-900/20 hover:bg-green-100 dark:hover:bg-green-900/30",
651
+ ])}"${_scopeId2}><p class="text-xs font-medium text-zinc-500 uppercase tracking-wider"${_scopeId2}>Total</p><p class="text-xl font-bold mt-0.5"${_scopeId2}>${ssrInterpolate(__props.displayProgress?.totalTests ?? __props.testRun?.totalTests ?? 0)}</p></button><div class="relative"${_scopeId2}><button class="${ssrRenderClass([
652
+ __props.activeFilter === "passed" ? "bg-emerald-100 dark:bg-emerald-900/30 ring-2 ring-emerald-400 dark:ring-emerald-600" : "bg-emerald-50 dark:bg-emerald-900/20 hover:bg-emerald-100 dark:hover:bg-emerald-900/30",
639
653
  "rounded-lg p-3 text-left w-full h-full transition-colors cursor-pointer"
640
- ])}"${_scopeId2}><p class="text-xs font-medium text-green-700 dark:text-green-400 uppercase tracking-wider"${_scopeId2}>Passed</p><p class="text-xl font-bold mt-0.5 text-green-600 dark:text-green-400"${_scopeId2}>${ssrInterpolate(__props.displayProgress?.passedTests ?? __props.testRun?.passedTests ?? 0)}</p></button>`);
654
+ ])}"${_scopeId2}><p class="text-xs font-medium text-emerald-700 dark:text-emerald-400 uppercase tracking-wider"${_scopeId2}> Passed </p><p class="text-xl font-bold mt-0.5 text-emerald-600 dark:text-emerald-400"${_scopeId2}>${ssrInterpolate(__props.displayProgress?.passedTests ?? __props.testRun?.passedTests ?? 0)}</p></button>`);
641
655
  if ((__props.testRun?.flakyTests ?? 0) > 0) {
642
656
  _push3(`<button class="${ssrRenderClass([
643
657
  __props.activeFilter === "flaky" ? "bg-orange-200 dark:bg-orange-800/60 text-orange-800 dark:text-orange-200 ring-2 ring-orange-400 dark:ring-orange-600" : "bg-orange-100 dark:bg-orange-900/40 text-orange-700 dark:text-orange-300 hover:bg-orange-200 dark:hover:bg-orange-800/60",
@@ -652,12 +666,12 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
652
666
  _push3(`<!---->`);
653
667
  }
654
668
  _push3(`</div><button class="${ssrRenderClass([
655
- __props.activeFilter === "failed" ? "bg-red-100 dark:bg-red-900/30 ring-2 ring-red-400 dark:ring-red-600" : "bg-red-50 dark:bg-red-900/20 hover:bg-red-100 dark:hover:bg-red-900/30",
669
+ __props.activeFilter === "failed" ? "bg-rose-100 dark:bg-rose-900/30 ring-2 ring-rose-400 dark:ring-rose-600" : "bg-rose-50 dark:bg-rose-900/20 hover:bg-rose-100 dark:hover:bg-rose-900/30",
656
670
  "rounded-lg p-3 text-left w-full transition-colors cursor-pointer"
657
- ])}"${_scopeId2}><p class="text-xs font-medium text-red-700 dark:text-red-400 uppercase tracking-wider"${_scopeId2}>Failed</p><p class="text-xl font-bold mt-0.5 text-red-600 dark:text-red-400"${_scopeId2}>${ssrInterpolate(__props.displayProgress?.failedTests ?? __props.testRun?.failedTests ?? 0)}</p></button><button class="${ssrRenderClass([
658
- __props.activeFilter === "skipped" ? "bg-gray-200 dark:bg-gray-700 ring-2 ring-gray-400 dark:ring-gray-500" : "bg-gray-50 dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800",
671
+ ])}"${_scopeId2}><p class="text-xs font-medium text-rose-700 dark:text-rose-400 uppercase tracking-wider"${_scopeId2}>Failed</p><p class="text-xl font-bold mt-0.5 text-rose-600 dark:text-rose-400"${_scopeId2}>${ssrInterpolate(__props.displayProgress?.failedTests ?? __props.testRun?.failedTests ?? 0)}</p></button><button class="${ssrRenderClass([
672
+ __props.activeFilter === "skipped" ? "bg-accented ring-2 ring-zinc-400 dark:ring-zinc-500" : "bg-elevated/60 hover:bg-elevated",
659
673
  "rounded-lg p-3 text-left w-full transition-colors cursor-pointer"
660
- ])}"${_scopeId2}><p class="text-xs font-medium text-gray-500 uppercase tracking-wider"${_scopeId2}>Skipped</p><p class="text-xl font-bold mt-0.5 text-gray-600 dark:text-gray-400"${_scopeId2}>${ssrInterpolate(__props.displayProgress?.skippedTests ?? __props.testRun?.skippedTests ?? 0)}</p></button><button class="${ssrRenderClass([
674
+ ])}"${_scopeId2}><p class="text-xs font-medium text-zinc-500 uppercase tracking-wider"${_scopeId2}>Skipped</p><p class="text-xl font-bold mt-0.5 text-zinc-600 dark:text-zinc-400"${_scopeId2}>${ssrInterpolate(__props.displayProgress?.skippedTests ?? __props.testRun?.skippedTests ?? 0)}</p></button><button class="${ssrRenderClass([
661
675
  __props.activeFilter === "didnotrun" ? "bg-amber-100 dark:bg-amber-900/30 ring-2 ring-amber-400 dark:ring-amber-600" : "bg-amber-50 dark:bg-amber-900/20 hover:bg-amber-100 dark:hover:bg-amber-900/30",
662
676
  "rounded-lg p-3 text-left w-full transition-colors cursor-pointer"
663
677
  ])}" title="Tests that never ran (maxFailures cutoff or a serial-group failure)"${_scopeId2}><p class="text-xs font-medium text-amber-700 dark:text-amber-400 uppercase tracking-wider"${_scopeId2}> Didn&#39;t run </p><p class="text-xl font-bold mt-0.5 text-amber-600 dark:text-amber-400"${_scopeId2}>${ssrInterpolate(__props.testRun?.didNotRunTests ?? 0)}</p></button></div><div${_scopeId2}>`);
@@ -674,16 +688,25 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
674
688
  _push3(`</div><div class="flex items-center gap-3 text-xs shrink-0"${_scopeId2}><div class="flex items-center gap-1"${_scopeId2}>`);
675
689
  _push3(ssrRenderComponent(_component_UIcon, {
676
690
  name: "i-lucide-clock",
677
- class: "size-3.5 text-gray-400"
691
+ class: "size-3.5 text-zinc-400"
692
+ }, null, _parent3, _scopeId2));
693
+ _push3(ssrRenderComponent(_component_DurationValue, {
694
+ ms: __props.testRun?.duration,
695
+ class: "font-medium"
678
696
  }, null, _parent3, _scopeId2));
679
- _push3(`<span class="font-medium tabular-nums"${_scopeId2}>${ssrInterpolate(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(__props.testRun?.duration))}</span></div>`);
697
+ _push3(`</div>`);
680
698
  if (__props.testRun?.avgTestDuration) {
681
699
  _push3(`<div class="flex items-center gap-1"${_scopeId2}>`);
682
700
  _push3(ssrRenderComponent(_component_UIcon, {
683
701
  name: "i-lucide-gauge",
684
- class: "size-3.5 text-gray-400"
702
+ class: "size-3.5 text-zinc-400"
703
+ }, null, _parent3, _scopeId2));
704
+ _push3(`<span class="text-zinc-500 hidden sm:inline"${_scopeId2}>Avg</span>`);
705
+ _push3(ssrRenderComponent(_component_DurationValue, {
706
+ ms: __props.testRun.avgTestDuration,
707
+ class: "font-medium"
685
708
  }, null, _parent3, _scopeId2));
686
- _push3(`<span class="text-gray-500 hidden sm:inline"${_scopeId2}>Avg</span><span class="font-medium tabular-nums"${_scopeId2}>${ssrInterpolate(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(__props.testRun.avgTestDuration))}</span></div>`);
709
+ _push3(`</div>`);
687
710
  } else {
688
711
  _push3(`<!---->`);
689
712
  }
@@ -693,7 +716,13 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
693
716
  name: "i-lucide-arrow-up-right",
694
717
  class: "size-3.5 text-orange-500"
695
718
  }, null, _parent3, _scopeId2));
696
- _push3(`<span class="text-gray-500 hidden sm:inline"${_scopeId2}>P90</span><span class="font-medium tabular-nums text-orange-600 dark:text-orange-400"${_scopeId2}>${ssrInterpolate(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(__props.testRun.p90TestDuration))}</span></div>`);
719
+ _push3(`<span class="text-zinc-500 hidden sm:inline"${_scopeId2}>P90</span>`);
720
+ _push3(ssrRenderComponent(_component_DurationValue, {
721
+ ms: __props.testRun.p90TestDuration,
722
+ class: "font-medium text-orange-600 dark:text-orange-400",
723
+ "unit-class": "opacity-60"
724
+ }, null, _parent3, _scopeId2));
725
+ _push3(`</div>`);
697
726
  } else {
698
727
  _push3(`<!---->`);
699
728
  }
@@ -703,7 +732,13 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
703
732
  name: "i-lucide-clock",
704
733
  class: "size-3.5 text-amber-500"
705
734
  }, null, _parent3, _scopeId2));
706
- _push3(`<span class="text-gray-500 hidden sm:inline"${_scopeId2}>Wasted</span><span class="font-medium tabular-nums text-amber-600 dark:text-amber-400"${_scopeId2}>${ssrInterpolate(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(__props.totalWastedTime))}</span></div>`);
735
+ _push3(`<span class="text-zinc-500 hidden sm:inline"${_scopeId2}>Wasted</span>`);
736
+ _push3(ssrRenderComponent(_component_DurationValue, {
737
+ ms: __props.totalWastedTime,
738
+ class: "font-medium text-amber-600 dark:text-amber-400",
739
+ "unit-class": "opacity-60"
740
+ }, null, _parent3, _scopeId2));
741
+ _push3(`</div>`);
707
742
  } else {
708
743
  _push3(`<!---->`);
709
744
  }
@@ -732,7 +767,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
732
767
  "onUpdate:modelValue": ($event) => isRef(labelInput) ? labelInput.value = $event : null,
733
768
  type: "text",
734
769
  placeholder: "Add a label...",
735
- class: "inline-block w-48 text-sm font-normal border-b border-dashed border-gray-400 bg-transparent outline-none focus:border-primary px-0.5 py-0",
770
+ class: "inline-block w-48 text-sm font-normal border-b border-dashed border-zinc-400 bg-transparent outline-none focus:border-primary px-0.5 py-0",
736
771
  onKeydown: onLabelKeydown,
737
772
  onBlur: saveLabel
738
773
  }, null, 40, ["onUpdate:modelValue"]), [
@@ -741,16 +776,16 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
741
776
  unref(savingLabel) ? (openBlock(), createBlock(_component_UIcon, {
742
777
  key: 0,
743
778
  name: "i-lucide-loader-circle",
744
- class: "size-3.5 text-gray-400 animate-spin shrink-0"
779
+ class: "size-3.5 text-zinc-400 animate-spin shrink-0"
745
780
  })) : createCommentVNode("", true)
746
781
  ], 64)) : (openBlock(), createBlock(Fragment, { key: 1 }, [
747
782
  __props.testRun?.label ? (openBlock(), createBlock("span", {
748
783
  key: 0,
749
- class: "font-normal text-gray-500 ml-1.5 cursor-pointer hover:text-gray-700 dark:hover:text-gray-300 border-b border-dashed border-transparent hover:border-gray-400",
784
+ class: "font-normal text-zinc-500 ml-1.5 cursor-pointer hover:text-zinc-700 dark:hover:text-zinc-300 border-b border-dashed border-transparent hover:border-zinc-400",
750
785
  onClick: startEditLabel
751
786
  }, "— " + toDisplayString(__props.testRun.label), 1)) : (openBlock(), createBlock("button", {
752
787
  key: 1,
753
- class: "text-xs text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 border-b border-dashed border-transparent hover:border-gray-400 ml-1.5",
788
+ class: "text-xs text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-300 border-b border-dashed border-transparent hover:border-zinc-400 ml-1.5",
754
789
  title: "Add a label",
755
790
  onClick: startEditLabel
756
791
  }, " + label "))
@@ -795,7 +830,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
795
830
  ]),
796
831
  _: 1
797
832
  }, 8, ["text"])) : createCommentVNode("", true),
798
- createVNode("span", { class: "text-xs text-gray-500 ml-auto whitespace-nowrap" }, toDisplayString(__props.testRun?.project?.label ?? __props.testRun?.project?.name) + " · Started " + toDisplayString(("prettyDateFormat" in _ctx ? _ctx.prettyDateFormat : unref(prettyDateFormat))(__props.testRun?.startTime)), 1),
833
+ createVNode("span", { class: "text-xs text-zinc-500 ml-auto whitespace-nowrap" }, toDisplayString(__props.testRun?.project?.label ?? __props.testRun?.project?.name) + " · Started " + toDisplayString(("prettyDateFormat" in _ctx ? _ctx.prettyDateFormat : unref(prettyDateFormat))(__props.testRun?.startTime)), 1),
799
834
  createVNode(_component_UTooltip, {
800
835
  text: unref(copied) ? "Copied!" : "Copy run summary"
801
836
  }, {
@@ -805,7 +840,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
805
840
  variant: "ghost",
806
841
  color: "neutral",
807
842
  icon: unref(copied) ? "i-lucide-check" : "i-lucide-clipboard",
808
- class: "shrink-0 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300",
843
+ class: "shrink-0 text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-300",
809
844
  onClick: ($event) => unref(copy)(buildRunSummary(), { toast: "Run summary copied" })
810
845
  }, null, 8, ["icon", "onClick"])
811
846
  ]),
@@ -814,11 +849,11 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
814
849
  unref(failedCases).length > 0 ? (openBlock(), createBlock(_component_UPopover, { key: 2 }, {
815
850
  content: withCtx(() => [
816
851
  createVNode("div", { class: "p-2 space-y-1 min-w-32" }, [
817
- createVNode("p", { class: "text-xs font-medium text-gray-500 px-2 py-1" }, "Mode"),
852
+ createVNode("p", { class: "text-xs font-medium text-zinc-500 px-2 py-1" }, "Mode"),
818
853
  (openBlock(), createBlock(Fragment, null, renderList(["file-line", "grep", "file"], (m) => {
819
854
  return createVNode("button", {
820
855
  key: m,
821
- class: ["w-full text-left px-2 py-1 text-sm rounded hover:bg-gray-100 dark:hover:bg-gray-800", unref(retryMode) === m ? "bg-primary/10 text-primary" : ""],
856
+ class: ["w-full text-left px-2 py-1 text-sm rounded hover:bg-zinc-100 dark:hover:bg-zinc-800", unref(retryMode) === m ? "bg-primary/10 text-primary" : ""],
822
857
  onClick: ($event) => retryMode.value = m
823
858
  }, toDisplayString(m === "file-line" ? "File:line" : m === "grep" ? "Title (grep)" : "File only"), 11, ["onClick"]);
824
859
  }), 64))
@@ -849,23 +884,23 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
849
884
  createVNode("button", {
850
885
  class: [
851
886
  "rounded-lg p-3 text-left w-full transition-colors cursor-pointer",
852
- __props.activeFilter === "all" ? "bg-gray-200 dark:bg-gray-700 ring-2 ring-gray-400 dark:ring-gray-500" : "bg-gray-50 dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800"
887
+ __props.activeFilter === "all" ? "bg-accented ring-2 ring-zinc-400 dark:ring-zinc-500" : "bg-elevated/60 hover:bg-elevated"
853
888
  ],
854
889
  onClick: ($event) => emit("filter-status", "all")
855
890
  }, [
856
- createVNode("p", { class: "text-xs font-medium text-gray-500 uppercase tracking-wider" }, "Total"),
891
+ createVNode("p", { class: "text-xs font-medium text-zinc-500 uppercase tracking-wider" }, "Total"),
857
892
  createVNode("p", { class: "text-xl font-bold mt-0.5" }, toDisplayString(__props.displayProgress?.totalTests ?? __props.testRun?.totalTests ?? 0), 1)
858
893
  ], 10, ["onClick"]),
859
894
  createVNode("div", { class: "relative" }, [
860
895
  createVNode("button", {
861
896
  class: [
862
897
  "rounded-lg p-3 text-left w-full h-full transition-colors cursor-pointer",
863
- __props.activeFilter === "passed" ? "bg-green-100 dark:bg-green-900/30 ring-2 ring-green-400 dark:ring-green-600" : "bg-green-50 dark:bg-green-900/20 hover:bg-green-100 dark:hover:bg-green-900/30"
898
+ __props.activeFilter === "passed" ? "bg-emerald-100 dark:bg-emerald-900/30 ring-2 ring-emerald-400 dark:ring-emerald-600" : "bg-emerald-50 dark:bg-emerald-900/20 hover:bg-emerald-100 dark:hover:bg-emerald-900/30"
864
899
  ],
865
900
  onClick: ($event) => emit("filter-status", "passed")
866
901
  }, [
867
- createVNode("p", { class: "text-xs font-medium text-green-700 dark:text-green-400 uppercase tracking-wider" }, "Passed"),
868
- createVNode("p", { class: "text-xl font-bold mt-0.5 text-green-600 dark:text-green-400" }, toDisplayString(__props.displayProgress?.passedTests ?? __props.testRun?.passedTests ?? 0), 1)
902
+ createVNode("p", { class: "text-xs font-medium text-emerald-700 dark:text-emerald-400 uppercase tracking-wider" }, " Passed "),
903
+ createVNode("p", { class: "text-xl font-bold mt-0.5 text-emerald-600 dark:text-emerald-400" }, toDisplayString(__props.displayProgress?.passedTests ?? __props.testRun?.passedTests ?? 0), 1)
869
904
  ], 10, ["onClick"]),
870
905
  (__props.testRun?.flakyTests ?? 0) > 0 ? (openBlock(), createBlock("button", {
871
906
  key: 0,
@@ -886,22 +921,22 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
886
921
  createVNode("button", {
887
922
  class: [
888
923
  "rounded-lg p-3 text-left w-full transition-colors cursor-pointer",
889
- __props.activeFilter === "failed" ? "bg-red-100 dark:bg-red-900/30 ring-2 ring-red-400 dark:ring-red-600" : "bg-red-50 dark:bg-red-900/20 hover:bg-red-100 dark:hover:bg-red-900/30"
924
+ __props.activeFilter === "failed" ? "bg-rose-100 dark:bg-rose-900/30 ring-2 ring-rose-400 dark:ring-rose-600" : "bg-rose-50 dark:bg-rose-900/20 hover:bg-rose-100 dark:hover:bg-rose-900/30"
890
925
  ],
891
926
  onClick: ($event) => emit("filter-status", "failed")
892
927
  }, [
893
- createVNode("p", { class: "text-xs font-medium text-red-700 dark:text-red-400 uppercase tracking-wider" }, "Failed"),
894
- createVNode("p", { class: "text-xl font-bold mt-0.5 text-red-600 dark:text-red-400" }, toDisplayString(__props.displayProgress?.failedTests ?? __props.testRun?.failedTests ?? 0), 1)
928
+ createVNode("p", { class: "text-xs font-medium text-rose-700 dark:text-rose-400 uppercase tracking-wider" }, "Failed"),
929
+ createVNode("p", { class: "text-xl font-bold mt-0.5 text-rose-600 dark:text-rose-400" }, toDisplayString(__props.displayProgress?.failedTests ?? __props.testRun?.failedTests ?? 0), 1)
895
930
  ], 10, ["onClick"]),
896
931
  createVNode("button", {
897
932
  class: [
898
933
  "rounded-lg p-3 text-left w-full transition-colors cursor-pointer",
899
- __props.activeFilter === "skipped" ? "bg-gray-200 dark:bg-gray-700 ring-2 ring-gray-400 dark:ring-gray-500" : "bg-gray-50 dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800"
934
+ __props.activeFilter === "skipped" ? "bg-accented ring-2 ring-zinc-400 dark:ring-zinc-500" : "bg-elevated/60 hover:bg-elevated"
900
935
  ],
901
936
  onClick: ($event) => emit("filter-status", "skipped")
902
937
  }, [
903
- createVNode("p", { class: "text-xs font-medium text-gray-500 uppercase tracking-wider" }, "Skipped"),
904
- createVNode("p", { class: "text-xl font-bold mt-0.5 text-gray-600 dark:text-gray-400" }, toDisplayString(__props.displayProgress?.skippedTests ?? __props.testRun?.skippedTests ?? 0), 1)
938
+ createVNode("p", { class: "text-xs font-medium text-zinc-500 uppercase tracking-wider" }, "Skipped"),
939
+ createVNode("p", { class: "text-xl font-bold mt-0.5 text-zinc-600 dark:text-zinc-400" }, toDisplayString(__props.displayProgress?.skippedTests ?? __props.testRun?.skippedTests ?? 0), 1)
905
940
  ], 10, ["onClick"]),
906
941
  createVNode("button", {
907
942
  class: [
@@ -934,9 +969,12 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
934
969
  createVNode("div", { class: "flex items-center gap-1" }, [
935
970
  createVNode(_component_UIcon, {
936
971
  name: "i-lucide-clock",
937
- class: "size-3.5 text-gray-400"
972
+ class: "size-3.5 text-zinc-400"
938
973
  }),
939
- createVNode("span", { class: "font-medium tabular-nums" }, toDisplayString(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(__props.testRun?.duration)), 1)
974
+ createVNode(_component_DurationValue, {
975
+ ms: __props.testRun?.duration,
976
+ class: "font-medium"
977
+ }, null, 8, ["ms"])
940
978
  ]),
941
979
  __props.testRun?.avgTestDuration ? (openBlock(), createBlock("div", {
942
980
  key: 0,
@@ -944,10 +982,13 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
944
982
  }, [
945
983
  createVNode(_component_UIcon, {
946
984
  name: "i-lucide-gauge",
947
- class: "size-3.5 text-gray-400"
985
+ class: "size-3.5 text-zinc-400"
948
986
  }),
949
- createVNode("span", { class: "text-gray-500 hidden sm:inline" }, "Avg"),
950
- createVNode("span", { class: "font-medium tabular-nums" }, toDisplayString(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(__props.testRun.avgTestDuration)), 1)
987
+ createVNode("span", { class: "text-zinc-500 hidden sm:inline" }, "Avg"),
988
+ createVNode(_component_DurationValue, {
989
+ ms: __props.testRun.avgTestDuration,
990
+ class: "font-medium"
991
+ }, null, 8, ["ms"])
951
992
  ])) : createCommentVNode("", true),
952
993
  __props.testRun?.p90TestDuration ? (openBlock(), createBlock("div", {
953
994
  key: 1,
@@ -957,8 +998,12 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
957
998
  name: "i-lucide-arrow-up-right",
958
999
  class: "size-3.5 text-orange-500"
959
1000
  }),
960
- createVNode("span", { class: "text-gray-500 hidden sm:inline" }, "P90"),
961
- createVNode("span", { class: "font-medium tabular-nums text-orange-600 dark:text-orange-400" }, toDisplayString(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(__props.testRun.p90TestDuration)), 1)
1001
+ createVNode("span", { class: "text-zinc-500 hidden sm:inline" }, "P90"),
1002
+ createVNode(_component_DurationValue, {
1003
+ ms: __props.testRun.p90TestDuration,
1004
+ class: "font-medium text-orange-600 dark:text-orange-400",
1005
+ "unit-class": "opacity-60"
1006
+ }, null, 8, ["ms"])
962
1007
  ])) : createCommentVNode("", true),
963
1008
  __props.totalWastedTime && __props.totalWastedTime > 0 ? (openBlock(), createBlock("div", {
964
1009
  key: 2,
@@ -968,8 +1013,12 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
968
1013
  name: "i-lucide-clock",
969
1014
  class: "size-3.5 text-amber-500"
970
1015
  }),
971
- createVNode("span", { class: "text-gray-500 hidden sm:inline" }, "Wasted"),
972
- createVNode("span", { class: "font-medium tabular-nums text-amber-600 dark:text-amber-400" }, toDisplayString(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(__props.totalWastedTime)), 1)
1016
+ createVNode("span", { class: "text-zinc-500 hidden sm:inline" }, "Wasted"),
1017
+ createVNode(_component_DurationValue, {
1018
+ ms: __props.totalWastedTime,
1019
+ class: "font-medium text-amber-600 dark:text-amber-400",
1020
+ "unit-class": "opacity-60"
1021
+ }, null, 8, ["ms"])
973
1022
  ])) : createCommentVNode("", true)
974
1023
  ])
975
1024
  ])) : createCommentVNode("", true)
@@ -1016,7 +1065,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1016
1065
  name: "i-lucide-upload",
1017
1066
  class: "size-5 text-info shrink-0 animate-pulse"
1018
1067
  }, null, _parent3, _scopeId2));
1019
- _push3(`<div class="flex-1 min-w-0"${_scopeId2}><div class="flex items-center justify-between mb-1"${_scopeId2}><span class="text-sm font-medium"${_scopeId2}>Finalizing test run</span><span class="text-xs text-gray-500"${_scopeId2}>Uploading reports &amp; traces…</span></div>`);
1068
+ _push3(`<div class="flex-1 min-w-0"${_scopeId2}><div class="flex items-center justify-between mb-1"${_scopeId2}><span class="text-sm font-medium"${_scopeId2}>Finalizing test run</span><span class="text-xs text-zinc-500"${_scopeId2}>Uploading reports &amp; traces…</span></div>`);
1020
1069
  _push3(ssrRenderComponent(_component_UProgress, {
1021
1070
  value: null,
1022
1071
  size: "sm",
@@ -1032,7 +1081,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1032
1081
  ssrRenderList(__props.allReports, (report) => {
1033
1082
  _push3(`<div class="flex items-center justify-between gap-2 min-w-0"${_scopeId2}>`);
1034
1083
  _push3(ssrRenderComponent(_component_UButton, {
1035
- href: `/api/files/${("getFileApiPath" in _ctx ? _ctx.getFileApiPath : unref(getFileApiPath))(report.path)}`,
1084
+ href: ("fileApiUrl" in _ctx ? _ctx.fileApiUrl : unref(fileApiUrl))(report.path, null, unref(config).app?.baseURL),
1036
1085
  icon: ("reportIcon" in _ctx ? _ctx.reportIcon : unref(reportIcon))(report.type),
1037
1086
  target: "_blank",
1038
1087
  size: "xs",
@@ -1051,11 +1100,11 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1051
1100
  }),
1052
1101
  _: 2
1053
1102
  }, _parent3, _scopeId2));
1054
- _push3(`<span class="text-xs tabular-nums text-gray-400 dark:text-gray-500 shrink-0"${_scopeId2}>${ssrInterpolate(("formatBytes" in _ctx ? _ctx.formatBytes : unref(formatBytes))(report.size))}</span></div>`);
1103
+ _push3(`<span class="text-xs tabular-nums text-zinc-400 dark:text-zinc-500 shrink-0"${_scopeId2}>${ssrInterpolate(("formatBytes" in _ctx ? _ctx.formatBytes : unref(formatBytes))(report.size))}</span></div>`);
1055
1104
  });
1056
1105
  _push3(`<!--]-->`);
1057
1106
  if (unref(storageStats).testCaseFilesCount > 0) {
1058
- _push3(`<div class="flex items-center justify-between gap-2 min-w-0"${_scopeId2}><span class="truncate"${_scopeId2}>Test files (${ssrInterpolate(unref(storageStats).testCaseFilesCount)})</span><span class="text-xs tabular-nums text-gray-400 dark:text-gray-500 shrink-0"${_scopeId2}>${ssrInterpolate(("formatBytes" in _ctx ? _ctx.formatBytes : unref(formatBytes))(unref(storageStats).testCaseFilesSize))}</span></div>`);
1107
+ _push3(`<div class="flex items-center justify-between gap-2 min-w-0"${_scopeId2}><span class="truncate"${_scopeId2}>Test files (${ssrInterpolate(unref(storageStats).testCaseFilesCount)})</span><span class="text-xs tabular-nums text-zinc-400 dark:text-zinc-500 shrink-0"${_scopeId2}>${ssrInterpolate(("formatBytes" in _ctx ? _ctx.formatBytes : unref(formatBytes))(unref(storageStats).testCaseFilesSize))}</span></div>`);
1059
1108
  } else {
1060
1109
  _push3(`<!---->`);
1061
1110
  }
@@ -1076,7 +1125,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1076
1125
  createVNode("div", { class: "flex-1 min-w-0" }, [
1077
1126
  createVNode("div", { class: "flex items-center justify-between mb-1" }, [
1078
1127
  createVNode("span", { class: "text-sm font-medium" }, "Finalizing test run"),
1079
- createVNode("span", { class: "text-xs text-gray-500" }, "Uploading reports & traces…")
1128
+ createVNode("span", { class: "text-xs text-zinc-500" }, "Uploading reports & traces…")
1080
1129
  ]),
1081
1130
  createVNode(_component_UProgress, {
1082
1131
  value: null,
@@ -1096,7 +1145,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1096
1145
  class: "flex items-center justify-between gap-2 min-w-0"
1097
1146
  }, [
1098
1147
  createVNode(_component_UButton, {
1099
- href: `/api/files/${("getFileApiPath" in _ctx ? _ctx.getFileApiPath : unref(getFileApiPath))(report.path)}`,
1148
+ href: ("fileApiUrl" in _ctx ? _ctx.fileApiUrl : unref(fileApiUrl))(report.path, null, unref(config).app?.baseURL),
1100
1149
  icon: ("reportIcon" in _ctx ? _ctx.reportIcon : unref(reportIcon))(report.type),
1101
1150
  target: "_blank",
1102
1151
  size: "xs",
@@ -1109,7 +1158,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1109
1158
  ]),
1110
1159
  _: 2
1111
1160
  }, 1032, ["href", "icon"]),
1112
- createVNode("span", { class: "text-xs tabular-nums text-gray-400 dark:text-gray-500 shrink-0" }, toDisplayString(("formatBytes" in _ctx ? _ctx.formatBytes : unref(formatBytes))(report.size)), 1)
1161
+ createVNode("span", { class: "text-xs tabular-nums text-zinc-400 dark:text-zinc-500 shrink-0" }, toDisplayString(("formatBytes" in _ctx ? _ctx.formatBytes : unref(formatBytes))(report.size)), 1)
1113
1162
  ]);
1114
1163
  }), 128)),
1115
1164
  unref(storageStats).testCaseFilesCount > 0 ? (openBlock(), createBlock("div", {
@@ -1117,7 +1166,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1117
1166
  class: "flex items-center justify-between gap-2 min-w-0"
1118
1167
  }, [
1119
1168
  createVNode("span", { class: "truncate" }, "Test files (" + toDisplayString(unref(storageStats).testCaseFilesCount) + ")", 1),
1120
- createVNode("span", { class: "text-xs tabular-nums text-gray-400 dark:text-gray-500 shrink-0" }, toDisplayString(("formatBytes" in _ctx ? _ctx.formatBytes : unref(formatBytes))(unref(storageStats).testCaseFilesSize)), 1)
1169
+ createVNode("span", { class: "text-xs tabular-nums text-zinc-400 dark:text-zinc-500 shrink-0" }, toDisplayString(("formatBytes" in _ctx ? _ctx.formatBytes : unref(formatBytes))(unref(storageStats).testCaseFilesSize)), 1)
1121
1170
  ])) : createCommentVNode("", true)
1122
1171
  ])) : createCommentVNode("", true)
1123
1172
  ];
@@ -1167,7 +1216,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1167
1216
  _push3(`<p class="flex items-center gap-1"${_scopeId2}>`);
1168
1217
  _push3(ssrRenderComponent(_component_UIcon, {
1169
1218
  name: "i-lucide-link",
1170
- class: "w-3.5 h-3.5 text-gray-400 shrink-0"
1219
+ class: "w-3.5 h-3.5 text-zinc-400 shrink-0"
1171
1220
  }, null, _parent3, _scopeId2));
1172
1221
  _push3(`<span${_scopeId2}>${ssrInterpolate(__props.testRun.metadata.relatedIssue)}</span></p>`);
1173
1222
  } else {
@@ -1202,7 +1251,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1202
1251
  _push3(`<!---->`);
1203
1252
  }
1204
1253
  if (__props.showCustomData && __props.testRun.metadata.customData) {
1205
- _push3(`<div${_scopeId2}><div class="bg-gray-50 dark:bg-gray-900 p-2.5 rounded text-xs font-mono overflow-x-auto max-h-48 overflow-y-auto"${_scopeId2}><pre class="m-0"${_scopeId2}>${ssrInterpolate(JSON.stringify(__props.testRun.metadata.customData, null, 2))}</pre></div></div>`);
1254
+ _push3(`<div${_scopeId2}><div class="bg-zinc-50 dark:bg-zinc-900 p-2.5 rounded text-xs font-mono overflow-x-auto max-h-48 overflow-y-auto"${_scopeId2}><pre class="m-0"${_scopeId2}>${ssrInterpolate(JSON.stringify(__props.testRun.metadata.customData, null, 2))}</pre></div></div>`);
1206
1255
  } else {
1207
1256
  _push3(`<!---->`);
1208
1257
  }
@@ -1233,7 +1282,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1233
1282
  }, [
1234
1283
  createVNode(_component_UIcon, {
1235
1284
  name: "i-lucide-link",
1236
- class: "w-3.5 h-3.5 text-gray-400 shrink-0"
1285
+ class: "w-3.5 h-3.5 text-zinc-400 shrink-0"
1237
1286
  }),
1238
1287
  createVNode("span", null, toDisplayString(__props.testRun.metadata.relatedIssue), 1)
1239
1288
  ])) : createCommentVNode("", true),
@@ -1257,7 +1306,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1257
1306
  _: 1
1258
1307
  }, 8, ["icon", "onClick"])) : createCommentVNode("", true),
1259
1308
  __props.showCustomData && __props.testRun.metadata.customData ? (openBlock(), createBlock("div", { key: 3 }, [
1260
- createVNode("div", { class: "bg-gray-50 dark:bg-gray-900 p-2.5 rounded text-xs font-mono overflow-x-auto max-h-48 overflow-y-auto" }, [
1309
+ createVNode("div", { class: "bg-zinc-50 dark:bg-zinc-900 p-2.5 rounded text-xs font-mono overflow-x-auto max-h-48 overflow-y-auto" }, [
1261
1310
  createVNode("pre", { class: "m-0" }, toDisplayString(JSON.stringify(__props.testRun.metadata.customData, null, 2)), 1)
1262
1311
  ])
1263
1312
  ])) : createCommentVNode("", true)
@@ -1295,7 +1344,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1295
1344
  "onUpdate:modelValue": ($event) => isRef(labelInput) ? labelInput.value = $event : null,
1296
1345
  type: "text",
1297
1346
  placeholder: "Add a label...",
1298
- class: "inline-block w-48 text-sm font-normal border-b border-dashed border-gray-400 bg-transparent outline-none focus:border-primary px-0.5 py-0",
1347
+ class: "inline-block w-48 text-sm font-normal border-b border-dashed border-zinc-400 bg-transparent outline-none focus:border-primary px-0.5 py-0",
1299
1348
  onKeydown: onLabelKeydown,
1300
1349
  onBlur: saveLabel
1301
1350
  }, null, 40, ["onUpdate:modelValue"]), [
@@ -1304,16 +1353,16 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1304
1353
  unref(savingLabel) ? (openBlock(), createBlock(_component_UIcon, {
1305
1354
  key: 0,
1306
1355
  name: "i-lucide-loader-circle",
1307
- class: "size-3.5 text-gray-400 animate-spin shrink-0"
1356
+ class: "size-3.5 text-zinc-400 animate-spin shrink-0"
1308
1357
  })) : createCommentVNode("", true)
1309
1358
  ], 64)) : (openBlock(), createBlock(Fragment, { key: 1 }, [
1310
1359
  __props.testRun?.label ? (openBlock(), createBlock("span", {
1311
1360
  key: 0,
1312
- class: "font-normal text-gray-500 ml-1.5 cursor-pointer hover:text-gray-700 dark:hover:text-gray-300 border-b border-dashed border-transparent hover:border-gray-400",
1361
+ class: "font-normal text-zinc-500 ml-1.5 cursor-pointer hover:text-zinc-700 dark:hover:text-zinc-300 border-b border-dashed border-transparent hover:border-zinc-400",
1313
1362
  onClick: startEditLabel
1314
1363
  }, "— " + toDisplayString(__props.testRun.label), 1)) : (openBlock(), createBlock("button", {
1315
1364
  key: 1,
1316
- class: "text-xs text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 border-b border-dashed border-transparent hover:border-gray-400 ml-1.5",
1365
+ class: "text-xs text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-300 border-b border-dashed border-transparent hover:border-zinc-400 ml-1.5",
1317
1366
  title: "Add a label",
1318
1367
  onClick: startEditLabel
1319
1368
  }, " + label "))
@@ -1358,7 +1407,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1358
1407
  ]),
1359
1408
  _: 1
1360
1409
  }, 8, ["text"])) : createCommentVNode("", true),
1361
- createVNode("span", { class: "text-xs text-gray-500 ml-auto whitespace-nowrap" }, toDisplayString(__props.testRun?.project?.label ?? __props.testRun?.project?.name) + " · Started " + toDisplayString(("prettyDateFormat" in _ctx ? _ctx.prettyDateFormat : unref(prettyDateFormat))(__props.testRun?.startTime)), 1),
1410
+ createVNode("span", { class: "text-xs text-zinc-500 ml-auto whitespace-nowrap" }, toDisplayString(__props.testRun?.project?.label ?? __props.testRun?.project?.name) + " · Started " + toDisplayString(("prettyDateFormat" in _ctx ? _ctx.prettyDateFormat : unref(prettyDateFormat))(__props.testRun?.startTime)), 1),
1362
1411
  createVNode(_component_UTooltip, {
1363
1412
  text: unref(copied) ? "Copied!" : "Copy run summary"
1364
1413
  }, {
@@ -1368,7 +1417,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1368
1417
  variant: "ghost",
1369
1418
  color: "neutral",
1370
1419
  icon: unref(copied) ? "i-lucide-check" : "i-lucide-clipboard",
1371
- class: "shrink-0 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300",
1420
+ class: "shrink-0 text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-300",
1372
1421
  onClick: ($event) => unref(copy)(buildRunSummary(), { toast: "Run summary copied" })
1373
1422
  }, null, 8, ["icon", "onClick"])
1374
1423
  ]),
@@ -1377,11 +1426,11 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1377
1426
  unref(failedCases).length > 0 ? (openBlock(), createBlock(_component_UPopover, { key: 2 }, {
1378
1427
  content: withCtx(() => [
1379
1428
  createVNode("div", { class: "p-2 space-y-1 min-w-32" }, [
1380
- createVNode("p", { class: "text-xs font-medium text-gray-500 px-2 py-1" }, "Mode"),
1429
+ createVNode("p", { class: "text-xs font-medium text-zinc-500 px-2 py-1" }, "Mode"),
1381
1430
  (openBlock(), createBlock(Fragment, null, renderList(["file-line", "grep", "file"], (m) => {
1382
1431
  return createVNode("button", {
1383
1432
  key: m,
1384
- class: ["w-full text-left px-2 py-1 text-sm rounded hover:bg-gray-100 dark:hover:bg-gray-800", unref(retryMode) === m ? "bg-primary/10 text-primary" : ""],
1433
+ class: ["w-full text-left px-2 py-1 text-sm rounded hover:bg-zinc-100 dark:hover:bg-zinc-800", unref(retryMode) === m ? "bg-primary/10 text-primary" : ""],
1385
1434
  onClick: ($event) => retryMode.value = m
1386
1435
  }, toDisplayString(m === "file-line" ? "File:line" : m === "grep" ? "Title (grep)" : "File only"), 11, ["onClick"]);
1387
1436
  }), 64))
@@ -1412,23 +1461,23 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1412
1461
  createVNode("button", {
1413
1462
  class: [
1414
1463
  "rounded-lg p-3 text-left w-full transition-colors cursor-pointer",
1415
- __props.activeFilter === "all" ? "bg-gray-200 dark:bg-gray-700 ring-2 ring-gray-400 dark:ring-gray-500" : "bg-gray-50 dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800"
1464
+ __props.activeFilter === "all" ? "bg-accented ring-2 ring-zinc-400 dark:ring-zinc-500" : "bg-elevated/60 hover:bg-elevated"
1416
1465
  ],
1417
1466
  onClick: ($event) => emit("filter-status", "all")
1418
1467
  }, [
1419
- createVNode("p", { class: "text-xs font-medium text-gray-500 uppercase tracking-wider" }, "Total"),
1468
+ createVNode("p", { class: "text-xs font-medium text-zinc-500 uppercase tracking-wider" }, "Total"),
1420
1469
  createVNode("p", { class: "text-xl font-bold mt-0.5" }, toDisplayString(__props.displayProgress?.totalTests ?? __props.testRun?.totalTests ?? 0), 1)
1421
1470
  ], 10, ["onClick"]),
1422
1471
  createVNode("div", { class: "relative" }, [
1423
1472
  createVNode("button", {
1424
1473
  class: [
1425
1474
  "rounded-lg p-3 text-left w-full h-full transition-colors cursor-pointer",
1426
- __props.activeFilter === "passed" ? "bg-green-100 dark:bg-green-900/30 ring-2 ring-green-400 dark:ring-green-600" : "bg-green-50 dark:bg-green-900/20 hover:bg-green-100 dark:hover:bg-green-900/30"
1475
+ __props.activeFilter === "passed" ? "bg-emerald-100 dark:bg-emerald-900/30 ring-2 ring-emerald-400 dark:ring-emerald-600" : "bg-emerald-50 dark:bg-emerald-900/20 hover:bg-emerald-100 dark:hover:bg-emerald-900/30"
1427
1476
  ],
1428
1477
  onClick: ($event) => emit("filter-status", "passed")
1429
1478
  }, [
1430
- createVNode("p", { class: "text-xs font-medium text-green-700 dark:text-green-400 uppercase tracking-wider" }, "Passed"),
1431
- createVNode("p", { class: "text-xl font-bold mt-0.5 text-green-600 dark:text-green-400" }, toDisplayString(__props.displayProgress?.passedTests ?? __props.testRun?.passedTests ?? 0), 1)
1479
+ createVNode("p", { class: "text-xs font-medium text-emerald-700 dark:text-emerald-400 uppercase tracking-wider" }, " Passed "),
1480
+ createVNode("p", { class: "text-xl font-bold mt-0.5 text-emerald-600 dark:text-emerald-400" }, toDisplayString(__props.displayProgress?.passedTests ?? __props.testRun?.passedTests ?? 0), 1)
1432
1481
  ], 10, ["onClick"]),
1433
1482
  (__props.testRun?.flakyTests ?? 0) > 0 ? (openBlock(), createBlock("button", {
1434
1483
  key: 0,
@@ -1449,22 +1498,22 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1449
1498
  createVNode("button", {
1450
1499
  class: [
1451
1500
  "rounded-lg p-3 text-left w-full transition-colors cursor-pointer",
1452
- __props.activeFilter === "failed" ? "bg-red-100 dark:bg-red-900/30 ring-2 ring-red-400 dark:ring-red-600" : "bg-red-50 dark:bg-red-900/20 hover:bg-red-100 dark:hover:bg-red-900/30"
1501
+ __props.activeFilter === "failed" ? "bg-rose-100 dark:bg-rose-900/30 ring-2 ring-rose-400 dark:ring-rose-600" : "bg-rose-50 dark:bg-rose-900/20 hover:bg-rose-100 dark:hover:bg-rose-900/30"
1453
1502
  ],
1454
1503
  onClick: ($event) => emit("filter-status", "failed")
1455
1504
  }, [
1456
- createVNode("p", { class: "text-xs font-medium text-red-700 dark:text-red-400 uppercase tracking-wider" }, "Failed"),
1457
- createVNode("p", { class: "text-xl font-bold mt-0.5 text-red-600 dark:text-red-400" }, toDisplayString(__props.displayProgress?.failedTests ?? __props.testRun?.failedTests ?? 0), 1)
1505
+ createVNode("p", { class: "text-xs font-medium text-rose-700 dark:text-rose-400 uppercase tracking-wider" }, "Failed"),
1506
+ createVNode("p", { class: "text-xl font-bold mt-0.5 text-rose-600 dark:text-rose-400" }, toDisplayString(__props.displayProgress?.failedTests ?? __props.testRun?.failedTests ?? 0), 1)
1458
1507
  ], 10, ["onClick"]),
1459
1508
  createVNode("button", {
1460
1509
  class: [
1461
1510
  "rounded-lg p-3 text-left w-full transition-colors cursor-pointer",
1462
- __props.activeFilter === "skipped" ? "bg-gray-200 dark:bg-gray-700 ring-2 ring-gray-400 dark:ring-gray-500" : "bg-gray-50 dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800"
1511
+ __props.activeFilter === "skipped" ? "bg-accented ring-2 ring-zinc-400 dark:ring-zinc-500" : "bg-elevated/60 hover:bg-elevated"
1463
1512
  ],
1464
1513
  onClick: ($event) => emit("filter-status", "skipped")
1465
1514
  }, [
1466
- createVNode("p", { class: "text-xs font-medium text-gray-500 uppercase tracking-wider" }, "Skipped"),
1467
- createVNode("p", { class: "text-xl font-bold mt-0.5 text-gray-600 dark:text-gray-400" }, toDisplayString(__props.displayProgress?.skippedTests ?? __props.testRun?.skippedTests ?? 0), 1)
1515
+ createVNode("p", { class: "text-xs font-medium text-zinc-500 uppercase tracking-wider" }, "Skipped"),
1516
+ createVNode("p", { class: "text-xl font-bold mt-0.5 text-zinc-600 dark:text-zinc-400" }, toDisplayString(__props.displayProgress?.skippedTests ?? __props.testRun?.skippedTests ?? 0), 1)
1468
1517
  ], 10, ["onClick"]),
1469
1518
  createVNode("button", {
1470
1519
  class: [
@@ -1497,9 +1546,12 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1497
1546
  createVNode("div", { class: "flex items-center gap-1" }, [
1498
1547
  createVNode(_component_UIcon, {
1499
1548
  name: "i-lucide-clock",
1500
- class: "size-3.5 text-gray-400"
1549
+ class: "size-3.5 text-zinc-400"
1501
1550
  }),
1502
- createVNode("span", { class: "font-medium tabular-nums" }, toDisplayString(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(__props.testRun?.duration)), 1)
1551
+ createVNode(_component_DurationValue, {
1552
+ ms: __props.testRun?.duration,
1553
+ class: "font-medium"
1554
+ }, null, 8, ["ms"])
1503
1555
  ]),
1504
1556
  __props.testRun?.avgTestDuration ? (openBlock(), createBlock("div", {
1505
1557
  key: 0,
@@ -1507,10 +1559,13 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1507
1559
  }, [
1508
1560
  createVNode(_component_UIcon, {
1509
1561
  name: "i-lucide-gauge",
1510
- class: "size-3.5 text-gray-400"
1562
+ class: "size-3.5 text-zinc-400"
1511
1563
  }),
1512
- createVNode("span", { class: "text-gray-500 hidden sm:inline" }, "Avg"),
1513
- createVNode("span", { class: "font-medium tabular-nums" }, toDisplayString(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(__props.testRun.avgTestDuration)), 1)
1564
+ createVNode("span", { class: "text-zinc-500 hidden sm:inline" }, "Avg"),
1565
+ createVNode(_component_DurationValue, {
1566
+ ms: __props.testRun.avgTestDuration,
1567
+ class: "font-medium"
1568
+ }, null, 8, ["ms"])
1514
1569
  ])) : createCommentVNode("", true),
1515
1570
  __props.testRun?.p90TestDuration ? (openBlock(), createBlock("div", {
1516
1571
  key: 1,
@@ -1520,8 +1575,12 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1520
1575
  name: "i-lucide-arrow-up-right",
1521
1576
  class: "size-3.5 text-orange-500"
1522
1577
  }),
1523
- createVNode("span", { class: "text-gray-500 hidden sm:inline" }, "P90"),
1524
- createVNode("span", { class: "font-medium tabular-nums text-orange-600 dark:text-orange-400" }, toDisplayString(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(__props.testRun.p90TestDuration)), 1)
1578
+ createVNode("span", { class: "text-zinc-500 hidden sm:inline" }, "P90"),
1579
+ createVNode(_component_DurationValue, {
1580
+ ms: __props.testRun.p90TestDuration,
1581
+ class: "font-medium text-orange-600 dark:text-orange-400",
1582
+ "unit-class": "opacity-60"
1583
+ }, null, 8, ["ms"])
1525
1584
  ])) : createCommentVNode("", true),
1526
1585
  __props.totalWastedTime && __props.totalWastedTime > 0 ? (openBlock(), createBlock("div", {
1527
1586
  key: 2,
@@ -1531,8 +1590,12 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1531
1590
  name: "i-lucide-clock",
1532
1591
  class: "size-3.5 text-amber-500"
1533
1592
  }),
1534
- createVNode("span", { class: "text-gray-500 hidden sm:inline" }, "Wasted"),
1535
- createVNode("span", { class: "font-medium tabular-nums text-amber-600 dark:text-amber-400" }, toDisplayString(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(__props.totalWastedTime)), 1)
1593
+ createVNode("span", { class: "text-zinc-500 hidden sm:inline" }, "Wasted"),
1594
+ createVNode(_component_DurationValue, {
1595
+ ms: __props.totalWastedTime,
1596
+ class: "font-medium text-amber-600 dark:text-amber-400",
1597
+ "unit-class": "opacity-60"
1598
+ }, null, 8, ["ms"])
1536
1599
  ])) : createCommentVNode("", true)
1537
1600
  ])
1538
1601
  ])) : createCommentVNode("", true)
@@ -1575,7 +1638,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1575
1638
  createVNode("div", { class: "flex-1 min-w-0" }, [
1576
1639
  createVNode("div", { class: "flex items-center justify-between mb-1" }, [
1577
1640
  createVNode("span", { class: "text-sm font-medium" }, "Finalizing test run"),
1578
- createVNode("span", { class: "text-xs text-gray-500" }, "Uploading reports & traces…")
1641
+ createVNode("span", { class: "text-xs text-zinc-500" }, "Uploading reports & traces…")
1579
1642
  ]),
1580
1643
  createVNode(_component_UProgress, {
1581
1644
  value: null,
@@ -1595,7 +1658,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1595
1658
  class: "flex items-center justify-between gap-2 min-w-0"
1596
1659
  }, [
1597
1660
  createVNode(_component_UButton, {
1598
- href: `/api/files/${("getFileApiPath" in _ctx ? _ctx.getFileApiPath : unref(getFileApiPath))(report.path)}`,
1661
+ href: ("fileApiUrl" in _ctx ? _ctx.fileApiUrl : unref(fileApiUrl))(report.path, null, unref(config).app?.baseURL),
1599
1662
  icon: ("reportIcon" in _ctx ? _ctx.reportIcon : unref(reportIcon))(report.type),
1600
1663
  target: "_blank",
1601
1664
  size: "xs",
@@ -1608,7 +1671,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1608
1671
  ]),
1609
1672
  _: 2
1610
1673
  }, 1032, ["href", "icon"]),
1611
- createVNode("span", { class: "text-xs tabular-nums text-gray-400 dark:text-gray-500 shrink-0" }, toDisplayString(("formatBytes" in _ctx ? _ctx.formatBytes : unref(formatBytes))(report.size)), 1)
1674
+ createVNode("span", { class: "text-xs tabular-nums text-zinc-400 dark:text-zinc-500 shrink-0" }, toDisplayString(("formatBytes" in _ctx ? _ctx.formatBytes : unref(formatBytes))(report.size)), 1)
1612
1675
  ]);
1613
1676
  }), 128)),
1614
1677
  unref(storageStats).testCaseFilesCount > 0 ? (openBlock(), createBlock("div", {
@@ -1616,7 +1679,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1616
1679
  class: "flex items-center justify-between gap-2 min-w-0"
1617
1680
  }, [
1618
1681
  createVNode("span", { class: "truncate" }, "Test files (" + toDisplayString(unref(storageStats).testCaseFilesCount) + ")", 1),
1619
- createVNode("span", { class: "text-xs tabular-nums text-gray-400 dark:text-gray-500 shrink-0" }, toDisplayString(("formatBytes" in _ctx ? _ctx.formatBytes : unref(formatBytes))(unref(storageStats).testCaseFilesSize)), 1)
1682
+ createVNode("span", { class: "text-xs tabular-nums text-zinc-400 dark:text-zinc-500 shrink-0" }, toDisplayString(("formatBytes" in _ctx ? _ctx.formatBytes : unref(formatBytes))(unref(storageStats).testCaseFilesSize)), 1)
1620
1683
  ])) : createCommentVNode("", true)
1621
1684
  ])) : createCommentVNode("", true)
1622
1685
  ]),
@@ -1654,7 +1717,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1654
1717
  }, [
1655
1718
  createVNode(_component_UIcon, {
1656
1719
  name: "i-lucide-link",
1657
- class: "w-3.5 h-3.5 text-gray-400 shrink-0"
1720
+ class: "w-3.5 h-3.5 text-zinc-400 shrink-0"
1658
1721
  }),
1659
1722
  createVNode("span", null, toDisplayString(__props.testRun.metadata.relatedIssue), 1)
1660
1723
  ])) : createCommentVNode("", true),
@@ -1678,7 +1741,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1678
1741
  _: 1
1679
1742
  }, 8, ["icon", "onClick"])) : createCommentVNode("", true),
1680
1743
  __props.showCustomData && __props.testRun.metadata.customData ? (openBlock(), createBlock("div", { key: 3 }, [
1681
- createVNode("div", { class: "bg-gray-50 dark:bg-gray-900 p-2.5 rounded text-xs font-mono overflow-x-auto max-h-48 overflow-y-auto" }, [
1744
+ createVNode("div", { class: "bg-zinc-50 dark:bg-zinc-900 p-2.5 rounded text-xs font-mono overflow-x-auto max-h-48 overflow-y-auto" }, [
1682
1745
  createVNode("pre", { class: "m-0" }, toDisplayString(JSON.stringify(__props.testRun.metadata.customData, null, 2)), 1)
1683
1746
  ])
1684
1747
  ])) : createCommentVNode("", true)
@@ -1695,36 +1758,27 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1695
1758
  };
1696
1759
  }
1697
1760
  });
1698
- const _sfc_setup$e = _sfc_main$e.setup;
1699
- _sfc_main$e.setup = (props, ctx) => {
1761
+ const _sfc_setup$f = _sfc_main$f.setup;
1762
+ _sfc_main$f.setup = (props, ctx) => {
1700
1763
  const ssrContext = useSSRContext();
1701
1764
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/run/RunSummary.vue");
1702
- return _sfc_setup$e ? _sfc_setup$e(props, ctx) : void 0;
1765
+ return _sfc_setup$f ? _sfc_setup$f(props, ctx) : void 0;
1703
1766
  };
1704
- const __nuxt_component_9$1 = Object.assign(_sfc_main$e, { __name: "RunSummary" });
1705
- const _sfc_main$d = /* @__PURE__ */ defineComponent({
1706
- __name: "TestCasesTree",
1767
+ const __nuxt_component_9$1 = Object.assign(_sfc_main$f, { __name: "RunSummary" });
1768
+ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1769
+ __name: "TestRowBadges",
1707
1770
  __ssrInlineRender: true,
1708
1771
  props: {
1709
- testCases: {},
1710
- suites: {},
1711
- hasFilter: { type: Boolean },
1712
- highlightedCaseId: {},
1713
- projectKey: {},
1714
- projectName: {}
1772
+ mode: { default: null },
1773
+ isNewRegression: { type: [Boolean, null], default: false },
1774
+ isNewFlaky: { type: [Boolean, null], default: false },
1775
+ annotations: { default: null },
1776
+ tags: { default: null },
1777
+ meta: { default: null },
1778
+ maxTags: { default: 0 }
1715
1779
  },
1716
1780
  setup(__props) {
1717
1781
  const props = __props;
1718
- const suiteLookup = computed(() => {
1719
- const map = /* @__PURE__ */ new Map();
1720
- for (const s of props.suites) {
1721
- map.set(`${s.filePath}${s.suitePath.join("")}`, s);
1722
- }
1723
- return map;
1724
- });
1725
- function normalizeStatus(s) {
1726
- return s === "timedOut" || s === "timedout" ? "failed" : s;
1727
- }
1728
1782
  function annotationColor(type) {
1729
1783
  if (type === "fixme" || type === "slow") return "warning";
1730
1784
  if (type === "fail") return "error";
@@ -1751,6 +1805,193 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1751
1805
  function annotationLabel(ann) {
1752
1806
  return ann.type === "tag" ? ann.description ?? ann.type : ann.type;
1753
1807
  }
1808
+ const marks = computed(() => (props.annotations ?? []).filter((ann) => !isPiwiAnnotation(ann.type)));
1809
+ const hasMeta = computed(
1810
+ () => Boolean(
1811
+ (props.tags?.length ?? 0) > 0 || props.meta?.owner || props.meta?.priority || props.meta?.feature || props.meta?.link
1812
+ )
1813
+ );
1814
+ const hasAnything = computed(
1815
+ () => props.mode === "parallel" || props.mode === "serial" || Boolean(props.isNewRegression) || Boolean(props.isNewFlaky) || marks.value.length > 0 || hasMeta.value
1816
+ );
1817
+ return (_ctx, _push, _parent, _attrs) => {
1818
+ const _component_UBadge = _sfc_main$7$1;
1819
+ const _component_UIcon = _sfc_main$p;
1820
+ const _component_TestMetaBadges = __nuxt_component_2$3;
1821
+ if (unref(hasAnything)) {
1822
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "inline-flex items-center gap-1 flex-wrap" }, _attrs))}>`);
1823
+ if (__props.mode === "parallel") {
1824
+ _push(ssrRenderComponent(_component_UBadge, {
1825
+ color: "success",
1826
+ variant: "soft",
1827
+ size: "xs",
1828
+ class: "shrink-0"
1829
+ }, {
1830
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
1831
+ if (_push2) {
1832
+ _push2(`parallel`);
1833
+ } else {
1834
+ return [
1835
+ createTextVNode("parallel")
1836
+ ];
1837
+ }
1838
+ }),
1839
+ _: 1
1840
+ }, _parent));
1841
+ } else {
1842
+ _push(`<!---->`);
1843
+ }
1844
+ if (__props.mode === "serial") {
1845
+ _push(ssrRenderComponent(_component_UBadge, {
1846
+ color: "warning",
1847
+ variant: "soft",
1848
+ size: "xs",
1849
+ class: "shrink-0"
1850
+ }, {
1851
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
1852
+ if (_push2) {
1853
+ _push2(`serial`);
1854
+ } else {
1855
+ return [
1856
+ createTextVNode("serial")
1857
+ ];
1858
+ }
1859
+ }),
1860
+ _: 1
1861
+ }, _parent));
1862
+ } else {
1863
+ _push(`<!---->`);
1864
+ }
1865
+ if (__props.isNewRegression) {
1866
+ _push(ssrRenderComponent(_component_UBadge, {
1867
+ color: "error",
1868
+ variant: "solid",
1869
+ size: "xs",
1870
+ class: "uppercase tracking-wider shrink-0",
1871
+ title: "First run in which this test failed"
1872
+ }, {
1873
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
1874
+ if (_push2) {
1875
+ _push2(` NEW `);
1876
+ } else {
1877
+ return [
1878
+ createTextVNode(" NEW ")
1879
+ ];
1880
+ }
1881
+ }),
1882
+ _: 1
1883
+ }, _parent));
1884
+ } else {
1885
+ _push(`<!---->`);
1886
+ }
1887
+ if (__props.isNewFlaky) {
1888
+ _push(ssrRenderComponent(_component_UBadge, {
1889
+ color: "info",
1890
+ variant: "solid",
1891
+ size: "xs",
1892
+ class: "uppercase tracking-wider shrink-0",
1893
+ title: "First run in which this test was flaky"
1894
+ }, {
1895
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
1896
+ if (_push2) {
1897
+ _push2(` FLAKY `);
1898
+ } else {
1899
+ return [
1900
+ createTextVNode(" FLAKY ")
1901
+ ];
1902
+ }
1903
+ }),
1904
+ _: 1
1905
+ }, _parent));
1906
+ } else {
1907
+ _push(`<!---->`);
1908
+ }
1909
+ _push(`<!--[-->`);
1910
+ ssrRenderList(unref(marks), (ann) => {
1911
+ _push(ssrRenderComponent(_component_UBadge, {
1912
+ key: `${ann.type}:${ann.description ?? ""}`,
1913
+ color: annotationColor(ann.type),
1914
+ variant: "soft",
1915
+ size: "xs",
1916
+ title: ann.type !== "tag" ? ann.description ?? void 0 : void 0,
1917
+ class: "shrink-0 gap-1"
1918
+ }, {
1919
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
1920
+ if (_push2) {
1921
+ if (annotationIcon(ann.type)) {
1922
+ _push2(ssrRenderComponent(_component_UIcon, {
1923
+ name: annotationIcon(ann.type),
1924
+ class: "size-2.5 shrink-0"
1925
+ }, null, _parent2, _scopeId));
1926
+ } else {
1927
+ _push2(`<!---->`);
1928
+ }
1929
+ _push2(` ${ssrInterpolate(annotationLabel(ann))}`);
1930
+ } else {
1931
+ return [
1932
+ annotationIcon(ann.type) ? (openBlock(), createBlock(_component_UIcon, {
1933
+ key: 0,
1934
+ name: annotationIcon(ann.type),
1935
+ class: "size-2.5 shrink-0"
1936
+ }, null, 8, ["name"])) : createCommentVNode("", true),
1937
+ createTextVNode(" " + toDisplayString(annotationLabel(ann)), 1)
1938
+ ];
1939
+ }
1940
+ }),
1941
+ _: 2
1942
+ }, _parent));
1943
+ });
1944
+ _push(`<!--]-->`);
1945
+ _push(ssrRenderComponent(_component_TestMetaBadges, {
1946
+ tags: __props.tags,
1947
+ meta: __props.meta,
1948
+ "max-tags": __props.maxTags
1949
+ }, null, _parent));
1950
+ _push(`</div>`);
1951
+ } else {
1952
+ _push(`<!---->`);
1953
+ }
1954
+ };
1955
+ }
1956
+ });
1957
+ const _sfc_setup$e = _sfc_main$e.setup;
1958
+ _sfc_main$e.setup = (props, ctx) => {
1959
+ const ssrContext = useSSRContext();
1960
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/shared/TestRowBadges.vue");
1961
+ return _sfc_setup$e ? _sfc_setup$e(props, ctx) : void 0;
1962
+ };
1963
+ const __nuxt_component_2$1 = Object.assign(_sfc_main$e, { __name: "TestRowBadges" });
1964
+ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1965
+ __name: "TestCasesTree",
1966
+ __ssrInlineRender: true,
1967
+ props: {
1968
+ testCases: {},
1969
+ suites: {},
1970
+ hasFilter: { type: Boolean },
1971
+ highlightedCaseId: {},
1972
+ projectKey: {},
1973
+ projectName: {}
1974
+ },
1975
+ setup(__props) {
1976
+ const props = __props;
1977
+ const suiteLookup = computed(() => {
1978
+ const map = /* @__PURE__ */ new Map();
1979
+ for (const s of props.suites) {
1980
+ map.set(`${s.filePath}${s.suitePath.join("")}`, s);
1981
+ }
1982
+ return map;
1983
+ });
1984
+ function normalizeStatus(s) {
1985
+ return s === "timedOut" || s === "timedout" ? "failed" : s;
1986
+ }
1987
+ const GROUP_STAT_KEYS = ["failed", "passed", "skipped", "didnotrun", "running"];
1988
+ function visibleStats(stats) {
1989
+ return GROUP_STAT_KEYS.filter((key) => stats[key] > 0).map((key) => ({
1990
+ key,
1991
+ count: stats[key],
1992
+ label: formatStatusLabel(key)
1993
+ }));
1994
+ }
1754
1995
  function computeStats(tests) {
1755
1996
  const stats = { passed: 0, failed: 0, skipped: 0, didnotrun: 0, running: 0, total: 0 };
1756
1997
  for (const t of tests) {
@@ -1816,9 +2057,11 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1816
2057
  return (_ctx, _push, _parent, _attrs) => {
1817
2058
  const _component_UIcon = _sfc_main$p;
1818
2059
  const _component_OpenInIdeLink = __nuxt_component_1$3;
2060
+ const _component_TestRowBadges = __nuxt_component_2$1;
2061
+ const _component_BrowserBadge = __nuxt_component_3$3;
2062
+ const _component_DurationValue = __nuxt_component_14$1;
1819
2063
  const _component_UBadge = _sfc_main$7$1;
1820
- const _component_UButton = _sfc_main$k;
1821
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "rounded-lg border border-default text-sm flex flex-col flex-1 min-h-0" }, _attrs))}><div class="flex items-center justify-end px-3 py-1.5 border-b border-default bg-elevated shrink-0"><button class="${ssrRenderClass([__props.hasFilter ? "text-muted cursor-not-allowed opacity-50" : "text-muted hover:text-default", "flex items-center gap-1 text-xs transition-colors"])}"${ssrIncludeBooleanAttr(__props.hasFilter) ? " disabled" : ""}${ssrRenderAttr("title", __props.hasFilter ? "Clear filters to collapse/expand" : isAllExpanded.value ? "Collapse all" : "Expand all")}>`);
2064
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "rounded-lg border border-default bg-default text-sm flex flex-col flex-1 min-h-0" }, _attrs))}><div class="flex items-center justify-end px-3 py-1.5 border-b border-default bg-elevated shrink-0"><button class="${ssrRenderClass([__props.hasFilter ? "text-muted cursor-not-allowed opacity-50" : "text-muted hover:text-default", "flex items-center gap-1 text-xs transition-colors"])}"${ssrIncludeBooleanAttr(__props.hasFilter) ? " disabled" : ""}${ssrRenderAttr("title", __props.hasFilter ? "Clear filters to collapse/expand" : isAllExpanded.value ? "Collapse all" : "Expand all")}>`);
1822
2065
  _push(ssrRenderComponent(_component_UIcon, {
1823
2066
  name: isAllExpanded.value ? "i-lucide-fold-vertical" : "i-lucide-unfold-vertical",
1824
2067
  class: "size-3.5"
@@ -1853,177 +2096,55 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1853
2096
  _push(`<span class="font-medium truncate min-w-0 text-muted">${ssrInterpolate(row.label)}</span>`);
1854
2097
  }
1855
2098
  if (row.depth > 0) {
1856
- _push(`<div class="flex items-center gap-1 shrink-0">`);
1857
- if (row.mode === "parallel") {
1858
- _push(ssrRenderComponent(_component_UBadge, {
1859
- color: "success",
1860
- variant: "soft",
1861
- size: "xs"
1862
- }, {
1863
- default: withCtx((_, _push2, _parent2, _scopeId) => {
1864
- if (_push2) {
1865
- _push2(`parallel`);
1866
- } else {
1867
- return [
1868
- createTextVNode("parallel")
1869
- ];
1870
- }
1871
- }),
1872
- _: 2
1873
- }, _parent));
1874
- } else {
1875
- _push(`<!---->`);
1876
- }
1877
- if (row.mode === "serial") {
1878
- _push(ssrRenderComponent(_component_UBadge, {
1879
- color: "warning",
1880
- variant: "soft",
1881
- size: "xs"
1882
- }, {
1883
- default: withCtx((_, _push2, _parent2, _scopeId) => {
1884
- if (_push2) {
1885
- _push2(`serial`);
1886
- } else {
1887
- return [
1888
- createTextVNode("serial")
1889
- ];
1890
- }
1891
- }),
1892
- _: 2
1893
- }, _parent));
1894
- } else {
1895
- _push(`<!---->`);
1896
- }
1897
- _push(`<!--[-->`);
1898
- ssrRenderList(row.annotations, (ann) => {
1899
- _push(ssrRenderComponent(_component_UBadge, {
1900
- key: `${ann.type}:${ann.description ?? ""}`,
1901
- color: annotationColor(ann.type),
1902
- variant: "soft",
1903
- size: "xs",
1904
- title: ann.type !== "tag" ? ann.description ?? void 0 : void 0,
1905
- class: "gap-1"
1906
- }, {
1907
- default: withCtx((_, _push2, _parent2, _scopeId) => {
1908
- if (_push2) {
1909
- if (annotationIcon(ann.type)) {
1910
- _push2(ssrRenderComponent(_component_UIcon, {
1911
- name: annotationIcon(ann.type),
1912
- class: "size-2.5 shrink-0"
1913
- }, null, _parent2, _scopeId));
1914
- } else {
1915
- _push2(`<!---->`);
1916
- }
1917
- _push2(` ${ssrInterpolate(annotationLabel(ann))}`);
1918
- } else {
1919
- return [
1920
- annotationIcon(ann.type) ? (openBlock(), createBlock(_component_UIcon, {
1921
- key: 0,
1922
- name: annotationIcon(ann.type),
1923
- class: "size-2.5 shrink-0"
1924
- }, null, 8, ["name"])) : createCommentVNode("", true),
1925
- createTextVNode(" " + toDisplayString(annotationLabel(ann)), 1)
1926
- ];
1927
- }
1928
- }),
1929
- _: 2
1930
- }, _parent));
1931
- });
1932
- _push(`<!--]--></div>`);
1933
- } else {
1934
- _push(`<!---->`);
1935
- }
1936
- _push(`<div class="flex-1"></div><div class="flex items-center gap-2 shrink-0 tabular-nums">`);
1937
- if (row.stats.failed > 0) {
1938
- _push(`<span class="text-xs text-red-600 dark:text-red-400 font-medium">${ssrInterpolate(row.stats.failed)} failed </span>`);
1939
- } else {
1940
- _push(`<!---->`);
1941
- }
1942
- if (row.stats.passed > 0) {
1943
- _push(`<span class="text-xs text-green-600 dark:text-green-400">${ssrInterpolate(row.stats.passed)} passed </span>`);
1944
- } else {
1945
- _push(`<!---->`);
1946
- }
1947
- if (row.stats.skipped > 0) {
1948
- _push(`<span class="text-xs text-muted">${ssrInterpolate(row.stats.skipped)} skipped</span>`);
1949
- } else {
1950
- _push(`<!---->`);
1951
- }
1952
- if (row.stats.didnotrun > 0) {
1953
- _push(`<span class="text-xs text-amber-600 dark:text-amber-400">${ssrInterpolate(row.stats.didnotrun)} didn&#39;t run </span>`);
1954
- } else {
1955
- _push(`<!---->`);
1956
- }
1957
- if (row.stats.running > 0) {
1958
- _push(`<span class="text-xs text-info">${ssrInterpolate(row.stats.running)} running</span>`);
2099
+ _push(ssrRenderComponent(_component_TestRowBadges, {
2100
+ mode: row.mode,
2101
+ annotations: row.annotations,
2102
+ class: "shrink-0"
2103
+ }, null, _parent));
1959
2104
  } else {
1960
2105
  _push(`<!---->`);
1961
2106
  }
1962
- _push(`</div></div>`);
2107
+ _push(`<div class="flex-1"></div><div class="flex items-center gap-1.5 sm:gap-2 shrink-0 tabular-nums"><!--[-->`);
2108
+ ssrRenderList(visibleStats(row.stats), (stat) => {
2109
+ _push(`<span class="${ssrRenderClass([[("getStatusTextClass" in _ctx ? _ctx.getStatusTextClass : unref(getStatusTextClass))(stat.key), stat.key === "failed" ? "font-medium" : ""], "text-xs inline-flex items-center gap-0.5"])}"${ssrRenderAttr("title", `${stat.count} ${stat.label}`)}>`);
2110
+ _push(ssrRenderComponent(_component_UIcon, {
2111
+ name: ("getStatusIcon" in _ctx ? _ctx.getStatusIcon : unref(getStatusIcon))(stat.key),
2112
+ class: "size-3 shrink-0 sm:hidden"
2113
+ }, null, _parent));
2114
+ _push(` ${ssrInterpolate(stat.count)}<span class="max-sm:sr-only">${ssrInterpolate(stat.label)}</span></span>`);
2115
+ });
2116
+ _push(`<!--]--></div></div>`);
1963
2117
  } else {
1964
- _push(`<div class="${ssrRenderClass([__props.highlightedCaseId === row.test.id ? "animate-pulse bg-yellow-100 dark:bg-yellow-900/30" : "", "flex items-center gap-2 pr-3 py-1.5 border-b border-default last:border-b-0 hover:bg-gray-50 dark:hover:bg-gray-900/40 transition-colors"])}" style="${ssrRenderStyle({ paddingLeft: `${row.depth * 20 + 12}px` })}">`);
2118
+ _push(`<div class="${ssrRenderClass([__props.highlightedCaseId === row.test.id ? "animate-pulse bg-yellow-100 dark:bg-yellow-900/30" : "", "flex flex-wrap items-center gap-x-2 gap-y-1 pr-3 py-2 sm:py-1.5 border-b border-default last:border-b-0 hover:bg-zinc-50 dark:hover:bg-zinc-900/40 transition-colors"])}" style="${ssrRenderStyle({ paddingLeft: `${row.depth * 20 + 12}px` })}">`);
2119
+ _push(ssrRenderComponent(_component_BrowserBadge, {
2120
+ browser: row.test.browser,
2121
+ size: "sm"
2122
+ }, null, _parent));
1965
2123
  _push(ssrRenderComponent(_component_UIcon, {
1966
- name: "i-lucide-flask-conical",
1967
- class: "size-3.5 text-muted shrink-0"
2124
+ name: ("getStatusIcon" in _ctx ? _ctx.getStatusIcon : unref(getStatusIcon))(row.test.status),
2125
+ class: ["size-4 shrink-0", [("getStatusTextClass" in _ctx ? _ctx.getStatusTextClass : unref(getStatusTextClass))(row.test.status), ("isStatusInFlight" in _ctx ? _ctx.isStatusInFlight : unref(isStatusInFlight))(row.test.status) ? "animate-spin" : ""]],
2126
+ role: "img",
2127
+ "aria-label": `Status: ${("formatStatusLabel" in _ctx ? _ctx.formatStatusLabel : unref(formatStatusLabel))(row.test.status)}`,
2128
+ title: ("formatStatusLabel" in _ctx ? _ctx.formatStatusLabel : unref(formatStatusLabel))(row.test.status)
1968
2129
  }, null, _parent));
1969
- _push(ssrRenderComponent(_component_UBadge, {
1970
- color: ("getStatusColor" in _ctx ? _ctx.getStatusColor : unref(getStatusColor))(
1971
- row.test.status === "timedOut" || row.test.status === "timedout" ? "failed" : row.test.status
1972
- ),
1973
- size: "xs",
1974
- class: "capitalize shrink-0"
1975
- }, {
1976
- default: withCtx((_, _push2, _parent2, _scopeId) => {
1977
- if (_push2) {
1978
- _push2(`${ssrInterpolate(("formatStatusLabel" in _ctx ? _ctx.formatStatusLabel : unref(formatStatusLabel))(row.test.status))}`);
1979
- } else {
1980
- return [
1981
- createTextVNode(toDisplayString(("formatStatusLabel" in _ctx ? _ctx.formatStatusLabel : unref(formatStatusLabel))(row.test.status)), 1)
1982
- ];
1983
- }
1984
- }),
1985
- _: 2
1986
- }, _parent));
1987
- _push(`<!--[-->`);
1988
- ssrRenderList(row.test.testAnnotations ?? [], (ann) => {
1989
- _push(ssrRenderComponent(_component_UBadge, {
1990
- key: `${ann.type}:${ann.description ?? ""}`,
1991
- color: annotationColor(ann.type),
1992
- variant: "soft",
1993
- size: "xs",
1994
- title: ann.type !== "tag" ? ann.description ?? void 0 : void 0,
1995
- class: "shrink-0 gap-1"
1996
- }, {
1997
- default: withCtx((_, _push2, _parent2, _scopeId) => {
1998
- if (_push2) {
1999
- if (annotationIcon(ann.type)) {
2000
- _push2(ssrRenderComponent(_component_UIcon, {
2001
- name: annotationIcon(ann.type),
2002
- class: "size-2.5 shrink-0"
2003
- }, null, _parent2, _scopeId));
2004
- } else {
2005
- _push2(`<!---->`);
2006
- }
2007
- _push2(` ${ssrInterpolate(annotationLabel(ann))}`);
2008
- } else {
2009
- return [
2010
- annotationIcon(ann.type) ? (openBlock(), createBlock(_component_UIcon, {
2011
- key: 0,
2012
- name: annotationIcon(ann.type),
2013
- class: "size-2.5 shrink-0"
2014
- }, null, 8, ["name"])) : createCommentVNode("", true),
2015
- createTextVNode(" " + toDisplayString(annotationLabel(ann)), 1)
2016
- ];
2017
- }
2018
- }),
2019
- _: 2
2020
- }, _parent));
2021
- });
2022
- _push(`<!--]--><a${ssrRenderAttr("href", `/test-run-cases/${row.test.id}`)} class="text-primary hover:underline truncate flex-1 min-w-0">${ssrInterpolate(row.test.title)}</a><div class="flex items-center gap-2 shrink-0">`);
2130
+ _push(`<a${ssrRenderAttr("href", `/test-run-cases/${row.test.id}`)} class="text-highlighted hover:text-primary hover:underline min-w-32 self-stretch flex items-center"${ssrRenderAttr("title", row.test.title)}><span class="truncate">${ssrInterpolate(row.test.title)}</span></a>`);
2131
+ _push(ssrRenderComponent(_component_TestRowBadges, {
2132
+ "is-new-regression": Boolean(row.test.isNewRegression),
2133
+ "is-new-flaky": Boolean(row.test.isNewFlaky),
2134
+ annotations: row.test.testAnnotations,
2135
+ tags: row.test.tags,
2136
+ meta: row.test.testMeta,
2137
+ "max-tags": 3,
2138
+ class: "shrink-0"
2139
+ }, null, _parent));
2140
+ _push(`<div class="flex items-center gap-1.5 sm:gap-2 shrink-0 ml-auto">`);
2023
2141
  if (row.test.status === "running") {
2024
2142
  _push(`<span class="text-xs text-info">In progress...</span>`);
2025
2143
  } else if (row.test.duration) {
2026
- _push(`<span class="text-xs text-muted tabular-nums">${ssrInterpolate(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(row.test.duration))}</span>`);
2144
+ _push(ssrRenderComponent(_component_DurationValue, {
2145
+ ms: row.test.duration,
2146
+ class: "text-xs text-muted"
2147
+ }, null, _parent));
2027
2148
  } else {
2028
2149
  _push(`<!---->`);
2029
2150
  }
@@ -2069,22 +2190,21 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
2069
2190
  } else {
2070
2191
  _push(`<!---->`);
2071
2192
  }
2072
- _push(ssrRenderComponent(_component_UButton, {
2073
- to: `/test-run-cases/${row.test.id}`,
2074
- size: "xs",
2075
- variant: "outline"
2076
- }, {
2077
- default: withCtx((_, _push2, _parent2, _scopeId) => {
2078
- if (_push2) {
2079
- _push2(` View `);
2080
- } else {
2081
- return [
2082
- createTextVNode(" View ")
2083
- ];
2084
- }
2085
- }),
2086
- _: 2
2087
- }, _parent));
2193
+ if (row.test.wastedTimeMs) {
2194
+ _push(`<span class="inline-flex items-center gap-0.5 text-xs text-amber-600 dark:text-amber-400" title="Wasted in fixed waits">`);
2195
+ _push(ssrRenderComponent(_component_UIcon, {
2196
+ name: "i-lucide-hourglass",
2197
+ class: "size-3 shrink-0"
2198
+ }, null, _parent));
2199
+ _push(ssrRenderComponent(_component_DurationValue, {
2200
+ ms: row.test.wastedTimeMs,
2201
+ "unit-class": "opacity-60",
2202
+ "no-title": ""
2203
+ }, null, _parent));
2204
+ _push(`</span>`);
2205
+ } else {
2206
+ _push(`<!---->`);
2207
+ }
2088
2208
  _push(`</div></div>`);
2089
2209
  }
2090
2210
  _push(`<!--]-->`);
@@ -2094,7 +2214,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
2094
2214
  _push(`<div class="text-center py-8 text-muted">`);
2095
2215
  _push(ssrRenderComponent(_component_UIcon, {
2096
2216
  name: "i-lucide-search-x",
2097
- class: "size-6 mx-auto mb-2 text-gray-300 dark:text-gray-600"
2217
+ class: "size-6 mx-auto mb-2 text-zinc-300 dark:text-zinc-600"
2098
2218
  }, null, _parent));
2099
2219
  _push(`<p class="text-sm">No test cases match your filters.</p></div>`);
2100
2220
  } else {
@@ -2110,7 +2230,8 @@ _sfc_main$d.setup = (props, ctx) => {
2110
2230
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/run/TestCasesTree.vue");
2111
2231
  return _sfc_setup$d ? _sfc_setup$d(props, ctx) : void 0;
2112
2232
  };
2113
- const __nuxt_component_6 = Object.assign(_sfc_main$d, { __name: "TestCasesTree" });
2233
+ const __nuxt_component_7 = Object.assign(_sfc_main$d, { __name: "TestCasesTree" });
2234
+ const NATURAL_ORDER = "natural";
2114
2235
  const _sfc_main$c = /* @__PURE__ */ defineComponent({
2115
2236
  __name: "TestCasesList",
2116
2237
  __ssrInlineRender: true,
@@ -2246,11 +2367,21 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
2246
2367
  if (hasWastedTime.value) {
2247
2368
  cols.push({ key: "wastedTimeMs", label: "Wasted", sortable: true, width: "6rem", align: "left" });
2248
2369
  }
2249
- cols.push({ key: "actions", label: "Actions", sortable: false, width: "7.5rem", align: "right" });
2250
2370
  return cols;
2251
2371
  });
2372
+ const sortOptions = computed(() => [
2373
+ { label: "Run order", value: NATURAL_ORDER },
2374
+ ...columns.value.map((c) => ({ label: c.label, value: c.key }))
2375
+ ]);
2376
+ const mobileSortKey = computed({
2377
+ get: () => sortKey.value ?? NATURAL_ORDER,
2378
+ set: (value) => {
2379
+ sortKey.value = value === NATURAL_ORDER ? null : value;
2380
+ if (value !== NATURAL_ORDER) sortDir.value = "asc";
2381
+ }
2382
+ });
2252
2383
  const gridTemplate = computed(() => columns.value.map((c) => c.width).join(" "));
2253
- const gridMinWidth = computed(() => hasWastedTime.value ? "55rem" : "49rem");
2384
+ const gridMinWidth = computed(() => hasWastedTime.value ? "47.5rem" : "41.5rem");
2254
2385
  const hasFilter = computed(
2255
2386
  () => testCaseSearch.value !== "" || activeStatuses.value.length > 0 || testCaseBrowserFilter.value !== "all" || props.failureClusterFilter != null
2256
2387
  );
@@ -2289,12 +2420,13 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
2289
2420
  return (_ctx, _push, _parent, _attrs) => {
2290
2421
  const _component_FilterToolbar = __nuxt_component_4$1;
2291
2422
  const _component_UIcon = _sfc_main$p;
2292
- const _component_HelpHint = __nuxt_component_2$1;
2423
+ const _component_HelpHint = __nuxt_component_2$2;
2293
2424
  const _component_UInput = _sfc_main$d$1;
2294
- const _component_USelect = _sfc_main$n;
2295
- const _component_UCheckbox = _sfc_main$o;
2296
- const _component_TestCasesTree = __nuxt_component_6;
2297
- const _component_ClientOnly = __nuxt_component_7;
2425
+ const _component_USelect = _sfc_main$o;
2426
+ const _component_UCheckbox = _sfc_main$q;
2427
+ const _component_UButton = _sfc_main$k;
2428
+ const _component_TestCasesTree = __nuxt_component_7;
2429
+ const _component_ClientOnly = __nuxt_component_7$1;
2298
2430
  _push(`<div${ssrRenderAttrs(mergeProps({ class: "flex flex-col min-h-0" }, _attrs))}>`);
2299
2431
  _push(ssrRenderComponent(_component_FilterToolbar, { class: "mb-4 shrink-0" }, {
2300
2432
  start: withCtx((_, _push2, _parent2, _scopeId) => {
@@ -2311,11 +2443,11 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
2311
2443
  }, null, _parent2, _scopeId));
2312
2444
  _push2(`</button></div>`);
2313
2445
  if (__props.isLive) {
2314
- _push2(`<span class="text-sm text-gray-500 tabular-nums inline-flex items-center gap-1"${_scopeId}>${ssrInterpolate(__props.testCases.length)} completed `);
2446
+ _push2(`<span class="text-sm text-zinc-500 tabular-nums inline-flex items-center gap-1"${_scopeId}>${ssrInterpolate(__props.testCases.length)} completed `);
2315
2447
  _push2(ssrRenderComponent(_component_HelpHint, { topic: "run.live" }, null, _parent2, _scopeId));
2316
2448
  _push2(`</span>`);
2317
2449
  } else {
2318
- _push2(`<span class="text-sm text-gray-500 tabular-nums inline-flex items-center gap-1"${_scopeId}>${ssrInterpolate(sortedTestCases.value.length)}${ssrInterpolate(sortedTestCases.value.length !== __props.testCases.length ? ` / ${__props.testCases.length}` : "")} cases `);
2450
+ _push2(`<span class="text-sm text-zinc-500 tabular-nums inline-flex items-center gap-1"${_scopeId}>${ssrInterpolate(sortedTestCases.value.length)}${ssrInterpolate(sortedTestCases.value.length !== __props.testCases.length ? ` / ${__props.testCases.length}` : "")} cases `);
2319
2451
  _push2(ssrRenderComponent(_component_HelpHint, { topic: "run.test-cases" }, null, _parent2, _scopeId));
2320
2452
  _push2(`</span>`);
2321
2453
  }
@@ -2345,13 +2477,13 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
2345
2477
  ]),
2346
2478
  __props.isLive ? (openBlock(), createBlock("span", {
2347
2479
  key: 0,
2348
- class: "text-sm text-gray-500 tabular-nums inline-flex items-center gap-1"
2480
+ class: "text-sm text-zinc-500 tabular-nums inline-flex items-center gap-1"
2349
2481
  }, [
2350
2482
  createTextVNode(toDisplayString(__props.testCases.length) + " completed ", 1),
2351
2483
  createVNode(_component_HelpHint, { topic: "run.live" })
2352
2484
  ])) : (openBlock(), createBlock("span", {
2353
2485
  key: 1,
2354
- class: "text-sm text-gray-500 tabular-nums inline-flex items-center gap-1"
2486
+ class: "text-sm text-zinc-500 tabular-nums inline-flex items-center gap-1"
2355
2487
  }, [
2356
2488
  createTextVNode(toDisplayString(sortedTestCases.value.length) + toDisplayString(sortedTestCases.value.length !== __props.testCases.length ? ` / ${__props.testCases.length}` : "") + " cases ", 1),
2357
2489
  createVNode(_component_HelpHint, { topic: "run.test-cases" })
@@ -2372,10 +2504,10 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
2372
2504
  _push2(`<div class="flex flex-wrap items-center gap-1"${_scopeId}><!--[-->`);
2373
2505
  ssrRenderList(STATUS_OPTIONS, (opt) => {
2374
2506
  _push2(`<button class="${ssrRenderClass([
2375
- activeStatuses.value.includes(opt.value) ? opt.color === "green" ? "bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400" : opt.color === "red" ? "bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400" : opt.color === "orange" ? "bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400" : "bg-gray-200 text-gray-700 dark:bg-gray-700 dark:text-gray-300" : "bg-gray-100 text-gray-500 dark:bg-gray-800 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-700",
2507
+ activeStatuses.value.includes(opt.value) ? opt.color === "green" ? "bg-emerald-100 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-400" : opt.color === "red" ? "bg-rose-100 text-rose-700 dark:bg-rose-900/30 dark:text-rose-400" : opt.color === "orange" ? "bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400" : "bg-zinc-200 text-zinc-700 dark:bg-zinc-700 dark:text-zinc-300" : "bg-zinc-100 text-zinc-500 dark:bg-zinc-800 dark:text-zinc-400 hover:bg-zinc-200 dark:hover:bg-zinc-700",
2376
2508
  "inline-flex items-center gap-1.5 px-2 py-1 rounded-md text-xs font-medium transition-colors whitespace-nowrap"
2377
2509
  ])}"${_scopeId}><span class="${ssrRenderClass([
2378
- opt.color === "green" ? "bg-green-500" : opt.color === "red" ? "bg-red-500" : opt.color === "orange" ? "bg-orange-500" : "bg-gray-400",
2510
+ opt.color === "green" ? "bg-emerald-500" : opt.color === "red" ? "bg-rose-500" : opt.color === "orange" ? "bg-orange-500" : "bg-zinc-400",
2379
2511
  "size-2 rounded-full shrink-0"
2380
2512
  ])}"${_scopeId}></span> ${ssrInterpolate(opt.label)}</button>`);
2381
2513
  });
@@ -2407,6 +2539,30 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
2407
2539
  } else {
2408
2540
  _push2(`<!---->`);
2409
2541
  }
2542
+ if (!unref(treeView)) {
2543
+ _push2(`<div class="flex items-center gap-1 md:hidden"${_scopeId}>`);
2544
+ _push2(ssrRenderComponent(_component_USelect, {
2545
+ modelValue: mobileSortKey.value,
2546
+ "onUpdate:modelValue": ($event) => mobileSortKey.value = $event,
2547
+ items: sortOptions.value,
2548
+ size: "sm",
2549
+ class: "w-32",
2550
+ "aria-label": "Sort cases by"
2551
+ }, null, _parent2, _scopeId));
2552
+ _push2(ssrRenderComponent(_component_UButton, {
2553
+ size: "sm",
2554
+ variant: "outline",
2555
+ color: "neutral",
2556
+ disabled: sortKey.value === null,
2557
+ icon: sortDir.value === "asc" ? "i-lucide-arrow-up-narrow-wide" : "i-lucide-arrow-down-wide-narrow",
2558
+ title: sortDir.value === "asc" ? "Sorted ascending" : "Sorted descending",
2559
+ "aria-label": sortDir.value === "asc" ? "Sorted ascending" : "Sorted descending",
2560
+ onClick: ($event) => sortDir.value = sortDir.value === "asc" ? "desc" : "asc"
2561
+ }, null, _parent2, _scopeId));
2562
+ _push2(`</div>`);
2563
+ } else {
2564
+ _push2(`<!---->`);
2565
+ }
2410
2566
  } else {
2411
2567
  return [
2412
2568
  createVNode(_component_UInput, {
@@ -2423,14 +2579,14 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
2423
2579
  key: opt.value,
2424
2580
  class: [
2425
2581
  "inline-flex items-center gap-1.5 px-2 py-1 rounded-md text-xs font-medium transition-colors whitespace-nowrap",
2426
- activeStatuses.value.includes(opt.value) ? opt.color === "green" ? "bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400" : opt.color === "red" ? "bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400" : opt.color === "orange" ? "bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400" : "bg-gray-200 text-gray-700 dark:bg-gray-700 dark:text-gray-300" : "bg-gray-100 text-gray-500 dark:bg-gray-800 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-700"
2582
+ activeStatuses.value.includes(opt.value) ? opt.color === "green" ? "bg-emerald-100 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-400" : opt.color === "red" ? "bg-rose-100 text-rose-700 dark:bg-rose-900/30 dark:text-rose-400" : opt.color === "orange" ? "bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400" : "bg-zinc-200 text-zinc-700 dark:bg-zinc-700 dark:text-zinc-300" : "bg-zinc-100 text-zinc-500 dark:bg-zinc-800 dark:text-zinc-400 hover:bg-zinc-200 dark:hover:bg-zinc-700"
2427
2583
  ],
2428
2584
  onClick: ($event) => toggleStatus(opt.value)
2429
2585
  }, [
2430
2586
  createVNode("span", {
2431
2587
  class: [
2432
2588
  "size-2 rounded-full shrink-0",
2433
- opt.color === "green" ? "bg-green-500" : opt.color === "red" ? "bg-red-500" : opt.color === "orange" ? "bg-orange-500" : "bg-gray-400"
2589
+ opt.color === "green" ? "bg-emerald-500" : opt.color === "red" ? "bg-rose-500" : opt.color === "orange" ? "bg-orange-500" : "bg-zinc-400"
2434
2590
  ]
2435
2591
  }, null, 2),
2436
2592
  createTextVNode(" " + toDisplayString(opt.label), 1)
@@ -2457,7 +2613,30 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
2457
2613
  "onUpdate:modelValue": ($event) => showNewFlakyOnly.value = $event,
2458
2614
  label: "New flaky",
2459
2615
  size: "sm"
2460
- }, null, 8, ["modelValue", "onUpdate:modelValue"])) : createCommentVNode("", true)
2616
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])) : createCommentVNode("", true),
2617
+ !unref(treeView) ? (openBlock(), createBlock("div", {
2618
+ key: 2,
2619
+ class: "flex items-center gap-1 md:hidden"
2620
+ }, [
2621
+ createVNode(_component_USelect, {
2622
+ modelValue: mobileSortKey.value,
2623
+ "onUpdate:modelValue": ($event) => mobileSortKey.value = $event,
2624
+ items: sortOptions.value,
2625
+ size: "sm",
2626
+ class: "w-32",
2627
+ "aria-label": "Sort cases by"
2628
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "items"]),
2629
+ createVNode(_component_UButton, {
2630
+ size: "sm",
2631
+ variant: "outline",
2632
+ color: "neutral",
2633
+ disabled: sortKey.value === null,
2634
+ icon: sortDir.value === "asc" ? "i-lucide-arrow-up-narrow-wide" : "i-lucide-arrow-down-wide-narrow",
2635
+ title: sortDir.value === "asc" ? "Sorted ascending" : "Sorted descending",
2636
+ "aria-label": sortDir.value === "asc" ? "Sorted ascending" : "Sorted descending",
2637
+ onClick: ($event) => sortDir.value = sortDir.value === "asc" ? "desc" : "asc"
2638
+ }, null, 8, ["disabled", "icon", "title", "aria-label", "onClick"])
2639
+ ])) : createCommentVNode("", true)
2461
2640
  ];
2462
2641
  }
2463
2642
  }),
@@ -2476,7 +2655,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
2476
2655
  } else if (!unref(treeView)) {
2477
2656
  _push(`<!--[-->`);
2478
2657
  if (sortedTestCases.value.length > 0) {
2479
- _push(`<div class="flex-1 min-h-0 max-lg:h-[70dvh] overflow-x-auto overflow-y-hidden rounded-lg border border-default"><div class="flex flex-col h-full" role="table" aria-label="Test cases"${ssrRenderAttr("aria-rowcount", sortedTestCases.value.length + 1)} style="${ssrRenderStyle({ minWidth: gridMinWidth.value })}"><div class="grid shrink-0 bg-elevated/50 border-b border-default" role="row" style="${ssrRenderStyle({ gridTemplateColumns: gridTemplate.value })}"><!--[-->`);
2658
+ _push(`<div class="flex-1 min-h-0 max-lg:h-[70dvh] md:overflow-x-auto overflow-y-hidden rounded-lg border border-default bg-default"><div class="flex flex-col h-full md:min-w-(--grid-min-width)" role="table" aria-label="Test cases"${ssrRenderAttr("aria-rowcount", sortedTestCases.value.length + 1)} style="${ssrRenderStyle({ "--grid-min-width": gridMinWidth.value })}"><div class="hidden md:grid shrink-0 bg-elevated/50 border-b border-default" role="row" style="${ssrRenderStyle({ gridTemplateColumns: gridTemplate.value })}"><!--[-->`);
2480
2659
  ssrRenderList(columns.value, (col) => {
2481
2660
  _push(`<!--[-->`);
2482
2661
  if (col.sortable) {
@@ -2503,7 +2682,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
2503
2682
  _push(ssrRenderComponent(_component_ClientOnly, null, {
2504
2683
  fallback: withCtx((_, _push2, _parent2, _scopeId) => {
2505
2684
  if (_push2) {
2506
- _push2(`<div class="flex-1 min-h-0 flex items-center justify-center py-10 text-sm text-gray-500"${_scopeId}>`);
2685
+ _push2(`<div class="flex-1 min-h-0 flex items-center justify-center py-10 text-sm text-zinc-500"${_scopeId}>`);
2507
2686
  _push2(ssrRenderComponent(_component_UIcon, {
2508
2687
  name: "i-lucide-loader-circle",
2509
2688
  class: "size-4 mr-2 animate-spin"
@@ -2511,7 +2690,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
2511
2690
  _push2(` Loading test cases… </div>`);
2512
2691
  } else {
2513
2692
  return [
2514
- createVNode("div", { class: "flex-1 min-h-0 flex items-center justify-center py-10 text-sm text-gray-500" }, [
2693
+ createVNode("div", { class: "flex-1 min-h-0 flex items-center justify-center py-10 text-sm text-zinc-500" }, [
2515
2694
  createVNode(_component_UIcon, {
2516
2695
  name: "i-lucide-loader-circle",
2517
2696
  class: "size-4 mr-2 animate-spin"
@@ -2524,17 +2703,17 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
2524
2703
  }, _parent));
2525
2704
  _push(`</div></div>`);
2526
2705
  } else if (__props.testCases.length === 0) {
2527
- _push(`<div class="text-center py-10 text-gray-500">`);
2706
+ _push(`<div class="text-center py-10 text-zinc-500">`);
2528
2707
  _push(ssrRenderComponent(_component_UIcon, {
2529
2708
  name: "i-lucide-beaker",
2530
- class: "size-8 mx-auto mb-2 text-gray-300 dark:text-gray-600"
2709
+ class: "size-8 mx-auto mb-2 text-zinc-300 dark:text-zinc-600"
2531
2710
  }, null, _parent));
2532
2711
  _push(`<p>No test cases recorded for this run.</p></div>`);
2533
2712
  } else {
2534
- _push(`<div class="text-center py-10 text-gray-500">`);
2713
+ _push(`<div class="text-center py-10 text-zinc-500">`);
2535
2714
  _push(ssrRenderComponent(_component_UIcon, {
2536
2715
  name: "i-lucide-search-x",
2537
- class: "size-8 mx-auto mb-2 text-gray-300 dark:text-gray-600"
2716
+ class: "size-8 mx-auto mb-2 text-zinc-300 dark:text-zinc-600"
2538
2717
  }, null, _parent));
2539
2718
  _push(`<p>No test cases match your filters.</p></div>`);
2540
2719
  }
@@ -2624,9 +2803,9 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
2624
2803
  const _component_ErrorState = __nuxt_component_5$1;
2625
2804
  const _component_UButton = _sfc_main$k;
2626
2805
  const _component_LoadingState = __nuxt_component_1$1;
2627
- const _component_EmptyState = __nuxt_component_8$1;
2806
+ const _component_EmptyState = __nuxt_component_9$2;
2628
2807
  const _component_UIcon = _sfc_main$p;
2629
- const _component_HelpHint = __nuxt_component_2$1;
2808
+ const _component_HelpHint = __nuxt_component_2$2;
2630
2809
  const _component_SectionCard = __nuxt_component_11;
2631
2810
  const _component_NuxtLink = __nuxt_component_12$1;
2632
2811
  const _component_UBadge = _sfc_main$7$1;
@@ -3649,14 +3828,14 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
3649
3828
  const totalCases = computed(() => groups.value?.reduce((sum, g) => sum + g.caseCount, 0) ?? 0);
3650
3829
  return (_ctx, _push, _parent, _attrs) => {
3651
3830
  const _component_UIcon = _sfc_main$p;
3652
- const _component_HelpHint = __nuxt_component_2$1;
3831
+ const _component_HelpHint = __nuxt_component_2$2;
3653
3832
  const _component_UButton = _sfc_main$k;
3654
- const _component_UCard = _sfc_main$l;
3833
+ const _component_UCard = _sfc_main$m;
3655
3834
  const _component_TableScroller = __nuxt_component_3$2;
3656
- const _component_UTable = _sfc_main$h;
3835
+ const _component_UTable = _sfc_main$i;
3657
3836
  const _component_UBadge = _sfc_main$7$1;
3658
3837
  const _component_NuxtLink = __nuxt_component_12$1;
3659
- const _component_UModal = _sfc_main$m;
3838
+ const _component_UModal = _sfc_main$n;
3660
3839
  const _component_ClusterDiagnosis = __nuxt_component_9;
3661
3840
  _push(`<!--[--><div class="pt-4 space-y-3">`);
3662
3841
  if (unref(loading)) {
@@ -4780,12 +4959,12 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
4780
4959
  }
4781
4960
  return (_ctx, _push, _parent, _attrs) => {
4782
4961
  const _component_LoadingState = __nuxt_component_1$1;
4783
- const _component_EmptyState = __nuxt_component_8$1;
4962
+ const _component_EmptyState = __nuxt_component_9$2;
4784
4963
  const _component_UIcon = _sfc_main$p;
4785
- const _component_HelpHint = __nuxt_component_2$1;
4964
+ const _component_HelpHint = __nuxt_component_2$2;
4786
4965
  const _component_NuxtLink = __nuxt_component_12$1;
4787
4966
  const _component_UBadge = _sfc_main$7$1;
4788
- const _component_UCard = _sfc_main$l;
4967
+ const _component_UCard = _sfc_main$m;
4789
4968
  const _component_UButton = _sfc_main$k;
4790
4969
  _push(`<div${ssrRenderAttrs(mergeProps({ class: "pt-4" }, _attrs))}>`);
4791
4970
  if (unref(loading)) {
@@ -5144,10 +5323,10 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
5144
5323
  emits: ["reset", "toggleSpan"],
5145
5324
  setup(__props) {
5146
5325
  return (_ctx, _push, _parent, _attrs) => {
5147
- const _component_HelpHint = __nuxt_component_2$1;
5326
+ const _component_HelpHint = __nuxt_component_2$2;
5148
5327
  const _component_UPopover = _sfc_main$8$1;
5149
5328
  const _component_UButton = _sfc_main$k;
5150
- const _component_UCheckbox = _sfc_main$o;
5329
+ const _component_UCheckbox = _sfc_main$q;
5151
5330
  _push(`<div${ssrRenderAttrs(mergeProps({ class: "flex items-center justify-between mb-2" }, _attrs))}><span class="text-xs text-gray-500 inline-flex items-center gap-1"><span>${ssrInterpolate(__props.workerCount)} worker${ssrInterpolate(__props.workerCount > 1 ? "s" : "")} `);
5152
5331
  if (__props.shardTotal && __props.shardTotal > 1) {
5153
5332
  _push(`<!--[--> · ${ssrInterpolate(__props.shardTotal)} shard${ssrInterpolate(__props.shardTotal > 1 ? "s" : "")}<!--]-->`);
@@ -6048,15 +6227,16 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
6048
6227
  }
6049
6228
  ];
6050
6229
  return (_ctx, _push, _parent, _attrs) => {
6051
- const _component_USelectMenu = _sfc_main$i;
6230
+ const _component_USelectMenu = _sfc_main$j;
6052
6231
  const _component_RunStatusBadge = __nuxt_component_13$1;
6053
6232
  const _component_UButton = _sfc_main$k;
6054
6233
  const _component_UIcon = _sfc_main$p;
6055
- const _component_UAlert = _sfc_main$j;
6234
+ const _component_UAlert = _sfc_main$l;
6056
6235
  const _component_MarkerBadge = __nuxt_component_5;
6057
6236
  const _component_UBadge = _sfc_main$7$1;
6058
6237
  const _component_TableScroller = __nuxt_component_3$2;
6059
- const _component_UTable = _sfc_main$h;
6238
+ const _component_UTable = _sfc_main$i;
6239
+ const _component_DurationValue = __nuxt_component_14$1;
6060
6240
  _push(`<div${ssrRenderAttrs(_attrs)}>`);
6061
6241
  if (__props.testRun && !isLive.value) {
6062
6242
  _push(`<div class="space-y-4"><div class="grid grid-cols-1 md:grid-cols-2 gap-4"><div><label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">Run A (baseline)</label>`);
@@ -6274,6 +6454,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
6274
6454
  } else {
6275
6455
  _push3(ssrRenderComponent(_component_UBadge, {
6276
6456
  color: ("getStatusColor" in _ctx ? _ctx.getStatusColor : unref(getStatusColor))(row.original.statusA),
6457
+ variant: "subtle",
6277
6458
  class: "capitalize"
6278
6459
  }, {
6279
6460
  default: withCtx((_2, _push4, _parent4, _scopeId3) => {
@@ -6296,6 +6477,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
6296
6477
  }, "—")) : (openBlock(), createBlock(_component_UBadge, {
6297
6478
  key: 1,
6298
6479
  color: ("getStatusColor" in _ctx ? _ctx.getStatusColor : unref(getStatusColor))(row.original.statusA),
6480
+ variant: "subtle",
6299
6481
  class: "capitalize"
6300
6482
  }, {
6301
6483
  default: withCtx(() => [
@@ -6313,6 +6495,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
6313
6495
  } else {
6314
6496
  _push3(ssrRenderComponent(_component_UBadge, {
6315
6497
  color: ("getStatusColor" in _ctx ? _ctx.getStatusColor : unref(getStatusColor))(row.original.statusB),
6498
+ variant: "subtle",
6316
6499
  class: "capitalize"
6317
6500
  }, {
6318
6501
  default: withCtx((_2, _push4, _parent4, _scopeId3) => {
@@ -6335,6 +6518,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
6335
6518
  }, "—")) : (openBlock(), createBlock(_component_UBadge, {
6336
6519
  key: 1,
6337
6520
  color: ("getStatusColor" in _ctx ? _ctx.getStatusColor : unref(getStatusColor))(row.original.statusB),
6521
+ variant: "subtle",
6338
6522
  class: "capitalize"
6339
6523
  }, {
6340
6524
  default: withCtx(() => [
@@ -6348,13 +6532,18 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
6348
6532
  "durationA-cell": withCtx(({ row }, _push3, _parent3, _scopeId2) => {
6349
6533
  if (_push3) {
6350
6534
  if (row.original.durationA !== null) {
6351
- _push3(`<span${_scopeId2}>${ssrInterpolate(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(row.original.durationA))}</span>`);
6535
+ _push3(ssrRenderComponent(_component_DurationValue, {
6536
+ ms: row.original.durationA
6537
+ }, null, _parent3, _scopeId2));
6352
6538
  } else {
6353
6539
  _push3(`<span class="text-gray-400"${_scopeId2}>—</span>`);
6354
6540
  }
6355
6541
  } else {
6356
6542
  return [
6357
- row.original.durationA !== null ? (openBlock(), createBlock("span", { key: 0 }, toDisplayString(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(row.original.durationA)), 1)) : (openBlock(), createBlock("span", {
6543
+ row.original.durationA !== null ? (openBlock(), createBlock(_component_DurationValue, {
6544
+ key: 0,
6545
+ ms: row.original.durationA
6546
+ }, null, 8, ["ms"])) : (openBlock(), createBlock("span", {
6358
6547
  key: 1,
6359
6548
  class: "text-gray-400"
6360
6549
  }, "—"))
@@ -6364,13 +6553,18 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
6364
6553
  "durationB-cell": withCtx(({ row }, _push3, _parent3, _scopeId2) => {
6365
6554
  if (_push3) {
6366
6555
  if (row.original.durationB !== null) {
6367
- _push3(`<span${_scopeId2}>${ssrInterpolate(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(row.original.durationB))}</span>`);
6556
+ _push3(ssrRenderComponent(_component_DurationValue, {
6557
+ ms: row.original.durationB
6558
+ }, null, _parent3, _scopeId2));
6368
6559
  } else {
6369
6560
  _push3(`<span class="text-gray-400"${_scopeId2}>—</span>`);
6370
6561
  }
6371
6562
  } else {
6372
6563
  return [
6373
- row.original.durationB !== null ? (openBlock(), createBlock("span", { key: 0 }, toDisplayString(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(row.original.durationB)), 1)) : (openBlock(), createBlock("span", {
6564
+ row.original.durationB !== null ? (openBlock(), createBlock(_component_DurationValue, {
6565
+ key: 0,
6566
+ ms: row.original.durationB
6567
+ }, null, 8, ["ms"])) : (openBlock(), createBlock("span", {
6374
6568
  key: 1,
6375
6569
  class: "text-gray-400"
6376
6570
  }, "—"))
@@ -6384,7 +6578,12 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
6384
6578
  } else {
6385
6579
  _push3(`<span class="${ssrRenderClass(
6386
6580
  row.original.delta > 0 ? "text-red-600" : row.original.delta < 0 ? "text-green-600" : "text-gray-500"
6387
- )}"${_scopeId2}>${ssrInterpolate(row.original.delta > 0 ? "+" : "")}${ssrInterpolate(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(row.original.delta))}</span>`);
6581
+ )}"${_scopeId2}>${ssrInterpolate(row.original.delta > 0 ? "+" : "")}`);
6582
+ _push3(ssrRenderComponent(_component_DurationValue, {
6583
+ ms: row.original.delta,
6584
+ "unit-class": "opacity-60"
6585
+ }, null, _parent3, _scopeId2));
6586
+ _push3(`</span>`);
6388
6587
  }
6389
6588
  } else {
6390
6589
  return [
@@ -6394,7 +6593,13 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
6394
6593
  }, "—")) : (openBlock(), createBlock("span", {
6395
6594
  key: 1,
6396
6595
  class: row.original.delta > 0 ? "text-red-600" : row.original.delta < 0 ? "text-green-600" : "text-gray-500"
6397
- }, toDisplayString(row.original.delta > 0 ? "+" : "") + toDisplayString(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(row.original.delta)), 3))
6596
+ }, [
6597
+ createTextVNode(toDisplayString(row.original.delta > 0 ? "+" : ""), 1),
6598
+ createVNode(_component_DurationValue, {
6599
+ ms: row.original.delta,
6600
+ "unit-class": "opacity-60"
6601
+ }, null, 8, ["ms"])
6602
+ ], 2))
6398
6603
  ];
6399
6604
  }
6400
6605
  }),
@@ -6441,6 +6646,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
6441
6646
  }, "—")) : (openBlock(), createBlock(_component_UBadge, {
6442
6647
  key: 1,
6443
6648
  color: ("getStatusColor" in _ctx ? _ctx.getStatusColor : unref(getStatusColor))(row.original.statusA),
6649
+ variant: "subtle",
6444
6650
  class: "capitalize"
6445
6651
  }, {
6446
6652
  default: withCtx(() => [
@@ -6456,6 +6662,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
6456
6662
  }, "—")) : (openBlock(), createBlock(_component_UBadge, {
6457
6663
  key: 1,
6458
6664
  color: ("getStatusColor" in _ctx ? _ctx.getStatusColor : unref(getStatusColor))(row.original.statusB),
6665
+ variant: "subtle",
6459
6666
  class: "capitalize"
6460
6667
  }, {
6461
6668
  default: withCtx(() => [
@@ -6465,13 +6672,19 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
6465
6672
  }, 1032, ["color"]))
6466
6673
  ]),
6467
6674
  "durationA-cell": withCtx(({ row }) => [
6468
- row.original.durationA !== null ? (openBlock(), createBlock("span", { key: 0 }, toDisplayString(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(row.original.durationA)), 1)) : (openBlock(), createBlock("span", {
6675
+ row.original.durationA !== null ? (openBlock(), createBlock(_component_DurationValue, {
6676
+ key: 0,
6677
+ ms: row.original.durationA
6678
+ }, null, 8, ["ms"])) : (openBlock(), createBlock("span", {
6469
6679
  key: 1,
6470
6680
  class: "text-gray-400"
6471
6681
  }, "—"))
6472
6682
  ]),
6473
6683
  "durationB-cell": withCtx(({ row }) => [
6474
- row.original.durationB !== null ? (openBlock(), createBlock("span", { key: 0 }, toDisplayString(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(row.original.durationB)), 1)) : (openBlock(), createBlock("span", {
6684
+ row.original.durationB !== null ? (openBlock(), createBlock(_component_DurationValue, {
6685
+ key: 0,
6686
+ ms: row.original.durationB
6687
+ }, null, 8, ["ms"])) : (openBlock(), createBlock("span", {
6475
6688
  key: 1,
6476
6689
  class: "text-gray-400"
6477
6690
  }, "—"))
@@ -6483,7 +6696,13 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
6483
6696
  }, "—")) : (openBlock(), createBlock("span", {
6484
6697
  key: 1,
6485
6698
  class: row.original.delta > 0 ? "text-red-600" : row.original.delta < 0 ? "text-green-600" : "text-gray-500"
6486
- }, toDisplayString(row.original.delta > 0 ? "+" : "") + toDisplayString(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(row.original.delta)), 3))
6699
+ }, [
6700
+ createTextVNode(toDisplayString(row.original.delta > 0 ? "+" : ""), 1),
6701
+ createVNode(_component_DurationValue, {
6702
+ ms: row.original.delta,
6703
+ "unit-class": "opacity-60"
6704
+ }, null, 8, ["ms"])
6705
+ ], 2))
6487
6706
  ]),
6488
6707
  "percentChange-cell": withCtx(({ row }) => [
6489
6708
  row.original.percentChange === null ? (openBlock(), createBlock("span", {
@@ -6603,8 +6822,9 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
6603
6822
  ];
6604
6823
  return (_ctx, _push, _parent, _attrs) => {
6605
6824
  const _component_UIcon = _sfc_main$p;
6606
- const _component_UTable = _sfc_main$h;
6825
+ const _component_UTable = _sfc_main$i;
6607
6826
  const _component_UBadge = _sfc_main$7$1;
6827
+ const _component_DurationValue = __nuxt_component_14$1;
6608
6828
  _push(`<div${ssrRenderAttrs(mergeProps({ class: "flex flex-col overflow-hidden" }, _attrs))}>`);
6609
6829
  if (unref(loading)) {
6610
6830
  _push(`<div class="flex-1 flex items-center justify-center text-gray-500 gap-2">`);
@@ -6673,12 +6893,22 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
6673
6893
  if (_push2) {
6674
6894
  _push2(`<span class="${ssrRenderClass(
6675
6895
  row.original.avgDuration > 1e3 ? "text-red-600 font-medium" : row.original.avgDuration > 500 ? "text-orange-500 font-medium" : ""
6676
- )}"${_scopeId}>${ssrInterpolate(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(row.original.avgDuration))}</span>`);
6896
+ )}"${_scopeId}>`);
6897
+ _push2(ssrRenderComponent(_component_DurationValue, {
6898
+ ms: row.original.avgDuration,
6899
+ "unit-class": "opacity-60"
6900
+ }, null, _parent2, _scopeId));
6901
+ _push2(`</span>`);
6677
6902
  } else {
6678
6903
  return [
6679
6904
  createVNode("span", {
6680
6905
  class: row.original.avgDuration > 1e3 ? "text-red-600 font-medium" : row.original.avgDuration > 500 ? "text-orange-500 font-medium" : ""
6681
- }, toDisplayString(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(row.original.avgDuration)), 3)
6906
+ }, [
6907
+ createVNode(_component_DurationValue, {
6908
+ ms: row.original.avgDuration,
6909
+ "unit-class": "opacity-60"
6910
+ }, null, 8, ["ms"])
6911
+ ], 2)
6682
6912
  ];
6683
6913
  }
6684
6914
  }),
@@ -6686,12 +6916,22 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
6686
6916
  if (_push2) {
6687
6917
  _push2(`<span class="${ssrRenderClass(
6688
6918
  row.original.p90Duration > 2e3 ? "text-red-600 font-medium" : row.original.p90Duration > 1e3 ? "text-orange-500" : ""
6689
- )}"${_scopeId}>${ssrInterpolate(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(row.original.p90Duration))}</span>`);
6919
+ )}"${_scopeId}>`);
6920
+ _push2(ssrRenderComponent(_component_DurationValue, {
6921
+ ms: row.original.p90Duration,
6922
+ "unit-class": "opacity-60"
6923
+ }, null, _parent2, _scopeId));
6924
+ _push2(`</span>`);
6690
6925
  } else {
6691
6926
  return [
6692
6927
  createVNode("span", {
6693
6928
  class: row.original.p90Duration > 2e3 ? "text-red-600 font-medium" : row.original.p90Duration > 1e3 ? "text-orange-500" : ""
6694
- }, toDisplayString(("formatDuration" in _ctx ? _ctx.formatDuration : unref(formatDuration))(row.original.p90Duration)), 3)
6929
+ }, [
6930
+ createVNode(_component_DurationValue, {
6931
+ ms: row.original.p90Duration,
6932
+ "unit-class": "opacity-60"
6933
+ }, null, 8, ["ms"])
6934
+ ], 2)
6695
6935
  ];
6696
6936
  }
6697
6937
  }),
@@ -6872,15 +7112,22 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6872
7112
  value: "insights",
6873
7113
  slot: "insights"
6874
7114
  },
6875
- ...hasFailures.value ? [
6876
- {
6877
- label: `Failure groups (${failureGroupCount.value})`,
6878
- icon: "i-lucide-layers",
6879
- value: "failure-groups",
6880
- slot: "failure-groups"
6881
- }
6882
- ] : [],
6883
- ...hasFailures.value ? [{ label: "Regression", icon: "i-lucide-git-pull-request-arrow", value: "regression", slot: "regression" }] : [],
7115
+ // Failure-only tabs stay visible but disabled on a green run: tabs that
7116
+ // appear and disappear shift every other tab's position between runs.
7117
+ {
7118
+ label: hasFailures.value ? `Failure groups (${failureGroupCount.value})` : "Failure groups",
7119
+ icon: "i-lucide-layers",
7120
+ value: "failure-groups",
7121
+ slot: "failure-groups",
7122
+ disabled: !hasFailures.value
7123
+ },
7124
+ {
7125
+ label: "Regression",
7126
+ icon: "i-lucide-git-pull-request-arrow",
7127
+ value: "regression",
7128
+ slot: "regression",
7129
+ disabled: !hasFailures.value
7130
+ },
6884
7131
  {
6885
7132
  label: `Timeline${uniqueWorkerCount.value > 0 ? ` (${uniqueWorkerCount.value})` : ""}`,
6886
7133
  icon: "i-lucide-timeline",
@@ -6899,7 +7146,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6899
7146
  "test-cases": "overflow-hidden flex flex-col",
6900
7147
  endpoints: "overflow-hidden flex flex-col"
6901
7148
  };
6902
- const runTabValues = computed(() => tabItems.value.map((t) => t.value));
7149
+ const runTabValues = computed(() => tabItems.value.filter((t) => !t.disabled).map((t) => t.value));
6903
7150
  if (typeof route.query.tab === "string" && runTabValues.value.includes(route.query.tab)) {
6904
7151
  activeTab.value = route.query.tab;
6905
7152
  }
@@ -6923,11 +7170,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6923
7170
  }
6924
7171
  return (_ctx, _push, _parent, _attrs) => {
6925
7172
  const _component_UDashboardPanel = _sfc_main$1$1;
6926
- const _component_UDashboardNavbar = _sfc_main$f;
7173
+ const _component_UDashboardNavbar = _sfc_main$g;
6927
7174
  const _component_UDashboardSidebarCollapse = _sfc_main$1$2;
6928
7175
  const _component_BreadcrumbNav = __nuxt_component_3$1;
6929
7176
  const _component_NuxtLink = __nuxt_component_12$1;
6930
- const _component_UTooltip = _sfc_main$g;
7177
+ const _component_UTooltip = _sfc_main$h;
6931
7178
  const _component_UIcon = _sfc_main$p;
6932
7179
  const _component_NavbarActions = __nuxt_component_4;
6933
7180
  const _component_DetailPageLayout = __nuxt_component_8;
@@ -6941,7 +7188,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6941
7188
  const _component_WorkersTimeline = __nuxt_component_16;
6942
7189
  const _component_RunCompare = __nuxt_component_17;
6943
7190
  const _component_SlowEndpoints = __nuxt_component_18;
6944
- const _component_ClientOnly = __nuxt_component_7;
7191
+ const _component_ClientOnly = __nuxt_component_7$1;
6945
7192
  _push(`<!--[-->`);
6946
7193
  _push(ssrRenderComponent(_component_UDashboardPanel, { id: "test-run-detail" }, {
6947
7194
  header: withCtx((_, _push2, _parent2, _scopeId) => {
@@ -7588,4 +7835,4 @@ _sfc_main.setup = (props, ctx) => {
7588
7835
  };
7589
7836
 
7590
7837
  export { _sfc_main as default };
7591
- //# sourceMappingURL=_id_-bWcP2xFl.mjs.map
7838
+ //# sourceMappingURL=_id_-BHh65pfg.mjs.map