@piwitests/server 0.22.1 → 0.23.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 (342) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{B_mN5eMV.js → 2yLW7WU0.js} +1 -1
  3. package/.output/public/_nuxt/{DK7xciFW.js → 499RbBSX.js} +1 -1
  4. package/.output/public/_nuxt/{CJEp4i0N.js → 5QBnDbs_.js} +1 -1
  5. package/.output/public/_nuxt/{cSeAgciy.js → 5SkLJHl8.js} +1 -1
  6. package/.output/public/_nuxt/{CrOA9onF.js → 6sA-GK37.js} +1 -1
  7. package/.output/public/_nuxt/{C0v6l4pr.js → 6vX5JdHr.js} +1 -1
  8. package/.output/public/_nuxt/{DOBSrxzY.js → 7_9fts7T.js} +1 -1
  9. package/.output/public/_nuxt/{DBhdObsO.js → 9_aJhhcm.js} +1 -1
  10. package/.output/public/_nuxt/{BtaTvcz6.js → AQ86C4c2.js} +1 -1
  11. package/.output/public/_nuxt/{HwFFbACq.js → B070fjS-.js} +1 -1
  12. package/.output/public/_nuxt/B0tmRAhY.js +1 -0
  13. package/.output/public/_nuxt/{CkKCKAYp.js → B2L0-Lzp.js} +2 -2
  14. package/.output/public/_nuxt/{BNAHBHbY.js → B3AG2m76.js} +1 -1
  15. package/.output/public/_nuxt/{BTvE9qca.js → B3G-TIoP.js} +1 -1
  16. package/.output/public/_nuxt/{B2a-Phk3.js → B4mZElvM.js} +1 -1
  17. package/.output/public/_nuxt/{2VtBYkNh.js → B7tiBVLW.js} +1 -1
  18. package/.output/public/_nuxt/{4yvOL9PC.js → BAbrtVp3.js} +1 -1
  19. package/.output/public/_nuxt/{_VzR8bwc.js → BDUfBn3i.js} +1 -1
  20. package/.output/public/_nuxt/{CZ9ThISn.js → BFYkWpPx.js} +1 -1
  21. package/.output/public/_nuxt/{BH-ym1CI.js → BM5BPKlc.js} +1 -1
  22. package/.output/public/_nuxt/{CI_q0F1O.js → BNyTWIad.js} +3 -3
  23. package/.output/public/_nuxt/{BqCiYSVY.js → BOvtXn3m.js} +1 -1
  24. package/.output/public/_nuxt/BVyjw9Bi.js +1 -0
  25. package/.output/public/_nuxt/{BhH0TNTi.js → BZFiz2UB.js} +1 -1
  26. package/.output/public/_nuxt/BZOykMLD.js +1 -0
  27. package/.output/public/_nuxt/{CWoSSKhQ.js → B_JSV0yG.js} +1 -1
  28. package/.output/public/_nuxt/{CWw9WGlv.js → B_MVJP17.js} +1 -1
  29. package/.output/public/_nuxt/{Cwwe5bRS.js → Bag08cIY.js} +1 -1
  30. package/.output/public/_nuxt/{BQzG26t0.js → Bb2mDqKr.js} +1 -1
  31. package/.output/public/_nuxt/{CobveFaj.js → BfcMJBTf.js} +1 -1
  32. package/.output/public/_nuxt/{BmJUhCIO.js → BjMo2tKC.js} +1 -1
  33. package/.output/public/_nuxt/{DOLeth7M.js → BjOFxi54.js} +1 -1
  34. package/.output/public/_nuxt/{DXXnDejN.js → Bj_v57Zu.js} +1 -1
  35. package/.output/public/_nuxt/{Hot1UcKY.js → Bq4_kqIp.js} +1 -1
  36. package/.output/public/_nuxt/{CNcu4khZ.js → Bsc11YIJ.js} +1 -1
  37. package/.output/public/_nuxt/{BlRWlfdD.js → BtZNYmZO.js} +1 -1
  38. package/.output/public/_nuxt/{x8w_1_rn.js → BuGAn4f7.js} +1 -1
  39. package/.output/public/_nuxt/{COP3KBCA.js → BwwfasRt.js} +1 -1
  40. package/.output/public/_nuxt/{BQOWm9mQ.js → C2_7XZo0.js} +1 -1
  41. package/.output/public/_nuxt/{DSvBQHzW.js → C6t4kxaa.js} +1 -1
  42. package/.output/public/_nuxt/{SBmMTKQb.js → C77tM5Hz.js} +1 -1
  43. package/.output/public/_nuxt/{DDN2tt0a.js → C9I1Dp3S.js} +1 -1
  44. package/.output/public/_nuxt/{t-juTK3X.js → CAoQUDI4.js} +1 -1
  45. package/.output/public/_nuxt/{DQnsFoJn.js → CBJFORiZ.js} +1 -1
  46. package/.output/public/_nuxt/{b_yFgp5S.js → CC8wk-N0.js} +1 -1
  47. package/.output/public/_nuxt/{D0ROfwV0.js → CEai-PWF.js} +1 -1
  48. package/.output/public/_nuxt/{BKJetfRH.js → CF_eDZHu.js} +1 -1
  49. package/.output/public/_nuxt/{Sgis3xif.js → CGDPUNcO.js} +1 -1
  50. package/.output/public/_nuxt/{6-ivqM_I.js → CIQeRUSy.js} +1 -1
  51. package/.output/public/_nuxt/{Cf52zHyB.js → CLWMETf9.js} +1 -1
  52. package/.output/public/_nuxt/{h49q_GXF.js → CNu3kken.js} +42 -42
  53. package/.output/public/_nuxt/{Bt4FLbe0.js → CPQRQqXU.js} +1 -1
  54. package/.output/public/_nuxt/{DwyFnMoY.js → CTTmX4gy.js} +1 -1
  55. package/.output/public/_nuxt/{D6Mo5HeX.js → CUOS6S13.js} +1 -1
  56. package/.output/public/_nuxt/{Bb7Uckln.js → CYhm2FBS.js} +1 -1
  57. package/.output/public/_nuxt/{DWEkQ7bl.js → CdEzDaDI.js} +1 -1
  58. package/.output/public/_nuxt/{DLNNAYfu.js → Ce47NgZw.js} +1 -1
  59. package/.output/public/_nuxt/{BFcdtAzg.js → Ce89VyHE.js} +1 -1
  60. package/.output/public/_nuxt/{PdEEuEsg.js → Ce_j5NtN.js} +1 -1
  61. package/.output/public/_nuxt/{BtSJxOdh.js → CfhOanaF.js} +1 -1
  62. package/.output/public/_nuxt/Ck_fTH5z.js +4 -0
  63. package/.output/public/_nuxt/{By5qkOq8.js → Clg2Qx0r.js} +1 -1
  64. package/.output/public/_nuxt/{B6s20NbT.js → CmTzxoQt.js} +1 -1
  65. package/.output/public/_nuxt/{9P8iHISX.js → CvVbKrcH.js} +1 -1
  66. package/.output/public/_nuxt/Cz7SCzdW.js +1 -0
  67. package/.output/public/_nuxt/{B9kt7ySS.js → D1Ucra3E.js} +1 -1
  68. package/.output/public/_nuxt/{DGyGmFem.js → D3SJGdl4.js} +1 -1
  69. package/.output/public/_nuxt/D7fxV-UA.js +1 -0
  70. package/.output/public/_nuxt/{BZnfiR67.js → D7t0Dn3h.js} +1 -1
  71. package/.output/public/_nuxt/{DtSn2Q9-.js → DAhv9aNg.js} +1 -1
  72. package/.output/public/_nuxt/{CMhK1PvI.js → DBWM_xs-.js} +1 -1
  73. package/.output/public/_nuxt/DCE2_MKD.js +2 -0
  74. package/.output/public/_nuxt/DFfqRQxk.js +1 -0
  75. package/.output/public/_nuxt/{Dj-TetcW.js → DJzFYrBt.js} +1 -1
  76. package/.output/public/_nuxt/{x8YSyy4c.js → DNKZmhbX.js} +1 -1
  77. package/.output/public/_nuxt/{CDh_Qt7h.js → DNqm5cWU.js} +1 -1
  78. package/.output/public/_nuxt/{C9p0YCAi.js → DTrPCv7R.js} +1 -1
  79. package/.output/public/_nuxt/{nANaAHCd.js → DXkFgrsT.js} +1 -1
  80. package/.output/public/_nuxt/{B0hK-xDF.js → DYjxDsYC.js} +1 -1
  81. package/.output/public/_nuxt/{D4UlSVir.js → DZ-KbUZi.js} +1 -1
  82. package/.output/public/_nuxt/{DzM9oeLa.js → DZECGgZm.js} +1 -1
  83. package/.output/public/_nuxt/{iubpj2qv.js → Dbf8eT28.js} +1 -1
  84. package/.output/public/_nuxt/{CD3R-ggS.js → DeewM3Wg.js} +1 -1
  85. package/.output/public/_nuxt/{CAZpjzvB.js → DgEa6_av.js} +1 -1
  86. package/.output/public/_nuxt/DiWxW-w3.js +2 -0
  87. package/.output/public/_nuxt/{DpalT0nH.js → DmqCquDx.js} +1 -1
  88. package/.output/public/_nuxt/{CoPntblj.js → DnxrNGE_.js} +1 -1
  89. package/.output/public/_nuxt/{Cd8r0xk5.js → DprkT7rM.js} +1 -1
  90. package/.output/public/_nuxt/{BjU3HZuS.js → DuBtaw3j.js} +1 -1
  91. package/.output/public/_nuxt/DylyATWU.js +2 -0
  92. package/.output/public/_nuxt/{CRPt9SfB.js → FJTsZ5Aa.js} +1 -1
  93. package/.output/public/_nuxt/{DHUT-BKj.js → HIGGZ_c-.js} +1 -1
  94. package/.output/public/_nuxt/{DLn-VPtK.js → HbnAkiyK.js} +1 -1
  95. package/.output/public/_nuxt/{czXrP7NB.js → LTMoFvEY.js} +1 -1
  96. package/.output/public/_nuxt/{DsX5CCb5.js → PDSNX4Te.js} +1 -1
  97. package/.output/public/_nuxt/{BfS8BZTO.js → QZYo3ErV.js} +1 -1
  98. package/.output/public/_nuxt/{kfFeu9tK.js → RkNtgoTD.js} +1 -1
  99. package/.output/public/_nuxt/Wk7ZKG4B.js +1 -0
  100. package/.output/public/_nuxt/{9N6hSApy.js → Ya8ZzWuY.js} +1 -1
  101. package/.output/public/_nuxt/{B09ddw9C.js → ZLfZolDM.js} +1 -1
  102. package/.output/public/_nuxt/{3xlGO1qT.js → a8Z6VC7V.js} +1 -1
  103. package/.output/public/_nuxt/{CCP6Tyle.js → axj2iIDK.js} +1 -1
  104. package/.output/public/_nuxt/builds/latest.json +1 -1
  105. package/.output/public/_nuxt/builds/meta/6d1766a0-0aba-46b8-9d97-7dd174130359.json +1 -0
  106. package/.output/public/_nuxt/dUPMBJ4f.js +1 -0
  107. package/.output/public/_nuxt/{DS2ANCQh.js → eT2oObCh.js} +1 -1
  108. package/.output/public/_nuxt/entry.D_eWXrnD.css +1 -0
  109. package/.output/public/_nuxt/{CkyMZI-0.js → jR2xm3_t.js} +1 -1
  110. package/.output/public/_nuxt/{BDQCwxpX.js → jxc14CqP.js} +1 -1
  111. package/.output/public/_nuxt/{Gik813Ek.js → kWnH8yJq.js} +1 -1
  112. package/.output/public/_nuxt/{BYB8NVJZ.js → mi22nGUC.js} +1 -1
  113. package/.output/public/_nuxt/{BVN50jIb.js → oSLbl-p0.js} +1 -1
  114. package/.output/public/_nuxt/{CBZD8ym8.js → pZbe82l5.js} +1 -1
  115. package/.output/public/_nuxt/roaTZkYi.js +1 -0
  116. package/.output/public/_nuxt/{BUMoU50-.js → sqqg4oXL.js} +1 -1
  117. package/.output/public/_nuxt/xZQGtnVA.js +1 -0
  118. package/.output/server/chunks/build/{Alert-DAb8nKVs.mjs → Alert-He-UxEt6.mjs} +2 -2
  119. package/.output/server/chunks/build/Alert-He-UxEt6.mjs.map +1 -0
  120. package/.output/server/chunks/build/{Breadcrumb-DJp5WvUM.mjs → Breadcrumb-DEP2dVCZ.mjs} +3 -3
  121. package/.output/server/chunks/build/Breadcrumb-DEP2dVCZ.mjs.map +1 -0
  122. package/.output/server/chunks/build/{BreadcrumbNav-BrQwfL8G.mjs → BreadcrumbNav-y6nMDYcR.mjs} +3 -3
  123. package/.output/server/chunks/build/BreadcrumbNav-y6nMDYcR.mjs.map +1 -0
  124. package/.output/server/chunks/build/{BrowserBadge-Djw_e_I9.mjs → BrowserBadge-DIASU8Gf.mjs} +6 -66
  125. package/.output/server/chunks/build/BrowserBadge-DIASU8Gf.mjs.map +1 -0
  126. package/.output/server/chunks/build/{ChartCard-B2gd_8HP.mjs → ChartCard-ZTsCvItQ.mjs} +2 -2
  127. package/.output/server/chunks/build/ChartCard-ZTsCvItQ.mjs.map +1 -0
  128. package/.output/server/chunks/build/{Checkbox-C1khEdTh.mjs → Checkbox-BisdHf8n.mjs} +6 -6
  129. package/.output/server/chunks/build/Checkbox-BisdHf8n.mjs.map +1 -0
  130. package/.output/server/chunks/build/{CodeBlock-CjnDrO3Y.mjs → CodeBlock-B8BNtZAe.mjs} +2 -2
  131. package/.output/server/chunks/build/CodeBlock-B8BNtZAe.mjs.map +1 -0
  132. package/.output/server/chunks/build/{DashboardNavbar-DYtmVlhy.mjs → DashboardNavbar-D7-3zBUU.mjs} +3 -3
  133. package/.output/server/chunks/build/DashboardNavbar-D7-3zBUU.mjs.map +1 -0
  134. package/.output/server/chunks/build/{DashboardSidebarToggle-BPNxODwj.mjs → DashboardSidebarToggle-C3HdHvlE.mjs} +2 -2
  135. package/.output/server/chunks/build/DashboardSidebarToggle-C3HdHvlE.mjs.map +1 -0
  136. package/.output/server/chunks/build/{DataLocationCard-2B-sVSMr.mjs → DataLocationCard-CC2-lHiP.mjs} +3 -3
  137. package/.output/server/chunks/build/DataLocationCard-CC2-lHiP.mjs.map +1 -0
  138. package/.output/server/chunks/build/{MetaStripGroup-BBByVvpR.mjs → DesktopRunLocallyButton-iNzrDsEs.mjs} +601 -623
  139. package/.output/server/chunks/build/DesktopRunLocallyButton-iNzrDsEs.mjs.map +1 -0
  140. package/.output/server/chunks/build/{DiagnosisPanel-D6QO30FQ.mjs → DiagnosisPanel-BVb2LgHu.mjs} +5 -5
  141. package/.output/server/chunks/build/DiagnosisPanel-BVb2LgHu.mjs.map +1 -0
  142. package/.output/server/chunks/build/{DiagnosisResult-ujB5Lt2A.mjs → DiagnosisResult-xVgZlfKK.mjs} +8 -8
  143. package/.output/server/chunks/build/DiagnosisResult-xVgZlfKK.mjs.map +1 -0
  144. package/.output/server/chunks/build/{EntityLinks-F8_kC-IH.mjs → EntityLinks-Dzn73fbq.mjs} +2 -2
  145. package/.output/server/chunks/build/EntityLinks-Dzn73fbq.mjs.map +1 -0
  146. package/.output/server/chunks/build/{EnvManagedBadge-D6e-10M9.mjs → EnvManagedBadge-C-agmABK.mjs} +3 -3
  147. package/.output/server/chunks/build/EnvManagedBadge-C-agmABK.mjs.map +1 -0
  148. package/.output/server/chunks/build/{FeatureUnavailable-BMw4euTk.mjs → FeatureUnavailable-DHFkwI7t.mjs} +2 -2
  149. package/.output/server/chunks/build/FeatureUnavailable-DHFkwI7t.mjs.map +1 -0
  150. package/.output/server/chunks/build/{FormField-QptK0rPg.mjs → FormField-GYHKiSI6.mjs} +2 -2
  151. package/.output/server/chunks/build/FormField-GYHKiSI6.mjs.map +1 -0
  152. package/.output/server/chunks/build/{GetStartedWizard-DxT8T14Y.mjs → GetStartedWizard-BpcGYsm2.mjs} +3 -3
  153. package/.output/server/chunks/build/GetStartedWizard-BpcGYsm2.mjs.map +1 -0
  154. package/.output/server/chunks/build/{HelpHint-C5Ru8BCc.mjs → HelpHint-plioHKA0.mjs} +2 -2
  155. package/.output/server/chunks/build/HelpHint-plioHKA0.mjs.map +1 -0
  156. package/.output/server/chunks/build/MetaStripGroup-A0a72vt5.mjs +193 -0
  157. package/.output/server/chunks/build/MetaStripGroup-A0a72vt5.mjs.map +1 -0
  158. package/.output/server/chunks/build/{Modal-BacZmQCX.mjs → Modal-hKLvVFNp.mjs} +2 -2
  159. package/.output/server/chunks/build/Modal-hKLvVFNp.mjs.map +1 -0
  160. package/.output/server/chunks/build/{NavigationMenu-sTiKSWDm.mjs → NavigationMenu-RfBOyS32.mjs} +4 -4
  161. package/.output/server/chunks/build/NavigationMenu-RfBOyS32.mjs.map +1 -0
  162. package/.output/server/chunks/build/{OpenInIdeLink-Crc8y0Yx.mjs → OpenInIdeLink-Jp6SzEtD.mjs} +4 -4
  163. package/.output/server/chunks/build/{OpenInIdeLink-Crc8y0Yx.mjs.map → OpenInIdeLink-Jp6SzEtD.mjs.map} +1 -1
  164. package/.output/server/chunks/build/{ProjectTestCasesTable-DwjqZ2i5.mjs → ProjectTestCasesTable-DxOTfhi4.mjs} +8 -8
  165. package/.output/server/chunks/build/{ProjectTestCasesTable-DwjqZ2i5.mjs.map → ProjectTestCasesTable-DxOTfhi4.mjs.map} +1 -1
  166. package/.output/server/chunks/build/{RovingFocusItem--OEHI2P3.mjs → RovingFocusItem-BOSx1Z9Z.mjs} +2 -2
  167. package/.output/server/chunks/build/RovingFocusItem-BOSx1Z9Z.mjs.map +1 -0
  168. package/.output/server/chunks/build/{SectionCard-C753B3Yo.mjs → SectionCard-DHAFvJxm.mjs} +2 -2
  169. package/.output/server/chunks/build/SectionCard-DHAFvJxm.mjs.map +1 -0
  170. package/.output/server/chunks/build/{Select-BAyYwPuo.mjs → Select-CEyw7HGK.mjs} +3 -3
  171. package/.output/server/chunks/build/Select-CEyw7HGK.mjs.map +1 -0
  172. package/.output/server/chunks/build/{SelectMenu-zE_AhMX8.mjs → SelectMenu-C02Hs2_F.mjs} +4 -4
  173. package/.output/server/chunks/build/{SelectMenu-zE_AhMX8.mjs.map → SelectMenu-C02Hs2_F.mjs.map} +1 -1
  174. package/.output/server/chunks/build/{Separator-BbgCfKKJ.mjs → Separator-lrN70ODV.mjs} +2 -2
  175. package/.output/server/chunks/build/Separator-lrN70ODV.mjs.map +1 -0
  176. package/.output/server/chunks/build/{SettingsField-D-VriK9X.mjs → SettingsField-tRmytcEJ.mjs} +5 -5
  177. package/.output/server/chunks/build/SettingsField-tRmytcEJ.mjs.map +1 -0
  178. package/.output/server/chunks/build/{Slideover-CNbGvbUF.mjs → Slideover-D6cRIqch.mjs} +3 -3
  179. package/.output/server/chunks/build/Slideover-D6cRIqch.mjs.map +1 -0
  180. package/.output/server/chunks/build/{Switch-DdkA3Fii.mjs → Switch-R2n82ncQ.mjs} +4 -4
  181. package/.output/server/chunks/build/Switch-R2n82ncQ.mjs.map +1 -0
  182. package/.output/server/chunks/build/{Table-CfDVAuUJ.mjs → Table-qZdnm9t2.mjs} +2 -2
  183. package/.output/server/chunks/build/Table-qZdnm9t2.mjs.map +1 -0
  184. package/.output/server/chunks/build/{Tabs-BCOhHEB9.mjs → Tabs-BDP7MWl4.mjs} +3 -3
  185. package/.output/server/chunks/build/Tabs-BDP7MWl4.mjs.map +1 -0
  186. package/.output/server/chunks/build/{TestStatusBar-wquHQqtp.mjs → TestStatusBar-CvsmKJ4D.mjs} +2 -2
  187. package/.output/server/chunks/build/TestStatusBar-CvsmKJ4D.mjs.map +1 -0
  188. package/.output/server/chunks/build/{Textarea-Ohs6QTXf.mjs → Textarea-DpmpM-lN.mjs} +2 -2
  189. package/.output/server/chunks/build/Textarea-DpmpM-lN.mjs.map +1 -0
  190. package/.output/server/chunks/build/{Tooltip-BRBnl4pE.mjs → Tooltip-BI3WQErw.mjs} +2 -2
  191. package/.output/server/chunks/build/Tooltip-BI3WQErw.mjs.map +1 -0
  192. package/.output/server/chunks/build/{VisuallyHiddenInput-BHvzNumK.mjs → VisuallyHiddenInput-D4E5aJCQ.mjs} +2 -2
  193. package/.output/server/chunks/build/VisuallyHiddenInput-D4E5aJCQ.mjs.map +1 -0
  194. package/.output/server/chunks/build/{_id_-CGs0u8Fr.mjs → _id_-CrGTZymJ.mjs} +70 -41
  195. package/.output/server/chunks/build/{_id_-CGs0u8Fr.mjs.map → _id_-CrGTZymJ.mjs.map} +1 -1
  196. package/.output/server/chunks/build/{_id_-BesWjK_d.mjs → _id_-D7UtAIPR.mjs} +34 -31
  197. package/.output/server/chunks/build/{_id_-BesWjK_d.mjs.map → _id_-D7UtAIPR.mjs.map} +1 -1
  198. package/.output/server/chunks/build/{_id_-CQ0lolEK.mjs → _id_-T965GKYC.mjs} +58 -15
  199. package/.output/server/chunks/build/_id_-T965GKYC.mjs.map +1 -0
  200. package/.output/server/chunks/build/{_id_-D1-06Fcl.mjs → _id_-wiULjAVc.mjs} +43 -39
  201. package/.output/server/chunks/build/{_id_-D1-06Fcl.mjs.map → _id_-wiULjAVc.mjs.map} +1 -1
  202. package/.output/server/chunks/build/{about-DdyOj-dj.mjs → about-B3V_OEiu.mjs} +5 -5
  203. package/.output/server/chunks/build/about-B3V_OEiu.mjs.map +1 -0
  204. package/.output/server/chunks/build/{account-7aVMKekZ.mjs → account-DpBdYE46.mjs} +6 -6
  205. package/.output/server/chunks/build/account-DpBdYE46.mjs.map +1 -0
  206. package/.output/server/chunks/build/{ai-zw3T9b5u.mjs → ai-DYhpzbqp.mjs} +15 -15
  207. package/.output/server/chunks/build/{ai-zw3T9b5u.mjs.map → ai-DYhpzbqp.mjs.map} +1 -1
  208. package/.output/server/chunks/build/{analytics-CeCzKwEX.mjs → analytics-CZJEU0an.mjs} +17 -17
  209. package/.output/server/chunks/build/{analytics-CeCzKwEX.mjs.map → analytics-CZJEU0an.mjs.map} +1 -1
  210. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  211. package/.output/server/chunks/build/{default-CkyAx_Mu.mjs → default-DO1izI2V.mjs} +504 -88
  212. package/.output/server/chunks/build/default-DO1izI2V.mjs.map +1 -0
  213. package/.output/server/chunks/build/{docs-Dhj-wEks.mjs → docs-C8bndVXg.mjs} +11 -11
  214. package/.output/server/chunks/build/{docs-Dhj-wEks.mjs.map → docs-C8bndVXg.mjs.map} +1 -1
  215. package/.output/server/chunks/build/{edit-CVz_gdoe.mjs → edit-BdfF9er2.mjs} +12 -12
  216. package/.output/server/chunks/build/edit-BdfF9er2.mjs.map +1 -0
  217. package/.output/server/chunks/build/{fetch-Be-j7hF1.mjs → fetch-tkz5_OA-.mjs} +2 -2
  218. package/.output/server/chunks/build/fetch-tkz5_OA-.mjs.map +1 -0
  219. package/.output/server/chunks/build/{forgot-password-CwdjL7BO.mjs → forgot-password-swZRcvXE.mjs} +3 -3
  220. package/.output/server/chunks/build/forgot-password-swZRcvXE.mjs.map +1 -0
  221. package/.output/server/chunks/build/{import-DyQEw4V3.mjs → import-B27Sv7h5.mjs} +10 -10
  222. package/.output/server/chunks/build/import-B27Sv7h5.mjs.map +1 -0
  223. package/.output/server/chunks/build/{index-DcnICCZU.mjs → index-BdZmxLtC.mjs} +17 -17
  224. package/.output/server/chunks/build/{index-DcnICCZU.mjs.map → index-BdZmxLtC.mjs.map} +1 -1
  225. package/.output/server/chunks/build/{index-D7Bmj6bq.mjs → index-C7m32bRI.mjs} +9 -9
  226. package/.output/server/chunks/build/index-C7m32bRI.mjs.map +1 -0
  227. package/.output/server/chunks/build/{index-DghAFpNR.mjs → index-vRwzDXLs.mjs} +30 -29
  228. package/.output/server/chunks/build/{index-DghAFpNR.mjs.map → index-vRwzDXLs.mjs.map} +1 -1
  229. package/.output/server/chunks/build/{isValueEqualOrExist-D2qw9YEr.mjs → isValueEqualOrExist-D4lZ8uRY.mjs} +2 -2
  230. package/.output/server/chunks/build/isValueEqualOrExist-D4lZ8uRY.mjs.map +1 -0
  231. package/.output/server/chunks/build/{login-rXKF63j6.mjs → login-hxCF06JT.mjs} +4 -4
  232. package/.output/server/chunks/build/login-hxCF06JT.mjs.map +1 -0
  233. package/.output/server/chunks/build/{mcp-ByNvFy4o.mjs → mcp-BVW1llyW.mjs} +11 -11
  234. package/.output/server/chunks/build/mcp-BVW1llyW.mjs.map +1 -0
  235. package/.output/server/chunks/build/{notifications-CbLAZnKJ.mjs → notifications-Dn-evqXM.mjs} +11 -11
  236. package/.output/server/chunks/build/notifications-Dn-evqXM.mjs.map +1 -0
  237. package/.output/server/chunks/build/{performance-C93MEPaZ.mjs → performance-CV8qm94u.mjs} +10 -10
  238. package/.output/server/chunks/build/performance-CV8qm94u.mjs.map +1 -0
  239. package/.output/server/chunks/build/{pr-feedback-DKCB0bDE.mjs → pr-feedback-gKDz8LyA.mjs} +9 -9
  240. package/.output/server/chunks/build/pr-feedback-gKDz8LyA.mjs.map +1 -0
  241. package/.output/server/chunks/build/{reset-password-BBoHKMqD.mjs → reset-password-DtEISa1I.mjs} +3 -3
  242. package/.output/server/chunks/build/reset-password-DtEISa1I.mjs.map +1 -0
  243. package/.output/server/chunks/build/server.mjs +85 -31
  244. package/.output/server/chunks/build/{settings-DiG0JjzC.mjs → settings-BJDnuLpc.mjs} +8 -8
  245. package/.output/server/chunks/build/settings-BJDnuLpc.mjs.map +1 -0
  246. package/.output/server/chunks/build/{setup-0-1O6Hjz.mjs → setup-BO9tXa_G.mjs} +14 -14
  247. package/.output/server/chunks/build/{setup-0-1O6Hjz.mjs.map → setup-BO9tXa_G.mjs.map} +1 -1
  248. package/.output/server/chunks/build/{storage-3JiFJ843.mjs → storage-zN92cA9q.mjs} +10 -10
  249. package/.output/server/chunks/build/storage-zN92cA9q.mjs.map +1 -0
  250. package/.output/server/chunks/build/{tags-CqYcp7js.mjs → tags-CJFnoyQc.mjs} +5 -5
  251. package/.output/server/chunks/build/tags-CJFnoyQc.mjs.map +1 -0
  252. package/.output/server/chunks/build/{test-cases-y1HSgPX2.mjs → test-cases-0Q6rT73d.mjs} +18 -18
  253. package/.output/server/chunks/build/test-cases-0Q6rT73d.mjs.map +1 -0
  254. package/.output/server/chunks/build/{test-functions-D2ju95Ly.mjs → test-functions-DVRJgiWo.mjs} +8 -8
  255. package/.output/server/chunks/build/test-functions-DVRJgiWo.mjs.map +1 -0
  256. package/.output/server/chunks/build/{useCopyRich-CVFeYfkG.mjs → useCopyRich-CZxJ7IY_.mjs} +12 -12
  257. package/.output/server/chunks/build/{useCopyRich-CVFeYfkG.mjs.map → useCopyRich-CZxJ7IY_.mjs.map} +1 -1
  258. package/.output/server/chunks/build/useDesktopLocalRuns-k7Gw3Fv3.mjs +319 -0
  259. package/.output/server/chunks/build/useDesktopLocalRuns-k7Gw3Fv3.mjs.map +1 -0
  260. package/.output/server/chunks/build/useDesktopProjectLink-WwLte59P.mjs +67 -0
  261. package/.output/server/chunks/build/useDesktopProjectLink-WwLte59P.mjs.map +1 -0
  262. package/.output/server/chunks/build/{useFormControl-CZ9So7iX.mjs → useFormControl-8skMOTIf.mjs} +2 -2
  263. package/.output/server/chunks/build/useFormControl-8skMOTIf.mjs.map +1 -0
  264. package/.output/server/chunks/build/{useOpenInIde--6Me0WlL.mjs → useOpenInIde-D74FmDNg.mjs} +2 -2
  265. package/.output/server/chunks/build/useOpenInIde-D74FmDNg.mjs.map +1 -0
  266. package/.output/server/chunks/build/{users-IdmY9JZV.mjs → users-C9bjOBde.mjs} +6 -6
  267. package/.output/server/chunks/build/users-C9bjOBde.mjs.map +1 -0
  268. package/.output/server/chunks/nitro/nitro.mjs +734 -720
  269. package/.output/server/package.json +1 -1
  270. package/package.json +1 -1
  271. package/.output/public/_nuxt/B-6GGrhr.js +0 -1
  272. package/.output/public/_nuxt/B9FSuKdA.js +0 -1
  273. package/.output/public/_nuxt/BaDhDBCV.js +0 -1
  274. package/.output/public/_nuxt/Be4c943G.js +0 -2
  275. package/.output/public/_nuxt/BpUXqOVj.js +0 -2
  276. package/.output/public/_nuxt/CScusXhF.js +0 -1
  277. package/.output/public/_nuxt/Cot8fIp5.js +0 -2
  278. package/.output/public/_nuxt/D4oheDIm.js +0 -4
  279. package/.output/public/_nuxt/DslnXfcH.js +0 -1
  280. package/.output/public/_nuxt/builds/meta/28bca36d-5571-4157-b1b8-7f62c934eed6.json +0 -1
  281. package/.output/public/_nuxt/entry.BAvBQY-h.css +0 -1
  282. package/.output/public/_nuxt/hzsG6cAc.js +0 -1
  283. package/.output/public/_nuxt/jjOqY9Tv.js +0 -1
  284. package/.output/public/_nuxt/xbO0VmDX.js +0 -1
  285. package/.output/server/chunks/build/Alert-DAb8nKVs.mjs.map +0 -1
  286. package/.output/server/chunks/build/Breadcrumb-DJp5WvUM.mjs.map +0 -1
  287. package/.output/server/chunks/build/BreadcrumbNav-BrQwfL8G.mjs.map +0 -1
  288. package/.output/server/chunks/build/BrowserBadge-Djw_e_I9.mjs.map +0 -1
  289. package/.output/server/chunks/build/ChartCard-B2gd_8HP.mjs.map +0 -1
  290. package/.output/server/chunks/build/Checkbox-C1khEdTh.mjs.map +0 -1
  291. package/.output/server/chunks/build/CodeBlock-CjnDrO3Y.mjs.map +0 -1
  292. package/.output/server/chunks/build/DashboardNavbar-DYtmVlhy.mjs.map +0 -1
  293. package/.output/server/chunks/build/DashboardSidebarToggle-BPNxODwj.mjs.map +0 -1
  294. package/.output/server/chunks/build/DataLocationCard-2B-sVSMr.mjs.map +0 -1
  295. package/.output/server/chunks/build/DiagnosisPanel-D6QO30FQ.mjs.map +0 -1
  296. package/.output/server/chunks/build/DiagnosisResult-ujB5Lt2A.mjs.map +0 -1
  297. package/.output/server/chunks/build/EntityLinks-F8_kC-IH.mjs.map +0 -1
  298. package/.output/server/chunks/build/EnvManagedBadge-D6e-10M9.mjs.map +0 -1
  299. package/.output/server/chunks/build/FeatureUnavailable-BMw4euTk.mjs.map +0 -1
  300. package/.output/server/chunks/build/FormField-QptK0rPg.mjs.map +0 -1
  301. package/.output/server/chunks/build/GetStartedWizard-DxT8T14Y.mjs.map +0 -1
  302. package/.output/server/chunks/build/HelpHint-C5Ru8BCc.mjs.map +0 -1
  303. package/.output/server/chunks/build/MetaStripGroup-BBByVvpR.mjs.map +0 -1
  304. package/.output/server/chunks/build/Modal-BacZmQCX.mjs.map +0 -1
  305. package/.output/server/chunks/build/NavigationMenu-sTiKSWDm.mjs.map +0 -1
  306. package/.output/server/chunks/build/RovingFocusItem--OEHI2P3.mjs.map +0 -1
  307. package/.output/server/chunks/build/SectionCard-C753B3Yo.mjs.map +0 -1
  308. package/.output/server/chunks/build/Select-BAyYwPuo.mjs.map +0 -1
  309. package/.output/server/chunks/build/Separator-BbgCfKKJ.mjs.map +0 -1
  310. package/.output/server/chunks/build/SettingsField-D-VriK9X.mjs.map +0 -1
  311. package/.output/server/chunks/build/Slideover-CNbGvbUF.mjs.map +0 -1
  312. package/.output/server/chunks/build/Switch-DdkA3Fii.mjs.map +0 -1
  313. package/.output/server/chunks/build/Table-CfDVAuUJ.mjs.map +0 -1
  314. package/.output/server/chunks/build/Tabs-BCOhHEB9.mjs.map +0 -1
  315. package/.output/server/chunks/build/TestStatusBar-wquHQqtp.mjs.map +0 -1
  316. package/.output/server/chunks/build/Textarea-Ohs6QTXf.mjs.map +0 -1
  317. package/.output/server/chunks/build/Tooltip-BRBnl4pE.mjs.map +0 -1
  318. package/.output/server/chunks/build/VisuallyHiddenInput-BHvzNumK.mjs.map +0 -1
  319. package/.output/server/chunks/build/_id_-CQ0lolEK.mjs.map +0 -1
  320. package/.output/server/chunks/build/about-DdyOj-dj.mjs.map +0 -1
  321. package/.output/server/chunks/build/account-7aVMKekZ.mjs.map +0 -1
  322. package/.output/server/chunks/build/default-CkyAx_Mu.mjs.map +0 -1
  323. package/.output/server/chunks/build/edit-CVz_gdoe.mjs.map +0 -1
  324. package/.output/server/chunks/build/fetch-Be-j7hF1.mjs.map +0 -1
  325. package/.output/server/chunks/build/forgot-password-CwdjL7BO.mjs.map +0 -1
  326. package/.output/server/chunks/build/import-DyQEw4V3.mjs.map +0 -1
  327. package/.output/server/chunks/build/index-D7Bmj6bq.mjs.map +0 -1
  328. package/.output/server/chunks/build/isValueEqualOrExist-D2qw9YEr.mjs.map +0 -1
  329. package/.output/server/chunks/build/login-rXKF63j6.mjs.map +0 -1
  330. package/.output/server/chunks/build/mcp-ByNvFy4o.mjs.map +0 -1
  331. package/.output/server/chunks/build/notifications-CbLAZnKJ.mjs.map +0 -1
  332. package/.output/server/chunks/build/performance-C93MEPaZ.mjs.map +0 -1
  333. package/.output/server/chunks/build/pr-feedback-DKCB0bDE.mjs.map +0 -1
  334. package/.output/server/chunks/build/reset-password-BBoHKMqD.mjs.map +0 -1
  335. package/.output/server/chunks/build/settings-DiG0JjzC.mjs.map +0 -1
  336. package/.output/server/chunks/build/storage-3JiFJ843.mjs.map +0 -1
  337. package/.output/server/chunks/build/tags-CqYcp7js.mjs.map +0 -1
  338. package/.output/server/chunks/build/test-cases-y1HSgPX2.mjs.map +0 -1
  339. package/.output/server/chunks/build/test-functions-D2ju95Ly.mjs.map +0 -1
  340. package/.output/server/chunks/build/useFormControl-CZ9So7iX.mjs.map +0 -1
  341. package/.output/server/chunks/build/useOpenInIde--6Me0WlL.mjs.map +0 -1
  342. package/.output/server/chunks/build/users-IdmY9JZV.mjs.map +0 -1
@@ -1,9 +1,9 @@
1
- import{_ as Yt}from"./C9p0YCAi.js";import{_ as es}from"./BTvE9qca.js";import{d as re,o as s,f as _,g as u,i as o,j as r,t as c,c as a,F as U,y as ee,k as e,s as pe,m as f,v as i,D as pt,q as X,p as ue,h as C,G as Pe,_ as Ie,b as ts,B as yt,l as ge,r as A,ab as $e,J as ve,ac as ss,A as Ee,R as Ce,u as ns,a as as,w as mt,e as os,ad as rs,N as is}from"./h49q_GXF.js";import{d as ls,e as cs,h as Oe,a as us,b as ds,c as ms,_ as fs,n as gs,o as ps,p as ys,u as hs,f as xs,i as vs,j as _s,k as ks,l as bs,m as ws}from"./Bb7Uckln.js";import{_ as $s,a as Cs,b as Ts,c as Ss,d as Is}from"./BpUXqOVj.js";import{_ as Rs}from"./CBZD8ym8.js";import{_ as js,a as Ls}from"./B_mN5eMV.js";import{_ as Re}from"./DWEkQ7bl.js";import{_ as zs}from"./cSeAgciy.js";import{_ as Ms}from"./DOBSrxzY.js";import{_ as ht}from"./PdEEuEsg.js";import{_ as xt}from"./CkyMZI-0.js";import{_ as vt}from"./DtSn2Q9-.js";import{_ as _t,a as kt}from"./BtSJxOdh.js";import{_ as Ns}from"./9P8iHISX.js";import{_ as Ds}from"./CWoSSKhQ.js";import{_ as Ps,d as As,e as Us,f as Bs,g as Fs,h as Vs,a as bt,i as Te,b as De,c as Es}from"./DBhdObsO.js";import{f as Se,m as Os,c as Hs,e as Ks,n as wt,o as He,q as Ke,a as Ws,j as Gs,r as ft}from"./CD3R-ggS.js";import{_ as $t}from"./CRPt9SfB.js";import{_ as ye}from"./DLNNAYfu.js";import{_ as Js}from"./CScusXhF.js";import{u as qs}from"./Cf52zHyB.js";import{_ as We}from"./CDh_Qt7h.js";import{_ as Ge}from"./DHUT-BKj.js";import{_ as Ct}from"./BQOWm9mQ.js";import{f as we}from"./D-c8ZSws.js";import{_ as Qs}from"./Dj-TetcW.js";import{_ as Zs}from"./BQzG26t0.js";import{_ as Xs}from"./DGyGmFem.js";import{_ as Ys}from"./DzM9oeLa.js";import{_ as en}from"./BVN50jIb.js";import{_ as tn}from"./b_yFgp5S.js";import{b as sn}from"./BZnfiR67.js";import{a as nn,u as gt}from"./Cd8r0xk5.js";import"./BhH0TNTi.js";import"./DOLeth7M.js";import"./BDQCwxpX.js";import"./BaDhDBCV.js";import"./9N6hSApy.js";import"./jjOqY9Tv.js";import"./DDN2tt0a.js";import"./xbO0VmDX.js";import"./BKJetfRH.js";import"./D4UlSVir.js";import"./B0hK-xDF.js";import"./B9FSuKdA.js";import"./BNAHBHbY.js";import"./BjaRappk.js";import"./Hot1UcKY.js";import"./B6s20NbT.js";import"./Sgis3xif.js";import"./Cwwe5bRS.js";import"./D7W_4Sqc.js";import"./czXrP7NB.js";const an={class:"text-sm font-semibold truncate min-w-0"},on={class:"flex items-center gap-3 ml-auto max-sm:hidden"},rn={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},ln={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},cn={class:"text-gray-700 dark:text-gray-300"},un={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},dn={class:"text-gray-700 dark:text-gray-300"},mn={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},fn={class:"text-gray-700 dark:text-gray-300"},gn={key:0,class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},pn={class:"text-gray-700 dark:text-gray-300"},yn={class:"@container"},hn={class:"space-y-3"},xn={class:"flex items-start gap-2.5 pr-8"},vn={class:"min-w-0 flex-1"},_n={class:"flex items-center gap-2 flex-wrap"},kn={class:"text-base font-bold truncate max-w-full"},bn={class:"text-xs text-gray-500 mt-0.5 flex items-center gap-x-2 gap-y-0.5 flex-wrap"},wn=["title"],$n={key:1},Cn={key:0,class:"flex items-center gap-2 text-sm"},Tn={class:"text-gray-700 dark:text-gray-300 truncate"},Sn={key:0,class:"text-gray-500 shrink-0"},In={key:1,class:"flex items-center gap-1.5 text-sm"},Rn={key:0,class:"font-medium"},jn=["title"],Ln={key:2,class:"text-muted"},zn=["title"],Mn={key:0,class:"rounded-full border border-default px-2 py-0.5 text-xs bg-elevated/60"},Nn={key:1},Dn=["href"],Pn={key:1},An={class:"text-muted"},Un={key:0,class:"tabular-nums text-muted"},Bn={key:0,class:"text-dimmed"},Fn=re({__name:"TestCaseSummary",props:{testCase:{},scmInfo:{},ciInfo:{},browser:{},environment:{},stepsCount:{},historicalTiming:{},stableLinks:{},projectKey:{},projectName:{}},emits:["refresh"],setup(t){const k=t,h=C(()=>{const n=k.testCase;if(!n)return[];const l=[];return n.isNewRegression&&l.push({label:"New regression",color:"error",title:"Passed in the baseline run, failing here"}),n.isNewFlaky&&l.push({label:"New flaky",color:"warning",title:"Newly started passing only on retry"}),n.status==="passed"&&(n.retries??0)>0&&l.push({label:"Passed on retry",color:"warning",title:"This test failed then passed on a retry"}),l}),w=C(()=>(k.testCase?.testAnnotations??[]).filter(n=>!Os(n.type))),$=C(()=>k.testCase?.startedAt??null),g=C(()=>!!(k.ciInfo||k.environment));return(n,l)=>{const d=$s,D=Re,M=zs,b=pe,v=Ms,F=ht,L=pt,m=xt,S=vt,V=ue,B=_t,I=Ts,G=Ns,J=Cs,N=Ds,ne=Ps;return s(),_(ne,{"storage-key":"test-case"},{folded:u(()=>[r(d,{status:t.testCase?.status??"",size:"sm"},null,8,["status"]),o("span",an,c(t.testCase?.title),1),o("div",on,[o("span",rn,[l[1]||(l[1]=f(" Dur: ",-1)),r(D,{ms:t.testCase?.duration,class:"font-bold text-gray-700 dark:text-gray-300"},null,8,["ms"])]),o("span",ln,[l[2]||(l[2]=f(" Retries: ",-1)),o("strong",cn,c(t.testCase?.retries??0),1)]),o("span",un,[l[3]||(l[3]=f(" Steps: ",-1)),o("strong",dn,c(t.stepsCount),1)]),o("span",mn,[l[4]||(l[4]=f(" Worker: ",-1)),o("strong",fn,c(t.testCase?.workerIndex??"—"),1)]),t.testCase?.shardIndex!=null?(s(),a("span",gn,[l[5]||(l[5]=f(" Shard: ",-1)),o("strong",pn,c(t.testCase.shardIndex),1)])):i("",!0)]),t.browser?(s(),_(M,{key:0,browser:t.browser,size:"sm",class:"shrink-0 max-sm:hidden"},null,8,["browser"])):i("",!0)]),default:u(()=>[o("div",yn,[r(N,{class:"shadow-xs",ui:{footer:"px-4 py-2.5 sm:px-4 bg-muted/30"}},{footer:u(()=>[r(J,null,{default:u(()=>[t.scmInfo?(s(),_(I,{key:0,label:"Source",icon:"i-lucide-git-branch"},{default:u(()=>[t.scmInfo.branch?(s(),a("span",Rn,c(t.scmInfo.branch),1)):i("",!0),t.scmInfo.commit?(s(),a("code",{key:1,class:"text-xs font-mono bg-zinc-100 dark:bg-zinc-800 px-1 py-0.5 rounded",title:t.scmInfo.commit},c(t.scmInfo.commit.length>=8?t.scmInfo.commit.substring(0,8):t.scmInfo.commit),9,jn)):i("",!0),t.scmInfo.author?(s(),a("span",Ln,c(t.scmInfo.author),1)):i("",!0),t.scmInfo.commitMessage?(s(),a("span",{key:3,class:"text-xs text-dimmed truncate max-w-[40ch]",title:t.scmInfo.commitMessage},c(t.scmInfo.commitMessage),9,zn)):i("",!0)]),_:1})):i("",!0),e(g)?(s(),_(I,{key:1,label:"CI & environment",icon:"i-lucide-cloud",help:"run.ci-env"},{default:u(()=>[t.environment?(s(),a("span",Mn,c(t.environment),1)):i("",!0),t.ciInfo?.provider?(s(),a("span",Nn,c(t.ciInfo.provider),1)):i("",!0),t.ciInfo?.buildNumber||t.ciInfo?.buildUrl?(s(),a(U,{key:2},[l[12]||(l[12]=o("span",{class:"text-dimmed"},"·",-1)),t.ciInfo?.buildUrl?(s(),a("a",{key:0,href:t.ciInfo.buildUrl,target:"_blank",class:"text-primary hover:underline"},c(t.ciInfo?.buildNumber?`Build #${t.ciInfo.buildNumber}`:"View build"),9,Dn)):(s(),a("span",Pn,"Build #"+c(t.ciInfo.buildNumber),1))],64)):i("",!0),t.ciInfo?.workflow||t.ciInfo?.jobName?(s(),a(U,{key:3},[l[13]||(l[13]=o("span",{class:"text-dimmed"},"·",-1)),o("span",An,[t.ciInfo?.workflow?(s(),a(U,{key:0},[f(c(t.ciInfo.workflow),1)],64)):i("",!0),t.ciInfo?.workflow&&t.ciInfo?.jobName?(s(),a(U,{key:1},[f(" · ")],64)):i("",!0),t.ciInfo?.jobName?(s(),a(U,{key:2},[f(c(t.ciInfo.jobName),1)],64)):i("",!0)])],64)):i("",!0)]),_:1})):i("",!0),t.browser?(s(),_(I,{key:2,label:"Browser"},{default:u(()=>[r(M,{browser:{...t.browser,viewport:void 0},size:"sm"},null,8,["browser"]),t.browser.viewport?(s(),a("span",Un,[f(c(t.browser.viewport.width)+"×"+c(t.browser.viewport.height)+" ",1),t.browser.deviceScaleFactor&&t.browser.deviceScaleFactor!==1?(s(),a("span",Bn,"@"+c(t.browser.deviceScaleFactor)+"x",1)):i("",!0)])):i("",!0)]),_:1})):i("",!0),r(I,{label:"Links",icon:"i-lucide-link"},{default:u(()=>[t.testCase?.id?(s(),_(G,{key:0,"entity-type":"test_case","entity-id":t.testCase.id,links:t.stableLinks??null,onUpdated:l[0]||(l[0]=O=>n.$emit("refresh"))},null,8,["entity-id","links"])):i("",!0)]),_:1})]),_:1})]),default:u(()=>[o("div",hn,[o("div",xn,[r(d,{status:t.testCase?.status??"",class:"mt-0.5"},null,8,["status"]),o("div",vn,[o("div",_n,[o("h2",kn,c(t.testCase?.title),1),(s(!0),a(U,null,ee(e(h),O=>(s(),_(b,{key:O.label,color:O.color,variant:"subtle",size:"xs",title:O.title},{default:u(()=>[f(c(O.label),1)]),_:2},1032,["color","title"]))),128)),(s(!0),a(U,null,ee(e(w),(O,le)=>(s(),_(b,{key:`ann-${le}`,color:"neutral",variant:"soft",size:"xs",class:"font-mono",title:O.description||O.type},{default:u(()=>[f(" @"+c(O.type),1)]),_:2},1032,["title"]))),128)),r(v,{tags:t.testCase?.tags,meta:t.testCase?.testMeta},null,8,["tags","meta"])]),o("p",bn,[t.testCase?.location?(s(),_(F,{key:0,location:t.testCase.location,"project-key":t.projectKey,"project-name":t.projectName},null,8,["location","project-key","project-name"])):i("",!0),r(L,null,{default:u(()=>[e($)?(s(),a("span",{key:0,class:"text-gray-400",title:new Date(e($)).toLocaleString()}," started "+c(("formatRelativeTime"in n?n.formatRelativeTime:e(Se))(e($))),9,wn)):i("",!0)]),_:1}),t.historicalTiming?(s(),a("span",$n,[l[6]||(l[6]=f(" Avg ",-1)),r(D,{ms:t.historicalTiming.avg},null,8,["ms"]),l[7]||(l[7]=f(" · ",-1)),o("span",{class:X(t.historicalTiming.diff>0?"text-red-600":"text-green-600")},c(t.historicalTiming.diff>0?"+":"")+c(t.historicalTiming.pct)+"% ",3)])):i("",!0)])])]),r(S,null,{default:u(()=>[r(m,{label:"Duration"},{default:u(()=>[r(D,{ms:t.testCase?.duration},null,8,["ms"])]),_:1}),r(m,{label:"Retries",value:t.testCase?.retries??0},null,8,["value"]),r(m,{label:"Steps",value:t.stepsCount},null,8,["value"]),r(m,{label:"Worker",value:t.testCase?.workerIndex??"—"},null,8,["value"])]),_:1}),t.testCase?.slowestStep?(s(),a("div",Cn,[r(V,{name:"i-lucide-zap",class:"size-4 text-amber-500 shrink-0"}),l[10]||(l[10]=o("span",{class:"font-medium text-amber-700 dark:text-amber-300"},"Slowest step:",-1)),o("span",Tn,c(t.testCase.slowestStep),1),t.testCase.slowestStepDuration?(s(),a("span",Sn,[l[8]||(l[8]=f("(",-1)),r(D,{ms:t.testCase.slowestStepDuration},null,8,["ms"]),l[9]||(l[9]=f(")",-1))])):i("",!0)])):i("",!0),(t.testCase?.wastedTimeMs??0)>0?(s(),a("div",In,[r(V,{name:"i-lucide-hourglass",class:"size-4 text-amber-500 shrink-0"}),l[11]||(l[11]=o("span",{class:"font-medium text-amber-700 dark:text-amber-300"},"Wasted in fixed waits:",-1)),r(D,{ms:t.testCase?.wastedTimeMs,class:"text-gray-700 dark:text-gray-300"},null,8,["ms"]),r(B,{topic:"case.wasted-time"})])):i("",!0)])]),_:1})])]),_:1})}}}),Vn=Object.assign(Fn,{__name:"TestCaseSummary"}),En={class:"space-y-3"},On={key:0,class:"flex flex-wrap gap-1.5"},Hn={key:0,class:"text-sm text-gray-600 dark:text-gray-400"},Kn={class:"text-gray-800 dark:text-gray-200"},Wn={key:1},Gn={class:"flex items-center gap-1 flex-wrap"},Jn=re({__name:"TestCaseVerdictCard",props:{testCase:{},history:{},currentId:{}},setup(t){const k=t,h=l=>l==="failed"||l==="timedOut"||l==="timedout",w=C(()=>{const l=k.testCase;if(!l)return[];const d=[];return l.isNewRegression&&d.push({label:"New regression",color:"error",icon:"i-lucide-git-pull-request-arrow",title:"Passed in the baseline run, failing here — likely fallout from the latest change"}),l.isNewFlaky&&d.push({label:"New flaky",color:"warning",icon:"i-lucide-shuffle",title:"Newly started passing only on retry — intermittent failure"}),l.status==="timedOut"&&d.push({label:"Timed out",color:"warning",icon:"i-lucide-timer-off",title:"The test exceeded its timeout"}),(l.retries??0)>0&&d.push({label:l.status==="passed"?`Passed on retry ${l.retries}`:`Retried ${l.retries}×`,color:l.status==="passed"?"warning":"neutral",icon:"i-lucide-refresh-cw",title:`This execution retried ${l.retries} time${l.retries===1?"":"s"}`}),d}),$=C(()=>k.history.slice(0,24).slice().reverse()),g=C(()=>{const l=k.history;if(!l.length)return null;const d=Math.max(0,l.findIndex(b=>b.id===k.currentId));let D=0;for(let b=d;b<l.length&&h(l[b].status);b++)D++;let M=null;for(let b=d+1;b<l.length;b++)if(l[b].status==="passed"){M=l[b];break}return{streak:D,lastPass:M,total:l.length,anchorFailing:h(l[d]?.status)}}),n=l=>({"bg-red-500 hover:bg-red-600":h(l),"bg-green-500 hover:bg-green-600":l==="passed","bg-yellow-500 hover:bg-yellow-600":l==="skipped","bg-gray-400 hover:bg-gray-500":!h(l)&&!["passed","skipped"].includes(l)});return(l,d)=>{const D=ue,M=pe,b=Pe,v=$t,F=pt,L=ye;return s(),_(L,{icon:"i-lucide-clipboard-check","icon-class":"text-amber-500",title:"Verdict",help:"case.verdict"},{default:u(()=>[o("div",En,[e(w).length?(s(),a("div",On,[(s(!0),a(U,null,ee(e(w),m=>(s(),_(M,{key:m.label,color:m.color,variant:"subtle",size:"sm",title:m.title,class:"inline-flex items-center gap-1"},{default:u(()=>[r(D,{name:m.icon,class:"size-3 shrink-0"},null,8,["name"]),f(" "+c(m.label),1)]),_:2},1032,["color","title"]))),128))])):i("",!0),r(F,null,{default:u(()=>[e(g)?(s(),a("p",Hn,[e(g).streak>=1?(s(),a(U,{key:0},[d[1]||(d[1]=f(" Failing for ",-1)),o("strong",Kn,c(e(g).streak),1),f(" consecutive run"+c(e(g).streak===1?"":"s")+". ",1),e(g).lastPass?(s(),a(U,{key:0},[d[0]||(d[0]=f(" Last passed in ",-1)),r(b,{to:`/test-run-cases/${e(g).lastPass.id}`,class:"text-primary hover:underline"},{default:u(()=>[f(" run #"+c(e(g).lastPass.runId),1)]),_:1},8,["to"]),f(" ("+c(("formatRelativeTime"in l?l.formatRelativeTime:e(Se))(e(g).lastPass.startTime))+"). ",1)],64)):e(g).total>1?(s(),a(U,{key:1},[f(" No passing run in the last "+c(e(g).total)+" recorded. ",1)],64)):(s(),a(U,{key:2},[f(" First recorded run of this test. ")],64))],64)):t.testCase?.status==="passed"?(s(),a(U,{key:1},[f(" This execution passed. ")],64)):i("",!0)])):i("",!0),e($).length>1?(s(),a("div",Wn,[d[2]||(d[2]=o("p",{class:"text-xs text-gray-400 mb-1"},"Recent runs (oldest → newest)",-1)),o("div",Gn,[(s(!0),a(U,null,ee(e($),m=>(s(),_(v,{key:m.id,text:`Run #${m.runId}: ${m.status}`},{default:u(()=>[r(b,{to:`/test-run-cases/${m.id}`,class:X(["size-3.5 rounded-sm inline-block transition-colors",[n(m.status),m.id===t.currentId?"ring-2 ring-offset-1 ring-primary":""]])},null,8,["to","class"])]),_:2},1032,["text"]))),128))])])):i("",!0)]),_:1})])]),_:1})}}}),qn=Object.assign(Jn,{__name:"TestCaseVerdictCard"}),Qn={class:"space-y-3"},Zn={class:"space-y-1.5"},Xn={class:"flex items-center gap-2 flex-wrap"},Yn={class:"text-xs text-gray-500"},ea=["title"],ta={class:"text-xs text-gray-500 dark:text-gray-400"},sa={key:0,class:"rounded-lg border border-default bg-elevated/40 p-2.5 space-y-1"},na={class:"flex items-center gap-1.5 flex-wrap"},aa={class:"text-xs text-gray-600 dark:text-gray-400 line-clamp-3"},oa=["title"],ra=re({__name:"FailureClusterCard",props:{cluster:{}},setup(t){const k=t,h=C(()=>Math.max(0,k.cluster.sameRunCaseCount-1)),w=C(()=>{const g=k.cluster.diagnosis;return g&&g.status==="completed"&&g.summary?g:null}),$=g=>g==="high"?"success":g==="medium"?"warning":"neutral";return(g,n)=>{const l=pe,d=Pe,D=ue,M=Ie,b=ye;return s(),_(b,{icon:"i-lucide-layers","icon-class":"text-primary",title:"Failure cluster",help:"cluster.concept"},{actions:u(()=>[t.cluster.isNew?(s(),_(l,{key:0,color:"warning",variant:"subtle",size:"sm"},{default:u(()=>[...n[0]||(n[0]=[f("New",-1)])]),_:1})):i("",!0),t.cluster.status&&t.cluster.status!=="open"?(s(),_(l,{key:1,color:t.cluster.status==="resolved"?"success":"neutral",variant:"subtle",size:"sm",class:"capitalize"},{default:u(()=>[f(c(t.cluster.status),1)]),_:1},8,["color"])):i("",!0)]),default:u(()=>[o("div",Qn,[o("div",Zn,[o("div",Xn,[t.cluster.errorType?(s(),_(l,{key:0,color:e(Hs)(t.cluster.errorType),variant:"soft",size:"sm"},{default:u(()=>[f(c(t.cluster.errorType),1)]),_:1},8,["color"])):i("",!0),o("span",Yn,c(t.cluster.occurrences??0)+" occurrence"+c((t.cluster.occurrences??0)===1?"":"s"),1)]),o("p",{class:"font-mono text-xs text-gray-600 dark:text-gray-400 break-all line-clamp-2",title:t.cluster.signature},c(t.cluster.signature),9,ea)]),o("p",ta,[e(h)>0?(s(),a(U,{key:0},[f(" Matches "+c(e(h))+" other failing "+c(e(h)===1?"test":"tests")+" in this run. ",1)],64)):i("",!0),t.cluster.isNew?(s(),a(U,{key:2},[f("Opened a new cluster in this run.")],64)):(s(),a(U,{key:1},[n[1]||(n[1]=f(" Known failure — first seen in ",-1)),r(d,{to:`/test-runs/${t.cluster.firstSeenRunId}`,class:"text-primary hover:underline"},{default:u(()=>[f(" run #"+c(t.cluster.firstSeenRunId),1)]),_:1},8,["to"]),t.cluster.firstSeenAt?(s(),a(U,{key:0},[f(" ("+c(("formatRelativeTime"in g?g.formatRelativeTime:e(Se))(t.cluster.firstSeenAt))+")",1)],64)):i("",!0),n[2]||(n[2]=f(". ",-1))],64))]),e(w)?(s(),a("div",sa,[o("div",na,[r(D,{name:"i-lucide-sparkles",class:"size-3.5 text-primary shrink-0"}),n[3]||(n[3]=o("span",{class:"text-xs font-medium"},"AI verdict",-1)),e(w).category?(s(),_(l,{key:0,color:"neutral",variant:"soft",size:"xs"},{default:u(()=>[f(c(e(w).category),1)]),_:1})):i("",!0),e(w).confidence?(s(),_(l,{key:1,color:$(e(w).confidence),variant:"soft",size:"xs"},{default:u(()=>[f(c(e(w).confidence)+" confidence ",1)]),_:1},8,["color"])):i("",!0)]),o("p",aa,c(e(w).summary),1)])):i("",!0),t.cluster.triageNote?(s(),a("p",{key:1,class:"text-xs italic text-gray-500 dark:text-gray-400",title:t.cluster.triageNote}," “"+c(t.cluster.triageNote)+"” ",9,oa)):i("",!0),r(M,{to:`/failure-clusters/${t.cluster.id}`,size:"sm",color:"primary",variant:"solid",block:"","trailing-icon":"i-lucide-arrow-right"},{default:u(()=>[...n[4]||(n[4]=[f(" Open cluster investigation ",-1)])]),_:1},8,["to"])])]),_:1})}}}),ia=Object.assign(ra,{__name:"FailureClusterCard"}),la={class:"space-y-3"},ca={class:"text-xs text-gray-400 inline-flex items-center gap-1"},ua={key:0,class:"text-primary"},da={key:0,class:"flex items-center justify-between gap-2 rounded-lg border border-default bg-elevated/40 p-2.5"},ma={class:"inline-flex items-center gap-2 text-sm text-gray-500"},fa={key:1,class:"flex items-center gap-2"},ga={key:2,class:"rounded-lg border border-dashed border-default p-4 text-center text-gray-400"},pa={class:"text-sm inline-flex items-center gap-1 justify-center"},ya={class:"pt-1 text-center"},ha=re({__name:"TestCaseAiCard",props:{testRunsCaseId:{}},setup(t){const k=t,{aiStatus:h}=qs(),w=ts(),$=A(null),g=A(!1),n=A(null),l=A([]),d=A(0),D=A(0),M=A(null),b=A(!1),v=A(!1),F=A(null),L=A(!1),m=A("");async function S(){b.value=!0;try{const y=await $fetch(`/api/test-run-cases/${k.testRunsCaseId}/diagnosis-context`,{query:{format:"json"}});n.value=y.text,l.value=y.sections,d.value=y.tokenEstimate,D.value=y.imageTokenEstimate??0,M.value=y.coverage}catch{n.value=null,l.value=[],d.value=0,M.value=null}finally{b.value=!1}}async function V(){try{const y=await $fetch(`/api/test-run-cases/${k.testRunsCaseId}/diagnosis`);$.value=y.diagnosis}catch{}}yt(()=>{V(),S()});const B=C(()=>{const y=$.value?.details;if(!y)return[];const P=[];if(Array.isArray(y.evidence)&&P.push(...y.evidence),Array.isArray(y.hypotheses))for(const se of y.hypotheses)Array.isArray(se?.evidence)&&P.push(...se.evidence);return Vs(P)});function I(y){F.value=y,v.value=!0}function G(y){m.value=m.value?`${m.value}
1
+ import{_ as Yt}from"./DTrPCv7R.js";import{_ as es}from"./B3G-TIoP.js";import{d as re,o as s,f as _,g as u,i as o,j as r,t as c,c as a,F as U,y as ee,k as e,s as pe,m as f,v as i,D as pt,q as X,p as ue,h as C,G as Pe,_ as Ie,b as ts,B as yt,l as ge,r as A,ab as $e,J as ve,ac as ss,A as Ee,R as Ce,u as ns,a as as,w as mt,e as os,ad as rs,N as is}from"./CNu3kken.js";import{d as ls,e as cs,h as Oe,a as us,b as ds,c as ms,_ as fs,n as gs,o as ps,p as ys,u as hs,f as xs,i as vs,j as _s,k as ks,l as bs,m as ws}from"./CYhm2FBS.js";import{_ as $s}from"./DylyATWU.js";import{_ as Cs}from"./pZbe82l5.js";import{_ as Ts,a as Ss}from"./2yLW7WU0.js";import{_ as Is,a as Rs,b as js,c as Ls}from"./dUPMBJ4f.js";import{_ as Re}from"./CdEzDaDI.js";import{_ as zs}from"./5SkLJHl8.js";import{_ as Ms}from"./7_9fts7T.js";import{_ as ht}from"./Ce_j5NtN.js";import{_ as xt}from"./jR2xm3_t.js";import{_ as vt}from"./DAhv9aNg.js";import{_ as _t,a as kt}from"./CfhOanaF.js";import{_ as Ns}from"./CvVbKrcH.js";import{_ as Ds}from"./B_JSV0yG.js";import{_ as Ps,d as As,e as Us,f as Bs,g as Fs,h as Vs,a as bt,i as Te,b as De,c as Es}from"./9_aJhhcm.js";import{f as Se,m as Os,c as Hs,e as Ks,n as wt,o as He,q as Ke,a as Ws,j as Gs,r as ft}from"./DeewM3Wg.js";import{_ as $t}from"./FJTsZ5Aa.js";import{_ as ye}from"./Ce47NgZw.js";import{_ as Js}from"./B0tmRAhY.js";import{u as qs}from"./CLWMETf9.js";import{_ as We}from"./DNqm5cWU.js";import{_ as Ge}from"./HIGGZ_c-.js";import{_ as Ct}from"./C2_7XZo0.js";import{f as we}from"./D-c8ZSws.js";import{_ as Qs}from"./DJzFYrBt.js";import{_ as Zs}from"./Bb2mDqKr.js";import{_ as Xs}from"./D3SJGdl4.js";import{_ as Ys}from"./DZECGgZm.js";import{_ as en}from"./oSLbl-p0.js";import{_ as tn}from"./CC8wk-N0.js";import{b as sn}from"./D7t0Dn3h.js";import{a as nn,u as gt}from"./DprkT7rM.js";import"./BZFiz2UB.js";import"./BjOFxi54.js";import"./jxc14CqP.js";import"./DFfqRQxk.js";import"./Ya8ZzWuY.js";import"./roaTZkYi.js";import"./C9I1Dp3S.js";import"./BVyjw9Bi.js";import"./CF_eDZHu.js";import"./DZ-KbUZi.js";import"./DYjxDsYC.js";import"./BZOykMLD.js";import"./B3AG2m76.js";import"./D7fxV-UA.js";import"./BjaRappk.js";import"./Bq4_kqIp.js";import"./CmTzxoQt.js";import"./CGDPUNcO.js";import"./Bag08cIY.js";import"./D7W_4Sqc.js";import"./LTMoFvEY.js";const an={class:"text-sm font-semibold truncate min-w-0"},on={class:"flex items-center gap-3 ml-auto max-sm:hidden"},rn={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},ln={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},cn={class:"text-gray-700 dark:text-gray-300"},un={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},dn={class:"text-gray-700 dark:text-gray-300"},mn={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},fn={class:"text-gray-700 dark:text-gray-300"},gn={key:0,class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},pn={class:"text-gray-700 dark:text-gray-300"},yn={class:"@container"},hn={class:"space-y-3"},xn={class:"flex items-start gap-2.5 pr-8"},vn={class:"min-w-0 flex-1"},_n={class:"flex items-center gap-2 flex-wrap"},kn={class:"text-base font-bold truncate max-w-full"},bn={class:"text-xs text-gray-500 mt-0.5 flex items-center gap-x-2 gap-y-0.5 flex-wrap"},wn=["title"],$n={key:1},Cn={key:0,class:"flex items-center gap-2 text-sm"},Tn={class:"text-gray-700 dark:text-gray-300 truncate"},Sn={key:0,class:"text-gray-500 shrink-0"},In={key:1,class:"flex items-center gap-1.5 text-sm"},Rn={key:0,class:"font-medium"},jn=["title"],Ln={key:2,class:"text-muted"},zn=["title"],Mn={key:0,class:"rounded-full border border-default px-2 py-0.5 text-xs bg-elevated/60"},Nn={key:1},Dn=["href"],Pn={key:1},An={class:"text-muted"},Un={key:0,class:"tabular-nums text-muted"},Bn={key:0,class:"text-dimmed"},Fn=re({__name:"TestCaseSummary",props:{testCase:{},scmInfo:{},ciInfo:{},browser:{},environment:{},stepsCount:{},historicalTiming:{},stableLinks:{},projectKey:{},projectName:{}},emits:["refresh"],setup(t){const k=t,h=C(()=>{const n=k.testCase;if(!n)return[];const l=[];return n.isNewRegression&&l.push({label:"New regression",color:"error",title:"Passed in the baseline run, failing here"}),n.isNewFlaky&&l.push({label:"New flaky",color:"warning",title:"Newly started passing only on retry"}),n.status==="passed"&&(n.retries??0)>0&&l.push({label:"Passed on retry",color:"warning",title:"This test failed then passed on a retry"}),l}),w=C(()=>(k.testCase?.testAnnotations??[]).filter(n=>!Os(n.type))),$=C(()=>k.testCase?.startedAt??null),g=C(()=>!!(k.ciInfo||k.environment));return(n,l)=>{const d=Is,D=Re,M=zs,b=pe,v=Ms,F=ht,L=pt,m=xt,S=vt,V=ue,B=_t,I=js,G=Ns,J=Rs,N=Ds,ne=Ps;return s(),_(ne,{"storage-key":"test-case"},{folded:u(()=>[r(d,{status:t.testCase?.status??"",size:"sm"},null,8,["status"]),o("span",an,c(t.testCase?.title),1),o("div",on,[o("span",rn,[l[1]||(l[1]=f(" Dur: ",-1)),r(D,{ms:t.testCase?.duration,class:"font-bold text-gray-700 dark:text-gray-300"},null,8,["ms"])]),o("span",ln,[l[2]||(l[2]=f(" Retries: ",-1)),o("strong",cn,c(t.testCase?.retries??0),1)]),o("span",un,[l[3]||(l[3]=f(" Steps: ",-1)),o("strong",dn,c(t.stepsCount),1)]),o("span",mn,[l[4]||(l[4]=f(" Worker: ",-1)),o("strong",fn,c(t.testCase?.workerIndex??"—"),1)]),t.testCase?.shardIndex!=null?(s(),a("span",gn,[l[5]||(l[5]=f(" Shard: ",-1)),o("strong",pn,c(t.testCase.shardIndex),1)])):i("",!0)]),t.browser?(s(),_(M,{key:0,browser:t.browser,size:"sm",class:"shrink-0 max-sm:hidden"},null,8,["browser"])):i("",!0)]),default:u(()=>[o("div",yn,[r(N,{class:"shadow-xs",ui:{footer:"px-4 py-2.5 sm:px-4 bg-muted/30"}},{footer:u(()=>[r(J,null,{default:u(()=>[t.scmInfo?(s(),_(I,{key:0,label:"Source",icon:"i-lucide-git-branch"},{default:u(()=>[t.scmInfo.branch?(s(),a("span",Rn,c(t.scmInfo.branch),1)):i("",!0),t.scmInfo.commit?(s(),a("code",{key:1,class:"text-xs font-mono bg-zinc-100 dark:bg-zinc-800 px-1 py-0.5 rounded",title:t.scmInfo.commit},c(t.scmInfo.commit.length>=8?t.scmInfo.commit.substring(0,8):t.scmInfo.commit),9,jn)):i("",!0),t.scmInfo.author?(s(),a("span",Ln,c(t.scmInfo.author),1)):i("",!0),t.scmInfo.commitMessage?(s(),a("span",{key:3,class:"text-xs text-dimmed truncate max-w-[40ch]",title:t.scmInfo.commitMessage},c(t.scmInfo.commitMessage),9,zn)):i("",!0)]),_:1})):i("",!0),e(g)?(s(),_(I,{key:1,label:"CI & environment",icon:"i-lucide-cloud",help:"run.ci-env"},{default:u(()=>[t.environment?(s(),a("span",Mn,c(t.environment),1)):i("",!0),t.ciInfo?.provider?(s(),a("span",Nn,c(t.ciInfo.provider),1)):i("",!0),t.ciInfo?.buildNumber||t.ciInfo?.buildUrl?(s(),a(U,{key:2},[l[12]||(l[12]=o("span",{class:"text-dimmed"},"·",-1)),t.ciInfo?.buildUrl?(s(),a("a",{key:0,href:t.ciInfo.buildUrl,target:"_blank",class:"text-primary hover:underline"},c(t.ciInfo?.buildNumber?`Build #${t.ciInfo.buildNumber}`:"View build"),9,Dn)):(s(),a("span",Pn,"Build #"+c(t.ciInfo.buildNumber),1))],64)):i("",!0),t.ciInfo?.workflow||t.ciInfo?.jobName?(s(),a(U,{key:3},[l[13]||(l[13]=o("span",{class:"text-dimmed"},"·",-1)),o("span",An,[t.ciInfo?.workflow?(s(),a(U,{key:0},[f(c(t.ciInfo.workflow),1)],64)):i("",!0),t.ciInfo?.workflow&&t.ciInfo?.jobName?(s(),a(U,{key:1},[f(" · ")],64)):i("",!0),t.ciInfo?.jobName?(s(),a(U,{key:2},[f(c(t.ciInfo.jobName),1)],64)):i("",!0)])],64)):i("",!0)]),_:1})):i("",!0),t.browser?(s(),_(I,{key:2,label:"Browser"},{default:u(()=>[r(M,{browser:{...t.browser,viewport:void 0},size:"sm"},null,8,["browser"]),t.browser.viewport?(s(),a("span",Un,[f(c(t.browser.viewport.width)+"×"+c(t.browser.viewport.height)+" ",1),t.browser.deviceScaleFactor&&t.browser.deviceScaleFactor!==1?(s(),a("span",Bn,"@"+c(t.browser.deviceScaleFactor)+"x",1)):i("",!0)])):i("",!0)]),_:1})):i("",!0),r(I,{label:"Links",icon:"i-lucide-link"},{default:u(()=>[t.testCase?.id?(s(),_(G,{key:0,"entity-type":"test_case","entity-id":t.testCase.id,links:t.stableLinks??null,onUpdated:l[0]||(l[0]=O=>n.$emit("refresh"))},null,8,["entity-id","links"])):i("",!0)]),_:1})]),_:1})]),default:u(()=>[o("div",hn,[o("div",xn,[r(d,{status:t.testCase?.status??"",class:"mt-0.5"},null,8,["status"]),o("div",vn,[o("div",_n,[o("h2",kn,c(t.testCase?.title),1),(s(!0),a(U,null,ee(e(h),O=>(s(),_(b,{key:O.label,color:O.color,variant:"subtle",size:"xs",title:O.title},{default:u(()=>[f(c(O.label),1)]),_:2},1032,["color","title"]))),128)),(s(!0),a(U,null,ee(e(w),(O,le)=>(s(),_(b,{key:`ann-${le}`,color:"neutral",variant:"soft",size:"xs",class:"font-mono",title:O.description||O.type},{default:u(()=>[f(" @"+c(O.type),1)]),_:2},1032,["title"]))),128)),r(v,{tags:t.testCase?.tags,meta:t.testCase?.testMeta},null,8,["tags","meta"])]),o("p",bn,[t.testCase?.location?(s(),_(F,{key:0,location:t.testCase.location,"project-key":t.projectKey,"project-name":t.projectName},null,8,["location","project-key","project-name"])):i("",!0),r(L,null,{default:u(()=>[e($)?(s(),a("span",{key:0,class:"text-gray-400",title:new Date(e($)).toLocaleString()}," started "+c(("formatRelativeTime"in n?n.formatRelativeTime:e(Se))(e($))),9,wn)):i("",!0)]),_:1}),t.historicalTiming?(s(),a("span",$n,[l[6]||(l[6]=f(" Avg ",-1)),r(D,{ms:t.historicalTiming.avg},null,8,["ms"]),l[7]||(l[7]=f(" · ",-1)),o("span",{class:X(t.historicalTiming.diff>0?"text-red-600":"text-green-600")},c(t.historicalTiming.diff>0?"+":"")+c(t.historicalTiming.pct)+"% ",3)])):i("",!0)])])]),r(S,null,{default:u(()=>[r(m,{label:"Duration"},{default:u(()=>[r(D,{ms:t.testCase?.duration},null,8,["ms"])]),_:1}),r(m,{label:"Retries",value:t.testCase?.retries??0},null,8,["value"]),r(m,{label:"Steps",value:t.stepsCount},null,8,["value"]),r(m,{label:"Worker",value:t.testCase?.workerIndex??"—"},null,8,["value"])]),_:1}),t.testCase?.slowestStep?(s(),a("div",Cn,[r(V,{name:"i-lucide-zap",class:"size-4 text-amber-500 shrink-0"}),l[10]||(l[10]=o("span",{class:"font-medium text-amber-700 dark:text-amber-300"},"Slowest step:",-1)),o("span",Tn,c(t.testCase.slowestStep),1),t.testCase.slowestStepDuration?(s(),a("span",Sn,[l[8]||(l[8]=f("(",-1)),r(D,{ms:t.testCase.slowestStepDuration},null,8,["ms"]),l[9]||(l[9]=f(")",-1))])):i("",!0)])):i("",!0),(t.testCase?.wastedTimeMs??0)>0?(s(),a("div",In,[r(V,{name:"i-lucide-hourglass",class:"size-4 text-amber-500 shrink-0"}),l[11]||(l[11]=o("span",{class:"font-medium text-amber-700 dark:text-amber-300"},"Wasted in fixed waits:",-1)),r(D,{ms:t.testCase?.wastedTimeMs,class:"text-gray-700 dark:text-gray-300"},null,8,["ms"]),r(B,{topic:"case.wasted-time"})])):i("",!0)])]),_:1})])]),_:1})}}}),Vn=Object.assign(Fn,{__name:"TestCaseSummary"}),En={class:"space-y-3"},On={key:0,class:"flex flex-wrap gap-1.5"},Hn={key:0,class:"text-sm text-gray-600 dark:text-gray-400"},Kn={class:"text-gray-800 dark:text-gray-200"},Wn={key:1},Gn={class:"flex items-center gap-1 flex-wrap"},Jn=re({__name:"TestCaseVerdictCard",props:{testCase:{},history:{},currentId:{}},setup(t){const k=t,h=l=>l==="failed"||l==="timedOut"||l==="timedout",w=C(()=>{const l=k.testCase;if(!l)return[];const d=[];return l.isNewRegression&&d.push({label:"New regression",color:"error",icon:"i-lucide-git-pull-request-arrow",title:"Passed in the baseline run, failing here — likely fallout from the latest change"}),l.isNewFlaky&&d.push({label:"New flaky",color:"warning",icon:"i-lucide-shuffle",title:"Newly started passing only on retry — intermittent failure"}),l.status==="timedOut"&&d.push({label:"Timed out",color:"warning",icon:"i-lucide-timer-off",title:"The test exceeded its timeout"}),(l.retries??0)>0&&d.push({label:l.status==="passed"?`Passed on retry ${l.retries}`:`Retried ${l.retries}×`,color:l.status==="passed"?"warning":"neutral",icon:"i-lucide-refresh-cw",title:`This execution retried ${l.retries} time${l.retries===1?"":"s"}`}),d}),$=C(()=>k.history.slice(0,24).slice().reverse()),g=C(()=>{const l=k.history;if(!l.length)return null;const d=Math.max(0,l.findIndex(b=>b.id===k.currentId));let D=0;for(let b=d;b<l.length&&h(l[b].status);b++)D++;let M=null;for(let b=d+1;b<l.length;b++)if(l[b].status==="passed"){M=l[b];break}return{streak:D,lastPass:M,total:l.length,anchorFailing:h(l[d]?.status)}}),n=l=>({"bg-red-500 hover:bg-red-600":h(l),"bg-green-500 hover:bg-green-600":l==="passed","bg-yellow-500 hover:bg-yellow-600":l==="skipped","bg-gray-400 hover:bg-gray-500":!h(l)&&!["passed","skipped"].includes(l)});return(l,d)=>{const D=ue,M=pe,b=Pe,v=$t,F=pt,L=ye;return s(),_(L,{icon:"i-lucide-clipboard-check","icon-class":"text-amber-500",title:"Verdict",help:"case.verdict"},{default:u(()=>[o("div",En,[e(w).length?(s(),a("div",On,[(s(!0),a(U,null,ee(e(w),m=>(s(),_(M,{key:m.label,color:m.color,variant:"subtle",size:"sm",title:m.title,class:"inline-flex items-center gap-1"},{default:u(()=>[r(D,{name:m.icon,class:"size-3 shrink-0"},null,8,["name"]),f(" "+c(m.label),1)]),_:2},1032,["color","title"]))),128))])):i("",!0),r(F,null,{default:u(()=>[e(g)?(s(),a("p",Hn,[e(g).streak>=1?(s(),a(U,{key:0},[d[1]||(d[1]=f(" Failing for ",-1)),o("strong",Kn,c(e(g).streak),1),f(" consecutive run"+c(e(g).streak===1?"":"s")+". ",1),e(g).lastPass?(s(),a(U,{key:0},[d[0]||(d[0]=f(" Last passed in ",-1)),r(b,{to:`/test-run-cases/${e(g).lastPass.id}`,class:"text-primary hover:underline"},{default:u(()=>[f(" run #"+c(e(g).lastPass.runId),1)]),_:1},8,["to"]),f(" ("+c(("formatRelativeTime"in l?l.formatRelativeTime:e(Se))(e(g).lastPass.startTime))+"). ",1)],64)):e(g).total>1?(s(),a(U,{key:1},[f(" No passing run in the last "+c(e(g).total)+" recorded. ",1)],64)):(s(),a(U,{key:2},[f(" First recorded run of this test. ")],64))],64)):t.testCase?.status==="passed"?(s(),a(U,{key:1},[f(" This execution passed. ")],64)):i("",!0)])):i("",!0),e($).length>1?(s(),a("div",Wn,[d[2]||(d[2]=o("p",{class:"text-xs text-gray-400 mb-1"},"Recent runs (oldest → newest)",-1)),o("div",Gn,[(s(!0),a(U,null,ee(e($),m=>(s(),_(v,{key:m.id,text:`Run #${m.runId}: ${m.status}`},{default:u(()=>[r(b,{to:`/test-run-cases/${m.id}`,class:X(["size-3.5 rounded-sm inline-block transition-colors",[n(m.status),m.id===t.currentId?"ring-2 ring-offset-1 ring-primary":""]])},null,8,["to","class"])]),_:2},1032,["text"]))),128))])])):i("",!0)]),_:1})])]),_:1})}}}),qn=Object.assign(Jn,{__name:"TestCaseVerdictCard"}),Qn={class:"space-y-3"},Zn={class:"space-y-1.5"},Xn={class:"flex items-center gap-2 flex-wrap"},Yn={class:"text-xs text-gray-500"},ea=["title"],ta={class:"text-xs text-gray-500 dark:text-gray-400"},sa={key:0,class:"rounded-lg border border-default bg-elevated/40 p-2.5 space-y-1"},na={class:"flex items-center gap-1.5 flex-wrap"},aa={class:"text-xs text-gray-600 dark:text-gray-400 line-clamp-3"},oa=["title"],ra=re({__name:"FailureClusterCard",props:{cluster:{}},setup(t){const k=t,h=C(()=>Math.max(0,k.cluster.sameRunCaseCount-1)),w=C(()=>{const g=k.cluster.diagnosis;return g&&g.status==="completed"&&g.summary?g:null}),$=g=>g==="high"?"success":g==="medium"?"warning":"neutral";return(g,n)=>{const l=pe,d=Pe,D=ue,M=Ie,b=ye;return s(),_(b,{icon:"i-lucide-layers","icon-class":"text-primary",title:"Failure cluster",help:"cluster.concept"},{actions:u(()=>[t.cluster.isNew?(s(),_(l,{key:0,color:"warning",variant:"subtle",size:"sm"},{default:u(()=>[...n[0]||(n[0]=[f("New",-1)])]),_:1})):i("",!0),t.cluster.status&&t.cluster.status!=="open"?(s(),_(l,{key:1,color:t.cluster.status==="resolved"?"success":"neutral",variant:"subtle",size:"sm",class:"capitalize"},{default:u(()=>[f(c(t.cluster.status),1)]),_:1},8,["color"])):i("",!0)]),default:u(()=>[o("div",Qn,[o("div",Zn,[o("div",Xn,[t.cluster.errorType?(s(),_(l,{key:0,color:e(Hs)(t.cluster.errorType),variant:"soft",size:"sm"},{default:u(()=>[f(c(t.cluster.errorType),1)]),_:1},8,["color"])):i("",!0),o("span",Yn,c(t.cluster.occurrences??0)+" occurrence"+c((t.cluster.occurrences??0)===1?"":"s"),1)]),o("p",{class:"font-mono text-xs text-gray-600 dark:text-gray-400 break-all line-clamp-2",title:t.cluster.signature},c(t.cluster.signature),9,ea)]),o("p",ta,[e(h)>0?(s(),a(U,{key:0},[f(" Matches "+c(e(h))+" other failing "+c(e(h)===1?"test":"tests")+" in this run. ",1)],64)):i("",!0),t.cluster.isNew?(s(),a(U,{key:2},[f("Opened a new cluster in this run.")],64)):(s(),a(U,{key:1},[n[1]||(n[1]=f(" Known failure — first seen in ",-1)),r(d,{to:`/test-runs/${t.cluster.firstSeenRunId}`,class:"text-primary hover:underline"},{default:u(()=>[f(" run #"+c(t.cluster.firstSeenRunId),1)]),_:1},8,["to"]),t.cluster.firstSeenAt?(s(),a(U,{key:0},[f(" ("+c(("formatRelativeTime"in g?g.formatRelativeTime:e(Se))(t.cluster.firstSeenAt))+")",1)],64)):i("",!0),n[2]||(n[2]=f(". ",-1))],64))]),e(w)?(s(),a("div",sa,[o("div",na,[r(D,{name:"i-lucide-sparkles",class:"size-3.5 text-primary shrink-0"}),n[3]||(n[3]=o("span",{class:"text-xs font-medium"},"AI verdict",-1)),e(w).category?(s(),_(l,{key:0,color:"neutral",variant:"soft",size:"xs"},{default:u(()=>[f(c(e(w).category),1)]),_:1})):i("",!0),e(w).confidence?(s(),_(l,{key:1,color:$(e(w).confidence),variant:"soft",size:"xs"},{default:u(()=>[f(c(e(w).confidence)+" confidence ",1)]),_:1},8,["color"])):i("",!0)]),o("p",aa,c(e(w).summary),1)])):i("",!0),t.cluster.triageNote?(s(),a("p",{key:1,class:"text-xs italic text-gray-500 dark:text-gray-400",title:t.cluster.triageNote}," “"+c(t.cluster.triageNote)+"” ",9,oa)):i("",!0),r(M,{to:`/failure-clusters/${t.cluster.id}`,size:"sm",color:"primary",variant:"solid",block:"","trailing-icon":"i-lucide-arrow-right"},{default:u(()=>[...n[4]||(n[4]=[f(" Open cluster investigation ",-1)])]),_:1},8,["to"])])]),_:1})}}}),ia=Object.assign(ra,{__name:"FailureClusterCard"}),la={class:"space-y-3"},ca={class:"text-xs text-gray-400 inline-flex items-center gap-1"},ua={key:0,class:"text-primary"},da={key:0,class:"flex items-center justify-between gap-2 rounded-lg border border-default bg-elevated/40 p-2.5"},ma={class:"inline-flex items-center gap-2 text-sm text-gray-500"},fa={key:1,class:"flex items-center gap-2"},ga={key:2,class:"rounded-lg border border-dashed border-default p-4 text-center text-gray-400"},pa={class:"text-sm inline-flex items-center gap-1 justify-center"},ya={class:"pt-1 text-center"},ha=re({__name:"TestCaseAiCard",props:{testRunsCaseId:{}},setup(t){const k=t,{aiStatus:h}=qs(),w=ts(),$=A(null),g=A(!1),n=A(null),l=A([]),d=A(0),D=A(0),M=A(null),b=A(!1),v=A(!1),F=A(null),L=A(!1),m=A("");async function S(){b.value=!0;try{const y=await $fetch(`/api/test-run-cases/${k.testRunsCaseId}/diagnosis-context`,{query:{format:"json"}});n.value=y.text,l.value=y.sections,d.value=y.tokenEstimate,D.value=y.imageTokenEstimate??0,M.value=y.coverage}catch{n.value=null,l.value=[],d.value=0,M.value=null}finally{b.value=!1}}async function V(){try{const y=await $fetch(`/api/test-run-cases/${k.testRunsCaseId}/diagnosis`);$.value=y.diagnosis}catch{}}yt(()=>{V(),S()});const B=C(()=>{const y=$.value?.details;if(!y)return[];const P=[];if(Array.isArray(y.evidence)&&P.push(...y.evidence),Array.isArray(y.hypotheses))for(const se of y.hypotheses)Array.isArray(se?.evidence)&&P.push(...se.evidence);return Vs(P)});function I(y){F.value=y,v.value=!0}function G(y){m.value=m.value?`${m.value}
2
2
 
3
3
  ${y}`:y,L.value=!0}async function J(y=!1){g.value=!0;try{const P=y?`/api/test-run-cases/${k.testRunsCaseId}/diagnose?force=true`:`/api/test-run-cases/${k.testRunsCaseId}/diagnose`,se=m.value.trim()?{additionalContext:m.value.trim()}:void 0;$.value=await $fetch(P,{method:"POST",body:se})}catch(P){const se=P?.statusCode;se===409?(w.add({title:"Diagnosis already running",color:"warning"}),V()):se===503?w.add({title:"AI diagnosis is not configured",color:"warning"}):w.add({title:"Diagnosis failed",description:Ks(P),color:"error"})}finally{g.value=!1}}function N(y){return y.status==="running"&&Date.now()-new Date(y.updatedAt).getTime()>300*1e3}const ne=C(()=>$.value&&($.value.status==="completed"||$.value.status==="failed")),O=C(()=>!$.value||$.value.status==="failed"||$.value.status==="running"&&N($.value)),le=C(()=>$.value?.status==="running"&&!N($.value)&&!g.value);return(y,P)=>{const se=Fs,x=ue,T=As,K=Js,q=Ie,Q=Us,te=_t,H=Bs,Z=Pe,Y=ye;return s(),_(Y,{icon:"i-lucide-sparkles","icon-class":"text-primary",title:"AI diagnosis",help:"case.ai"},{actions:u(()=>[r(se,{"context-endpoint":`/api/test-run-cases/${t.testRunsCaseId}/diagnosis-context`},null,8,["context-endpoint"])]),default:u(()=>[o("div",la,[o("p",ca,[r(x,{name:"i-lucide-triangle-alert",class:"size-3 shrink-0"}),P[6]||(P[6]=f(" AI-generated — verify before applying. ",-1))]),e(h)?.configured?(s(),_(T,{key:0,sections:e(l),"not-applicable":e(M)?.notApplicable,"token-estimate":e(d),loading:e(b),onViewSection:I,onOpen:P[0]||(P[0]=ae=>v.value=!0)},null,8,["sections","not-applicable","token-estimate","loading"])):i("",!0),e(h)?.configured?(s(),a(U,{key:1},[o("div",null,[o("button",{class:"flex items-center gap-1.5 text-xs font-medium text-gray-500 hover:text-gray-700 dark:hover:text-gray-300",onClick:P[1]||(P[1]=ae=>L.value=!e(L))},[r(x,{name:e(L)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3.5"},null,8,["name"]),P[7]||(P[7]=f(" Additional context ",-1)),e(m).trim()?(s(),a("span",ua,"(1)")):i("",!0)]),e(L)?(s(),_(K,{key:0,modelValue:e(m),"onUpdate:modelValue":P[2]||(P[2]=ae=>ge(m)?m.value=ae:null),placeholder:"e.g. We deployed a new auth middleware yesterday…",rows:3,class:"w-full text-sm mt-1"},null,8,["modelValue"])):i("",!0)]),e(le)?(s(),a("div",da,[o("span",ma,[r(x,{name:"i-lucide-loader-circle",class:"size-4 animate-spin text-primary shrink-0"}),P[8]||(P[8]=f(" Diagnosis in progress… ",-1))]),r(q,{size:"xs",color:"neutral",variant:"outline",icon:"i-lucide-refresh-cw",loading:e(g),onClick:V},{default:u(()=>[...P[9]||(P[9]=[f(" Refresh ",-1)])]),_:1},8,["loading"])])):(s(),a("div",fa,[e(O)?(s(),_(q,{key:0,icon:"i-lucide-sparkles",size:"sm",color:"primary",variant:"solid",loading:e(g),onClick:P[3]||(P[3]=ae=>J(e($)?.status==="running"))},{default:u(()=>[f(c(e($)?.status==="running"?"Restart diagnosis":"Diagnose with AI"),1)]),_:1},8,["loading"])):e($)?.status==="completed"?(s(),_(q,{key:1,icon:"i-lucide-refresh-cw",size:"xs",color:"primary",variant:"soft",loading:e(g),onClick:P[4]||(P[4]=ae=>J(!0))},{default:u(()=>[...P[10]||(P[10]=[f(" Re-diagnose ",-1)])]),_:1},8,["loading"])):i("",!0)])),e(ne)?(s(),_(Q,{key:2,diagnosis:e($),onViewSection:I,onPrefillContext:G},null,8,["diagnosis"])):i("",!0)],64)):(s(),a("div",ga,[o("p",pa,[P[11]||(P[11]=f(" AI diagnosis is not configured ",-1)),r(te,{topic:"cluster.ai-setup"})]),P[13]||(P[13]=o("p",{class:"text-xs mt-2 max-w-xs mx-auto"},[f(" Use "),o("strong",null,"Export → AI context"),f(" in the header to grab the full evidence bundle for your own AI tool, or configure a provider. ")],-1)),r(q,{to:"/settings/ai",size:"xs",color:"neutral",variant:"outline",class:"mt-3"},{default:u(()=>[...P[12]||(P[12]=[f(" Configure in Settings ",-1)])]),_:1})])),r(H,{open:e(v),sections:e(l),"token-estimate":e(d),"image-token-estimate":e(D),loading:e(b),"focus-section":e(F),"cited-sections":e(B),"not-applicable-sections":e(M)?.notApplicable,"onUpdate:open":P[5]||(P[5]=ae=>{v.value=ae,ae||(F.value=null)}),onRefresh:S},null,8,["open","sections","token-estimate","image-token-estimate","loading","focus-section","cited-sections","not-applicable-sections"]),o("div",ya,[r(Z,{to:"/mcp",class:"inline-flex items-center gap-1 text-xs text-gray-400 hover:text-primary transition-colors"},{default:u(()=>[r(x,{name:"i-lucide-bot",class:"size-3"}),P[14]||(P[14]=f(" Query this failure from your AI agent via MCP ",-1))]),_:1})])])]),_:1})}}}),xa=Object.assign(ha,{__name:"TestCaseAiCard"});function Tt(t,k,h){const w=A(null),$=A(!1),g=A(!1);async function n(){const l=t();if(!(!l||!$e(k)||$.value)){g.value=!0,$.value=!0;try{w.value=await $fetch(l)}catch{w.value=null}finally{$.value=!1}}}return yt(()=>{ve(()=>$e(k),l=>{l&&(h||g.value)&&!w.value&&n()},{immediate:!0})}),{data:w,pending:$,load:n}}function va(t,k,h,w={}){return Tt(()=>{const $=$e(t),g=$e(k);return $&&g?`/api/test-runs/${$}/cases/${g}/trace-stacks`:null},h,w.auto??!0)}function _a(t,k,h,w={}){return Tt(()=>{const $=$e(t),g=$e(k);return $&&g?`/api/test-runs/${$}/cases/${g}/trace-network`:null},h,w.auto??!1)}const ka={class:"max-h-[32rem] overflow-y-auto"},ba={key:0,class:"mb-2 flex items-center gap-1.5 text-xs text-gray-400 dark:text-gray-500"},wa={key:0,class:"mt-3 flex items-center gap-1.5 text-xs text-gray-400 dark:text-gray-500"},$a=re({__name:"TestSourceCard",props:{frames:{},testSource:{},runId:{},testRunsCaseId:{},hasTrace:{type:Boolean},projectKey:{},projectName:{},storageKey:{}},setup(t,{expose:k}){const h=t,{data:w,pending:$}=va(()=>h.runId,()=>h.testRunsCaseId,()=>h.hasTrace,{auto:!0}),g=C(()=>w.value?.status==="ok"?w.value.frames??[]:[]),n=C(()=>g.value.length>0),l=C(()=>h.frames?.length??0),d=C(()=>l.value>0||!!h.testSource),D=A(null),M=C({get:()=>D.value??(n.value?"trace":"captured"),set:L=>{D.value=L}}),b=C(()=>[{label:`Full stack (${g.value.length})`,value:"trace"},{label:`Captured (${l.value||1})`,value:"captured"}]),v=C(()=>M.value==="trace"&&n.value?g.value.length:l.value||null),F=A(null);return k({reveal:()=>F.value?.reveal()}),(L,m)=>{const S=We,V=ue,B=ls,I=cs,G=bt,J=Ge,N=kt,ne=Oe;return s(),_(ne,{ref_key:"card",ref:F,"storage-key":t.storageKey,icon:"i-lucide-code",count:e(v),title:"Test source",help:"case.test-source"},ss({folded:u(()=>[e(M)==="trace"&&e(n)?(s(),a(U,{key:0},[f(" Full call stack from the trace"+c(e(w)?.hasSources===!1?" (recorded without sources)":""),1)],64)):e(l)>1?(s(),a(U,{key:1},[f(" The failing line and "+c(e(l)-1)+" caller"+c(e(l)-1===1?"":"s"),1)],64)):(s(),a(U,{key:2},[f("Source around the failing assertion")],64))]),default:u(()=>[o("div",ka,[e(M)==="trace"&&e(n)?(s(),a(U,{key:0},[e(w)?.hasSources===!1?(s(),a("p",ba,[r(V,{name:"i-lucide-info",class:"size-3.5 shrink-0"}),m[1]||(m[1]=f(" Trace recorded without sources — frame list only. ",-1))])):i("",!0),r(B,{frames:e(g),"project-key":t.projectKey,"project-name":t.projectName},null,8,["frames","project-key","project-name"])],64)):(s(),a(U,{key:1},[t.frames?.length?(s(),_(I,{key:0,frames:t.frames,"project-key":t.projectKey,"project-name":t.projectName},null,8,["frames","project-key","project-name"])):t.testSource?(s(),_(G,{key:1,text:"```typescript\n"+t.testSource+"\n```"},null,8,["text"])):t.hasTrace&&e($)?(s(),_(J,{key:2,text:"Loading call stack from trace…"})):i("",!0)],64))]),t.hasTrace?i("",!0):(s(),a("p",wa,[r(V,{name:"i-lucide-info",class:"size-3.5 shrink-0"}),o("span",null,[m[3]||(m[3]=f(" Want to go deeper? Record traces (",-1)),m[4]||(m[4]=o("code",null,"trace: 'retain-on-failure'",-1)),m[5]||(m[5]=f(") to see the full call stack with source here. ",-1)),r(N,{to:"ui-overview#trace-powered-deep-views","no-icon":"",class:"underline"},{default:u(()=>[...m[2]||(m[2]=[f("Learn more",-1)])]),_:1})])]))]),_:2},[e(n)&&e(d)?{name:"actions",fn:u(()=>[r(S,{modelValue:e(M),"onUpdate:modelValue":m[0]||(m[0]=O=>ge(M)?M.value=O:null),items:e(b),size:"xs",variant:"link",ui:{list:"gap-2",trigger:"px-1.5"}},null,8,["modelValue","items"])]),key:"0"}:void 0]),1032,["storage-key","count"])}}}),Ca=Object.assign($a,{__name:"TestSourceCard"}),Ta={class:"space-y-3"},Sa={class:"divide-y divide-default"},Ia={class:"flex items-center gap-2 min-w-0"},Ra={class:"text-sm truncate"},ja={key:0,class:"text-xs text-gray-400 shrink-0"},La=re({__name:"TestCaseEvidenceCard",props:{attachments:{},traces:{},storageKey:{}},setup(t,{expose:k}){const h=t,w=Ee(),$=C(()=>h.attachments.filter(v=>Te(v.path,v.contentType)).length),g=C(()=>h.attachments.filter(v=>De(v.path,v.contentType)).length),n=C(()=>h.attachments.filter(v=>!Te(v.path,v.contentType)&&!De(v.path,v.contentType))),l=C(()=>$.value+g.value+h.traces.length+n.value.length),d=C(()=>{const v=[];return $.value&&v.push(`${$.value} screenshot${$.value===1?"":"s"}`),g.value&&v.push(`${g.value} video${g.value===1?"":"s"}`),h.traces.length&&v.push(`${h.traces.length} trace${h.traces.length===1?"":"s"}`),n.value.length&&v.push(`${n.value.length} file${n.value.length===1?"":"s"}`),v.join(" · ")||"No evidence captured"});function D(v,F){return wt(v,F,w.app?.baseURL)}function M(v){return v.split("/").pop()||v}const b=A(null);return k({reveal:()=>b.value?.reveal?.()}),(v,F)=>{const L=us,m=ds,S=ms,V=ue,B=Ie,I=fs,G=Ct,J=Oe;return s(),_(J,{ref_key:"card",ref:b,"storage-key":t.storageKey,icon:"i-lucide-camera",title:"Failure evidence",count:e(l),help:"case.evidence"},{folded:u(()=>[f(c(e(d)),1)]),default:u(()=>[o("div",Ta,[r(L,{attachments:t.attachments},null,8,["attachments"]),r(m,{attachments:t.attachments},null,8,["attachments"]),r(S,{traces:t.traces},null,8,["traces"]),e(n).length?(s(),_(I,{key:0,icon:"i-lucide-paperclip",label:"Attachments",count:e(n).length,collapsible:!1},{default:u(()=>[o("div",Sa,[(s(!0),a(U,null,ee(e(n),N=>(s(),a("div",{key:N.id,class:"flex items-center justify-between gap-2 px-3 py-2"},[o("div",Ia,[r(V,{name:"i-lucide-file",class:"size-4 text-gray-400 shrink-0"}),o("span",Ra,c(M(N.path)),1),N.size?(s(),a("span",ja,c(("formatBytes"in v?v.formatBytes:e(we))(N.size)),1)):i("",!0)]),r(B,{to:D(N.path,N.contentType),target:"_blank",icon:"i-lucide-external-link",size:"xs",color:"neutral",variant:"soft",label:"Open"},null,8,["to"])]))),128))])]),_:1},8,["count"])):i("",!0),e(l)===0?(s(),_(G,{key:1,icon:"i-lucide-camera-off",title:"No screenshots, video or traces captured",text:"Evidence comes from Playwright's own capture settings — set trace, screenshot and video in your config (trace: 'retain-on-failure' is the usual starting point).",doc:"reporter"})):i("",!0)])]),_:1},8,["storage-key","count"])}}}),za=Object.assign(La,{__name:"TestCaseEvidenceCard"}),Ma={class:"space-y-1 max-h-80 overflow-y-auto"},Na={class:"min-w-0 flex-1"},Da={class:"flex items-center gap-2"},Pa={class:"truncate"},Aa={key:0,class:"text-xs text-gray-400 mt-0.5 ml-0"},Ua=re({__name:"TestCaseConsoleCard",props:{entries:{}},setup(t){function k(w){switch(w){case"error":return"error";case"warning":return"warning";case"assert":return"error";default:return"neutral"}}function h(w){switch(w){case"error":return"i-lucide-octagon-x";case"warning":return"i-lucide-alert-triangle";case"assert":return"i-lucide-octagon-x";default:return"i-lucide-message-square"}}return(w,$)=>{const g=ue,n=pe,l=ye;return t.entries.length>0?(s(),_(l,{key:0,icon:"i-lucide-terminal",title:"Console output",count:t.entries.length,help:"case.console"},{default:u(()=>[o("div",Ma,[(s(!0),a(U,null,ee(t.entries,(d,D)=>(s(),a("div",{key:D,class:"flex items-start gap-2 py-1.5 px-2 rounded hover:bg-gray-50 dark:hover:bg-gray-800 text-sm"},[r(g,{name:h(d.type),class:X([d.type==="error"||d.type==="assert"?"text-red-500":d.type==="warning"?"text-amber-500":"text-gray-400","size-4 mt-0.5 shrink-0"])},null,8,["name","class"]),o("div",Na,[o("div",Da,[r(n,{color:k(d.type),variant:"soft",size:"xs",class:"shrink-0"},{default:u(()=>[f(c(d.type),1)]),_:2},1032,["color"]),o("span",Pa,c(d.text),1)]),d.location?(s(),a("div",Aa,c(d.location),1)):i("",!0)])]))),128))])]),_:1},8,["count"])):i("",!0)}}}),Ba=Object.assign(Ua,{__name:"TestCaseConsoleCard"}),Fa={key:0,class:"space-y-4 text-sm"},Va={class:"space-y-1.5"},Ea={class:"flex items-center gap-2"},Oa={key:0,class:"text-xs text-gray-500"},Ha={class:"block text-xs break-all text-gray-700 dark:text-gray-300"},Ka={key:0,class:"text-xs text-red-600 dark:text-red-400 font-mono"},Wa={class:"flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-gray-400"},Ga={key:0,class:"font-mono"},Ja={key:1,class:"font-mono"},qa={key:2},Qa={key:3,title:"Bytes on the wire"},Za={key:0},Xa={class:"flex h-2 rounded overflow-hidden bg-gray-100 dark:bg-gray-800"},Ya=["title"],eo={class:"flex flex-wrap gap-x-3 gap-y-1 mt-1.5 text-xs text-gray-500"},to={class:"text-xs font-medium text-gray-500 dark:text-gray-400 mb-1.5 capitalize"},so={key:0,class:"rounded border border-default divide-y divide-default max-h-48 overflow-y-auto"},no={class:"text-gray-500 dark:text-gray-400 shrink-0"},ao={class:"break-all text-gray-700 dark:text-gray-300"},oo={key:1,class:"text-xs text-gray-400"},ro={key:1},io={key:0,class:"rounded border border-default p-2"},lo=["src","alt"],co={key:1,class:"max-h-96 overflow-y-auto"},uo={key:0,class:"mt-1 text-xs text-gray-400"},mo={key:2,class:"text-xs text-gray-400"},fo={key:2,class:"text-xs text-gray-400"},go=re({__name:"TraceNetworkDrawer",props:{open:{type:Boolean},entry:{},runId:{},testRunsCaseId:{}},emits:["update:open"],setup(t,{emit:k}){const h=t,w=k,$=[{key:"dns",label:"DNS",color:"bg-sky-400"},{key:"connect",label:"Connect",color:"bg-violet-400"},{key:"ssl",label:"TLS",color:"bg-rose-400"},{key:"send",label:"Send",color:"bg-amber-400"},{key:"wait",label:"Wait",color:"bg-blue-400"},{key:"receive",label:"Receive",color:"bg-emerald-400"}],g=C(()=>{const b=h.entry?.timings;return b?$.map(v=>({...v,value:b[v.key]??-1})).filter(v=>typeof v.value=="number"&&v.value>=0):[]}),n=C(()=>g.value.reduce((b,v)=>b+v.value,0)),l=C(()=>{const b=h.entry?.requestPostData??"";return b.startsWith("{")||b.startsWith("[")}),d=A(null),D=A(!1),M=new Map;return ve(()=>[h.open,h.entry?.bodySha1],async([b,v])=>{if(d.value=null,!b||!v||!h.runId)return;const F=M.get(v);if(F){d.value=F;return}D.value=!0;try{const L=await $fetch(`/api/test-runs/${h.runId}/cases/${h.testRunsCaseId}/trace-network-body`,{query:{sha1:v}});M.set(v,L),d.value=L}catch{d.value={status:"not-found"}}finally{D.value=!1}},{immediate:!0}),(b,v)=>{const F=pe,L=Re,m=Qs,S=Ge,V=Zs;return s(),_(V,{open:t.open,title:"Request detail",ui:{content:"max-w-xl"},"onUpdate:open":v[0]||(v[0]=B=>w("update:open",B))},{body:u(()=>[t.entry?(s(),a("div",Fa,[o("div",Va,[o("div",Ea,[r(F,{color:("httpMethodColor"in b?b.httpMethodColor:e(He))(t.entry.method),variant:"soft",size:"sm",class:"font-mono shrink-0"},{default:u(()=>[f(c(t.entry.method),1)]),_:1},8,["color"]),r(F,{color:("httpStatusColor"in b?b.httpStatusColor:e(Ke))(t.entry.status),variant:"soft",size:"sm",class:"font-mono shrink-0 tabular-nums"},{default:u(()=>[f(c(t.entry.status>0?t.entry.status:"—"),1)]),_:1},8,["color"]),t.entry.statusText?(s(),a("span",Oa,c(t.entry.statusText),1)):i("",!0)]),o("code",Ha,c(t.entry.url),1),t.entry.failureText?(s(),a("p",Ka,c(t.entry.failureText),1)):i("",!0),o("div",Wa,[t.entry.resourceType?(s(),a("span",Ga,c(t.entry.resourceType),1)):i("",!0),t.entry.mimeType?(s(),a("span",Ja,c(t.entry.mimeType),1)):i("",!0),t.entry.responseBodySize!=null?(s(),a("span",qa,c(("formatBytes"in b?b.formatBytes:e(we))(t.entry.responseBodySize)),1)):i("",!0),t.entry.transferSize!=null?(s(),a("span",Qa,c(("formatBytes"in b?b.formatBytes:e(we))(t.entry.transferSize))+" transferred",1)):i("",!0),r(L,{ms:t.entry.duration},null,8,["ms"]),t.entry.duringFailure?(s(),_(F,{key:4,color:"error",variant:"subtle",size:"xs"},{default:u(()=>[...v[1]||(v[1]=[f("During failing action",-1)])]),_:1})):i("",!0)])]),e(g).length>0&&e(n)>0?(s(),a("div",Za,[v[2]||(v[2]=o("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 mb-1.5"},"Timing",-1)),o("div",Xa,[(s(!0),a(U,null,ee(e(g),B=>(s(),a("div",{key:B.key,class:X(B.color),style:Ce({width:`${Math.max(.5,B.value/e(n)*100)}%`}),title:`${B.label}: ${("formatDuration"in b?b.formatDuration:e(Ws))(B.value)}`},null,14,Ya))),128))]),o("div",eo,[(s(!0),a(U,null,ee(e(g),B=>(s(),a("span",{key:B.key,class:"inline-flex items-center gap-1"},[o("span",{class:X(["size-2 rounded-full",B.color])},null,2),f(" "+c(B.label)+" ",1),r(L,{ms:B.value,"no-title":""},null,8,["ms"])]))),128))])])):i("",!0),(s(),a(U,null,ee(["request","response"],B=>o("div",{key:B},[o("p",to,c(B)+" headers",1),(B==="request"?t.entry.requestHeaders:t.entry.responseHeaders).length>0?(s(),a("div",so,[(s(!0),a(U,null,ee(B==="request"?t.entry.requestHeaders:t.entry.responseHeaders,I=>(s(),a("div",{key:`${B}-${I.name}`,class:"px-2 py-1 text-xs font-mono flex gap-2"},[o("span",no,c(I.name)+":",1),o("span",ao,c(I.value),1)]))),128))])):(s(),a("p",oo,"None recorded."))])),64)),t.entry.requestPostData?(s(),a("div",ro,[v[3]||(v[3]=o("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 mb-1.5"},"Request body",-1)),r(m,{code:t.entry.requestPostData,lang:e(l)?"json":"text"},null,8,["code","lang"])])):i("",!0),o("div",null,[v[4]||(v[4]=o("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 mb-1.5"},"Response body",-1)),e(D)?(s(),_(S,{key:0,text:"Loading body…",padded:!1})):e(d)?(s(),a(U,{key:1},[e(d).status==="ok"&&e(d).kind==="image"?(s(),a("div",io,[o("img",{src:e(d).dataUri,alt:t.entry.url,class:"max-w-full max-h-96"},null,8,lo)])):e(d).status==="ok"?(s(),a("div",co,[r(m,{code:e(d).content??"",lang:e(d).kind==="json"?"json":"text"},null,8,["code","lang"]),e(d).truncated?(s(),a("p",uo,"Preview truncated.")):i("",!0)])):(s(),a("p",mo,c(e(d).status==="too-large"?`Body too large to preview (${("formatBytes"in b?b.formatBytes:e(we))(e(d).size??0)}) — open the trace viewer to inspect it.`:e(d).status==="unsupported"?`No preview for ${e(d).mimeType||"this content type"} — open the trace viewer to inspect it.`:"Body not stored in the trace."),1))],64)):t.entry.bodySha1?i("",!0):(s(),a("p",fo,"No body captured for this request."))])])):i("",!0)]),_:1},8,["open"])}}}),po=Object.assign(go,{__name:"TraceNetworkDrawer"}),yo={class:"flex items-center justify-between gap-2 mb-2"},ho={key:0,class:"hidden sm:flex items-center gap-1.5 text-xs text-gray-400"},xo={class:"space-y-1 max-h-[28rem] overflow-y-auto"},vo=["title","onClick"],_o={class:"flex items-center gap-2 text-sm min-w-0"},ko={class:"truncate text-xs flex-1 min-w-0"},bo={key:0,class:"shrink-0 text-xs text-gray-400 font-mono hidden md:inline"},wo={key:1,class:"shrink-0 text-xs text-gray-400 tabular-nums hidden sm:inline"},$o={class:"relative h-1.5 mt-1 rounded bg-gray-100 dark:bg-gray-800 overflow-hidden"},Co={key:0,class:"mt-2 text-xs text-gray-400 dark:text-gray-500"},To=re({__name:"TraceNetworkList",props:{data:{},runId:{},testRunsCaseId:{}},setup(t){const k=t,h=A("all"),w=C(()=>k.data.requests??[]),$=C(()=>({total:w.value.length,failed:w.value.filter(S=>S.failed).length,duringFailure:w.value.filter(S=>S.duringFailure).length})),g=C(()=>[{label:`All (${$.value.total})`,value:"all"},{label:`Failed (${$.value.failed})`,value:"failed",disabled:$.value.failed===0},{label:`During failure (${$.value.duringFailure})`,value:"duringFailure",disabled:$.value.duringFailure===0}]),n=C(()=>h.value==="failed"?w.value.filter(S=>S.failed):h.value==="duringFailure"?w.value.filter(S=>S.duringFailure):w.value);function l(S){try{return new URL(S).pathname||S}catch{return S}}const d=C(()=>Math.max(1,k.data.timelineDuration??1));function D(S){const V=Math.max(0,Math.min(100,S.start/d.value*100)),B=Math.min(100-V,Math.max(1.5,S.duration/d.value*100));return{left:`${V}%`,width:`${B}%`}}const M=C(()=>{const S=k.data.failingWindow;if(!S||S.end<=S.start)return null;const V=Math.max(0,Math.min(100,S.start/d.value*100)),B=Math.max(.5,Math.min(100-V,(S.end-S.start)/d.value*100));return{left:`${V}%`,width:`${B}%`}});function b(S){return S.failed?"bg-red-500":S.duration>1e3?"bg-orange-400":"bg-gray-400 dark:bg-gray-500"}function v(S){return S.failed?"border-l-2 border-l-red-400 dark:border-l-red-600":S.duringFailure?"border-l-2 border-l-amber-400 dark:border-l-amber-600":"border-l-2 border-l-transparent"}const F=A(null),L=A(!1);function m(S){F.value=S,L.value=!0}return(S,V)=>{const B=We,I=pe,G=Re,J=po;return s(),a("div",null,[o("div",yo,[r(B,{modelValue:e(h),"onUpdate:modelValue":V[0]||(V[0]=N=>ge(h)?h.value=N:null),items:e(g),size:"xs",variant:"link",ui:{list:"gap-2",trigger:"px-1.5"}},null,8,["modelValue","items"]),t.data.failingWindow?(s(),a("span",ho,[...V[2]||(V[2]=[o("span",{class:"inline-block w-3 h-2 rounded-sm bg-red-500/10 border border-red-300 dark:border-red-800"},null,-1),f(" failing action ",-1)])])):i("",!0)]),o("div",xo,[(s(!0),a(U,null,ee(e(n),N=>(s(),a("button",{key:N.index,type:"button",class:X([v(N),"w-full rounded bg-gray-50/60 dark:bg-gray-800/40 py-1.5 px-2 text-left cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-800"]),title:N.url,onClick:ne=>m(N)},[o("div",_o,[r(I,{color:("httpMethodColor"in S?S.httpMethodColor:e(He))(N.method),variant:"soft",size:"xs",class:"font-mono shrink-0"},{default:u(()=>[f(c(N.method),1)]),_:2},1032,["color"]),r(I,{color:("httpStatusColor"in S?S.httpStatusColor:e(Ke))(N.status),variant:"soft",size:"xs",class:"font-mono shrink-0 tabular-nums",title:N.failureText||N.statusText},{default:u(()=>[f(c(N.status>0?N.status:"—"),1)]),_:2},1032,["color","title"]),o("code",ko,c(l(N.url)),1),N.resourceType?(s(),a("span",bo,c(N.resourceType),1)):i("",!0),N.responseBodySize!=null?(s(),a("span",wo,c(("formatBytes"in S?S.formatBytes:e(we))(N.responseBodySize)),1)):i("",!0),o("span",{class:X(["ml-1 shrink-0 text-xs tabular-nums",N.duration>1e3?"text-red-600 font-medium":N.duration>500?"text-orange-500":"text-gray-500"])},[r(G,{ms:N.duration,"unit-class":"opacity-60"},null,8,["ms"])],2)]),o("div",$o,[e(M)?(s(),a("div",{key:0,class:"absolute inset-y-0 bg-red-500/10 border-x border-red-300/60 dark:border-red-800/60",style:Ce(e(M))},null,4)):i("",!0),o("div",{class:X(["absolute inset-y-0 rounded-full",b(N)]),style:Ce(D(N))},null,6)])],10,vo))),128))]),t.data.truncated?(s(),a("p",Co," Showing the first "+c(e(w).length)+" of "+c(t.data.totalBeforeCap)+" requests recorded in the trace. ",1)):i("",!0),r(J,{open:e(L),"onUpdate:open":V[1]||(V[1]=N=>ge(L)?L.value=N:null),entry:e(F),"run-id":t.runId,"test-runs-case-id":t.testRunsCaseId},null,8,["open","entry","run-id","test-runs-case-id"])])}}}),So=Object.assign(To,{__name:"TraceNetworkList"}),Io={class:"flex flex-wrap items-center gap-x-3 gap-y-1"},Ro={key:0,class:"flex items-center gap-2 text-xs"},jo={key:0,class:"flex items-center gap-1 text-red-600 dark:text-red-400"},Lo={key:1,class:"flex items-center gap-1 text-amber-600 dark:text-amber-400"},zo={key:2,class:"text-xs text-gray-400 py-2"},Mo={key:1,class:"space-y-1 max-h-[28rem] overflow-y-auto"},No=["disabled","onClick"],Do={key:1,class:"size-3.5 shrink-0"},Po=["title"],Ao=["title"],Uo=["title"],Bo=["title"],Fo=["title"],Vo=["title"],Eo={key:0,class:"px-2 pt-1.5 pb-2 pl-7 space-y-1"},Oo={class:"flex items-center gap-1.5 text-[11px] uppercase tracking-wide text-gray-400"},Ho=["title"],Ko={key:0,class:"shrink-0 text-[10px] uppercase text-gray-400 font-mono hidden sm:inline"},Wo={class:"relative flex-1 h-3 rounded bg-gray-100 dark:bg-gray-800 min-w-0"},Go={key:1,class:"px-2 pb-2 pl-7 space-y-1.5"},Jo={class:"flex items-start gap-2"},qo={key:0,class:"text-gray-400 shrink-0 font-mono"},Qo={class:"font-mono break-all text-gray-700 dark:text-gray-300 flex-1 min-w-0"},Zo=["title"],Xo={key:0,class:"mt-1.5"},Yo=["onClick"],er={key:0,class:"mt-1 whitespace-pre-wrap break-all font-mono text-[11px] leading-relaxed text-gray-500 dark:text-gray-400 max-h-48 overflow-y-auto"},tr={key:2,class:"mt-3 flex items-center gap-1.5 text-xs text-gray-400 dark:text-gray-500"},sr={key:3,class:"mt-3 flex items-center gap-1.5 text-xs text-gray-400 dark:text-gray-500"},nr=re({__name:"TestCaseNetworkRequests",props:{requests:{},runId:{},testRunsCaseId:{},hasTrace:{type:Boolean}},setup(t,{expose:k}){const h=t,w=A("all"),{data:$,pending:g,load:n}=_a(()=>h.runId,()=>h.testRunsCaseId,()=>!!h.hasTrace),l=A(null),d=C({get:()=>l.value??(h.requests.length===0&&h.hasTrace?"trace":"captured"),set:x=>{l.value=x}});ve(()=>d.value==="trace",x=>{x&&n()},{immediate:!0});const D=C(()=>$.value?.status==="ok"?$.value.requests?.length??0:null),M=C(()=>[{label:`Captured (${h.requests.length})`,value:"captured",disabled:h.requests.length===0},{label:D.value!=null?`Full trace (${D.value})`:"Full trace",value:"trace"}]);function b(){h.hasTrace&&(l.value="trace")}k({showTraceMode:b});const v=A(new Set);function F(x){const T=new Set(v.value);T.has(x)?T.delete(x):T.add(x),v.value=T}const L=A(new Set);function m(x){const T=new Set(L.value);T.has(x)?T.delete(x):T.add(x),L.value=T}function S(x){if(x.length===0)return[];const T=Math.min(...x.map(H=>H.startMs)),K=Math.max(...x.map(H=>H.startMs+H.durMs)),q=Math.max(1,K-T),Q=new Map(x.map(H=>[H.id,H])),te=H=>{let Z=0,Y=H;const ae=new Set;for(;Y?.parentId&&Q.has(Y.parentId)&&!ae.has(Y.id)&&(ae.add(Y.id),Y=Q.get(Y.parentId),Z++,!(Z>8)););return Z};return[...x].sort((H,Z)=>H.startMs-Z.startMs||Z.durMs-H.durMs).map(H=>({...H,offsetPct:(H.startMs-T)/q*100,widthPct:Math.max(1.5,H.durMs/q*100),depth:te(H)}))}function V(x){return x.status==="error"?"bg-red-400 dark:bg-red-500":x.kind==="db"?"bg-violet-400 dark:bg-violet-500":x.kind==="client"?"bg-sky-400 dark:bg-sky-500":x.kind==="internal"?"bg-gray-400 dark:bg-gray-500":"bg-emerald-400 dark:bg-emerald-500"}function B(x){const T=x.toLowerCase();return T==="critical"||T==="fatal"?3:T==="error"?2:T==="warning"||T==="warn"?1:0}function I(x){const T=B(x);if(T>=2)return"error";if(T===1)return"warning";const K=x.toLowerCase();return K==="info"||K==="information"?"info":"neutral"}function G(x){try{return new URL(x).pathname||x}catch{return x}}function J(x){return(x.split("/")[1]??x).replace(/^vnd\.[^+]*\+?/,"").replace(/^x-/,"")||x}function N(x){return x?new Date(x).toLocaleString():""}const ne=C(()=>h.requests.map((x,T)=>{const K=Array.isArray(x.serverLogs)?x.serverLogs:[],q=Array.isArray(x.serverTraces)?x.serverTraces:[];let Q=0,te=0;for(const Z of K){const Y=B(Z.level);Y>=2?Q++:Y===1&&te++}const H=q.find(Z=>!Z.parentId)??q[0];return{...x,_index:T,logs:[...K].sort((Z,Y)=>Z.timestamp-Y.timestamp),spans:q,serverMs:H?H.durMs:null,errorLogCount:Q,warnLogCount:te,failed:x.status>=400,hasDetail:K.length>0||q.length>0,path:G(x.url)}})),O=C(()=>{let x=0,T=0,K=0,q=0,Q=0;for(const te of ne.value)te.failed&&x++,te.logs.length>0&&T++,te.spans.length>0&&K++,q+=te.errorLogCount,Q+=te.warnLogCount;return{total:ne.value.length,failed:x,withLogs:T,withSpans:K,errorLogs:q,warnLogs:Q}}),le=C(()=>{let x=ne.value;return w.value==="failed"?x=x.filter(T=>T.failed):w.value==="logs"&&(x=x.filter(T=>T.logs.length>0)),[...x].sort((T,K)=>{const q=Q=>(Q.errorLogCount>0?3:0)+(Q.failed?2:0)+(Q.logs.length>0?1:0);return q(K)-q(T)||T._index-K._index})}),y=C(()=>[{label:`All (${O.value.total})`,value:"all"},{label:`Failed (${O.value.failed})`,value:"failed",disabled:O.value.failed===0},{label:`With logs (${O.value.withLogs})`,value:"logs",disabled:O.value.withLogs===0}]),P=C(()=>O.value.withLogs>0);function se(x){return x.errorLogCount>0||x.status>=500?"border-l-2 border-l-red-400 dark:border-l-red-600":x.failed||x.warnLogCount>0?"border-l-2 border-l-amber-400 dark:border-l-amber-600":"border-l-2 border-l-transparent"}return(x,T)=>{const K=ue,q=We,Q=Ge,te=So,H=pe,Z=Re,Y=kt,ae=ye;return s(),_(ae,{icon:"i-lucide-network",title:"Network & backend logs",count:e(d)==="trace"?e(D):e(O).total,help:"case.network"},{actions:u(()=>[o("div",Io,[e(d)==="captured"?(s(),a(U,{key:0},[e(O).errorLogs>0||e(O).warnLogs>0?(s(),a("div",Ro,[e(O).errorLogs>0?(s(),a("span",jo,[r(K,{name:"i-lucide-octagon-alert",class:"size-3.5"}),f(c(e(O).errorLogs),1)])):i("",!0),e(O).warnLogs>0?(s(),a("span",Lo,[r(K,{name:"i-lucide-triangle-alert",class:"size-3.5"}),f(c(e(O).warnLogs),1)])):i("",!0)])):i("",!0),r(q,{modelValue:e(w),"onUpdate:modelValue":T[0]||(T[0]=z=>ge(w)?w.value=z:null),items:e(y),size:"xs",variant:"link",ui:{list:"gap-2",trigger:"px-1.5"}},null,8,["modelValue","items"])],64)):i("",!0),t.hasTrace?(s(),_(q,{key:1,modelValue:e(d),"onUpdate:modelValue":T[1]||(T[1]=z=>ge(d)?d.value=z:null),items:e(M),size:"xs",variant:"pill",ui:{list:"gap-1 p-0.5",trigger:"px-2"}},null,8,["modelValue","items"])):i("",!0)])]),default:u(()=>[e(d)==="trace"?(s(),a(U,{key:0},[e(g)||!e($)?(s(),_(Q,{key:0,text:"Parsing trace network stream…"})):e($).status==="ok"?(s(),_(te,{key:1,data:e($),"run-id":t.runId??null,"test-runs-case-id":t.testRunsCaseId??0},null,8,["data","run-id","test-runs-case-id"])):(s(),a("p",zo,"No network activity recorded in this trace."))],64)):(s(),a("div",Mo,[(s(!0),a(U,null,ee(e(le),z=>(s(),a("div",{key:z._index,class:X([se(z),"rounded bg-gray-50/60 dark:bg-gray-800/40"])},[o("button",{type:"button",class:X(["w-full flex items-center gap-2 py-1.5 px-2 text-sm text-left",z.hasDetail?"cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-800":"cursor-default"]),disabled:!z.hasDetail,onClick:W=>z.hasDetail&&F(z._index)},[z.hasDetail?(s(),_(K,{key:0,name:e(v).has(z._index)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3.5 shrink-0 text-gray-400"},null,8,["name"])):(s(),a("span",Do)),r(H,{color:("httpMethodColor"in x?x.httpMethodColor:e(He))(z.method),variant:"soft",size:"xs",class:"font-mono shrink-0"},{default:u(()=>[f(c(z.method),1)]),_:2},1032,["color"]),r(H,{color:("httpStatusColor"in x?x.httpStatusColor:e(Ke))(z.status),variant:"soft",size:"xs",class:"font-mono shrink-0 tabular-nums"},{default:u(()=>[f(c(z.status||"—"),1)]),_:2},1032,["color"]),o("code",{class:"truncate text-xs flex-1 min-w-0",title:z.url},c(z.path),9,Po),z.contentType?(s(),a("span",{key:2,class:"shrink-0 text-xs text-gray-400 font-mono hidden md:inline",title:`Response content type: ${z.contentType}`},c(J(z.contentType)),9,Ao)):i("",!0),z.errorLogCount>0?(s(),a("span",{key:3,class:"shrink-0 inline-flex items-center gap-1 text-xs text-red-600 dark:text-red-400",title:`${z.errorLogCount} backend error log(s)`},[r(K,{name:"i-lucide-octagon-alert",class:"size-3.5"}),f(c(z.errorLogCount),1)],8,Uo)):i("",!0),z.warnLogCount>0?(s(),a("span",{key:4,class:"shrink-0 inline-flex items-center gap-1 text-xs text-amber-600 dark:text-amber-400",title:`${z.warnLogCount} backend warning log(s)`},[r(K,{name:"i-lucide-triangle-alert",class:"size-3.5"}),f(c(z.warnLogCount),1)],8,Bo)):i("",!0),z.serverMs!=null?(s(),a("span",{key:5,class:"shrink-0 inline-flex items-center gap-1 text-xs text-emerald-600 dark:text-emerald-400 tabular-nums",title:`Server-side processing time (${z.spans.length} span${z.spans.length===1?"":"s"})`},[r(K,{name:"i-lucide-server",class:"size-3.5"}),r(Z,{ms:z.serverMs,"no-title":""},null,8,["ms"])],8,Fo)):i("",!0),z.startTime?(s(),a("span",{key:6,class:"shrink-0 text-xs text-gray-400 hidden sm:inline",title:N(z.startTime)},c(("formatRelativeTime"in x?x.formatRelativeTime:e(Se))(z.startTime)),9,Vo)):i("",!0),o("span",{class:X(["ml-1 shrink-0 text-xs tabular-nums",(z.duration??0)>1e3?"text-red-600 font-medium":(z.duration??0)>500?"text-orange-500":"text-gray-500"])},[r(Z,{ms:z.duration,"unit-class":"opacity-60"},null,8,["ms"])],2)],10,No),z.spans.length>0&&e(v).has(z._index)?(s(),a("div",Eo,[o("div",Oo,[r(K,{name:"i-lucide-waypoints",class:"size-3.5"}),T[2]||(T[2]=f("Server trace ",-1))]),(s(!0),a(U,null,ee(S(z.spans),W=>(s(),a("div",{key:W.id,class:"flex items-center gap-2 text-xs",title:W.status==="error"?`${W.name} (error)`:W.name},[o("div",{class:"w-40 sm:w-56 shrink-0 flex items-center gap-1 min-w-0",style:Ce({paddingLeft:`${W.depth*12}px`})},[W.kind?(s(),a("span",Ko,c(W.kind),1)):i("",!0),o("span",{class:X(["truncate font-mono",W.status==="error"?"text-red-600 dark:text-red-400":"text-gray-600 dark:text-gray-300"])},c(W.name),3)],4),o("div",Wo,[o("div",{class:X(["absolute top-0 h-3 rounded",V(W)]),style:Ce({left:`${W.offsetPct}%`,width:`${W.widthPct}%`})},null,6)]),r(Z,{ms:W.durMs,class:"w-12 shrink-0 text-right text-gray-500"},null,8,["ms"])],8,Ho))),128))])):i("",!0),z.logs.length>0&&e(v).has(z._index)?(s(),a("div",Go,[(s(!0),a(U,null,ee(z.logs,(W,he)=>(s(),a("div",{key:he,class:"rounded border border-default bg-white dark:bg-gray-900/60 p-2 text-xs"},[o("div",Jo,[r(H,{color:I(W.level),variant:"soft",size:"xs",class:"shrink-0 capitalize"},{default:u(()=>[f(c(W.level),1)]),_:2},1032,["color"]),W.category?(s(),a("span",qo,"["+c(W.category)+"]",1)):i("",!0),o("span",Qo,c(W.message),1),W.timestamp?(s(),a("span",{key:1,class:"shrink-0 text-gray-400 tabular-nums",title:N(W.timestamp)},c(("formatRelativeTime"in x?x.formatRelativeTime:e(Se))(W.timestamp)),9,Zo)):i("",!0)]),W.stack?(s(),a("div",Xo,[o("button",{type:"button",class:"inline-flex items-center gap-1 text-gray-400 hover:text-gray-600 dark:hover:text-gray-200",onClick:Je=>m(`${z._index}:${he}`)},[r(K,{name:e(L).has(`${z._index}:${he}`)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3"},null,8,["name"]),T[3]||(T[3]=f(" Stack trace ",-1))],8,Yo),e(L).has(`${z._index}:${he}`)?(s(),a("pre",er,c(W.stack),1)):i("",!0)])):i("",!0)]))),128))])):i("",!0)],2))),128))])),e(d)==="captured"&&!e(P)?(s(),a("p",tr,[r(K,{name:"i-lucide-info",class:"size-3.5 shrink-0"}),T[5]||(T[5]=f(" No backend server logs captured — install ",-1)),r(Y,{to:"backend-logs","no-icon":"",class:"underline"},{default:u(()=>[...T[4]||(T[4]=[f("a Piwi backend integration",-1)])]),_:1}),T[6]||(T[6]=f(" to see server-side warnings and errors under each request. ",-1))])):i("",!0),t.hasTrace?i("",!0):(s(),a("p",sr,[r(K,{name:"i-lucide-info",class:"size-3.5 shrink-0"}),o("span",null,[T[8]||(T[8]=f(" Want to go deeper? Record traces (",-1)),T[9]||(T[9]=o("code",null,"trace: 'retain-on-failure'",-1)),T[10]||(T[10]=f(") to see every request with headers, timing and bodies here. ",-1)),r(Y,{to:"ui-overview#trace-powered-deep-views","no-icon":"",class:"underline"},{default:u(()=>[...T[7]||(T[7]=[f("Learn more",-1)])]),_:1})])]))]),_:1},8,["count"])}}}),ar=Object.assign(nr,{__name:"TestCaseNetworkRequests"}),or={class:"space-y-2"},rr=re({__name:"TestCaseTracesCard",props:{traces:{}},setup(t){return(k,h)=>{const w=gs,$=ye;return t.traces.length>0?(s(),_($,{key:0,icon:"i-lucide-bug-play",title:"Traces",count:t.traces.length,help:"case.traces"},{default:u(()=>[o("div",or,[(s(!0),a(U,null,ee(t.traces,g=>(s(),_(w,{key:g.id,trace:g,class:"py-2 px-3 rounded-lg border"},null,8,["trace"]))),128))])]),_:1},8,["count"])):i("",!0)}}}),ir=Object.assign(rr,{__name:"TestCaseTracesCard"}),lr={class:"space-y-3"},cr={class:"flex items-center justify-between px-3 py-2 bg-gray-50 dark:bg-gray-800/50 border-b"},ur={class:"flex items-center gap-2 min-w-0"},dr={class:"text-sm font-medium truncate"},mr={key:0,class:"text-xs text-gray-400 shrink-0"},fr={class:"text-xs text-gray-400"},gr={class:"flex items-center gap-1 shrink-0"},pr=["href"],yr={key:0,class:"bg-gray-100 dark:bg-gray-900"},hr=["src","alt","onClick"],xr={key:1,class:"bg-black"},vr={key:2,class:"bg-gray-50 dark:bg-gray-900"},_r={key:0,class:"flex items-center justify-center py-8"},kr={key:1,class:"p-4 text-red-500 text-sm"},br={key:2,class:"p-4 overflow-auto max-h-96"},wr={class:"text-sm whitespace-pre-wrap font-sans leading-relaxed"},$r=re({__name:"TestCaseAttachmentsCard",props:{attachments:{}},setup(t){const k=t,h=Ee(),w=A(null),$=C(()=>k.attachments.filter(I=>Te(I.path,I.contentType)).map(I=>({src:M(I.path,I.contentType),name:I.name||b(I.path)})));function g(I){w.value=I}const n=new Set([".md",".mdx",".markdown"]),l=new Set(["text/markdown","text/x-markdown"]);function d(I){return I.toLowerCase().split(".").pop()||""}function D(I,G){return!!(n.has(d(I))||G&&l.has(G.toLowerCase()))}function M(I,G){return wt(I,G,h.app?.baseURL)}function b(I){return I.split("/").pop()||I}function v(I){return I==null?"":we(I)}const F=A({}),L=A({}),m=A({}),S=A(new Set);async function V(I){if(F.value[I.id]===void 0&&!m.value[I.id]){m.value[I.id]=!0,L.value[I.id]=null;try{const G=await $fetch(M(I.path,I.contentType),{responseType:"text"});F.value[I.id]=G}catch{L.value[I.id]="Failed to load preview"}finally{m.value[I.id]=!1}}}function B(I,G){const J=new Set(S.value);J.has(I)?J.delete(I):(J.add(I),V(G)),S.value=J}return(I,G)=>{const J=ue,N=Ie,ne=ps,O=ys,le=ye;return t.attachments.length>0?(s(),_(le,{key:0,icon:"i-lucide-paperclip",title:"Attachments",count:t.attachments.length},{default:u(()=>[o("div",lr,[(s(!0),a(U,null,ee(t.attachments,y=>(s(),a("div",{key:y.id,class:"rounded-lg border overflow-hidden"},[o("div",cr,[o("div",ur,[r(J,{name:e(Te)(y.path,y.contentType)?"i-lucide-image":e(De)(y.path,y.contentType)?"i-lucide-video":D(y.path,y.contentType)?"i-lucide-file-text":"i-lucide-file",class:"size-4 text-gray-400 shrink-0"},null,8,["name"]),o("span",dr,c(b(y.path)),1),y.name&&y.name!==b(y.path)?(s(),a("span",mr,c(y.name),1)):i("",!0),o("span",fr,c(v(y.size)),1)]),o("div",gr,[D(y.path,y.contentType)?(s(),_(N,{key:0,size:"xs",color:"neutral",variant:"soft",onClick:P=>B(y.id,y)},{default:u(()=>[f(c(e(S).has(y.id)?"Hide preview":"Preview"),1)]),_:2},1032,["onClick"])):i("",!0),o("a",{href:M(y.path,y.contentType),target:"_blank",class:"text-primary hover:underline text-xs shrink-0"},"Open",8,pr)])]),e(Te)(y.path,y.contentType)?(s(),a("div",yr,[o("img",{src:M(y.path,y.contentType),alt:y.name||"Screenshot",class:"max-w-full max-h-96 object-contain mx-auto cursor-pointer hover:opacity-90 transition-opacity",loading:"lazy",onClick:P=>g(e($).findIndex(se=>se.src===M(y.path,y.contentType)))},null,8,hr)])):e(De)(y.path,y.contentType)?(s(),a("div",xr,[r(ne,{src:M(y.path,y.contentType)},null,8,["src"])])):D(y.path,y.contentType)&&e(S).has(y.id)?(s(),a("div",vr,[e(m)[y.id]?(s(),a("div",_r,[r(J,{name:"i-lucide-loader-circle",class:"size-5 animate-spin text-gray-400"})])):e(L)[y.id]?(s(),a("div",kr,c(e(L)[y.id]),1)):e(F)[y.id]?(s(),a("div",br,[o("pre",wr,c(e(F)[y.id]),1)])):i("",!0)])):i("",!0)]))),128))]),r(O,{modelValue:e(w),"onUpdate:modelValue":G[0]||(G[0]=y=>ge(w)?w.value=y:null),images:e($)},null,8,["modelValue","images"])]),_:1},8,["count"])):i("",!0)}}}),Cr=Object.assign($r,{__name:"TestCaseAttachmentsCard"});function Tr(t){return Array.isArray(t)?t.some(k=>k&&typeof k.type=="string"&&k.type.toLowerCase()==="slow"):!1}function Sr(t){const k=[];if(!t)return k;const h=t.steps||[],$=h.filter(n=>n.category==="navigation").filter(n=>n.duration>3e3);if($.length>0){const n=$.sort((l,d)=>d.duration-l.duration)[0];k.push({type:"warning",message:"Slow navigation detected",details:`"${n.title}" took ${(n.duration/1e3).toFixed(1)}s. The tested page may have performance issues (slow server response, heavy JS bundles, etc.).`})}h.length>20&&k.push({type:"info",message:"Many sequential actions",details:`This test has ${h.length} steps. Consider splitting it into smaller, focused tests for better isolation and faster feedback.`}),t.status==="passed"&&(t.retries||0)>0&&k.push({type:"warning",message:"Flaky test — passed after retries",details:`This test needed ${t.retries} ${t.retries===1?"retry":"retries"} to pass. Consider reviewing locator strategies, adding explicit waits, or checking for race conditions.`});const g=h.filter(n=>n.category==="assertion"&&n.duration>2e3);if(g.length>0){const n=g.sort((l,d)=>d.duration-l.duration)[0];k.push({type:"info",message:"Slow assertions detected",details:`"${n.title}" took ${(n.duration/1e3).toFixed(1)}s. The UI may be slow to render or the assertion timeout may need tuning.`})}return Tr(t.testAnnotations)&&typeof t.duration=="number"&&t.duration<1e4&&k.push({type:"info",message:"test.slow() may be unnecessary",details:`This run finished in ${(t.duration/1e3).toFixed(1)}s, yet the test is marked test.slow(), which triples its timeout budget. If it is consistently this fast, removing test.slow() lets a failure surface sooner.`}),typeof t.timeout=="number"&&t.timeout>0&&typeof t.duration=="number"&&t.duration>0&&t.timeout>=4*t.duration&&t.timeout-t.duration>=3e4&&k.push({type:"info",message:"Oversized timeout",details:`The timeout is ${(t.timeout/1e3).toFixed(0)}s but this run took ${(t.duration/1e3).toFixed(1)}s. A large timeout means a hang or failure waits far longer than necessary — consider lowering it toward the test's real duration.`}),k}function Ir(t,k){const h=t.search(/\n at /);if(h===-1)return k!==void 0&&t.length>k?t.slice(0,k)+`
4
4
  [truncated]`:t;const w=t.slice(0,h),g=t.slice(h).split(`
5
5
  `),n=[];let l=0;const d=()=>{l>0&&(n.push(`… (${l} internal frame${l>1?"s":""})`),l=0)};for(const M of g){const b=M.trimStart();b.startsWith("at ")?M.includes("node_modules")||b.startsWith("at node:")?l++:(d(),n.push(M)):(b===""||d(),n.push(M))}d();let D=w+`
6
6
  `+n.join(`
7
7
  `);return k!==void 0&&D.length>k&&(D=D.slice(0,k)+`
8
- [truncated]`),D}const Rr={class:"space-y-4"},jr=["innerHTML"],Lr={class:"grid grid-cols-1 xl:grid-cols-[3fr_2fr] gap-4"},zr={class:"space-y-4 xl:order-2"},Mr={class:"space-y-4 xl:order-1 min-w-0"},Nr={class:"max-h-96 overflow-y-auto"},Dr={class:"space-y-3"},Pr={key:0},Ar={class:"flex flex-wrap items-center gap-x-3 gap-y-1.5 text-xs mb-3"},Ur={class:"font-medium text-gray-600 dark:text-gray-300"},Br={class:"tabular-nums text-gray-500 dark:text-gray-400"},Fr={class:"text-xs tabular-nums text-gray-400 dark:text-gray-500"},Vr={key:0,class:"inline-flex items-center justify-center size-5 rounded-full bg-red-100 dark:bg-red-900/30 text-red-600 dark:text-red-400 text-xs leading-none",title:"Step failed"},Er={key:1,class:"inline-flex items-center justify-center size-5 rounded-full bg-green-100 dark:bg-green-900/30 text-green-600 dark:text-green-400 text-xs leading-none",title:"Step passed"},Or={class:"flex items-center gap-2"},Hr={key:0,class:"text-xs text-red-500 mt-1 whitespace-pre-wrap break-words font-mono"},Kr={class:"min-w-[6rem]"},Wr={class:"flex items-center justify-between gap-2"},Gr={key:0,class:"text-xs tabular-nums text-gray-400 dark:text-gray-500"},Jr={class:"relative mt-1 h-1.5 w-full overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800"},qr={class:"space-y-4 pt-4"},Qr={key:3,class:"flex flex-col items-center justify-center py-12 text-gray-400"},Zr={class:"space-y-4 pt-1"},Xr={key:0,class:"space-y-2"},Yr={class:"flex items-start gap-2"},ei={class:"space-y-4"},ti={key:3,class:"text-xs text-gray-400 pt-1"},si={class:"bg-gray-100 dark:bg-gray-800 px-1 rounded"},ni={class:"space-y-4 pt-4"},ai={key:0,class:"space-y-4"},oi={class:"flex items-center justify-end"},ri={class:"text-xs whitespace-nowrap"},ii={class:"text-gray-500"},li={class:"text-gray-400 ml-1"},ci={key:1,class:"text-gray-400"},ui=["title"],dl=re({__name:"[id]",async setup(t){let k,h;const w=ns(),$=as(),g=w.params.id,{data:n,refresh:l}=([k,h]=mt(()=>gt(`/api/test-run-cases/${g}`,"$rX1OuZQOSq")),k=await k,h(),k),d=A([]);ve(()=>n.value?.testCaseId,async p=>{if(p)try{d.value=await $fetch(`/api/test-cases/${p}/history`)}catch{d.value=[]}else d.value=[]},{immediate:!0});const{data:D,refresh:M}=([k,h]=mt(()=>gt(`/api/test-run-cases/${g}/traces`,"$bq3dlhiM5e")),k=await k,h(),k),b=C(()=>(D.value?.length??0)>0);os(C(()=>({title:n.value?.title?`${n.value.title} — execution — Piwi Dashboard`:`Execution #${g} — Piwi Dashboard`})));const v=C(()=>!!n.value?.error),F=C(()=>n.value?Sr(n.value):[]),L=C(()=>n.value?.steps?n.value.steps:[]),m=C(()=>n.value?.webVitals??null),S=C(()=>n.value?.networkRequests??[]),V=C(()=>{if(!d.value||d.value.length<2||!n.value?.duration)return null;const p=d.value.filter(ce=>ce.duration!==null&&ce.id!==n.value?.id);if(p.length===0)return null;const R=p.reduce((ce,fe)=>ce+(fe.duration||0),0)/p.length,E=n.value.duration,oe=E-R,me=R>0?Math.round(oe/R*100):0;return{avg:Math.round(R),current:E,diff:Math.round(oe),pct:me}}),B=C(()=>n.value?.testRun?.metadata),I=C(()=>{const p=B.value;return p?.scm?p.scm:null}),G=C(()=>{const p=B.value;return p?.ci?p.ci:null}),J=C(()=>n.value?.failureCluster??null),N=C(()=>{const p=[];return v.value&&p.push({label:"Diagnosis",icon:"i-lucide-stethoscope",value:"diagnosis",slot:"diagnosis"}),p.push({label:`Steps (${L.value.length})`,icon:"i-lucide-list-checks",value:"steps",slot:"steps"}),v.value||p.push({label:"Artifacts",icon:"i-lucide-paperclip",value:"artifacts",slot:"artifacts"}),p.push({label:"Performance",icon:"i-lucide-gauge",value:"performance",slot:"performance"}),p.push({label:`History${d.value?.length?` (${d.value.length})`:""}`,icon:"i-lucide-trending-up",value:"history",slot:"history"}),p}),ne=C(()=>N.value.map(p=>p.value));function O(){return v.value?"diagnosis":"steps"}function le(p){let R=typeof p=="string"?p:"";return R==="error"&&(R="diagnosis"),R==="traces"&&(R=v.value?"diagnosis":"artifacts"),ne.value.includes(R)?R:O()}const y=A(le(w.query.tab));ve(ne,p=>{p.includes(y.value)||(y.value=le(w.query.tab))}),ve(y,p=>{w.query.tab!==p&&$.replace({query:{...w.query,tab:p}})},{immediate:!0});const P=[{accessorKey:"startTime",header:"Date"},{accessorKey:"status",header:"Status"},{accessorKey:"duration",header:"Duration"},{accessorKey:"retries",header:"Retries"},{accessorKey:"runId",header:"Run"},{accessorKey:"error",header:"Error"}],se={navigation:"info",assertion:"success",action:"warning",input:"warning",api:"info",wait:"neutral",hook:"neutral",fixture:"neutral"},x=[{id:"index",header:"#",meta:{class:{th:"w-12",td:"w-12"}}},{id:"status",header:"",meta:{class:{th:"w-10",td:"w-10"}}},{accessorKey:"category",header:"Category",meta:{class:{th:"w-28",td:"w-28"}}},{accessorKey:"title",header:"Step"},{accessorKey:"duration",header:"Duration",meta:{class:{th:"w-44",td:"w-44"}}}],T=C(()=>{const p=new Map;for(const R of L.value){const E=p.get(R.category)??{count:0,duration:0};E.count+=1,E.duration+=R.duration||0,p.set(R.category,E)}return Array.from(p,([R,E])=>({category:R,...E})).sort((R,E)=>E.duration-R.duration)}),K=C(()=>{let p=-1,R=-1;return L.value.forEach((E,oe)=>{(E.duration||0)>R&&(R=E.duration||0,p=oe)}),p}),q=C(()=>L.value.reduce((p,R)=>Math.max(p,R.duration||0),0)),Q=C(()=>L.value.length>0&&L.value.every(p=>typeof p.startTime=="number")),te=C(()=>n.value?.startedAt??(Q.value?Math.min(...L.value.map(p=>p.startTime)):0)),H=C(()=>{const p=n.value?.duration??0;if(p>0)return p;if(Q.value){const R=Math.max(...L.value.map(E=>E.startTime+(E.duration||0)));return Math.max(1,R-te.value)}return 0});function Z(p){if(Q.value&&H.value>0){const E=Math.max(0,Math.min(100,(p.startTime-te.value)/H.value*100)),oe=Math.min(100-E,Math.max(1.5,(p.duration||0)/H.value*100));return{left:`${E}%`,width:`${oe}%`}}return{left:"0%",width:`${q.value>0?Math.max(2,(p.duration||0)/q.value*100):0}%`}}function Y(p){const R=n.value?.duration??0;if(R<=0)return"";const E=p/R*100;return E>0&&E<1?"<1%":`${Math.round(E)}%`}function ae(p){return p>2e3?"text-red-600 font-medium":p>500?"text-orange-500":"text-gray-500"}function z(p){return p>2e3?"bg-red-500":p>500?"bg-orange-400":"bg-gray-400 dark:bg-gray-500"}const W=C(()=>n.value?.testRun?.environment),he=C(()=>[{filePath:n.value?.filePath??"",title:n.value?.title??"",line:n.value?.line??null,projectName:n.value?.browser?.projectName??null}]),Je=C(()=>sn(he.value)),{copy:St,copied:qe}=nn(),It=C(()=>[{label:qe.value?"Copied":"Retry command",icon:qe.value?"i-lucide-check":"i-lucide-play",onClick:()=>St(Je.value,{toast:"Retry command copied"})},{label:"Refresh",icon:"i-lucide-refresh-cw",onClick:()=>l()}]),Rt=!!Ee().public.demoMode;let xe=null;const Qe=C(()=>{const p=n.value?.testRun?.status;return p==="running"||p==="finalizing"});function jt(){if(Rt||xe)return;const p=n.value?.testRun?.id;p&&(xe=new EventSource(`/api/test-runs/${p}/stream`),xe.onmessage=R=>{try{const E=JSON.parse(R.data);E.type==="case-files"&&E.data?.testRunsCaseId===Number(g)?(l(),M()):E.type==="run-finished"&&(l(),M(),Ae())}catch{}},xe.onerror=()=>{})}function Ae(){xe&&(xe.close(),xe=null)}ve(Qe,p=>{p?jt():Ae()},{immediate:!0}),rs(Ae);const{copyRich:Lt,copied:Ze}=hs();function zt(){const p=n.value;if(!p?.error)return;const R=window.location.origin,E=p.title??"Unknown test",oe=p.location??"",me=p.error.replace(/\x1b\[[0-9;]*[a-zA-Z]/g,""),ce=be=>be.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),fe=J.value?`${R}/failure-clusters/${J.value.id}`:null,Me=`${R}/test-run-cases/${g}?tab=diagnosis`,ke=n.value?.testCaseId?`${R}/test-cases/${n.value.testCaseId}`:null,Be=[`❌ Test failed: ${E}`,oe?`Location: ${oe}`:null,"","Error:",me,"",fe?`Failure cluster: ${fe}`:null,`Execution: ${Me}`,ke?`History: ${ke}`:null].filter(be=>be!==null).join(`
9
- `),Fe=[`<p><strong>❌ Test failed: ${ce(E)}</strong>${oe?`<br><code>${ce(oe)}</code>`:""}</p>`,`<p><strong>Error:</strong></p><pre>${ft(p.error)}</pre>`,`<p>🔗 ${fe?`<a href="${fe}">View failure cluster</a> · `:""}<a href="${Me}">Execution details</a>${ke?` · <a href="${ke}">Test history</a>`:""}</p>`].join("");Lt(Be,Fe,{toast:"Failure copied"})}const Ue=A(null),Xe=A(null),je=A(null),Le=A(null),Ye=A(null),ze=A(null),et=A(null),tt=A(null),st=A(null),nt=A(null);function _e(p){p?.scrollIntoView({behavior:"smooth",block:"start"})}const at={sampleError:()=>_e(Ue.value),executionError:()=>_e(Ue.value),testSource:()=>Le.value?.reveal(),sourceFiles:()=>Le.value?.reveal(),environmentDiff:()=>et.value?.reveal(),visualDiff:()=>tt.value?.reveal(),domSnapshot:()=>st.value?.reveal(),ariaSnapshot:()=>nt.value?.reveal(),screenshots:()=>ze.value?.reveal(),tracePointers:()=>ze.value?.reveal(),artifacts:()=>ze.value?.reveal(),console:()=>_e(Xe.value),networkRequests:()=>_e(je.value),serverTraces:()=>_e(je.value),traceCallStack:()=>Le.value?.reveal(),traceNetwork:()=>{Ye.value?.showTraceMode(),_e(je.value)},steps:()=>{y.value="steps"},failingSteps:()=>{y.value="steps"}};return is(Es,{canLocate:p=>p in at,open:p=>at[p]?.()}),(p,R)=>{const E=Yt,oe=es,me=ue,ce=Pe,fe=ws,Me=Is,ke=Rs,Be=Ls,Fe=Vn,be=Ie,Mt=$t,ot=ye,Nt=qn,Dt=ia,Pt=xa,At=Ca,Ut=za,Bt=vs,Ft=_s,Vt=ks,rt=Ba,it=ar,lt=xs,Et=bt,Ot=Oe,Ht=bs,Ne=pe,ie=Re,Kt=ht,ct=Xs,ut=Ys,dt=en,Wt=ir,Gt=Cr,de=xt,Ve=vt,Jt=Ct,qt=tn,Qt=Ss,Zt=js;return s(),_(Zt,{id:"test-run-case-detail"},{header:u(()=>[r(Be,null,{leading:u(()=>[r(E),r(oe,{items:[{label:"Home",icon:"i-lucide-house",to:"/"},{label:"Projects",to:"/projects"},...e(n)?.testRun?.project?.id?[{label:e(n).testRun.project.name||"Project",to:`/projects/${e(n).testRun.project.id}`}]:[{label:"Project"}],...e(n)?.testRun?.id?[{label:`Run #${e(n).testRun.id}`+(e(n).testRun.label?` — ${e(n).testRun.label}`:""),to:`/test-runs/${e(n).testRun.id}`}]:[{label:"Test run"}],{label:e(n)?.title||`Execution #${e(g)}`}]},null,8,["items"])]),right:u(()=>[e(n)?.testCaseId?(s(),_(ce,{key:0,to:`/test-cases/${e(n).testCaseId}`,class:"text-xs text-gray-500 hover:text-primary mr-2 flex items-center gap-1",title:"View test case evolution and history"},{default:u(()=>[r(me,{name:"i-lucide-trending-up",class:"size-3.5"}),R[2]||(R[2]=o("span",{class:"hidden sm:inline"},"Evolution",-1))]),_:1},8,["to"])):i("",!0),e(n)?(s(),_(fe,{key:1,endpoint:`/api/test-run-cases/${e(n).id}/export`,"base-name":`piwi-execution-${e(n).id}`,class:"mr-2"},null,8,["endpoint","base-name"])):i("",!0),r(Me,{"project-id":e(n)?.testRun?.project?.id,"project-label":e(n)?.testRun?.project?.label??e(n)?.testRun?.project?.name,cases:e(he),class:"mr-2"},null,8,["project-id","project-label","cases"]),r(ke,{actions:e(It)},null,8,["actions"])]),_:1})]),body:u(()=>[r(Qt,{modelValue:e(y),"onUpdate:modelValue":R[1]||(R[1]=j=>ge(y)?y.value=j:null),"tab-items":e(N)},{summary:u(()=>[r(Fe,{"test-case":e(n)??null,"scm-info":e(I),"ci-info":e(G),browser:e(n)?.browser??null,environment:e(W),"steps-count":e(L).length,"historical-timing":e(V),"stable-links":e(n)?.stableLinks??null,"project-key":e(n)?.testRun?.project?.id,"project-name":e(n)?.testRun?.project?.name,onRefresh:R[0]||(R[0]=j=>e(l)())},null,8,["test-case","scm-info","ci-info","browser","environment","steps-count","historical-timing","stable-links","project-key","project-name"])]),"tab-diagnosis":u(()=>[o("div",Rr,[o("div",{ref_key:"errorEl",ref:Ue,class:"scroll-mt-4"},[e(n)?.error?(s(),_(ot,{key:0,icon:"i-lucide-circle-x","icon-class":"text-red-500",title:"Error"},{actions:u(()=>[r(Mt,{text:e(Ze)?"Copied!":"Copy failure"},{default:u(()=>[r(be,{size:"xs",variant:"ghost",color:"neutral",icon:e(Ze)?"i-lucide-check":"i-lucide-clipboard",onClick:zt},null,8,["icon"])]),_:1},8,["text"])]),default:u(()=>[o("div",{class:"text-xs font-mono whitespace-pre-wrap break-words max-h-96 overflow-y-auto rounded bg-red-50 dark:bg-red-950/20 p-3",innerHTML:e(ft)(e(Ir)(e(n).error))},null,8,jr)]),_:1})):i("",!0)],512),o("div",Lr,[o("div",zr,[r(Nt,{"test-case":e(n)??null,history:e(d),"current-id":Number(e(g))},null,8,["test-case","history","current-id"]),e(J)?(s(),_(Dt,{key:0,cluster:e(J)},null,8,["cluster"])):i("",!0),r(Pt,{"test-runs-case-id":Number(e(g))},null,8,["test-runs-case-id"])]),o("div",Mr,[e(n)?.testSourceFrames?.length||e(n)?.testSource||e(b)?(s(),_(At,{key:0,ref_key:"testSourceCard",ref:Le,"storage-key":"case-test-source",frames:e(n)?.testSourceFrames??null,"test-source":e(n)?.testSource??null,"run-id":e(n)?.testRun?.id??null,"test-runs-case-id":Number(e(g)),"has-trace":e(b),"project-key":e(n)?.testRun?.project?.id,"project-name":e(n)?.testRun?.project?.name},null,8,["frames","test-source","run-id","test-runs-case-id","has-trace","project-key","project-name"])):i("",!0),r(Ut,{ref_key:"evidenceCard",ref:ze,"storage-key":"case-evidence",attachments:e(n)?.attachments??[],traces:e(D)??[]},null,8,["attachments","traces"]),e(n)?.testRun?.id?(s(),_(Bt,{key:1,"storage-key":"case-locators","run-id":e(n).testRun.id,"test-runs-case-id":Number(e(g))},null,8,["run-id","test-runs-case-id"])):i("",!0),e(n)?.testRun?.id?(s(),_(Ft,{key:2,ref_key:"envDiffCard",ref:et,"storage-key":"case-env-diff","run-id":e(n).testRun.id,"test-runs-case-id":Number(e(g))},null,8,["run-id","test-runs-case-id"])):i("",!0),e(n)?.testRun?.id?(s(),_(Vt,{key:3,ref_key:"visualDiffCard",ref:tt,"storage-key":"case-visual-diff","run-id":e(n).testRun.id,"test-runs-case-id":Number(e(g))},null,8,["run-id","test-runs-case-id"])):i("",!0),e(n)?.consoleLogs?.length?(s(),a("div",{key:4,ref_key:"consoleEl",ref:Xe,class:"scroll-mt-4"},[r(rt,{entries:e(n)?.consoleLogs??[]},null,8,["entries"])],512)):i("",!0),e(S).length>0||e(b)?(s(),a("div",{key:5,ref_key:"networkEl",ref:je,class:"scroll-mt-4"},[r(it,{ref_key:"networkCard",ref:Ye,requests:e(S),"run-id":e(n)?.testRun?.id??null,"test-runs-case-id":Number(e(g)),"has-trace":e(b)},null,8,["requests","run-id","test-runs-case-id","has-trace"])],512)):i("",!0),e(n)?.pageState?(s(),_(lt,{key:6,"storage-key":"case-page-state","page-state":e(n).pageState},null,8,["page-state"])):i("",!0),e(n)?.ariaSnapshot?(s(),_(Ot,{key:7,ref_key:"ariaCard",ref:nt,"storage-key":"case-aria",icon:"i-lucide-scan-text",title:"ARIA snapshot",help:"case.aria"},{folded:u(()=>[...R[3]||(R[3]=[f("Accessibility tree captured at the moment of failure",-1)])]),default:u(()=>[o("div",Nr,[r(Et,{text:"```yaml\n"+e(n).ariaSnapshot+"\n```"},null,8,["text"])])]),_:1},512)):i("",!0),e(n)?.testRun?.id?(s(),_(Ht,{key:8,ref_key:"domSnapshotCard",ref:st,"storage-key":"case-dom-snapshot","run-id":e(n).testRun.id,"test-runs-case-id":Number(e(g))},null,8,["run-id","test-runs-case-id"])):i("",!0)])])])]),"tab-steps":u(()=>[o("div",Dr,[e(L).length>0?(s(),a("div",Pr,[o("div",Ar,[o("span",Ur,c(e(L).length)+" steps",1),R[4]||(R[4]=o("span",{class:"text-gray-300 dark:text-gray-600"},"·",-1)),(s(!0),a(U,null,ee(e(T),j=>(s(),a("span",{key:j.category,class:"inline-flex items-center gap-1"},[r(Ne,{color:se[j.category]||"neutral",variant:"soft",size:"xs"},{default:u(()=>[f(c(j.category),1)]),_:2},1032,["color"]),o("span",Br,[f("×"+c(j.count)+" · ",1),r(ie,{ms:j.duration},null,8,["ms"])])]))),128))]),r(ut,{"min-width":"40rem",bleed:!1},{default:u(()=>[r(ct,{data:e(L),columns:x,ui:{base:"table-fixed w-full border-separate border-spacing-0 min-w-[40rem]",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default align-top"}},{"index-cell":u(({row:j})=>[o("span",Fr,c(j.index+1),1)]),"status-cell":u(({row:j})=>[j.original.failed?(s(),a("span",Vr,"✗")):(s(),a("span",Er,"✓"))]),"category-cell":u(({row:j})=>[r(Ne,{color:se[j.original.category]||"neutral",variant:"soft",size:"xs"},{default:u(()=>[f(c(j.original.category),1)]),_:2},1032,["color"])]),"title-cell":u(({row:j})=>[o("div",Or,[o("span",{class:X(j.original.failed?"text-red-600 dark:text-red-400 font-medium":"")},c(j.original.title),3),j.index===e(K)?(s(),_(Ne,{key:0,color:"warning",variant:"subtle",size:"xs",class:"shrink-0",title:"Slowest step in this test"},{default:u(()=>[...R[5]||(R[5]=[f(" slowest ",-1)])]),_:1})):i("",!0)]),j.original.failed&&j.original.error?.message?(s(),a("p",Hr,c(j.original.error.message),1)):i("",!0),j.original.location?(s(),_(Kt,{key:1,location:j.original.location,"project-key":e(n)?.testRun?.project?.id,"project-name":e(n)?.testRun?.project?.name,class:"text-xs text-gray-400 dark:text-gray-500 mt-0.5"},null,8,["location","project-key","project-name"])):i("",!0)]),"duration-cell":u(({row:j})=>[o("div",Kr,[o("div",Wr,[r(ie,{ms:j.original.duration,class:X(`text-sm ${ae(j.original.duration)}`),"unit-class":"opacity-60"},null,8,["ms","class"]),Y(j.original.duration)?(s(),a("span",Gr,c(Y(j.original.duration)),1)):i("",!0)]),o("div",Jr,[o("div",{class:X(["absolute inset-y-0 rounded-full",z(j.original.duration)]),style:Ce(Z(j.original))},null,6)])])]),_:1},8,["data"])]),_:1})])):(s(),_(dt,{key:1,icon:"i-lucide-list-checks",text:"No steps recorded for this execution"}))])]),"tab-artifacts":u(()=>[o("div",qr,[r(Wt,{traces:e(D)||[]},null,8,["traces"]),r(Gt,{attachments:e(n)?.attachments??[]},null,8,["attachments"]),e(n)?.pageState?(s(),_(lt,{key:0,"storage-key":"case-page-state","page-state":e(n).pageState},null,8,["page-state"])):i("",!0),e(n)?.consoleLogs?.length?(s(),_(rt,{key:1,entries:e(n)?.consoleLogs??[]},null,8,["entries"])):i("",!0),e(S).length>0||e(b)?(s(),_(it,{key:2,requests:e(S),"run-id":e(n)?.testRun?.id??null,"test-runs-case-id":Number(e(g)),"has-trace":e(b)},null,8,["requests","run-id","test-runs-case-id","has-trace"])):i("",!0),!e(D)?.length&&!e(n)?.attachments?.length&&!e(n)?.consoleLogs?.length&&!e(S).length?(s(),a("div",Qr,[e(Qe)?(s(),a(U,{key:0},[r(me,{name:"i-lucide-loader-circle",class:"size-8 mb-2 animate-spin"}),R[6]||(R[6]=o("p",{class:"text-sm"}," Run in progress — traces and attachments appear here as soon as they are uploaded. ",-1))],64)):(s(),a(U,{key:1},[r(me,{name:"i-lucide-inbox",class:"size-8 mb-2"}),R[7]||(R[7]=o("p",{class:"text-sm"},"No traces, console logs, or network requests captured for this test case.",-1))],64))])):i("",!0)])]),"tab-performance":u(()=>[o("div",Zr,[e(F).length>0?(s(),a("div",Xr,[(s(!0),a(U,null,ee(e(F),(j,Xt)=>(s(),a("div",{key:Xt,class:X(["p-3 rounded-lg border",j.type==="warning"?"bg-amber-50 dark:bg-amber-900/20 border-amber-200 dark:border-amber-800":"bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800"])},[o("div",Yr,[r(me,{name:j.type==="warning"?"i-lucide-alert-triangle":"i-lucide-lightbulb",class:X([j.type==="warning"?"text-amber-600":"text-blue-600","size-4 mt-0.5 shrink-0"])},null,8,["name","class"]),o("div",null,[o("p",{class:X(j.type==="warning"?"text-amber-800 dark:text-amber-200 font-medium":"text-blue-800 dark:text-blue-200 font-medium")},c(j.message),3),o("p",{class:X([j.type==="warning"?"text-amber-700 dark:text-amber-300":"text-blue-700 dark:text-blue-300","mt-1"])},c(j.details),3)])])],2))),128))])):i("",!0),e(m)?(s(),_(ot,{key:1,icon:"i-lucide-gauge",title:"Browser performance (Web Vitals)",help:"case.web-vitals"},{default:u(()=>[o("div",ei,[e(m).navigation?(s(),_(Ve,{key:0,"min-tile-width":"10rem"},{default:u(()=>[r(de,{label:"TTFB",hint:"Time to first byte","value-class":e(m).navigation.ttfb>600?"text-red-600":e(m).navigation.ttfb>200?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).navigation.ttfb},null,8,["ms"])]),_:1},8,["value-class"]),r(de,{label:"DOM Interactive",hint:"DOM interactive","value-class":e(m).navigation.domInteractive>3e3?"text-red-600":e(m).navigation.domInteractive>1500?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).navigation.domInteractive},null,8,["ms"])]),_:1},8,["value-class"]),r(de,{label:"DOMContentLoaded",hint:"DOMContentLoaded","value-class":e(m).navigation.domContentLoaded>3e3?"text-red-600":e(m).navigation.domContentLoaded>1500?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).navigation.domContentLoaded},null,8,["ms"])]),_:1},8,["value-class"]),r(de,{label:"Load Complete",hint:"Page fully loaded","value-class":e(m).navigation.loadComplete>5e3?"text-red-600":e(m).navigation.loadComplete>3e3?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).navigation.loadComplete},null,8,["ms"])]),_:1},8,["value-class"])]),_:1})):i("",!0),e(m).paint&&(e(m).paint.firstPaint||e(m).paint.firstContentfulPaint)?(s(),_(Ve,{key:1,"min-tile-width":"10rem",class:"pt-2 border-t"},{default:u(()=>[e(m).paint.firstPaint!==void 0?(s(),_(de,{key:0,label:"First Paint (FP)"},{default:u(()=>[r(ie,{ms:e(m).paint.firstPaint},null,8,["ms"])]),_:1})):i("",!0),e(m).paint.firstContentfulPaint!==void 0?(s(),_(de,{key:1,label:"First Contentful Paint (FCP)","value-class":e(m).paint.firstContentfulPaint>3e3?"text-red-600":e(m).paint.firstContentfulPaint>1800?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).paint.firstContentfulPaint},null,8,["ms"])]),_:1},8,["value-class"])):i("",!0)]),_:1})):i("",!0),e(m).vitals?(s(),_(Ve,{key:2,"min-tile-width":"10rem",class:"pt-2 border-t"},{default:u(()=>[r(de,{label:"Largest Contentful Paint (LCP)","value-class":e(m).vitals.lcp==null?"text-gray-400":e(m).vitals.lcp>4e3?"text-red-600":e(m).vitals.lcp>2500?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).vitals.lcp,fallback:"n/a"},null,8,["ms"])]),_:1},8,["value-class"]),r(de,{label:"Cumulative Layout Shift (CLS)",value:e(m).vitals.cls!=null?String(e(m).vitals.cls):"n/a","value-class":e(m).vitals.cls==null?"text-gray-400":e(m).vitals.cls>.25?"text-red-600":e(m).vitals.cls>.1?"text-orange-500":"text-green-600"},null,8,["value","value-class"]),r(de,{label:"Interaction to Next Paint (INP)","value-class":e(m).vitals.inp==null?"text-gray-400":e(m).vitals.inp>500?"text-red-600":e(m).vitals.inp>200?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).vitals.inp,fallback:"n/a"},null,8,["ms"])]),_:1},8,["value-class"])]),_:1})):i("",!0),e(m).navigation?.url?(s(),a("div",ti,[R[8]||(R[8]=f(" Page: ",-1)),o("code",si,c(e(m).navigation.url),1)])):i("",!0)])]),_:1})):i("",!0),e(F).length===0&&!e(m)?(s(),_(Jt,{key:2,icon:"i-lucide-gauge",title:"No performance hints or Web Vitals for this execution",text:"Web Vitals and step timing come from the Piwi capture fixtures — extend your Playwright test with piwiFixtures to collect them.",doc:"capture-fixtures"})):i("",!0)])]),"tab-history":u(()=>[o("div",ni,[e(d)&&e(d).length>0?(s(),a("div",ai,[o("div",oi,[e(n)?.testCaseId?(s(),_(be,{key:0,to:`/test-cases/${e(n).testCaseId}`,size:"xs",variant:"outline",color:"neutral","trailing-icon":"i-lucide-arrow-right"},{default:u(()=>[...R[9]||(R[9]=[f(" View full test history ",-1)])]),_:1},8,["to"])):i("",!0)]),r(qt,{data:e(d),height:200},null,8,["data"]),r(ut,{"min-width":"44rem",bleed:!1},{default:u(()=>[r(ct,{data:e(d),columns:P,ui:{base:"table-fixed border-separate border-spacing-0 min-w-[44rem]",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"startTime-cell":u(({row:j})=>[o("span",ri,[o("span",ii,c(new Date(j.original.startTime).toLocaleDateString("en-US",{month:"short",day:"numeric"})),1),o("span",li,c(new Date(j.original.startTime).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"})),1)])]),"status-cell":u(({row:j})=>[r(Ne,{color:("getStatusColor"in p?p.getStatusColor:e(Gs))(j.original.status),variant:"subtle",class:"capitalize"},{default:u(()=>[f(c(j.original.status),1)]),_:2},1032,["color"])]),"duration-cell":u(({row:j})=>[j.original.duration!==null?(s(),_(ie,{key:0,ms:j.original.duration},null,8,["ms"])):(s(),a("span",ci,"—"))]),"runId-cell":u(({row:j})=>[r(ce,{to:`/test-runs/${j.original.runId}`,class:"text-primary hover:underline"},{default:u(()=>[f(" #"+c(j.original.runId),1)]),_:2},1032,["to"])]),"error-cell":u(({row:j})=>[j.original.error?(s(),a("span",{key:0,class:"text-red-600 text-xs truncate max-w-xs block",title:j.original.error},c(j.original.error.length>80?`${j.original.error.substring(0,80)}…`:j.original.error),9,ui)):i("",!0)]),_:1},8,["data"])]),_:1})])):(s(),_(dt,{key:1,icon:"i-lucide-trending-up",text:"No prior executions of this test yet."},{default:u(()=>[...R[10]||(R[10]=[o("p",{class:"text-xs text-gray-400"}," This is the first recorded run. Once it runs again, its status and duration trend appear here. ",-1)])]),_:1}))])]),_:1},8,["modelValue","tab-items"])]),_:1})}}});export{dl as default};
8
+ [truncated]`),D}const Rr={class:"space-y-4"},jr=["innerHTML"],Lr={class:"grid grid-cols-1 xl:grid-cols-[3fr_2fr] gap-4"},zr={class:"space-y-4 xl:order-2"},Mr={class:"space-y-4 xl:order-1 min-w-0"},Nr={class:"max-h-96 overflow-y-auto"},Dr={class:"space-y-3"},Pr={key:0},Ar={class:"flex flex-wrap items-center gap-x-3 gap-y-1.5 text-xs mb-3"},Ur={class:"font-medium text-gray-600 dark:text-gray-300"},Br={class:"tabular-nums text-gray-500 dark:text-gray-400"},Fr={class:"text-xs tabular-nums text-gray-400 dark:text-gray-500"},Vr={key:0,class:"inline-flex items-center justify-center size-5 rounded-full bg-red-100 dark:bg-red-900/30 text-red-600 dark:text-red-400 text-xs leading-none",title:"Step failed"},Er={key:1,class:"inline-flex items-center justify-center size-5 rounded-full bg-green-100 dark:bg-green-900/30 text-green-600 dark:text-green-400 text-xs leading-none",title:"Step passed"},Or={class:"flex items-center gap-2"},Hr={key:0,class:"text-xs text-red-500 mt-1 whitespace-pre-wrap break-words font-mono"},Kr={class:"min-w-[6rem]"},Wr={class:"flex items-center justify-between gap-2"},Gr={key:0,class:"text-xs tabular-nums text-gray-400 dark:text-gray-500"},Jr={class:"relative mt-1 h-1.5 w-full overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800"},qr={class:"space-y-4 pt-4"},Qr={key:3,class:"flex flex-col items-center justify-center py-12 text-gray-400"},Zr={class:"space-y-4 pt-1"},Xr={key:0,class:"space-y-2"},Yr={class:"flex items-start gap-2"},ei={class:"space-y-4"},ti={key:3,class:"text-xs text-gray-400 pt-1"},si={class:"bg-gray-100 dark:bg-gray-800 px-1 rounded"},ni={class:"space-y-4 pt-4"},ai={key:0,class:"space-y-4"},oi={class:"flex items-center justify-end"},ri={class:"text-xs whitespace-nowrap"},ii={class:"text-gray-500"},li={class:"text-gray-400 ml-1"},ci={key:1,class:"text-gray-400"},ui=["title"],fl=re({__name:"[id]",async setup(t){let k,h;const w=ns(),$=as(),g=w.params.id,{data:n,refresh:l}=([k,h]=mt(()=>gt(`/api/test-run-cases/${g}`,"$rX1OuZQOSq")),k=await k,h(),k),d=A([]);ve(()=>n.value?.testCaseId,async p=>{if(p)try{d.value=await $fetch(`/api/test-cases/${p}/history`)}catch{d.value=[]}else d.value=[]},{immediate:!0});const{data:D,refresh:M}=([k,h]=mt(()=>gt(`/api/test-run-cases/${g}/traces`,"$bq3dlhiM5e")),k=await k,h(),k),b=C(()=>(D.value?.length??0)>0);os(C(()=>({title:n.value?.title?`${n.value.title} — execution — Piwi Dashboard`:`Execution #${g} — Piwi Dashboard`})));const v=C(()=>!!n.value?.error),F=C(()=>n.value?Sr(n.value):[]),L=C(()=>n.value?.steps?n.value.steps:[]),m=C(()=>n.value?.webVitals??null),S=C(()=>n.value?.networkRequests??[]),V=C(()=>{if(!d.value||d.value.length<2||!n.value?.duration)return null;const p=d.value.filter(ce=>ce.duration!==null&&ce.id!==n.value?.id);if(p.length===0)return null;const R=p.reduce((ce,fe)=>ce+(fe.duration||0),0)/p.length,E=n.value.duration,oe=E-R,me=R>0?Math.round(oe/R*100):0;return{avg:Math.round(R),current:E,diff:Math.round(oe),pct:me}}),B=C(()=>n.value?.testRun?.metadata),I=C(()=>{const p=B.value;return p?.scm?p.scm:null}),G=C(()=>{const p=B.value;return p?.ci?p.ci:null}),J=C(()=>n.value?.failureCluster??null),N=C(()=>{const p=[];return v.value&&p.push({label:"Diagnosis",icon:"i-lucide-stethoscope",value:"diagnosis",slot:"diagnosis"}),p.push({label:`Steps (${L.value.length})`,icon:"i-lucide-list-checks",value:"steps",slot:"steps"}),v.value||p.push({label:"Artifacts",icon:"i-lucide-paperclip",value:"artifacts",slot:"artifacts"}),p.push({label:"Performance",icon:"i-lucide-gauge",value:"performance",slot:"performance"}),p.push({label:`History${d.value?.length?` (${d.value.length})`:""}`,icon:"i-lucide-trending-up",value:"history",slot:"history"}),p}),ne=C(()=>N.value.map(p=>p.value));function O(){return v.value?"diagnosis":"steps"}function le(p){let R=typeof p=="string"?p:"";return R==="error"&&(R="diagnosis"),R==="traces"&&(R=v.value?"diagnosis":"artifacts"),ne.value.includes(R)?R:O()}const y=A(le(w.query.tab));ve(ne,p=>{p.includes(y.value)||(y.value=le(w.query.tab))}),ve(y,p=>{w.query.tab!==p&&$.replace({query:{...w.query,tab:p}})},{immediate:!0});const P=[{accessorKey:"startTime",header:"Date"},{accessorKey:"status",header:"Status"},{accessorKey:"duration",header:"Duration"},{accessorKey:"retries",header:"Retries"},{accessorKey:"runId",header:"Run"},{accessorKey:"error",header:"Error"}],se={navigation:"info",assertion:"success",action:"warning",input:"warning",api:"info",wait:"neutral",hook:"neutral",fixture:"neutral"},x=[{id:"index",header:"#",meta:{class:{th:"w-12",td:"w-12"}}},{id:"status",header:"",meta:{class:{th:"w-10",td:"w-10"}}},{accessorKey:"category",header:"Category",meta:{class:{th:"w-28",td:"w-28"}}},{accessorKey:"title",header:"Step"},{accessorKey:"duration",header:"Duration",meta:{class:{th:"w-44",td:"w-44"}}}],T=C(()=>{const p=new Map;for(const R of L.value){const E=p.get(R.category)??{count:0,duration:0};E.count+=1,E.duration+=R.duration||0,p.set(R.category,E)}return Array.from(p,([R,E])=>({category:R,...E})).sort((R,E)=>E.duration-R.duration)}),K=C(()=>{let p=-1,R=-1;return L.value.forEach((E,oe)=>{(E.duration||0)>R&&(R=E.duration||0,p=oe)}),p}),q=C(()=>L.value.reduce((p,R)=>Math.max(p,R.duration||0),0)),Q=C(()=>L.value.length>0&&L.value.every(p=>typeof p.startTime=="number")),te=C(()=>n.value?.startedAt??(Q.value?Math.min(...L.value.map(p=>p.startTime)):0)),H=C(()=>{const p=n.value?.duration??0;if(p>0)return p;if(Q.value){const R=Math.max(...L.value.map(E=>E.startTime+(E.duration||0)));return Math.max(1,R-te.value)}return 0});function Z(p){if(Q.value&&H.value>0){const E=Math.max(0,Math.min(100,(p.startTime-te.value)/H.value*100)),oe=Math.min(100-E,Math.max(1.5,(p.duration||0)/H.value*100));return{left:`${E}%`,width:`${oe}%`}}return{left:"0%",width:`${q.value>0?Math.max(2,(p.duration||0)/q.value*100):0}%`}}function Y(p){const R=n.value?.duration??0;if(R<=0)return"";const E=p/R*100;return E>0&&E<1?"<1%":`${Math.round(E)}%`}function ae(p){return p>2e3?"text-red-600 font-medium":p>500?"text-orange-500":"text-gray-500"}function z(p){return p>2e3?"bg-red-500":p>500?"bg-orange-400":"bg-gray-400 dark:bg-gray-500"}const W=C(()=>n.value?.testRun?.environment),he=C(()=>[{filePath:n.value?.filePath??"",title:n.value?.title??"",line:n.value?.line??null,projectName:n.value?.browser?.projectName??null}]),Je=C(()=>sn(he.value)),{copy:St,copied:qe}=nn(),It=C(()=>[{label:qe.value?"Copied":"Retry command",icon:qe.value?"i-lucide-check":"i-lucide-play",onClick:()=>St(Je.value,{toast:"Retry command copied"})},{label:"Refresh",icon:"i-lucide-refresh-cw",onClick:()=>l()}]),Rt=!!Ee().public.demoMode;let xe=null;const Qe=C(()=>{const p=n.value?.testRun?.status;return p==="running"||p==="finalizing"});function jt(){if(Rt||xe)return;const p=n.value?.testRun?.id;p&&(xe=new EventSource(`/api/test-runs/${p}/stream`),xe.onmessage=R=>{try{const E=JSON.parse(R.data);E.type==="case-files"&&E.data?.testRunsCaseId===Number(g)?(l(),M()):E.type==="run-finished"&&(l(),M(),Ae())}catch{}},xe.onerror=()=>{})}function Ae(){xe&&(xe.close(),xe=null)}ve(Qe,p=>{p?jt():Ae()},{immediate:!0}),rs(Ae);const{copyRich:Lt,copied:Ze}=hs();function zt(){const p=n.value;if(!p?.error)return;const R=window.location.origin,E=p.title??"Unknown test",oe=p.location??"",me=p.error.replace(/\x1b\[[0-9;]*[a-zA-Z]/g,""),ce=be=>be.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),fe=J.value?`${R}/failure-clusters/${J.value.id}`:null,Me=`${R}/test-run-cases/${g}?tab=diagnosis`,ke=n.value?.testCaseId?`${R}/test-cases/${n.value.testCaseId}`:null,Be=[`❌ Test failed: ${E}`,oe?`Location: ${oe}`:null,"","Error:",me,"",fe?`Failure cluster: ${fe}`:null,`Execution: ${Me}`,ke?`History: ${ke}`:null].filter(be=>be!==null).join(`
9
+ `),Fe=[`<p><strong>❌ Test failed: ${ce(E)}</strong>${oe?`<br><code>${ce(oe)}</code>`:""}</p>`,`<p><strong>Error:</strong></p><pre>${ft(p.error)}</pre>`,`<p>🔗 ${fe?`<a href="${fe}">View failure cluster</a> · `:""}<a href="${Me}">Execution details</a>${ke?` · <a href="${ke}">Test history</a>`:""}</p>`].join("");Lt(Be,Fe,{toast:"Failure copied"})}const Ue=A(null),Xe=A(null),je=A(null),Le=A(null),Ye=A(null),ze=A(null),et=A(null),tt=A(null),st=A(null),nt=A(null);function _e(p){p?.scrollIntoView({behavior:"smooth",block:"start"})}const at={sampleError:()=>_e(Ue.value),executionError:()=>_e(Ue.value),testSource:()=>Le.value?.reveal(),sourceFiles:()=>Le.value?.reveal(),environmentDiff:()=>et.value?.reveal(),visualDiff:()=>tt.value?.reveal(),domSnapshot:()=>st.value?.reveal(),ariaSnapshot:()=>nt.value?.reveal(),screenshots:()=>ze.value?.reveal(),tracePointers:()=>ze.value?.reveal(),artifacts:()=>ze.value?.reveal(),console:()=>_e(Xe.value),networkRequests:()=>_e(je.value),serverTraces:()=>_e(je.value),traceCallStack:()=>Le.value?.reveal(),traceNetwork:()=>{Ye.value?.showTraceMode(),_e(je.value)},steps:()=>{y.value="steps"},failingSteps:()=>{y.value="steps"}};return is(Es,{canLocate:p=>p in at,open:p=>at[p]?.()}),(p,R)=>{const E=Yt,oe=es,me=ue,ce=Pe,fe=ws,Me=$s,ke=Cs,Be=Ss,Fe=Vn,be=Ie,Mt=$t,ot=ye,Nt=qn,Dt=ia,Pt=xa,At=Ca,Ut=za,Bt=vs,Ft=_s,Vt=ks,rt=Ba,it=ar,lt=xs,Et=bt,Ot=Oe,Ht=bs,Ne=pe,ie=Re,Kt=ht,ct=Xs,ut=Ys,dt=en,Wt=ir,Gt=Cr,de=xt,Ve=vt,Jt=Ct,qt=tn,Qt=Ls,Zt=Ts;return s(),_(Zt,{id:"test-run-case-detail"},{header:u(()=>[r(Be,null,{leading:u(()=>[r(E),r(oe,{items:[{label:"Home",icon:"i-lucide-house",to:"/"},{label:"Projects",to:"/projects"},...e(n)?.testRun?.project?.id?[{label:e(n).testRun.project.name||"Project",to:`/projects/${e(n).testRun.project.id}`}]:[{label:"Project"}],...e(n)?.testRun?.id?[{label:`Run #${e(n).testRun.id}`+(e(n).testRun.label?` — ${e(n).testRun.label}`:""),to:`/test-runs/${e(n).testRun.id}`}]:[{label:"Test run"}],{label:e(n)?.title||`Execution #${e(g)}`}]},null,8,["items"])]),right:u(()=>[e(n)?.testCaseId?(s(),_(ce,{key:0,to:`/test-cases/${e(n).testCaseId}`,class:"text-xs text-gray-500 hover:text-primary mr-2 flex items-center gap-1",title:"View test case evolution and history"},{default:u(()=>[r(me,{name:"i-lucide-trending-up",class:"size-3.5"}),R[2]||(R[2]=o("span",{class:"hidden sm:inline"},"Evolution",-1))]),_:1},8,["to"])):i("",!0),e(n)?(s(),_(fe,{key:1,endpoint:`/api/test-run-cases/${e(n).id}/export`,"base-name":`piwi-execution-${e(n).id}`,class:"mr-2"},null,8,["endpoint","base-name"])):i("",!0),r(Me,{"project-id":e(n)?.testRun?.project?.id,"project-label":e(n)?.testRun?.project?.label??e(n)?.testRun?.project?.name,cases:e(he),class:"mr-2"},null,8,["project-id","project-label","cases"]),r(ke,{actions:e(It)},null,8,["actions"])]),_:1})]),body:u(()=>[r(Qt,{modelValue:e(y),"onUpdate:modelValue":R[1]||(R[1]=j=>ge(y)?y.value=j:null),"tab-items":e(N)},{summary:u(()=>[r(Fe,{"test-case":e(n)??null,"scm-info":e(I),"ci-info":e(G),browser:e(n)?.browser??null,environment:e(W),"steps-count":e(L).length,"historical-timing":e(V),"stable-links":e(n)?.stableLinks??null,"project-key":e(n)?.testRun?.project?.id,"project-name":e(n)?.testRun?.project?.name,onRefresh:R[0]||(R[0]=j=>e(l)())},null,8,["test-case","scm-info","ci-info","browser","environment","steps-count","historical-timing","stable-links","project-key","project-name"])]),"tab-diagnosis":u(()=>[o("div",Rr,[o("div",{ref_key:"errorEl",ref:Ue,class:"scroll-mt-4"},[e(n)?.error?(s(),_(ot,{key:0,icon:"i-lucide-circle-x","icon-class":"text-red-500",title:"Error"},{actions:u(()=>[r(Mt,{text:e(Ze)?"Copied!":"Copy failure"},{default:u(()=>[r(be,{size:"xs",variant:"ghost",color:"neutral",icon:e(Ze)?"i-lucide-check":"i-lucide-clipboard",onClick:zt},null,8,["icon"])]),_:1},8,["text"])]),default:u(()=>[o("div",{class:"text-xs font-mono whitespace-pre-wrap break-words max-h-96 overflow-y-auto rounded bg-red-50 dark:bg-red-950/20 p-3",innerHTML:e(ft)(e(Ir)(e(n).error))},null,8,jr)]),_:1})):i("",!0)],512),o("div",Lr,[o("div",zr,[r(Nt,{"test-case":e(n)??null,history:e(d),"current-id":Number(e(g))},null,8,["test-case","history","current-id"]),e(J)?(s(),_(Dt,{key:0,cluster:e(J)},null,8,["cluster"])):i("",!0),r(Pt,{"test-runs-case-id":Number(e(g))},null,8,["test-runs-case-id"])]),o("div",Mr,[e(n)?.testSourceFrames?.length||e(n)?.testSource||e(b)?(s(),_(At,{key:0,ref_key:"testSourceCard",ref:Le,"storage-key":"case-test-source",frames:e(n)?.testSourceFrames??null,"test-source":e(n)?.testSource??null,"run-id":e(n)?.testRun?.id??null,"test-runs-case-id":Number(e(g)),"has-trace":e(b),"project-key":e(n)?.testRun?.project?.id,"project-name":e(n)?.testRun?.project?.name},null,8,["frames","test-source","run-id","test-runs-case-id","has-trace","project-key","project-name"])):i("",!0),r(Ut,{ref_key:"evidenceCard",ref:ze,"storage-key":"case-evidence",attachments:e(n)?.attachments??[],traces:e(D)??[]},null,8,["attachments","traces"]),e(n)?.testRun?.id?(s(),_(Bt,{key:1,"storage-key":"case-locators","run-id":e(n).testRun.id,"test-runs-case-id":Number(e(g))},null,8,["run-id","test-runs-case-id"])):i("",!0),e(n)?.testRun?.id?(s(),_(Ft,{key:2,ref_key:"envDiffCard",ref:et,"storage-key":"case-env-diff","run-id":e(n).testRun.id,"test-runs-case-id":Number(e(g))},null,8,["run-id","test-runs-case-id"])):i("",!0),e(n)?.testRun?.id?(s(),_(Vt,{key:3,ref_key:"visualDiffCard",ref:tt,"storage-key":"case-visual-diff","run-id":e(n).testRun.id,"test-runs-case-id":Number(e(g))},null,8,["run-id","test-runs-case-id"])):i("",!0),e(n)?.consoleLogs?.length?(s(),a("div",{key:4,ref_key:"consoleEl",ref:Xe,class:"scroll-mt-4"},[r(rt,{entries:e(n)?.consoleLogs??[]},null,8,["entries"])],512)):i("",!0),e(S).length>0||e(b)?(s(),a("div",{key:5,ref_key:"networkEl",ref:je,class:"scroll-mt-4"},[r(it,{ref_key:"networkCard",ref:Ye,requests:e(S),"run-id":e(n)?.testRun?.id??null,"test-runs-case-id":Number(e(g)),"has-trace":e(b)},null,8,["requests","run-id","test-runs-case-id","has-trace"])],512)):i("",!0),e(n)?.pageState?(s(),_(lt,{key:6,"storage-key":"case-page-state","page-state":e(n).pageState},null,8,["page-state"])):i("",!0),e(n)?.ariaSnapshot?(s(),_(Ot,{key:7,ref_key:"ariaCard",ref:nt,"storage-key":"case-aria",icon:"i-lucide-scan-text",title:"ARIA snapshot",help:"case.aria"},{folded:u(()=>[...R[3]||(R[3]=[f("Accessibility tree captured at the moment of failure",-1)])]),default:u(()=>[o("div",Nr,[r(Et,{text:"```yaml\n"+e(n).ariaSnapshot+"\n```"},null,8,["text"])])]),_:1},512)):i("",!0),e(n)?.testRun?.id?(s(),_(Ht,{key:8,ref_key:"domSnapshotCard",ref:st,"storage-key":"case-dom-snapshot","run-id":e(n).testRun.id,"test-runs-case-id":Number(e(g))},null,8,["run-id","test-runs-case-id"])):i("",!0)])])])]),"tab-steps":u(()=>[o("div",Dr,[e(L).length>0?(s(),a("div",Pr,[o("div",Ar,[o("span",Ur,c(e(L).length)+" steps",1),R[4]||(R[4]=o("span",{class:"text-gray-300 dark:text-gray-600"},"·",-1)),(s(!0),a(U,null,ee(e(T),j=>(s(),a("span",{key:j.category,class:"inline-flex items-center gap-1"},[r(Ne,{color:se[j.category]||"neutral",variant:"soft",size:"xs"},{default:u(()=>[f(c(j.category),1)]),_:2},1032,["color"]),o("span",Br,[f("×"+c(j.count)+" · ",1),r(ie,{ms:j.duration},null,8,["ms"])])]))),128))]),r(ut,{"min-width":"40rem",bleed:!1},{default:u(()=>[r(ct,{data:e(L),columns:x,ui:{base:"table-fixed w-full border-separate border-spacing-0 min-w-[40rem]",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default align-top"}},{"index-cell":u(({row:j})=>[o("span",Fr,c(j.index+1),1)]),"status-cell":u(({row:j})=>[j.original.failed?(s(),a("span",Vr,"✗")):(s(),a("span",Er,"✓"))]),"category-cell":u(({row:j})=>[r(Ne,{color:se[j.original.category]||"neutral",variant:"soft",size:"xs"},{default:u(()=>[f(c(j.original.category),1)]),_:2},1032,["color"])]),"title-cell":u(({row:j})=>[o("div",Or,[o("span",{class:X(j.original.failed?"text-red-600 dark:text-red-400 font-medium":"")},c(j.original.title),3),j.index===e(K)?(s(),_(Ne,{key:0,color:"warning",variant:"subtle",size:"xs",class:"shrink-0",title:"Slowest step in this test"},{default:u(()=>[...R[5]||(R[5]=[f(" slowest ",-1)])]),_:1})):i("",!0)]),j.original.failed&&j.original.error?.message?(s(),a("p",Hr,c(j.original.error.message),1)):i("",!0),j.original.location?(s(),_(Kt,{key:1,location:j.original.location,"project-key":e(n)?.testRun?.project?.id,"project-name":e(n)?.testRun?.project?.name,class:"text-xs text-gray-400 dark:text-gray-500 mt-0.5"},null,8,["location","project-key","project-name"])):i("",!0)]),"duration-cell":u(({row:j})=>[o("div",Kr,[o("div",Wr,[r(ie,{ms:j.original.duration,class:X(`text-sm ${ae(j.original.duration)}`),"unit-class":"opacity-60"},null,8,["ms","class"]),Y(j.original.duration)?(s(),a("span",Gr,c(Y(j.original.duration)),1)):i("",!0)]),o("div",Jr,[o("div",{class:X(["absolute inset-y-0 rounded-full",z(j.original.duration)]),style:Ce(Z(j.original))},null,6)])])]),_:1},8,["data"])]),_:1})])):(s(),_(dt,{key:1,icon:"i-lucide-list-checks",text:"No steps recorded for this execution"}))])]),"tab-artifacts":u(()=>[o("div",qr,[r(Wt,{traces:e(D)||[]},null,8,["traces"]),r(Gt,{attachments:e(n)?.attachments??[]},null,8,["attachments"]),e(n)?.pageState?(s(),_(lt,{key:0,"storage-key":"case-page-state","page-state":e(n).pageState},null,8,["page-state"])):i("",!0),e(n)?.consoleLogs?.length?(s(),_(rt,{key:1,entries:e(n)?.consoleLogs??[]},null,8,["entries"])):i("",!0),e(S).length>0||e(b)?(s(),_(it,{key:2,requests:e(S),"run-id":e(n)?.testRun?.id??null,"test-runs-case-id":Number(e(g)),"has-trace":e(b)},null,8,["requests","run-id","test-runs-case-id","has-trace"])):i("",!0),!e(D)?.length&&!e(n)?.attachments?.length&&!e(n)?.consoleLogs?.length&&!e(S).length?(s(),a("div",Qr,[e(Qe)?(s(),a(U,{key:0},[r(me,{name:"i-lucide-loader-circle",class:"size-8 mb-2 animate-spin"}),R[6]||(R[6]=o("p",{class:"text-sm"}," Run in progress — traces and attachments appear here as soon as they are uploaded. ",-1))],64)):(s(),a(U,{key:1},[r(me,{name:"i-lucide-inbox",class:"size-8 mb-2"}),R[7]||(R[7]=o("p",{class:"text-sm"},"No traces, console logs, or network requests captured for this test case.",-1))],64))])):i("",!0)])]),"tab-performance":u(()=>[o("div",Zr,[e(F).length>0?(s(),a("div",Xr,[(s(!0),a(U,null,ee(e(F),(j,Xt)=>(s(),a("div",{key:Xt,class:X(["p-3 rounded-lg border",j.type==="warning"?"bg-amber-50 dark:bg-amber-900/20 border-amber-200 dark:border-amber-800":"bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800"])},[o("div",Yr,[r(me,{name:j.type==="warning"?"i-lucide-alert-triangle":"i-lucide-lightbulb",class:X([j.type==="warning"?"text-amber-600":"text-blue-600","size-4 mt-0.5 shrink-0"])},null,8,["name","class"]),o("div",null,[o("p",{class:X(j.type==="warning"?"text-amber-800 dark:text-amber-200 font-medium":"text-blue-800 dark:text-blue-200 font-medium")},c(j.message),3),o("p",{class:X([j.type==="warning"?"text-amber-700 dark:text-amber-300":"text-blue-700 dark:text-blue-300","mt-1"])},c(j.details),3)])])],2))),128))])):i("",!0),e(m)?(s(),_(ot,{key:1,icon:"i-lucide-gauge",title:"Browser performance (Web Vitals)",help:"case.web-vitals"},{default:u(()=>[o("div",ei,[e(m).navigation?(s(),_(Ve,{key:0,"min-tile-width":"10rem"},{default:u(()=>[r(de,{label:"TTFB",hint:"Time to first byte","value-class":e(m).navigation.ttfb>600?"text-red-600":e(m).navigation.ttfb>200?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).navigation.ttfb},null,8,["ms"])]),_:1},8,["value-class"]),r(de,{label:"DOM Interactive",hint:"DOM interactive","value-class":e(m).navigation.domInteractive>3e3?"text-red-600":e(m).navigation.domInteractive>1500?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).navigation.domInteractive},null,8,["ms"])]),_:1},8,["value-class"]),r(de,{label:"DOMContentLoaded",hint:"DOMContentLoaded","value-class":e(m).navigation.domContentLoaded>3e3?"text-red-600":e(m).navigation.domContentLoaded>1500?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).navigation.domContentLoaded},null,8,["ms"])]),_:1},8,["value-class"]),r(de,{label:"Load Complete",hint:"Page fully loaded","value-class":e(m).navigation.loadComplete>5e3?"text-red-600":e(m).navigation.loadComplete>3e3?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).navigation.loadComplete},null,8,["ms"])]),_:1},8,["value-class"])]),_:1})):i("",!0),e(m).paint&&(e(m).paint.firstPaint||e(m).paint.firstContentfulPaint)?(s(),_(Ve,{key:1,"min-tile-width":"10rem",class:"pt-2 border-t"},{default:u(()=>[e(m).paint.firstPaint!==void 0?(s(),_(de,{key:0,label:"First Paint (FP)"},{default:u(()=>[r(ie,{ms:e(m).paint.firstPaint},null,8,["ms"])]),_:1})):i("",!0),e(m).paint.firstContentfulPaint!==void 0?(s(),_(de,{key:1,label:"First Contentful Paint (FCP)","value-class":e(m).paint.firstContentfulPaint>3e3?"text-red-600":e(m).paint.firstContentfulPaint>1800?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).paint.firstContentfulPaint},null,8,["ms"])]),_:1},8,["value-class"])):i("",!0)]),_:1})):i("",!0),e(m).vitals?(s(),_(Ve,{key:2,"min-tile-width":"10rem",class:"pt-2 border-t"},{default:u(()=>[r(de,{label:"Largest Contentful Paint (LCP)","value-class":e(m).vitals.lcp==null?"text-gray-400":e(m).vitals.lcp>4e3?"text-red-600":e(m).vitals.lcp>2500?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).vitals.lcp,fallback:"n/a"},null,8,["ms"])]),_:1},8,["value-class"]),r(de,{label:"Cumulative Layout Shift (CLS)",value:e(m).vitals.cls!=null?String(e(m).vitals.cls):"n/a","value-class":e(m).vitals.cls==null?"text-gray-400":e(m).vitals.cls>.25?"text-red-600":e(m).vitals.cls>.1?"text-orange-500":"text-green-600"},null,8,["value","value-class"]),r(de,{label:"Interaction to Next Paint (INP)","value-class":e(m).vitals.inp==null?"text-gray-400":e(m).vitals.inp>500?"text-red-600":e(m).vitals.inp>200?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).vitals.inp,fallback:"n/a"},null,8,["ms"])]),_:1},8,["value-class"])]),_:1})):i("",!0),e(m).navigation?.url?(s(),a("div",ti,[R[8]||(R[8]=f(" Page: ",-1)),o("code",si,c(e(m).navigation.url),1)])):i("",!0)])]),_:1})):i("",!0),e(F).length===0&&!e(m)?(s(),_(Jt,{key:2,icon:"i-lucide-gauge",title:"No performance hints or Web Vitals for this execution",text:"Web Vitals and step timing come from the Piwi capture fixtures — extend your Playwright test with piwiFixtures to collect them.",doc:"capture-fixtures"})):i("",!0)])]),"tab-history":u(()=>[o("div",ni,[e(d)&&e(d).length>0?(s(),a("div",ai,[o("div",oi,[e(n)?.testCaseId?(s(),_(be,{key:0,to:`/test-cases/${e(n).testCaseId}`,size:"xs",variant:"outline",color:"neutral","trailing-icon":"i-lucide-arrow-right"},{default:u(()=>[...R[9]||(R[9]=[f(" View full test history ",-1)])]),_:1},8,["to"])):i("",!0)]),r(qt,{data:e(d),height:200},null,8,["data"]),r(ut,{"min-width":"44rem",bleed:!1},{default:u(()=>[r(ct,{data:e(d),columns:P,ui:{base:"table-fixed border-separate border-spacing-0 min-w-[44rem]",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"startTime-cell":u(({row:j})=>[o("span",ri,[o("span",ii,c(new Date(j.original.startTime).toLocaleDateString("en-US",{month:"short",day:"numeric"})),1),o("span",li,c(new Date(j.original.startTime).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"})),1)])]),"status-cell":u(({row:j})=>[r(Ne,{color:("getStatusColor"in p?p.getStatusColor:e(Gs))(j.original.status),variant:"subtle",class:"capitalize"},{default:u(()=>[f(c(j.original.status),1)]),_:2},1032,["color"])]),"duration-cell":u(({row:j})=>[j.original.duration!==null?(s(),_(ie,{key:0,ms:j.original.duration},null,8,["ms"])):(s(),a("span",ci,"—"))]),"runId-cell":u(({row:j})=>[r(ce,{to:`/test-runs/${j.original.runId}`,class:"text-primary hover:underline"},{default:u(()=>[f(" #"+c(j.original.runId),1)]),_:2},1032,["to"])]),"error-cell":u(({row:j})=>[j.original.error?(s(),a("span",{key:0,class:"text-red-600 text-xs truncate max-w-xs block",title:j.original.error},c(j.original.error.length>80?`${j.original.error.substring(0,80)}…`:j.original.error),9,ui)):i("",!0)]),_:1},8,["data"])]),_:1})])):(s(),_(dt,{key:1,icon:"i-lucide-trending-up",text:"No prior executions of this test yet."},{default:u(()=>[...R[10]||(R[10]=[o("p",{class:"text-xs text-gray-400"}," This is the first recorded run. Once it runs again, its status and duration trend appear here. ",-1)])]),_:1}))])]),_:1},8,["modelValue","tab-items"])]),_:1})}}});export{fl as default};
@@ -1 +1 @@
1
- import{_ as be,a as Re}from"./C9p0YCAi.js";import{d as ee,o as a,c as u,f as p,g as i,i as n,j as o,p as te,q as j,t as c,l as Q,k as t,v as g,m as k,h as _,_ as ne,G as le,F as E,y as M,r as re,e as Te,ac as $e}from"./h49q_GXF.js";import{_ as we}from"./BH-ym1CI.js";import{_ as Fe}from"./BlRWlfdD.js";import{_ as je,a as Se}from"./B_mN5eMV.js";import{_ as Ce}from"./CWw9WGlv.js";import{_ as Ve}from"./CAZpjzvB.js";import{_ as Ne}from"./9N6hSApy.js";import{_ as ze}from"./BFcdtAzg.js";import{_ as Pe}from"./DSvBQHzW.js";import{_ as oe}from"./C0v6l4pr.js";import{_ as ie}from"./DWEkQ7bl.js";import{_ as Ue}from"./DGyGmFem.js";import{_ as Ee}from"./BVN50jIb.js";import{_ as ue}from"./DLNNAYfu.js";import{f as Z,F as L,e as Oe}from"./CD3R-ggS.js";import{_ as De}from"./DwyFnMoY.js";import{_ as Ie}from"./CWoSSKhQ.js";import{u as se}from"./Cd8r0xk5.js";import{u as Ae}from"./CNcu4khZ.js";import{u as Be}from"./BhH0TNTi.js";import"./xbO0VmDX.js";import"./BNAHBHbY.js";import"./B6s20NbT.js";import"./x8w_1_rn.js";import"./B9FSuKdA.js";import"./Hot1UcKY.js";import"./D4UlSVir.js";import"./BtSJxOdh.js";import"./BjaRappk.js";import"./Dj-TetcW.js";import"./BaDhDBCV.js";const Le={class:"flex items-center gap-3 flex-wrap"},Me={class:"flex items-center gap-1.5"},He={key:0,class:"text-gray-500"},Ge={key:1},Ke={key:2},We={class:"flex items-center gap-1.5 cursor-pointer select-none text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 transition-colors"},Je=ee({__name:"HomeFilters",props:{modelValue:{},availableEnvironments:{}},emits:["update:modelValue"],setup(O,{emit:b}){const T=O,R=b,N=_({get:()=>T.modelValue.environments,set:S=>R("update:modelValue",{...T.modelValue,environments:S})}),$=_({get:()=>T.modelValue.fullRunsOnly,set:S=>R("update:modelValue",{...T.modelValue,fullRunsOnly:S})}),D=_(()=>T.modelValue.environments.length>0||!T.modelValue.fullRunsOnly);function z(){R("update:modelValue",{environments:[],fullRunsOnly:!0})}return(S,v)=>{const H=te,r=we,f=Fe,x=ne;return a(),u("div",Le,[O.availableEnvironments.length>0?(a(),p(r,{key:0,modelValue:t(N),"onUpdate:modelValue":v[0]||(v[0]=m=>Q(N)?N.value=m:null),items:O.availableEnvironments,multiple:"",placeholder:"All environments",size:"sm",class:"min-w-[160px]"},{default:i(({modelValue:m})=>[n("div",Me,[o(H,{name:"i-lucide-server",class:j(["size-3.5 shrink-0",m.length?"text-primary":"text-gray-400"])},null,8,["class"]),m.length?m.length===1?(a(),u("span",Ge,c(m[0]),1)):(a(),u("span",Ke,c(m.length)+" environments",1)):(a(),u("span",He,"All environments"))])]),_:1},8,["modelValue","items"])):g("",!0),n("label",We,[o(f,{modelValue:t($),"onUpdate:modelValue":v[1]||(v[1]=m=>Q($)?$.value=m:null),size:"sm"},null,8,["modelValue"]),v[2]||(v[2]=k(" Full runs only ",-1))]),t(D)?(a(),p(x,{key:1,variant:"ghost",size:"sm",color:"neutral",icon:"i-lucide-x",onClick:z},{default:i(()=>[...v[3]||(v[3]=[k(" Reset ",-1)])]),_:1})):g("",!0)])}}}),Ye=Object.assign(Je,{__name:"HomeFilters"}),qe={class:"hidden md:block overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0"},Xe={key:0,class:"flex flex-wrap gap-1 mt-0.5"},Qe={class:"w-40"},Ze={key:1,class:"text-gray-400 text-sm"},et={class:"text-xs text-gray-500 dark:text-gray-400"},tt={key:1,class:"text-gray-400 text-sm"},nt={key:0,class:"tabular-nums text-sm text-gray-600 dark:text-gray-400"},st={key:1,class:"text-gray-400"},at={class:"space-y-2 md:hidden"},lt={class:"flex items-start justify-between gap-2"},rt={key:0,class:"flex flex-wrap gap-1"},ot={class:"flex items-center justify-between gap-2 text-xs"},it={class:"text-gray-500 dark:text-gray-400 truncate"},ut={key:1,class:"text-gray-400"},ct={key:2,class:"shrink-0 tabular-nums text-gray-500 dark:text-gray-400"},dt=ee({__name:"ProjectTrendTable",props:{projects:{},limit:{default:10}},setup(O){const b=O,T={failing:0,flaky:1,passing:2,unknown:3},R=re(!1),N=_(()=>b.projects.length>b.limit),$=_(()=>{const r=[...b.projects].sort((f,x)=>{const m=T[f.tendency]-T[x.tendency];if(m!==0)return m;const C=f.latestFullRun?new Date(f.latestFullRun.startTime).getTime():0;return(x.latestFullRun?new Date(x.latestFullRun.startTime).getTime():0)-C});return R.value?r:r.slice(0,b.limit)});function D(r){return r>=90?"text-green-600 dark:text-green-400":r>=50?"text-yellow-600 dark:text-yellow-400":"text-red-600 dark:text-red-400"}function z(r){switch(r){case"failing":return"text-red-700 dark:text-red-400 bg-red-50 dark:bg-red-900/20 border-red-200 dark:border-red-800";case"flaky":return"text-amber-700 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20 border-amber-200 dark:border-amber-800";case"passing":return"text-green-700 dark:text-green-400 bg-green-50 dark:bg-green-900/20 border-green-200 dark:border-green-800";default:return"text-gray-500 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 border-gray-200 dark:border-gray-700"}}function S(r){return r==="unknown"?"Unknown":r.charAt(0).toUpperCase()+r.slice(1)}function v(r){switch(r){case"failing":return"i-lucide-trending-down";case"flaky":return"i-lucide-shuffle";case"passing":return"i-lucide-trending-up";default:return"i-lucide-minus"}}const H=[{accessorKey:"name",header:"Project"},{id:"recentRuns",header:"Last 20 runs"},{accessorKey:"tendency",header:"Tendency"},{id:"passRate",header:"Pass rate"},{id:"latestRun",header:"Latest run"},{id:"tests",header:"Tests"}];return(r,f)=>{const x=ne,m=le,C=ze,h=Pe,I=te,V=oe,A=ie,Y=Ue,q=Ee,G=ue;return a(),p(G,{icon:"i-lucide-layout-dashboard",title:"Project health",help:"home.project-health"},{actions:i(()=>[t(N)&&!t(R)?(a(),p(x,{key:0,variant:"ghost",size:"sm","trailing-icon":"i-lucide-chevron-down",onClick:f[0]||(f[0]=e=>R.value=!0)},{default:i(()=>[k(" Show all "+c(b.projects.length),1)]),_:1})):t(R)?(a(),p(x,{key:1,variant:"ghost",size:"sm","trailing-icon":"i-lucide-chevron-up",onClick:f[1]||(f[1]=e=>R.value=!1)},{default:i(()=>[...f[2]||(f[2]=[k(" Show less ",-1)])]),_:1})):g("",!0),o(x,{to:"/projects",variant:"outline",size:"sm"},{default:i(()=>[...f[3]||(f[3]=[k("View all",-1)])]),_:1})]),default:i(()=>[n("div",qe,[o(Y,{data:t($),columns:H,ui:{base:"min-w-[700px]",td:"py-3",th:"py-3 text-xs uppercase tracking-wide"}},{"name-cell":i(({row:e})=>[o(m,{to:`/projects/${e.original.id}`,class:"font-medium text-primary hover:underline truncate block max-w-[200px]"},{default:i(()=>[k(c(e.original.label||e.original.name),1)]),_:2},1032,["to"]),e.original.tags.length>0?(a(),u("div",Xe,[(a(!0),u(E,null,M(e.original.tags,w=>(a(),p(C,{key:w.id,text:w.text,color:w.color},null,8,["text","color"]))),128))])):g("",!0)]),"recentRuns-cell":i(({row:e})=>[n("div",Qe,[o(h,{runs:e.original.recentRuns,height:28},null,8,["runs"])])]),"tendency-cell":i(({row:e})=>[n("span",{class:j(["inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-xs font-medium border whitespace-nowrap",z(e.original.tendency)])},[o(I,{name:v(e.original.tendency),class:"size-3 shrink-0"},null,8,["name"]),k(" "+c(S(e.original.tendency)),1)],2)]),"passRate-cell":i(({row:e})=>[e.original.latestFullRun?(a(),u("span",{key:0,class:j(["font-semibold tabular-nums text-sm",D(("passRate"in r?r.passRate:t(L))(e.original.latestFullRun))])},c(("passRate"in r?r.passRate:t(L))(e.original.latestFullRun))+"% ",3)):(a(),u("span",Ze,"—"))]),"latestRun-cell":i(({row:e})=>[e.original.latestFullRun?(a(),p(m,{key:0,to:`/test-runs/${e.original.latestFullRun.id}`,class:"flex items-center gap-2 min-w-[140px] hover:opacity-80 transition-opacity"},{default:i(()=>[o(V,{status:e.original.latestFullRun.status},null,8,["status"]),n("div",et,[n("div",null,c(("formatRelativeTime"in r?r.formatRelativeTime:t(Z))(e.original.latestFullRun.startTime)),1),e.original.latestFullRun.duration?(a(),p(A,{key:0,ms:e.original.latestFullRun.duration},null,8,["ms"])):g("",!0)])]),_:2},1032,["to"])):(a(),u("span",tt,"No full runs"))]),"tests-cell":i(({row:e})=>[e.original.latestFullRun?(a(),u("span",nt,c(e.original.latestFullRun.passedTests)+"/"+c(e.original.latestFullRun.totalTests),1)):(a(),u("span",st,"—"))]),_:1},8,["data"])]),n("div",at,[(a(!0),u(E,null,M(t($),e=>(a(),u("div",{key:e.id,class:"rounded-lg border border-default p-3 space-y-2"},[n("div",lt,[o(m,{to:`/projects/${e.id}`,class:"font-medium text-primary hover:underline truncate"},{default:i(()=>[k(c(e.label||e.name),1)]),_:2},1032,["to"]),n("span",{class:j(["inline-flex shrink-0 items-center gap-1 rounded border px-1.5 py-0.5 text-xs font-medium whitespace-nowrap",z(e.tendency)])},[o(I,{name:v(e.tendency),class:"size-3 shrink-0"},null,8,["name"]),k(" "+c(S(e.tendency)),1)],2)]),e.tags.length>0?(a(),u("div",rt,[(a(!0),u(E,null,M(e.tags,w=>(a(),p(C,{key:w.id,text:w.text,color:w.color},null,8,["text","color"]))),128))])):g("",!0),o(h,{runs:e.recentRuns,height:24},null,8,["runs"]),n("div",ot,[e.latestFullRun?(a(),p(m,{key:0,to:`/test-runs/${e.latestFullRun.id}`,class:"flex items-center gap-1.5 min-w-0 hover:opacity-80"},{default:i(()=>[o(V,{status:e.latestFullRun.status},null,8,["status"]),n("span",it,c(("formatRelativeTime"in r?r.formatRelativeTime:t(Z))(e.latestFullRun.startTime)),1)]),_:2},1032,["to"])):(a(),u("span",ut,"No full runs")),e.latestFullRun?(a(),u("span",ct,[n("span",{class:j(["font-semibold",D(("passRate"in r?r.passRate:t(L))(e.latestFullRun))])},c(("passRate"in r?r.passRate:t(L))(e.latestFullRun))+"% ",3),k(" · "+c(e.latestFullRun.passedTests)+"/"+c(e.latestFullRun.totalTests),1)])):g("",!0)])]))),128))]),t($).length===0?(a(),p(q,{key:0,text:"No projects yet",padded:!1,class:"py-8"})):g("",!0)]),_:1})}}}),mt=Object.assign(dt,{__name:"ProjectTrendTable"}),pt={key:0,class:"p-6"},gt={key:1,class:"p-6 space-y-8","aria-busy":"true"},_t={class:"grid grid-cols-1 xl:grid-cols-3 gap-6 items-start"},ft={class:"xl:col-span-2 space-y-3"},yt={class:"space-y-3"},vt={key:2,class:"p-6 space-y-8"},ht={key:1,class:"flex flex-wrap items-center gap-x-8 gap-y-3 text-sm border border-gray-200 dark:border-gray-700 rounded-xl px-6 py-4 bg-gray-50 dark:bg-gray-900/50"},xt={class:"flex items-center gap-1.5"},kt={class:"font-semibold tabular-nums"},bt={class:"flex items-center gap-1.5"},Rt={class:"flex items-center gap-1.5"},Tt={key:0,class:"flex items-center gap-1.5"},$t={class:"font-semibold tabular-nums"},wt={class:"flex items-center gap-1.5"},Ft={class:"font-semibold tabular-nums"},jt={key:2,class:"grid grid-cols-1 xl:grid-cols-3 gap-6 items-start"},St={class:"xl:col-span-2"},Ct={class:"divide-y divide-gray-100 dark:divide-gray-800 text-sm"},Vt={class:"flex-1 min-w-0"},Nt={class:"font-medium truncate"},zt={class:"text-xs text-gray-400"},Pt={class:"text-right tabular-nums shrink-0"},Ut={key:3,class:"text-center py-12 text-gray-500 dark:text-gray-400"},Et={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4"},Ot={class:"flex flex-col gap-3 h-full"},Dt={class:"p-2 bg-primary/10 rounded-lg w-fit"},It={class:"text-xs font-semibold uppercase tracking-wide text-primary mb-1"},At={class:"font-semibold mb-1"},Bt={class:"text-sm text-gray-600 dark:text-gray-400"},ae=6,kn=ee({__name:"index",setup(O){Te({title:"Piwi Dashboard"});const{data:b,error:T,refresh:R,status:N}=se("/api/projects/overview",{lazy:!0,default:()=>[]},"$LKtEy4Bi96"),{data:$,error:D,refresh:z}=se("/api/test-runs/recent",{lazy:!0},"$tXxkP3waVF");Ae(()=>Promise.all([R(),z()]));const S=_(()=>N.value==="pending"&&!b.value?.length),v=_(()=>T.value||D.value);function H(){R(),z()}const r=Be("piwi-home-filters",{default:()=>({environments:[],fullRunsOnly:!0}),encode:l=>JSON.stringify(l),decode:l=>{try{return l?JSON.parse(l):{environments:[],fullRunsOnly:!0}}catch{return{environments:[],fullRunsOnly:!0}}}}),f=_(()=>{const l=new Set;for(const s of $.value??[])s.environment&&l.add(s.environment);for(const s of b.value??[])for(const y of s.recentRuns)y.environment&&l.add(y.environment);return[...l].sort()});function x(l){return r.value.environments.length===0?!0:!!l&&r.value.environments.includes(l)}const m=_(()=>{let l=$.value??[];return r.value.fullRunsOnly&&(l=l.filter(s=>s.isFullRun)),r.value.environments.length>0&&(l=l.filter(s=>x(s.environment))),l}),C=_(()=>{let l=b.value??[];return r.value.environments.length>0&&(l=l.map(s=>({...s,recentRuns:s.recentRuns.filter(y=>x(y.environment))})).filter(s=>s.recentRuns.length>0)),l}),h=_(()=>{const l=C.value,s=l.length,y=l.filter(F=>F.tendency==="failing").length,B=l.filter(F=>F.tendency==="flaky").length;let P=0,K=0;for(const F of l)F.latestFullRun&&(P+=F.latestFullRun.passedTests,K+=F.latestFullRun.totalTests);const W=K>0?Math.round(P/K*100):null,X=Date.now()-1440*60*1e3,U=m.value.filter(F=>new Date(F.startTime).getTime()>X).length;return{totalProjects:s,failingNow:y,flakyNow:B,avgPassRate:W,runs24h:U}}),I=new Set(["running","initialising","finalizing"]),V=re(!1),A=_(()=>[...m.value].sort((s,y)=>{const B=I.has(s.status)?0:1,P=I.has(y.status)?0:1;return B!==P?B-P:new Date(y.startTime).getTime()-new Date(s.startTime).getTime()})),Y=_(()=>V.value?A.value:A.value.slice(0,ae)),q=_(()=>A.value.length>ae),G=_(()=>m.value.length>0),e=_(()=>(b.value?.length??0)>0),w=_(()=>r.value.fullRunsOnly?($.value??[]).filter(y=>x(y.environment)).filter(y=>!y.isFullRun).length:0);function ce(){r.value={...r.value,fullRunsOnly:!1}}function de(l){const s=L(l);return s>=90?"text-green-600 dark:text-green-400":s>=50?"text-yellow-600 dark:text-yellow-400":"text-red-600 dark:text-red-400"}function me(l){return I.has(l)?"border-l-blue-400":l==="passed"?"border-l-green-500":l==="failed"||l==="timedout"||l==="interrupted"?"border-l-red-500":"border-l-gray-300 dark:border-l-gray-600"}const pe=[{icon:"i-lucide-radio",tagline:"Watch your CI run live",title:"Live streaming",description:"Follow test execution in real time. Investigate failures while the suite is still running — no waiting for the CI job to finish."},{icon:"i-lucide-layers",tagline:"10 failures, 2 root causes",title:"Failure clustering",description:"Tests sharing the same error are grouped automatically. Triage one cluster instead of scrolling through unrelated failures."},{icon:"i-lucide-brain-circuit",tagline:"Diagnosis grounded in your code",title:"AI diagnosis",description:"AI analyzes failure clusters using your actual SCM diff, trace files, and run history — not a generic prompt."},{icon:"i-lucide-archive",tagline:"Every run, forever",title:"Permanent test intelligence",description:"Test results, traces, and HTML reports stored permanently. Compare runs, track flakiness trends, and never lose a CI result again."}];return(l,s)=>{const y=be,B=Re,P=Ye,K=Se,W=ne,X=Ce,U=Ve,F=Ne,J=te,ge=mt,_e=oe,fe=ie,ye=le,ve=ue,he=De,xe=Ie,ke=je;return a(),p(ke,{id:"home"},{header:i(()=>[o(K,null,$e({leading:i(()=>[o(y),o(B,{items:[{label:"Home",icon:"i-lucide-house",to:"/"}]})]),_:2},[t(e)?{name:"trailing",fn:i(()=>[o(P,{modelValue:t(r),"onUpdate:modelValue":s[0]||(s[0]=d=>Q(r)?r.value=d:null),"available-environments":t(f)},null,8,["modelValue","available-environments"])]),key:"0"}:void 0]),1024)]),body:i(()=>[t(v)?(a(),u("div",pt,[o(X,{text:`Couldn't load the dashboard: ${t(Oe)(t(v))}`},{action:i(()=>[o(W,{size:"sm",color:"neutral",variant:"outline",icon:"i-lucide-refresh-cw",onClick:H},{default:i(()=>[...s[3]||(s[3]=[k(" Retry ",-1)])]),_:1})]),_:1},8,["text"])])):t(S)?(a(),u("div",gt,[s[4]||(s[4]=n("span",{class:"sr-only",role:"status"},"Loading dashboard…",-1)),o(U,{class:"h-14 w-full rounded-xl"}),n("div",_t,[n("div",ft,[o(U,{class:"h-7 w-40"}),o(U,{class:"h-72 w-full rounded-lg"})]),n("div",yt,[o(U,{class:"h-7 w-32"}),(a(),u(E,null,M(5,d=>o(U,{key:d,class:"h-12 w-full rounded-lg"})),64))])])])):(a(),u("div",vt,[t(w)>0?(a(),p(F,{key:0,icon:"i-lucide-info",color:"primary",variant:"subtle",title:t(w)===1?"1 partial run is hidden":`${t(w)} partial runs are hidden`,description:"The “Full runs only” filter hides runs that only cover part of the suite (e.g. a single spec or --grep).",actions:[{label:"Show them",color:"primary",variant:"solid",size:"xs",onClick:ce}]},null,8,["title","actions"])):g("",!0),t(e)?(a(),u("div",ht,[n("div",xt,[o(J,{name:"i-lucide-folder",class:"size-4 text-primary shrink-0"}),n("span",kt,c(t(h).totalProjects),1),s[5]||(s[5]=n("span",{class:"text-gray-500"},"projects",-1))]),n("div",bt,[n("div",{class:j(["w-2 h-2 rounded-full shrink-0",t(h).failingNow>0?"bg-red-500":"bg-green-500"])},null,2),n("span",{class:j(["font-semibold tabular-nums",t(h).failingNow>0?"text-red-600 dark:text-red-400":""])},c(t(h).failingNow),3),s[6]||(s[6]=n("span",{class:"text-gray-500"},"failing now",-1))]),n("div",Rt,[n("div",{class:j(["w-2 h-2 rounded-full shrink-0",t(h).flakyNow>0?"bg-amber-400":"bg-gray-300 dark:bg-gray-600"])},null,2),n("span",{class:j(["font-semibold tabular-nums",t(h).flakyNow>0?"text-amber-600 dark:text-amber-400":""])},c(t(h).flakyNow),3),s[7]||(s[7]=n("span",{class:"text-gray-500"},"flaky",-1))]),t(h).avgPassRate!==null?(a(),u("div",Tt,[o(J,{name:"i-lucide-check-circle",class:"size-4 text-green-500 shrink-0"}),n("span",$t,c(t(h).avgPassRate)+"%",1),s[8]||(s[8]=n("span",{class:"text-gray-500"},"avg pass rate",-1))])):g("",!0),n("div",wt,[o(J,{name:"i-lucide-play-circle",class:"size-4 text-primary shrink-0"}),n("span",Ft,c(t(h).runs24h),1),s[9]||(s[9]=n("span",{class:"text-gray-500"},"runs today",-1))])])):g("",!0),t(e)||t(G)?(a(),u("div",jt,[n("div",St,[t(e)?(a(),p(ge,{key:0,projects:t(C)},null,8,["projects"])):g("",!0)]),t(G)?(a(),p(ve,{key:0,icon:"i-lucide-activity",title:"Recent activity"},{actions:i(()=>[t(q)&&!t(V)?(a(),p(W,{key:0,variant:"ghost",size:"sm","trailing-icon":"i-lucide-chevron-down",onClick:s[1]||(s[1]=d=>V.value=!0)},{default:i(()=>[k(" Show all "+c(t(A).length),1)]),_:1})):t(V)?(a(),p(W,{key:1,variant:"ghost",size:"sm","trailing-icon":"i-lucide-chevron-up",onClick:s[2]||(s[2]=d=>V.value=!1)},{default:i(()=>[...s[10]||(s[10]=[k(" Show less ",-1)])]),_:1})):g("",!0)]),default:i(()=>[n("div",Ct,[(a(!0),u(E,null,M(t(Y),d=>(a(),p(ye,{key:d.id,to:`/test-runs/${d.id}`,class:j(["flex items-center gap-3 py-3 pl-3 border-l-2 hover:bg-gray-50 dark:hover:bg-gray-800/60 rounded-r transition-colors",me(d.status)])},{default:i(()=>[o(_e,{status:d.status},null,8,["status"]),n("div",Vt,[n("div",Nt,c(d.projectLabel||d.projectName),1),n("div",zt,"Run #"+c(d.id)+" · "+c(("formatRelativeTime"in l?l.formatRelativeTime:t(Z))(d.startTime)),1)]),n("div",Pt,[n("div",{class:j(de(d))},c(("passRate"in l?l.passRate:t(L))(d))+"%",3),d.duration?(a(),p(fe,{key:0,ms:d.duration,class:"block text-xs text-gray-400"},null,8,["ms"])):g("",!0)])]),_:2},1032,["to","class"]))),128))])]),_:1})):g("",!0)])):g("",!0),t(e)&&!t(G)&&t(C).length===0?(a(),u("div",Ut,[o(J,{name:"i-lucide-filter-x",class:"size-8 mx-auto mb-2 opacity-40"}),s[11]||(s[11]=n("p",null,"No runs match the current filters.",-1))])):g("",!0),t(e)?g("",!0):(a(),u(E,{key:4},[o(he),n("div",Et,[(a(),u(E,null,M(pe,d=>o(xe,{key:d.title,class:"flex flex-col"},{default:i(()=>[n("div",Ot,[n("div",Dt,[o(J,{name:d.icon,class:"size-5 text-primary"},null,8,["name"])]),n("div",null,[n("p",It,c(d.tagline),1),n("h3",At,c(d.title),1),n("p",Bt,c(d.description),1)])])]),_:2},1024)),64))])],64))]))]),_:1})}}});export{kn as default};
1
+ import{_ as be,a as Re}from"./DTrPCv7R.js";import{d as ee,o as a,c as u,f as p,g as i,i as n,j as o,p as te,q as j,t as c,l as Q,k as t,v as g,m as k,h as _,_ as ne,G as le,F as E,y as M,r as re,e as Te,ac as $e}from"./CNu3kken.js";import{_ as we}from"./BM5BPKlc.js";import{_ as Fe}from"./BtZNYmZO.js";import{_ as je,a as Se}from"./2yLW7WU0.js";import{_ as Ce}from"./B_MVJP17.js";import{_ as Ve}from"./DgEa6_av.js";import{_ as Ne}from"./Ya8ZzWuY.js";import{_ as ze}from"./Ce89VyHE.js";import{_ as Pe}from"./C6t4kxaa.js";import{_ as oe}from"./6vX5JdHr.js";import{_ as ie}from"./CdEzDaDI.js";import{_ as Ue}from"./D3SJGdl4.js";import{_ as Ee}from"./oSLbl-p0.js";import{_ as ue}from"./Ce47NgZw.js";import{f as Z,F as L,e as Oe}from"./DeewM3Wg.js";import{_ as De}from"./CTTmX4gy.js";import{_ as Ie}from"./B_JSV0yG.js";import{u as se}from"./DprkT7rM.js";import{u as Ae}from"./Bsc11YIJ.js";import{u as Be}from"./BZFiz2UB.js";import"./BVyjw9Bi.js";import"./B3AG2m76.js";import"./CmTzxoQt.js";import"./BuGAn4f7.js";import"./BZOykMLD.js";import"./Bq4_kqIp.js";import"./DZ-KbUZi.js";import"./CfhOanaF.js";import"./BjaRappk.js";import"./DJzFYrBt.js";import"./DFfqRQxk.js";const Le={class:"flex items-center gap-3 flex-wrap"},Me={class:"flex items-center gap-1.5"},He={key:0,class:"text-gray-500"},Ge={key:1},Ke={key:2},We={class:"flex items-center gap-1.5 cursor-pointer select-none text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 transition-colors"},Je=ee({__name:"HomeFilters",props:{modelValue:{},availableEnvironments:{}},emits:["update:modelValue"],setup(O,{emit:b}){const T=O,R=b,N=_({get:()=>T.modelValue.environments,set:S=>R("update:modelValue",{...T.modelValue,environments:S})}),$=_({get:()=>T.modelValue.fullRunsOnly,set:S=>R("update:modelValue",{...T.modelValue,fullRunsOnly:S})}),D=_(()=>T.modelValue.environments.length>0||!T.modelValue.fullRunsOnly);function z(){R("update:modelValue",{environments:[],fullRunsOnly:!0})}return(S,v)=>{const H=te,r=we,f=Fe,x=ne;return a(),u("div",Le,[O.availableEnvironments.length>0?(a(),p(r,{key:0,modelValue:t(N),"onUpdate:modelValue":v[0]||(v[0]=m=>Q(N)?N.value=m:null),items:O.availableEnvironments,multiple:"",placeholder:"All environments",size:"sm",class:"min-w-[160px]"},{default:i(({modelValue:m})=>[n("div",Me,[o(H,{name:"i-lucide-server",class:j(["size-3.5 shrink-0",m.length?"text-primary":"text-gray-400"])},null,8,["class"]),m.length?m.length===1?(a(),u("span",Ge,c(m[0]),1)):(a(),u("span",Ke,c(m.length)+" environments",1)):(a(),u("span",He,"All environments"))])]),_:1},8,["modelValue","items"])):g("",!0),n("label",We,[o(f,{modelValue:t($),"onUpdate:modelValue":v[1]||(v[1]=m=>Q($)?$.value=m:null),size:"sm"},null,8,["modelValue"]),v[2]||(v[2]=k(" Full runs only ",-1))]),t(D)?(a(),p(x,{key:1,variant:"ghost",size:"sm",color:"neutral",icon:"i-lucide-x",onClick:z},{default:i(()=>[...v[3]||(v[3]=[k(" Reset ",-1)])]),_:1})):g("",!0)])}}}),Ye=Object.assign(Je,{__name:"HomeFilters"}),qe={class:"hidden md:block overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0"},Xe={key:0,class:"flex flex-wrap gap-1 mt-0.5"},Qe={class:"w-40"},Ze={key:1,class:"text-gray-400 text-sm"},et={class:"text-xs text-gray-500 dark:text-gray-400"},tt={key:1,class:"text-gray-400 text-sm"},nt={key:0,class:"tabular-nums text-sm text-gray-600 dark:text-gray-400"},st={key:1,class:"text-gray-400"},at={class:"space-y-2 md:hidden"},lt={class:"flex items-start justify-between gap-2"},rt={key:0,class:"flex flex-wrap gap-1"},ot={class:"flex items-center justify-between gap-2 text-xs"},it={class:"text-gray-500 dark:text-gray-400 truncate"},ut={key:1,class:"text-gray-400"},ct={key:2,class:"shrink-0 tabular-nums text-gray-500 dark:text-gray-400"},dt=ee({__name:"ProjectTrendTable",props:{projects:{},limit:{default:10}},setup(O){const b=O,T={failing:0,flaky:1,passing:2,unknown:3},R=re(!1),N=_(()=>b.projects.length>b.limit),$=_(()=>{const r=[...b.projects].sort((f,x)=>{const m=T[f.tendency]-T[x.tendency];if(m!==0)return m;const C=f.latestFullRun?new Date(f.latestFullRun.startTime).getTime():0;return(x.latestFullRun?new Date(x.latestFullRun.startTime).getTime():0)-C});return R.value?r:r.slice(0,b.limit)});function D(r){return r>=90?"text-green-600 dark:text-green-400":r>=50?"text-yellow-600 dark:text-yellow-400":"text-red-600 dark:text-red-400"}function z(r){switch(r){case"failing":return"text-red-700 dark:text-red-400 bg-red-50 dark:bg-red-900/20 border-red-200 dark:border-red-800";case"flaky":return"text-amber-700 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20 border-amber-200 dark:border-amber-800";case"passing":return"text-green-700 dark:text-green-400 bg-green-50 dark:bg-green-900/20 border-green-200 dark:border-green-800";default:return"text-gray-500 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 border-gray-200 dark:border-gray-700"}}function S(r){return r==="unknown"?"Unknown":r.charAt(0).toUpperCase()+r.slice(1)}function v(r){switch(r){case"failing":return"i-lucide-trending-down";case"flaky":return"i-lucide-shuffle";case"passing":return"i-lucide-trending-up";default:return"i-lucide-minus"}}const H=[{accessorKey:"name",header:"Project"},{id:"recentRuns",header:"Last 20 runs"},{accessorKey:"tendency",header:"Tendency"},{id:"passRate",header:"Pass rate"},{id:"latestRun",header:"Latest run"},{id:"tests",header:"Tests"}];return(r,f)=>{const x=ne,m=le,C=ze,h=Pe,I=te,V=oe,A=ie,Y=Ue,q=Ee,G=ue;return a(),p(G,{icon:"i-lucide-layout-dashboard",title:"Project health",help:"home.project-health"},{actions:i(()=>[t(N)&&!t(R)?(a(),p(x,{key:0,variant:"ghost",size:"sm","trailing-icon":"i-lucide-chevron-down",onClick:f[0]||(f[0]=e=>R.value=!0)},{default:i(()=>[k(" Show all "+c(b.projects.length),1)]),_:1})):t(R)?(a(),p(x,{key:1,variant:"ghost",size:"sm","trailing-icon":"i-lucide-chevron-up",onClick:f[1]||(f[1]=e=>R.value=!1)},{default:i(()=>[...f[2]||(f[2]=[k(" Show less ",-1)])]),_:1})):g("",!0),o(x,{to:"/projects",variant:"outline",size:"sm"},{default:i(()=>[...f[3]||(f[3]=[k("View all",-1)])]),_:1})]),default:i(()=>[n("div",qe,[o(Y,{data:t($),columns:H,ui:{base:"min-w-[700px]",td:"py-3",th:"py-3 text-xs uppercase tracking-wide"}},{"name-cell":i(({row:e})=>[o(m,{to:`/projects/${e.original.id}`,class:"font-medium text-primary hover:underline truncate block max-w-[200px]"},{default:i(()=>[k(c(e.original.label||e.original.name),1)]),_:2},1032,["to"]),e.original.tags.length>0?(a(),u("div",Xe,[(a(!0),u(E,null,M(e.original.tags,w=>(a(),p(C,{key:w.id,text:w.text,color:w.color},null,8,["text","color"]))),128))])):g("",!0)]),"recentRuns-cell":i(({row:e})=>[n("div",Qe,[o(h,{runs:e.original.recentRuns,height:28},null,8,["runs"])])]),"tendency-cell":i(({row:e})=>[n("span",{class:j(["inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-xs font-medium border whitespace-nowrap",z(e.original.tendency)])},[o(I,{name:v(e.original.tendency),class:"size-3 shrink-0"},null,8,["name"]),k(" "+c(S(e.original.tendency)),1)],2)]),"passRate-cell":i(({row:e})=>[e.original.latestFullRun?(a(),u("span",{key:0,class:j(["font-semibold tabular-nums text-sm",D(("passRate"in r?r.passRate:t(L))(e.original.latestFullRun))])},c(("passRate"in r?r.passRate:t(L))(e.original.latestFullRun))+"% ",3)):(a(),u("span",Ze,"—"))]),"latestRun-cell":i(({row:e})=>[e.original.latestFullRun?(a(),p(m,{key:0,to:`/test-runs/${e.original.latestFullRun.id}`,class:"flex items-center gap-2 min-w-[140px] hover:opacity-80 transition-opacity"},{default:i(()=>[o(V,{status:e.original.latestFullRun.status},null,8,["status"]),n("div",et,[n("div",null,c(("formatRelativeTime"in r?r.formatRelativeTime:t(Z))(e.original.latestFullRun.startTime)),1),e.original.latestFullRun.duration?(a(),p(A,{key:0,ms:e.original.latestFullRun.duration},null,8,["ms"])):g("",!0)])]),_:2},1032,["to"])):(a(),u("span",tt,"No full runs"))]),"tests-cell":i(({row:e})=>[e.original.latestFullRun?(a(),u("span",nt,c(e.original.latestFullRun.passedTests)+"/"+c(e.original.latestFullRun.totalTests),1)):(a(),u("span",st,"—"))]),_:1},8,["data"])]),n("div",at,[(a(!0),u(E,null,M(t($),e=>(a(),u("div",{key:e.id,class:"rounded-lg border border-default p-3 space-y-2"},[n("div",lt,[o(m,{to:`/projects/${e.id}`,class:"font-medium text-primary hover:underline truncate"},{default:i(()=>[k(c(e.label||e.name),1)]),_:2},1032,["to"]),n("span",{class:j(["inline-flex shrink-0 items-center gap-1 rounded border px-1.5 py-0.5 text-xs font-medium whitespace-nowrap",z(e.tendency)])},[o(I,{name:v(e.tendency),class:"size-3 shrink-0"},null,8,["name"]),k(" "+c(S(e.tendency)),1)],2)]),e.tags.length>0?(a(),u("div",rt,[(a(!0),u(E,null,M(e.tags,w=>(a(),p(C,{key:w.id,text:w.text,color:w.color},null,8,["text","color"]))),128))])):g("",!0),o(h,{runs:e.recentRuns,height:24},null,8,["runs"]),n("div",ot,[e.latestFullRun?(a(),p(m,{key:0,to:`/test-runs/${e.latestFullRun.id}`,class:"flex items-center gap-1.5 min-w-0 hover:opacity-80"},{default:i(()=>[o(V,{status:e.latestFullRun.status},null,8,["status"]),n("span",it,c(("formatRelativeTime"in r?r.formatRelativeTime:t(Z))(e.latestFullRun.startTime)),1)]),_:2},1032,["to"])):(a(),u("span",ut,"No full runs")),e.latestFullRun?(a(),u("span",ct,[n("span",{class:j(["font-semibold",D(("passRate"in r?r.passRate:t(L))(e.latestFullRun))])},c(("passRate"in r?r.passRate:t(L))(e.latestFullRun))+"% ",3),k(" · "+c(e.latestFullRun.passedTests)+"/"+c(e.latestFullRun.totalTests),1)])):g("",!0)])]))),128))]),t($).length===0?(a(),p(q,{key:0,text:"No projects yet",padded:!1,class:"py-8"})):g("",!0)]),_:1})}}}),mt=Object.assign(dt,{__name:"ProjectTrendTable"}),pt={key:0,class:"p-6"},gt={key:1,class:"p-6 space-y-8","aria-busy":"true"},_t={class:"grid grid-cols-1 xl:grid-cols-3 gap-6 items-start"},ft={class:"xl:col-span-2 space-y-3"},yt={class:"space-y-3"},vt={key:2,class:"p-6 space-y-8"},ht={key:1,class:"flex flex-wrap items-center gap-x-8 gap-y-3 text-sm border border-gray-200 dark:border-gray-700 rounded-xl px-6 py-4 bg-gray-50 dark:bg-gray-900/50"},xt={class:"flex items-center gap-1.5"},kt={class:"font-semibold tabular-nums"},bt={class:"flex items-center gap-1.5"},Rt={class:"flex items-center gap-1.5"},Tt={key:0,class:"flex items-center gap-1.5"},$t={class:"font-semibold tabular-nums"},wt={class:"flex items-center gap-1.5"},Ft={class:"font-semibold tabular-nums"},jt={key:2,class:"grid grid-cols-1 xl:grid-cols-3 gap-6 items-start"},St={class:"xl:col-span-2"},Ct={class:"divide-y divide-gray-100 dark:divide-gray-800 text-sm"},Vt={class:"flex-1 min-w-0"},Nt={class:"font-medium truncate"},zt={class:"text-xs text-gray-400"},Pt={class:"text-right tabular-nums shrink-0"},Ut={key:3,class:"text-center py-12 text-gray-500 dark:text-gray-400"},Et={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4"},Ot={class:"flex flex-col gap-3 h-full"},Dt={class:"p-2 bg-primary/10 rounded-lg w-fit"},It={class:"text-xs font-semibold uppercase tracking-wide text-primary mb-1"},At={class:"font-semibold mb-1"},Bt={class:"text-sm text-gray-600 dark:text-gray-400"},ae=6,kn=ee({__name:"index",setup(O){Te({title:"Piwi Dashboard"});const{data:b,error:T,refresh:R,status:N}=se("/api/projects/overview",{lazy:!0,default:()=>[]},"$LKtEy4Bi96"),{data:$,error:D,refresh:z}=se("/api/test-runs/recent",{lazy:!0},"$tXxkP3waVF");Ae(()=>Promise.all([R(),z()]));const S=_(()=>N.value==="pending"&&!b.value?.length),v=_(()=>T.value||D.value);function H(){R(),z()}const r=Be("piwi-home-filters",{default:()=>({environments:[],fullRunsOnly:!0}),encode:l=>JSON.stringify(l),decode:l=>{try{return l?JSON.parse(l):{environments:[],fullRunsOnly:!0}}catch{return{environments:[],fullRunsOnly:!0}}}}),f=_(()=>{const l=new Set;for(const s of $.value??[])s.environment&&l.add(s.environment);for(const s of b.value??[])for(const y of s.recentRuns)y.environment&&l.add(y.environment);return[...l].sort()});function x(l){return r.value.environments.length===0?!0:!!l&&r.value.environments.includes(l)}const m=_(()=>{let l=$.value??[];return r.value.fullRunsOnly&&(l=l.filter(s=>s.isFullRun)),r.value.environments.length>0&&(l=l.filter(s=>x(s.environment))),l}),C=_(()=>{let l=b.value??[];return r.value.environments.length>0&&(l=l.map(s=>({...s,recentRuns:s.recentRuns.filter(y=>x(y.environment))})).filter(s=>s.recentRuns.length>0)),l}),h=_(()=>{const l=C.value,s=l.length,y=l.filter(F=>F.tendency==="failing").length,B=l.filter(F=>F.tendency==="flaky").length;let P=0,K=0;for(const F of l)F.latestFullRun&&(P+=F.latestFullRun.passedTests,K+=F.latestFullRun.totalTests);const W=K>0?Math.round(P/K*100):null,X=Date.now()-1440*60*1e3,U=m.value.filter(F=>new Date(F.startTime).getTime()>X).length;return{totalProjects:s,failingNow:y,flakyNow:B,avgPassRate:W,runs24h:U}}),I=new Set(["running","initialising","finalizing"]),V=re(!1),A=_(()=>[...m.value].sort((s,y)=>{const B=I.has(s.status)?0:1,P=I.has(y.status)?0:1;return B!==P?B-P:new Date(y.startTime).getTime()-new Date(s.startTime).getTime()})),Y=_(()=>V.value?A.value:A.value.slice(0,ae)),q=_(()=>A.value.length>ae),G=_(()=>m.value.length>0),e=_(()=>(b.value?.length??0)>0),w=_(()=>r.value.fullRunsOnly?($.value??[]).filter(y=>x(y.environment)).filter(y=>!y.isFullRun).length:0);function ce(){r.value={...r.value,fullRunsOnly:!1}}function de(l){const s=L(l);return s>=90?"text-green-600 dark:text-green-400":s>=50?"text-yellow-600 dark:text-yellow-400":"text-red-600 dark:text-red-400"}function me(l){return I.has(l)?"border-l-blue-400":l==="passed"?"border-l-green-500":l==="failed"||l==="timedout"||l==="interrupted"?"border-l-red-500":"border-l-gray-300 dark:border-l-gray-600"}const pe=[{icon:"i-lucide-radio",tagline:"Watch your CI run live",title:"Live streaming",description:"Follow test execution in real time. Investigate failures while the suite is still running — no waiting for the CI job to finish."},{icon:"i-lucide-layers",tagline:"10 failures, 2 root causes",title:"Failure clustering",description:"Tests sharing the same error are grouped automatically. Triage one cluster instead of scrolling through unrelated failures."},{icon:"i-lucide-brain-circuit",tagline:"Diagnosis grounded in your code",title:"AI diagnosis",description:"AI analyzes failure clusters using your actual SCM diff, trace files, and run history — not a generic prompt."},{icon:"i-lucide-archive",tagline:"Every run, forever",title:"Permanent test intelligence",description:"Test results, traces, and HTML reports stored permanently. Compare runs, track flakiness trends, and never lose a CI result again."}];return(l,s)=>{const y=be,B=Re,P=Ye,K=Se,W=ne,X=Ce,U=Ve,F=Ne,J=te,ge=mt,_e=oe,fe=ie,ye=le,ve=ue,he=De,xe=Ie,ke=je;return a(),p(ke,{id:"home"},{header:i(()=>[o(K,null,$e({leading:i(()=>[o(y),o(B,{items:[{label:"Home",icon:"i-lucide-house",to:"/"}]})]),_:2},[t(e)?{name:"trailing",fn:i(()=>[o(P,{modelValue:t(r),"onUpdate:modelValue":s[0]||(s[0]=d=>Q(r)?r.value=d:null),"available-environments":t(f)},null,8,["modelValue","available-environments"])]),key:"0"}:void 0]),1024)]),body:i(()=>[t(v)?(a(),u("div",pt,[o(X,{text:`Couldn't load the dashboard: ${t(Oe)(t(v))}`},{action:i(()=>[o(W,{size:"sm",color:"neutral",variant:"outline",icon:"i-lucide-refresh-cw",onClick:H},{default:i(()=>[...s[3]||(s[3]=[k(" Retry ",-1)])]),_:1})]),_:1},8,["text"])])):t(S)?(a(),u("div",gt,[s[4]||(s[4]=n("span",{class:"sr-only",role:"status"},"Loading dashboard…",-1)),o(U,{class:"h-14 w-full rounded-xl"}),n("div",_t,[n("div",ft,[o(U,{class:"h-7 w-40"}),o(U,{class:"h-72 w-full rounded-lg"})]),n("div",yt,[o(U,{class:"h-7 w-32"}),(a(),u(E,null,M(5,d=>o(U,{key:d,class:"h-12 w-full rounded-lg"})),64))])])])):(a(),u("div",vt,[t(w)>0?(a(),p(F,{key:0,icon:"i-lucide-info",color:"primary",variant:"subtle",title:t(w)===1?"1 partial run is hidden":`${t(w)} partial runs are hidden`,description:"The “Full runs only” filter hides runs that only cover part of the suite (e.g. a single spec or --grep).",actions:[{label:"Show them",color:"primary",variant:"solid",size:"xs",onClick:ce}]},null,8,["title","actions"])):g("",!0),t(e)?(a(),u("div",ht,[n("div",xt,[o(J,{name:"i-lucide-folder",class:"size-4 text-primary shrink-0"}),n("span",kt,c(t(h).totalProjects),1),s[5]||(s[5]=n("span",{class:"text-gray-500"},"projects",-1))]),n("div",bt,[n("div",{class:j(["w-2 h-2 rounded-full shrink-0",t(h).failingNow>0?"bg-red-500":"bg-green-500"])},null,2),n("span",{class:j(["font-semibold tabular-nums",t(h).failingNow>0?"text-red-600 dark:text-red-400":""])},c(t(h).failingNow),3),s[6]||(s[6]=n("span",{class:"text-gray-500"},"failing now",-1))]),n("div",Rt,[n("div",{class:j(["w-2 h-2 rounded-full shrink-0",t(h).flakyNow>0?"bg-amber-400":"bg-gray-300 dark:bg-gray-600"])},null,2),n("span",{class:j(["font-semibold tabular-nums",t(h).flakyNow>0?"text-amber-600 dark:text-amber-400":""])},c(t(h).flakyNow),3),s[7]||(s[7]=n("span",{class:"text-gray-500"},"flaky",-1))]),t(h).avgPassRate!==null?(a(),u("div",Tt,[o(J,{name:"i-lucide-check-circle",class:"size-4 text-green-500 shrink-0"}),n("span",$t,c(t(h).avgPassRate)+"%",1),s[8]||(s[8]=n("span",{class:"text-gray-500"},"avg pass rate",-1))])):g("",!0),n("div",wt,[o(J,{name:"i-lucide-play-circle",class:"size-4 text-primary shrink-0"}),n("span",Ft,c(t(h).runs24h),1),s[9]||(s[9]=n("span",{class:"text-gray-500"},"runs today",-1))])])):g("",!0),t(e)||t(G)?(a(),u("div",jt,[n("div",St,[t(e)?(a(),p(ge,{key:0,projects:t(C)},null,8,["projects"])):g("",!0)]),t(G)?(a(),p(ve,{key:0,icon:"i-lucide-activity",title:"Recent activity"},{actions:i(()=>[t(q)&&!t(V)?(a(),p(W,{key:0,variant:"ghost",size:"sm","trailing-icon":"i-lucide-chevron-down",onClick:s[1]||(s[1]=d=>V.value=!0)},{default:i(()=>[k(" Show all "+c(t(A).length),1)]),_:1})):t(V)?(a(),p(W,{key:1,variant:"ghost",size:"sm","trailing-icon":"i-lucide-chevron-up",onClick:s[2]||(s[2]=d=>V.value=!1)},{default:i(()=>[...s[10]||(s[10]=[k(" Show less ",-1)])]),_:1})):g("",!0)]),default:i(()=>[n("div",Ct,[(a(!0),u(E,null,M(t(Y),d=>(a(),p(ye,{key:d.id,to:`/test-runs/${d.id}`,class:j(["flex items-center gap-3 py-3 pl-3 border-l-2 hover:bg-gray-50 dark:hover:bg-gray-800/60 rounded-r transition-colors",me(d.status)])},{default:i(()=>[o(_e,{status:d.status},null,8,["status"]),n("div",Vt,[n("div",Nt,c(d.projectLabel||d.projectName),1),n("div",zt,"Run #"+c(d.id)+" · "+c(("formatRelativeTime"in l?l.formatRelativeTime:t(Z))(d.startTime)),1)]),n("div",Pt,[n("div",{class:j(de(d))},c(("passRate"in l?l.passRate:t(L))(d))+"%",3),d.duration?(a(),p(fe,{key:0,ms:d.duration,class:"block text-xs text-gray-400"},null,8,["ms"])):g("",!0)])]),_:2},1032,["to","class"]))),128))])]),_:1})):g("",!0)])):g("",!0),t(e)&&!t(G)&&t(C).length===0?(a(),u("div",Ut,[o(J,{name:"i-lucide-filter-x",class:"size-8 mx-auto mb-2 opacity-40"}),s[11]||(s[11]=n("p",null,"No runs match the current filters.",-1))])):g("",!0),t(e)?g("",!0):(a(),u(E,{key:4},[o(he),n("div",Et,[(a(),u(E,null,M(pe,d=>o(xe,{key:d.title,class:"flex flex-col"},{default:i(()=>[n("div",Ot,[n("div",Dt,[o(J,{name:d.icon,class:"size-5 text-primary"},null,8,["name"])]),n("div",null,[n("p",It,c(d.tagline),1),n("h3",At,c(d.title),1),n("p",Bt,c(d.description),1)])])]),_:2},1024)),64))])],64))]))]),_:1})}}});export{kn as default};
@@ -0,0 +1 @@
1
+ import{h as e,ab as r,bX as t}from"./CNu3kken.js";function a(o){return e(()=>r(o)?!!t(o)?.closest("form"):!0)}export{a as u};
@@ -1 +1 @@
1
- import{r as C,J as I,bi as N,am as D,bj as X,L as G,aR as K,$ as Y,a3 as U,a6 as Q,b9 as Z,a4 as V,a5 as H,o as W,f as F,W as ee,k as p,_ as te,h as z,a8 as J,bk as oe,l as R,g as ne,V as ie,q as ae,X as re}from"./h49q_GXF.js";const se=3456e4;function le(e,a,t){const n=e.indexOf(";",a);return n===-1?t:n}function ue(e,a,t){const n=e.indexOf("=",a);return n<t?n:-1}function M(e,a,t){if(a===t)return"";let n=a,i=t;do{const l=e.charCodeAt(n);if(l!==32&&l!==9)break}while(++n<i);for(;i>n;){const l=e.charCodeAt(i-1);if(l!==32&&l!==9)break;i--}return e.slice(n,i)}const ce=(()=>{const e=function(){};return e.prototype=Object.create(null),e})();function de(e,a){const t=new ce,n=e.length;if(n<2)return t;const i=a?.decode||fe,l=a?.allowMultiple||!1;let o=0;do{const c=ue(e,o,n);if(c===-1)break;const u=le(e,o,n);if(c>u){o=e.lastIndexOf(";",c-1)+1;continue}const r=M(e,o,c);if(a?.filter&&!a.filter(r)){o=u+1;continue}const f=i(M(e,c+1,u));if(l){const d=t[r];d===void 0?t[r]=f:Array.isArray(d)?d.push(f):t[r]=[d,f]}else t[r]===void 0&&(t[r]=f);o=u+1}while(o<n);return t}function fe(e){if(!e.includes("%"))return e;try{return decodeURIComponent(e)}catch{return e}}const pe=/^[\u0021-\u003A\u003C\u003E-\u007E]+$/,ve=/^[\u0021-\u003A\u003C-\u007E]*$/,he=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,me=/^[\u0020-\u003A\u003C-\u007E]*$/,ge=Object.prototype.toString;function $(e,a,t){const n=typeof e=="object"&&e!==null,i=n?a:t,l=i?.stringify||JSON.stringify,o=n?e:{...t,name:e,value:a==null?"":typeof a=="string"?a:l(a)},c=i?.encode||encodeURIComponent;if(!pe.test(o.name))throw new TypeError(`argument name is invalid: ${o.name}`);const u=o.value?c(o.value):"";if(!ve.test(u))throw new TypeError(`argument val is invalid: ${o.value}`);if(!o.secure){if(o.partitioned)throw new TypeError("Partitioned cookies must have the Secure attribute");if(o.sameSite&&String(o.sameSite).toLowerCase()==="none")throw new TypeError("SameSite=None cookies must have the Secure attribute");if(o.name.length>9&&o.name.charCodeAt(0)===95&&o.name.charCodeAt(1)===95){const f=o.name.toLowerCase();if(f.startsWith("__secure-")||f.startsWith("__host-"))throw new TypeError(`${o.name} cookies must have the Secure attribute`)}}if(o.name.length>7&&o.name.charCodeAt(0)===95&&o.name.charCodeAt(1)===95&&o.name.toLowerCase().startsWith("__host-")){if(o.path!=="/")throw new TypeError("__Host- cookies must have Path=/");if(o.domain)throw new TypeError("__Host- cookies must not have a Domain attribute")}let r=o.name+"="+u;if(o.maxAge!==void 0){if(!Number.isInteger(o.maxAge))throw new TypeError(`option maxAge is invalid: ${o.maxAge}`);r+="; Max-Age="+Math.max(0,Math.min(o.maxAge,se))}if(o.domain){if(!he.test(o.domain))throw new TypeError(`option domain is invalid: ${o.domain}`);r+="; Domain="+o.domain}if(o.path){if(!me.test(o.path))throw new TypeError(`option path is invalid: ${o.path}`);r+="; Path="+o.path}if(o.expires){if(!be(o.expires)||!Number.isFinite(o.expires.valueOf()))throw new TypeError(`option expires is invalid: ${o.expires}`);r+="; Expires="+o.expires.toUTCString()}if(o.httpOnly&&(r+="; HttpOnly"),o.secure&&(r+="; Secure"),o.partitioned&&(r+="; Partitioned"),o.priority)switch(typeof o.priority=="string"?o.priority.toLowerCase():void 0){case"low":r+="; Priority=Low";break;case"medium":r+="; Priority=Medium";break;case"high":r+="; Priority=High";break;default:throw new TypeError(`option priority is invalid: ${o.priority}`)}if(o.sameSite)switch(typeof o.sameSite=="string"?o.sameSite.toLowerCase():o.sameSite){case!0:case"strict":r+="; SameSite=Strict";break;case"lax":r+="; SameSite=Lax";break;case"none":r+="; SameSite=None";break;default:throw new TypeError(`option sameSite is invalid: ${o.sameSite}`)}return r}function be(e){return ge.call(e)==="[object Date]"}function g(e){if(typeof e!="object")return e;var a,t,n=Object.prototype.toString.call(e);if(n==="[object Object]"){if(e.constructor!==Object&&typeof e.constructor=="function"){t=new e.constructor;for(a in e)e.hasOwnProperty(a)&&t[a]!==e[a]&&(t[a]=g(e[a]))}else{t={};for(a in e)a==="__proto__"?Object.defineProperty(t,a,{value:g(e[a]),configurable:!0,enumerable:!0,writable:!0}):t[a]=g(e[a])}return t}if(n==="[object Array]"){for(a=e.length,t=Array(a);a--;)t[a]=g(e[a]);return t}return n==="[object Set]"?(t=new Set,e.forEach(function(i){t.add(g(i))}),t):n==="[object Map]"?(t=new Map,e.forEach(function(i,l){t.set(g(l),g(i))}),t):n==="[object Date]"?new Date(+e):n==="[object RegExp]"?(t=new RegExp(e.source,e.flags),t.lastIndex=e.lastIndex,t):n==="[object DataView]"?new e.constructor(g(e.buffer)):n==="[object ArrayBuffer]"?e.slice(0):n.slice(-6)==="Array]"?new e.constructor(e):e}function ye(e){if(e!=="undefined")try{const a=JSON.parse(e);return typeof a=="number"&&String(a)!==e?e:a}catch{return e}}const Se={path:"/",watch:!0,decode:e=>e&&ye(decodeURIComponent(e)),encode:e=>{if(typeof e!="string"||e==="undefined")return encodeURIComponent(JSON.stringify(e));try{if(typeof JSON.parse(e)!="string")return encodeURIComponent(JSON.stringify(e))}catch{}return encodeURIComponent(e)},refresh:!1},j=globalThis.cookieStore;function we(e,a){const t={...Se,...a};t.filter??=r=>r===e;const n=B(t)||{};let i;t.maxAge!==void 0?i=t.maxAge*1e3:t.expires&&(i=t.expires.getTime()-Date.now());const l=i!==void 0&&i<=0,o=l||n[e]===void 0||n[e]===null,c=g(l?void 0:n[e]??t.default?.()),u=i&&!l?Oe(c,i,t.watch&&t.watch!=="shallow"):C(c);{let r=null;try{!j&&typeof BroadcastChannel<"u"&&(r=new BroadcastChannel(`nuxt:cookies:${e}`))}catch{}const f=(h=!1)=>{if(!h&&(t.readonly||K(u.value,n[e])))return;const b=u.value===null||u.value===void 0?void 0:t.encode(u.value);Ee(e,b,t),n[e]=g(u.value),r?.postMessage({value:t.encode(u.value)})},d=h=>{const b=h.refresh?B(t)?.[e]:t.decode(h.value);y=!0,u.value=b,n[e]=g(b),G(()=>{y=!1})};let y=!1;const S=!!N();if(S&&D(()=>{y=!0,f(),r?.close()}),j){const h=b=>{const A=b.changed.find(E=>E.name===e),L=b.deleted.find(E=>E.name===e);A&&d({value:A.value}),L&&d({value:null})};j.addEventListener("change",h),S&&D(()=>j.removeEventListener("change",h))}else r&&(r.onmessage=({data:h})=>d(h));t.watch&&I(u,()=>{y||f(t.refresh)},{deep:t.watch!=="shallow"}),o&&f(o)}return u}function B(e={}){return de(document.cookie,e)}const Ce=e=>e;function ke(e){const{encode:a,decode:t,...n}=e;return{...n,encode:Ce}}function ze(e,a,t={}){const n=ke(t);return a===void 0?$(e,"",{...n,maxAge:-1}):$(e,a,n)}function Ee(e,a,t={}){document.cookie=ze(e,a,t)}const P=2147483647;function Oe(e,a,t){let n,i,l=0;const o=t?C(e):{value:e};return N()&&D(()=>{i?.(),clearTimeout(n)}),X((c,u)=>{t&&(i=I(o,u));function r(){const d=a-l,y=d<P?d:P;n=setTimeout(()=>{if(l+=y,l<a)return r();o.value=void 0,u()},y)}function f(){l=0,clearTimeout(n),r()}return{get(){return c(),o.value},set(d){f(),o.value=d,u()}}})}const[qe,xe]=Y("DashboardGroup"),Te={base:"lg:hidden",variants:{side:{left:"",right:""}}},Re=Object.assign({inheritAttrs:!1},{__name:"UDashboardSidebarToggle",props:{color:{type:null,required:!1,default:"neutral"},variant:{type:null,required:!1,default:"ghost"},side:{type:String,required:!1,default:"left"},ui:{type:Object,required:!1},label:{type:String,required:!1},activeColor:{type:null,required:!1},activeVariant:{type:null,required:!1},size:{type:null,required:!1},square:{type:Boolean,required:!1},block:{type:Boolean,required:!1},loadingAuto:{type:Boolean,required:!1},onClick:{type:[Function,Array],required:!1},class:{type:null,required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},leading:{type:Boolean,required:!1},leadingIcon:{type:null,required:!1},trailing:{type:Boolean,required:!1},trailingIcon:{type:null,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1},as:{type:null,required:!1},type:{type:null,required:!1},disabled:{type:Boolean,required:!1},exactActiveClass:{type:String,required:!1},viewTransition:{type:Boolean,required:!1}},setup(e){const t=U("dashboardSidebarToggle",e),n=Q(Z(t,"icon","side","class")),{t:i}=V(),l=H(),{sidebarOpen:o,toggleSidebar:c}=qe({sidebarOpen:C(!1),toggleSidebar:()=>{}}),u=z(()=>J({extend:Te,...l.ui?.dashboardSidebarToggle||{}}));return(r,f)=>(W(),F(te,ee({...p(n),icon:p(t).icon||(p(o)?p(l).ui.icons.close:p(l).ui.icons.menu),"aria-label":p(o)?p(i)("dashboardSidebarToggle.close"):p(i)("dashboardSidebarToggle.open"),...r.$attrs},{class:u.value({class:[p(t).ui?.base,p(t).class],side:p(t).side}),onClick:p(c)}),null,16,["class","onClick"]))}});function je(e,a={},{collapsed:t=C(!1)}={}){const n=C(null),i=z(()=>({side:"left",minSize:0,maxSize:100,defaultSize:0,storage:"cookie",persistent:!0,collapsible:!1,collapsedSize:0,resizable:!0,unit:"%",...R(a)?a.value:a})),{dir:l}=V(),o={size:i.value.defaultSize,collapsed:p(t)??!1},c=i.value.persistent&&(i.value.resizable||i.value.collapsible)?i.value.storage==="cookie"?we(e,{...i.value.storageOptions,default:()=>o}):oe(e,o,void 0,i.value.storageOptions):C(o),u=s=>{c.value?Object.assign(c.value,s):c.value={...o,...s}},r=z({get:()=>c.value?.collapsed??o.collapsed,set:s=>{i.value.collapsible&&(R(t)&&(t.value=s),u({collapsed:s}))}}),f=C(i.value.defaultSize),d=z({get:()=>c.value?.size??i.value.defaultSize,set:s=>{u({size:s})}}),y=z(()=>r.value?i.value.collapsedSize:d.value),S=C(!1),h=()=>i.value.unit==="rem"?Number.parseFloat(getComputedStyle(document.documentElement).fontSize):1,b=(s,v,O,q)=>{if(!n.value||!i.value.resizable)return;const T=n.value.parentElement?.offsetWidth||1,k=l.value==="rtl";let m;k?m=i.value.side==="left"?v-s:s-v:m=i.value.side==="left"?s-v:v-s;const w=O+m;let _;if(i.value.unit==="rem"?_=w/q:i.value.unit==="px"?_=w:_=w/T*100,i.value.collapsible&&_<i.value.collapsedSize+4){x(!0);return}else r.value&&x(!1);d.value=Math.min(i.value.maxSize,Math.max(i.value.minSize,_))},A=s=>{if(!n.value||!i.value.resizable)return;s.preventDefault(),s.stopPropagation();const v=n.value.getBoundingClientRect().width;if(!v)return;const O=s.clientX,q=v,T=h();S.value=!0;const k=w=>{b(w.clientX,O,q,T)},m=()=>{S.value=!1,document.removeEventListener("mousemove",k),document.removeEventListener("mouseup",m)};document.addEventListener("mousemove",k),document.addEventListener("mouseup",m)},L=s=>{if(!n.value||!i.value.resizable||!s.touches[0])return;s.preventDefault(),s.stopPropagation();const v=n.value.getBoundingClientRect().width;if(!v)return;const O=s.touches[0].clientX,q=v,T=h();S.value=!0;const k=w=>{w.touches[0]&&b(w.touches[0].clientX,O,q,T)},m=()=>{S.value=!1,document.removeEventListener("touchmove",k),document.removeEventListener("touchend",m),document.removeEventListener("touchcancel",m)};document.addEventListener("touchmove",k,{passive:!1}),document.addEventListener("touchend",m),document.addEventListener("touchcancel",m)},E=s=>{!n.value||!i.value.resizable||(s.preventDefault(),s.stopPropagation(),r.value&&x(!1),d.value=i.value.defaultSize)},x=s=>{if(!i.value.collapsible)return;const v=s??!r.value;v&&!r.value?f.value=d.value:!v&&r.value&&(d.value=f.value),r.value=v};return R(t)&&c.value?.collapsed&&(t.value=c.value.collapsed),R(t)&&I(t,s=>{i.value.collapsible&&c.value?.collapsed!==s&&(r.value=s)}),{el:n,size:y,isDragging:S,isCollapsed:r,onMouseDown:A,onTouchStart:L,onDoubleClick:E,collapse:x}}const _e={base:"hidden lg:block touch-none select-none cursor-ew-resize relative before:absolute before:inset-y-0 before:-left-1.5 before:-right-1.5 before:z-1"},Le={__name:"UDashboardResizeHandle",props:{as:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(e){const t=U("dashboardResizeHandle",e),n=H(),i=z(()=>J({extend:_e,...n.ui?.dashboardResizeHandle||{}}));return(l,o)=>(W(),F(p(re),{as:p(t).as,role:"separator",class:ae(i.value({class:[p(t).ui?.base,p(t).class]}))},{default:ne(()=>[ie(l.$slots,"default")]),_:3},8,["as","class"]))}};export{Re as _,qe as a,je as b,Le as c,xe as p,we as u};
1
+ import{r as C,J as I,bk as N,an as D,bl as X,L as G,aT as K,$ as Y,a3 as U,a6 as Q,bb as Z,a4 as V,a5 as H,o as W,f as F,W as ee,k as p,_ as te,h as z,a8 as J,bm as oe,l as R,g as ne,V as ie,q as ae,X as re}from"./CNu3kken.js";const se=3456e4;function le(e,a,t){const n=e.indexOf(";",a);return n===-1?t:n}function ue(e,a,t){const n=e.indexOf("=",a);return n<t?n:-1}function M(e,a,t){if(a===t)return"";let n=a,i=t;do{const l=e.charCodeAt(n);if(l!==32&&l!==9)break}while(++n<i);for(;i>n;){const l=e.charCodeAt(i-1);if(l!==32&&l!==9)break;i--}return e.slice(n,i)}const ce=(()=>{const e=function(){};return e.prototype=Object.create(null),e})();function de(e,a){const t=new ce,n=e.length;if(n<2)return t;const i=a?.decode||fe,l=a?.allowMultiple||!1;let o=0;do{const c=ue(e,o,n);if(c===-1)break;const u=le(e,o,n);if(c>u){o=e.lastIndexOf(";",c-1)+1;continue}const r=M(e,o,c);if(a?.filter&&!a.filter(r)){o=u+1;continue}const f=i(M(e,c+1,u));if(l){const d=t[r];d===void 0?t[r]=f:Array.isArray(d)?d.push(f):t[r]=[d,f]}else t[r]===void 0&&(t[r]=f);o=u+1}while(o<n);return t}function fe(e){if(!e.includes("%"))return e;try{return decodeURIComponent(e)}catch{return e}}const pe=/^[\u0021-\u003A\u003C\u003E-\u007E]+$/,ve=/^[\u0021-\u003A\u003C-\u007E]*$/,he=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,me=/^[\u0020-\u003A\u003C-\u007E]*$/,ge=Object.prototype.toString;function $(e,a,t){const n=typeof e=="object"&&e!==null,i=n?a:t,l=i?.stringify||JSON.stringify,o=n?e:{...t,name:e,value:a==null?"":typeof a=="string"?a:l(a)},c=i?.encode||encodeURIComponent;if(!pe.test(o.name))throw new TypeError(`argument name is invalid: ${o.name}`);const u=o.value?c(o.value):"";if(!ve.test(u))throw new TypeError(`argument val is invalid: ${o.value}`);if(!o.secure){if(o.partitioned)throw new TypeError("Partitioned cookies must have the Secure attribute");if(o.sameSite&&String(o.sameSite).toLowerCase()==="none")throw new TypeError("SameSite=None cookies must have the Secure attribute");if(o.name.length>9&&o.name.charCodeAt(0)===95&&o.name.charCodeAt(1)===95){const f=o.name.toLowerCase();if(f.startsWith("__secure-")||f.startsWith("__host-"))throw new TypeError(`${o.name} cookies must have the Secure attribute`)}}if(o.name.length>7&&o.name.charCodeAt(0)===95&&o.name.charCodeAt(1)===95&&o.name.toLowerCase().startsWith("__host-")){if(o.path!=="/")throw new TypeError("__Host- cookies must have Path=/");if(o.domain)throw new TypeError("__Host- cookies must not have a Domain attribute")}let r=o.name+"="+u;if(o.maxAge!==void 0){if(!Number.isInteger(o.maxAge))throw new TypeError(`option maxAge is invalid: ${o.maxAge}`);r+="; Max-Age="+Math.max(0,Math.min(o.maxAge,se))}if(o.domain){if(!he.test(o.domain))throw new TypeError(`option domain is invalid: ${o.domain}`);r+="; Domain="+o.domain}if(o.path){if(!me.test(o.path))throw new TypeError(`option path is invalid: ${o.path}`);r+="; Path="+o.path}if(o.expires){if(!be(o.expires)||!Number.isFinite(o.expires.valueOf()))throw new TypeError(`option expires is invalid: ${o.expires}`);r+="; Expires="+o.expires.toUTCString()}if(o.httpOnly&&(r+="; HttpOnly"),o.secure&&(r+="; Secure"),o.partitioned&&(r+="; Partitioned"),o.priority)switch(typeof o.priority=="string"?o.priority.toLowerCase():void 0){case"low":r+="; Priority=Low";break;case"medium":r+="; Priority=Medium";break;case"high":r+="; Priority=High";break;default:throw new TypeError(`option priority is invalid: ${o.priority}`)}if(o.sameSite)switch(typeof o.sameSite=="string"?o.sameSite.toLowerCase():o.sameSite){case!0:case"strict":r+="; SameSite=Strict";break;case"lax":r+="; SameSite=Lax";break;case"none":r+="; SameSite=None";break;default:throw new TypeError(`option sameSite is invalid: ${o.sameSite}`)}return r}function be(e){return ge.call(e)==="[object Date]"}function g(e){if(typeof e!="object")return e;var a,t,n=Object.prototype.toString.call(e);if(n==="[object Object]"){if(e.constructor!==Object&&typeof e.constructor=="function"){t=new e.constructor;for(a in e)e.hasOwnProperty(a)&&t[a]!==e[a]&&(t[a]=g(e[a]))}else{t={};for(a in e)a==="__proto__"?Object.defineProperty(t,a,{value:g(e[a]),configurable:!0,enumerable:!0,writable:!0}):t[a]=g(e[a])}return t}if(n==="[object Array]"){for(a=e.length,t=Array(a);a--;)t[a]=g(e[a]);return t}return n==="[object Set]"?(t=new Set,e.forEach(function(i){t.add(g(i))}),t):n==="[object Map]"?(t=new Map,e.forEach(function(i,l){t.set(g(l),g(i))}),t):n==="[object Date]"?new Date(+e):n==="[object RegExp]"?(t=new RegExp(e.source,e.flags),t.lastIndex=e.lastIndex,t):n==="[object DataView]"?new e.constructor(g(e.buffer)):n==="[object ArrayBuffer]"?e.slice(0):n.slice(-6)==="Array]"?new e.constructor(e):e}function ye(e){if(e!=="undefined")try{const a=JSON.parse(e);return typeof a=="number"&&String(a)!==e?e:a}catch{return e}}const Se={path:"/",watch:!0,decode:e=>e&&ye(decodeURIComponent(e)),encode:e=>{if(typeof e!="string"||e==="undefined")return encodeURIComponent(JSON.stringify(e));try{if(typeof JSON.parse(e)!="string")return encodeURIComponent(JSON.stringify(e))}catch{}return encodeURIComponent(e)},refresh:!1},j=globalThis.cookieStore;function we(e,a){const t={...Se,...a};t.filter??=r=>r===e;const n=B(t)||{};let i;t.maxAge!==void 0?i=t.maxAge*1e3:t.expires&&(i=t.expires.getTime()-Date.now());const l=i!==void 0&&i<=0,o=l||n[e]===void 0||n[e]===null,c=g(l?void 0:n[e]??t.default?.()),u=i&&!l?Oe(c,i,t.watch&&t.watch!=="shallow"):C(c);{let r=null;try{!j&&typeof BroadcastChannel<"u"&&(r=new BroadcastChannel(`nuxt:cookies:${e}`))}catch{}const f=(h=!1)=>{if(!h&&(t.readonly||K(u.value,n[e])))return;const b=u.value===null||u.value===void 0?void 0:t.encode(u.value);Ee(e,b,t),n[e]=g(u.value),r?.postMessage({value:t.encode(u.value)})},d=h=>{const b=h.refresh?B(t)?.[e]:t.decode(h.value);y=!0,u.value=b,n[e]=g(b),G(()=>{y=!1})};let y=!1;const S=!!N();if(S&&D(()=>{y=!0,f(),r?.close()}),j){const h=b=>{const A=b.changed.find(E=>E.name===e),L=b.deleted.find(E=>E.name===e);A&&d({value:A.value}),L&&d({value:null})};j.addEventListener("change",h),S&&D(()=>j.removeEventListener("change",h))}else r&&(r.onmessage=({data:h})=>d(h));t.watch&&I(u,()=>{y||f(t.refresh)},{deep:t.watch!=="shallow"}),o&&f(o)}return u}function B(e={}){return de(document.cookie,e)}const Ce=e=>e;function ke(e){const{encode:a,decode:t,...n}=e;return{...n,encode:Ce}}function ze(e,a,t={}){const n=ke(t);return a===void 0?$(e,"",{...n,maxAge:-1}):$(e,a,n)}function Ee(e,a,t={}){document.cookie=ze(e,a,t)}const P=2147483647;function Oe(e,a,t){let n,i,l=0;const o=t?C(e):{value:e};return N()&&D(()=>{i?.(),clearTimeout(n)}),X((c,u)=>{t&&(i=I(o,u));function r(){const d=a-l,y=d<P?d:P;n=setTimeout(()=>{if(l+=y,l<a)return r();o.value=void 0,u()},y)}function f(){l=0,clearTimeout(n),r()}return{get(){return c(),o.value},set(d){f(),o.value=d,u()}}})}const[Te,xe]=Y("DashboardGroup"),qe={base:"lg:hidden",variants:{side:{left:"",right:""}}},Re=Object.assign({inheritAttrs:!1},{__name:"UDashboardSidebarToggle",props:{color:{type:null,required:!1,default:"neutral"},variant:{type:null,required:!1,default:"ghost"},side:{type:String,required:!1,default:"left"},ui:{type:Object,required:!1},label:{type:String,required:!1},activeColor:{type:null,required:!1},activeVariant:{type:null,required:!1},size:{type:null,required:!1},square:{type:Boolean,required:!1},block:{type:Boolean,required:!1},loadingAuto:{type:Boolean,required:!1},onClick:{type:[Function,Array],required:!1},class:{type:null,required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},leading:{type:Boolean,required:!1},leadingIcon:{type:null,required:!1},trailing:{type:Boolean,required:!1},trailingIcon:{type:null,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1},as:{type:null,required:!1},type:{type:null,required:!1},disabled:{type:Boolean,required:!1},exactActiveClass:{type:String,required:!1},viewTransition:{type:Boolean,required:!1}},setup(e){const t=U("dashboardSidebarToggle",e),n=Q(Z(t,"icon","side","class")),{t:i}=V(),l=H(),{sidebarOpen:o,toggleSidebar:c}=Te({sidebarOpen:C(!1),toggleSidebar:()=>{}}),u=z(()=>J({extend:qe,...l.ui?.dashboardSidebarToggle||{}}));return(r,f)=>(W(),F(te,ee({...p(n),icon:p(t).icon||(p(o)?p(l).ui.icons.close:p(l).ui.icons.menu),"aria-label":p(o)?p(i)("dashboardSidebarToggle.close"):p(i)("dashboardSidebarToggle.open"),...r.$attrs},{class:u.value({class:[p(t).ui?.base,p(t).class],side:p(t).side}),onClick:p(c)}),null,16,["class","onClick"]))}});function je(e,a={},{collapsed:t=C(!1)}={}){const n=C(null),i=z(()=>({side:"left",minSize:0,maxSize:100,defaultSize:0,storage:"cookie",persistent:!0,collapsible:!1,collapsedSize:0,resizable:!0,unit:"%",...R(a)?a.value:a})),{dir:l}=V(),o={size:i.value.defaultSize,collapsed:p(t)??!1},c=i.value.persistent&&(i.value.resizable||i.value.collapsible)?i.value.storage==="cookie"?we(e,{...i.value.storageOptions,default:()=>o}):oe(e,o,void 0,i.value.storageOptions):C(o),u=s=>{c.value?Object.assign(c.value,s):c.value={...o,...s}},r=z({get:()=>c.value?.collapsed??o.collapsed,set:s=>{i.value.collapsible&&(R(t)&&(t.value=s),u({collapsed:s}))}}),f=C(i.value.defaultSize),d=z({get:()=>c.value?.size??i.value.defaultSize,set:s=>{u({size:s})}}),y=z(()=>r.value?i.value.collapsedSize:d.value),S=C(!1),h=()=>i.value.unit==="rem"?Number.parseFloat(getComputedStyle(document.documentElement).fontSize):1,b=(s,v,O,T)=>{if(!n.value||!i.value.resizable)return;const q=n.value.parentElement?.offsetWidth||1,k=l.value==="rtl";let m;k?m=i.value.side==="left"?v-s:s-v:m=i.value.side==="left"?s-v:v-s;const w=O+m;let _;if(i.value.unit==="rem"?_=w/T:i.value.unit==="px"?_=w:_=w/q*100,i.value.collapsible&&_<i.value.collapsedSize+4){x(!0);return}else r.value&&x(!1);d.value=Math.min(i.value.maxSize,Math.max(i.value.minSize,_))},A=s=>{if(!n.value||!i.value.resizable)return;s.preventDefault(),s.stopPropagation();const v=n.value.getBoundingClientRect().width;if(!v)return;const O=s.clientX,T=v,q=h();S.value=!0;const k=w=>{b(w.clientX,O,T,q)},m=()=>{S.value=!1,document.removeEventListener("mousemove",k),document.removeEventListener("mouseup",m)};document.addEventListener("mousemove",k),document.addEventListener("mouseup",m)},L=s=>{if(!n.value||!i.value.resizable||!s.touches[0])return;s.preventDefault(),s.stopPropagation();const v=n.value.getBoundingClientRect().width;if(!v)return;const O=s.touches[0].clientX,T=v,q=h();S.value=!0;const k=w=>{w.touches[0]&&b(w.touches[0].clientX,O,T,q)},m=()=>{S.value=!1,document.removeEventListener("touchmove",k),document.removeEventListener("touchend",m),document.removeEventListener("touchcancel",m)};document.addEventListener("touchmove",k,{passive:!1}),document.addEventListener("touchend",m),document.addEventListener("touchcancel",m)},E=s=>{!n.value||!i.value.resizable||(s.preventDefault(),s.stopPropagation(),r.value&&x(!1),d.value=i.value.defaultSize)},x=s=>{if(!i.value.collapsible)return;const v=s??!r.value;v&&!r.value?f.value=d.value:!v&&r.value&&(d.value=f.value),r.value=v};return R(t)&&c.value?.collapsed&&(t.value=c.value.collapsed),R(t)&&I(t,s=>{i.value.collapsible&&c.value?.collapsed!==s&&(r.value=s)}),{el:n,size:y,isDragging:S,isCollapsed:r,onMouseDown:A,onTouchStart:L,onDoubleClick:E,collapse:x}}const _e={base:"hidden lg:block touch-none select-none cursor-ew-resize relative before:absolute before:inset-y-0 before:-left-1.5 before:-right-1.5 before:z-1"},Le={__name:"UDashboardResizeHandle",props:{as:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(e){const t=U("dashboardResizeHandle",e),n=H(),i=z(()=>J({extend:_e,...n.ui?.dashboardResizeHandle||{}}));return(l,o)=>(W(),F(p(re),{as:p(t).as,role:"separator",class:ae(i.value({class:[p(t).ui?.base,p(t).class]}))},{default:ne(()=>[ie(l.$slots,"default")]),_:3},8,["as","class"]))}};export{Re as _,Te as a,je as b,Le as c,xe as p,we as u};
@@ -0,0 +1 @@
1
+ import{aw as o}from"./CNu3kken.js";function n(){const e=o()?.vnode?.scopeId;return e?{[e]:""}:{}}export{n as u};
@@ -1 +1 @@
1
- import{a2 as m,a3 as y,a5 as g,o as i,f as h,g as b,k as t,c as l,q as o,V as d,m as u,t as c,v as n,X as k,h as x,a8 as q}from"./h49q_GXF.js";const C={slots:{root:"rounded-lg overflow-hidden",header:"p-4 sm:px-6",title:"text-highlighted font-semibold",description:"mt-1 text-muted text-sm",body:"p-4 sm:p-6",footer:"p-4 sm:px-6"},variants:{variant:{solid:{root:"bg-inverted text-inverted",title:"text-inverted",description:"text-dimmed"},outline:{root:"bg-default ring ring-default divide-y divide-default"},soft:{root:"bg-elevated/50 divide-y divide-default"},subtle:{root:"bg-elevated/50 ring ring-default divide-y divide-default"}}},defaultVariants:{variant:"outline"}},V={__name:"UCard",props:{as:{type:null,required:!1},title:{type:String,required:!1},description:{type:String,required:!1},variant:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(p){const v=p,s=m(),e=y("card",v),f=g(),a=x(()=>q({extend:C,...f.ui?.card||{}})({variant:e.variant}));return(r,S)=>(i(),h(t(k),{as:t(e).as,"data-slot":"root",class:o(a.value.root({class:[t(e).ui?.root,t(e).class]}))},{default:b(()=>[s.header||t(e).title||s.title||t(e).description||s.description?(i(),l("div",{key:0,"data-slot":"header",class:o(a.value.header({class:t(e).ui?.header}))},[d(r.$slots,"header",{},()=>[t(e).title||s.title?(i(),l("div",{key:0,"data-slot":"title",class:o(a.value.title({class:t(e).ui?.title}))},[d(r.$slots,"title",{},()=>[u(c(t(e).title),1)])],2)):n("",!0),t(e).description||s.description?(i(),l("div",{key:1,"data-slot":"description",class:o(a.value.description({class:t(e).ui?.description}))},[d(r.$slots,"description",{},()=>[u(c(t(e).description),1)])],2)):n("",!0)])],2)):n("",!0),s.default?(i(),l("div",{key:1,"data-slot":"body",class:o(a.value.body({class:t(e).ui?.body}))},[d(r.$slots,"default")],2)):n("",!0),s.footer?(i(),l("div",{key:2,"data-slot":"footer",class:o(a.value.footer({class:t(e).ui?.footer}))},[d(r.$slots,"footer")],2)):n("",!0)]),_:3},8,["as","class"]))}};export{V as _};
1
+ import{a2 as m,a3 as y,a5 as g,o as i,f as h,g as b,k as t,c as l,q as o,V as d,m as u,t as c,v as n,X as k,h as x,a8 as q}from"./CNu3kken.js";const C={slots:{root:"rounded-lg overflow-hidden",header:"p-4 sm:px-6",title:"text-highlighted font-semibold",description:"mt-1 text-muted text-sm",body:"p-4 sm:p-6",footer:"p-4 sm:px-6"},variants:{variant:{solid:{root:"bg-inverted text-inverted",title:"text-inverted",description:"text-dimmed"},outline:{root:"bg-default ring ring-default divide-y divide-default"},soft:{root:"bg-elevated/50 divide-y divide-default"},subtle:{root:"bg-elevated/50 ring ring-default divide-y divide-default"}}},defaultVariants:{variant:"outline"}},V={__name:"UCard",props:{as:{type:null,required:!1},title:{type:String,required:!1},description:{type:String,required:!1},variant:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(p){const v=p,s=m(),e=y("card",v),f=g(),a=x(()=>q({extend:C,...f.ui?.card||{}})({variant:e.variant}));return(r,S)=>(i(),h(t(k),{as:t(e).as,"data-slot":"root",class:o(a.value.root({class:[t(e).ui?.root,t(e).class]}))},{default:b(()=>[s.header||t(e).title||s.title||t(e).description||s.description?(i(),l("div",{key:0,"data-slot":"header",class:o(a.value.header({class:t(e).ui?.header}))},[d(r.$slots,"header",{},()=>[t(e).title||s.title?(i(),l("div",{key:0,"data-slot":"title",class:o(a.value.title({class:t(e).ui?.title}))},[d(r.$slots,"title",{},()=>[u(c(t(e).title),1)])],2)):n("",!0),t(e).description||s.description?(i(),l("div",{key:1,"data-slot":"description",class:o(a.value.description({class:t(e).ui?.description}))},[d(r.$slots,"description",{},()=>[u(c(t(e).description),1)])],2)):n("",!0)])],2)):n("",!0),s.default?(i(),l("div",{key:1,"data-slot":"body",class:o(a.value.body({class:t(e).ui?.body}))},[d(r.$slots,"default")],2)):n("",!0),s.footer?(i(),l("div",{key:2,"data-slot":"footer",class:o(a.value.footer({class:t(e).ui?.footer}))},[d(r.$slots,"footer")],2)):n("",!0)]),_:3},8,["as","class"]))}};export{V as _};
@@ -1 +1 @@
1
- import{d as n,o as s,c as o,j as c,p as r,i as l,t as i,V as d,q as m}from"./h49q_GXF.js";const _={class:"text-sm text-red-500"},p=n({__name:"ErrorState",props:{text:{},icon:{default:"i-lucide-circle-alert"},padded:{type:Boolean,default:!0}},setup(e){return(t,u)=>{const a=r;return s(),o("div",{role:"alert",class:m(["flex flex-col items-center justify-center gap-2 text-center",e.padded&&"p-4"])},[c(a,{name:e.icon,class:"size-5 text-red-400"},null,8,["name"]),l("p",_,i(e.text),1),d(t.$slots,"action")],2)}}}),f=Object.assign(p,{__name:"ErrorState"});export{f as _};
1
+ import{d as n,o as s,c as o,j as c,p as r,i as l,t as i,V as d,q as m}from"./CNu3kken.js";const _={class:"text-sm text-red-500"},p=n({__name:"ErrorState",props:{text:{},icon:{default:"i-lucide-circle-alert"},padded:{type:Boolean,default:!0}},setup(e){return(t,u)=>{const a=r;return s(),o("div",{role:"alert",class:m(["flex flex-col items-center justify-center gap-2 text-center",e.padded&&"p-4"])},[c(a,{name:e.icon,class:"size-5 text-red-400"},null,8,["name"]),l("p",_,i(e.text),1),d(t.$slots,"action")],2)}}}),f=Object.assign(p,{__name:"ErrorState"});export{f as _};