@piwitests/server 0.26.0 → 0.26.1

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 (382) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{BdQ7kfxJ.js → 1QWBzxLM.js} +4 -4
  3. package/.output/public/_nuxt/{CY1UsEbI.js → 4hW9LHwA.js} +1 -1
  4. package/.output/public/_nuxt/96uxfdYT.js +1 -0
  5. package/.output/public/_nuxt/{HGYIpJtg.js → AbnDY6Zr.js} +1 -1
  6. package/.output/public/_nuxt/{CZ6WR7uw.js → B-1zt4pp.js} +1 -1
  7. package/.output/public/_nuxt/{Sx5-c-bZ.js → B1iYmAt_.js} +1 -1
  8. package/.output/public/_nuxt/{CbzgEkmW.js → B2bxEmbR.js} +1 -1
  9. package/.output/public/_nuxt/B3hAvaCe.js +4 -0
  10. package/.output/public/_nuxt/{CyWOerIG.js → B4lvHjBe.js} +1 -1
  11. package/.output/public/_nuxt/B5S7BkC3.js +1 -0
  12. package/.output/public/_nuxt/{Bb_1uAHn.js → B6j5Ornu.js} +1 -1
  13. package/.output/public/_nuxt/{CrsaY0R_.js → B82vqOZe.js} +1 -1
  14. package/.output/public/_nuxt/{CTFUlsXp.js → B9oXlGro.js} +1 -1
  15. package/.output/public/_nuxt/{CsJ9Ce4U.js → BABCH5kE.js} +1 -1
  16. package/.output/public/_nuxt/{Gn1Ns00e.js → BF5qB58w.js} +1 -1
  17. package/.output/public/_nuxt/{CsGsLxHg.js → BFLa9ZEP.js} +1 -1
  18. package/.output/public/_nuxt/BIlohx1E.js +1 -0
  19. package/.output/public/_nuxt/{B6djubIK.js → BM5C-Oec.js} +1 -1
  20. package/.output/public/_nuxt/{CrZhoZuI.js → BOA-I6S9.js} +1 -1
  21. package/.output/public/_nuxt/{Bp2zrrkV.js → BQUhoGCh.js} +1 -1
  22. package/.output/public/_nuxt/{DUC3QnqW.js → BQYLGX9o.js} +1 -1
  23. package/.output/public/_nuxt/{CUjzhXN1.js → BRMeEHXd.js} +1 -1
  24. package/.output/public/_nuxt/{Cf_a8ynB.js → BRtaKOKv.js} +2 -2
  25. package/.output/public/_nuxt/{B7uPoZ7T.js → BS91Og__.js} +1 -1
  26. package/.output/public/_nuxt/{DKgbchez.js → BTGAvMoT.js} +1 -1
  27. package/.output/public/_nuxt/{BIamiwb7.js → BaLX92Wz.js} +1 -1
  28. package/.output/public/_nuxt/{LWIyaZKe.js → Bc6Zr-Xn.js} +1 -1
  29. package/.output/public/_nuxt/{R7AVOWi_.js → BceMEnJt.js} +1 -1
  30. package/.output/public/_nuxt/{Q2oJNyXL.js → BeCAVtCK.js} +1 -1
  31. package/.output/public/_nuxt/{D_SD71Qf.js → Bf119e7x.js} +1 -1
  32. package/.output/public/_nuxt/BfRcdz11.js +9 -0
  33. package/.output/public/_nuxt/{CxwnFFD0.js → Bl0xzETD.js} +1 -1
  34. package/.output/public/_nuxt/{C_eXufkv.js → BnUQ3i5l.js} +1 -1
  35. package/.output/public/_nuxt/{rPG7kzfL.js → Bp1WeQ0_.js} +1 -1
  36. package/.output/public/_nuxt/{BL8cYWsR.js → Bp31ZRcA.js} +1 -1
  37. package/.output/public/_nuxt/{Drh1_ASq.js → BrxUH8qL.js} +1 -1
  38. package/.output/public/_nuxt/{D72Ce8Ff.js → BsdfEbVC.js} +1 -1
  39. package/.output/public/_nuxt/BtGI4ZbP.js +1 -0
  40. package/.output/public/_nuxt/{BV8EzO8q.js → BuMX-4RF.js} +1 -1
  41. package/.output/public/_nuxt/{DPPhFZOr.js → BuXJR5tn.js} +1 -1
  42. package/.output/public/_nuxt/{Bh2WA4IJ.js → Bx_lfKHl.js} +1 -1
  43. package/.output/public/_nuxt/{vcSKeWsW.js → C4UKyPQn.js} +1 -1
  44. package/.output/public/_nuxt/{IoE3eJ9F.js → C9XCTbtQ.js} +1 -1
  45. package/.output/public/_nuxt/{BilJoEne.js → CEPU6VkU.js} +1 -1
  46. package/.output/public/_nuxt/CHz7LJIX.js +1 -0
  47. package/.output/public/_nuxt/{BPhGDGAR.js → CMhd8IBr.js} +1 -1
  48. package/.output/public/_nuxt/{C5X_N4R7.js → CN1M6i4K.js} +33 -33
  49. package/.output/public/_nuxt/CQLkowA3.js +1 -0
  50. package/.output/public/_nuxt/{DTtizz85.js → CU_2YLhT.js} +1 -1
  51. package/.output/public/_nuxt/{CMVTTE_g.js → CXkXHtcx.js} +1 -1
  52. package/.output/public/_nuxt/{igDJCTgt.js → CZeKW-zP.js} +1 -1
  53. package/.output/public/_nuxt/{9oKY4Zb7.js → CapSEET7.js} +1 -1
  54. package/.output/public/_nuxt/{j2eGYaRa.js → CeExxGSu.js} +1 -1
  55. package/.output/public/_nuxt/{CEgRB8H9.js → CfwpqSe7.js} +1 -1
  56. package/.output/public/_nuxt/{CFKbXp6V.js → ChOtLYkd.js} +1 -1
  57. package/.output/public/_nuxt/ChuJzPWz.js +1 -0
  58. package/.output/public/_nuxt/{Bo73sAu8.js → CiCUZGFZ.js} +1 -1
  59. package/.output/public/_nuxt/{C6R4tyud.js → CkL_oDa8.js} +1 -1
  60. package/.output/public/_nuxt/{DtGJeysS.js → CkhOMiiO.js} +1 -1
  61. package/.output/public/_nuxt/ClmHMP65.js +2 -0
  62. package/.output/public/_nuxt/{BtcDY0Du.js → Cnm0d_7S.js} +1 -1
  63. package/.output/public/_nuxt/{CK2AMqz_.js → CtQMagSz.js} +1 -1
  64. package/.output/public/_nuxt/{B1KjIR-q.js → Ctnn3S3-.js} +1 -1
  65. package/.output/public/_nuxt/{DCeZxpxe.js → CywiLuOD.js} +4 -4
  66. package/.output/public/_nuxt/{oA84LLqO.js → CzRkZLB4.js} +1 -1
  67. package/.output/public/_nuxt/CzyCEdYP.js +1 -0
  68. package/.output/public/_nuxt/{D56yp7m9.js → D-F0Rhjj.js} +1 -1
  69. package/.output/public/_nuxt/D4mPjHHR.js +2 -0
  70. package/.output/public/_nuxt/{BsGvSoPC.js → D4v7lLm3.js} +1 -1
  71. package/.output/public/_nuxt/{CxRTKV-K.js → D6B0WKO0.js} +1 -1
  72. package/.output/public/_nuxt/{jv8U_Tup.js → DAg6jtav.js} +1 -1
  73. package/.output/public/_nuxt/DBXXb0w8.js +1 -0
  74. package/.output/public/_nuxt/{ChlP20A5.js → DHN2t5Vt.js} +1 -1
  75. package/.output/public/_nuxt/{B8tezsWe.js → DJKHXfNS.js} +1 -1
  76. package/.output/public/_nuxt/{CFg5qdS0.js → DMqAUHFN.js} +1 -1
  77. package/.output/public/_nuxt/{C9A3sPDo.js → DURme_kn.js} +1 -1
  78. package/.output/public/_nuxt/{C2hIM5f9.js → DVo_e_uj.js} +1 -1
  79. package/.output/public/_nuxt/{DKhqIou2.js → DXh8q5KY.js} +1 -1
  80. package/.output/public/_nuxt/{CZXeJs2k.js → DXz1Kb4-.js} +1 -1
  81. package/.output/public/_nuxt/{CPrVhXJk.js → DYdwHaco.js} +1 -1
  82. package/.output/public/_nuxt/{WZXZeGYt.js → D_ZAGxCQ.js} +1 -1
  83. package/.output/public/_nuxt/{D5SN7rPK.js → D_dhjJvR.js} +1 -1
  84. package/.output/public/_nuxt/{DR1jFptD.js → DamZHy5M.js} +1 -1
  85. package/.output/public/_nuxt/{xKX9IHe3.js → DbtjJCra.js} +1 -1
  86. package/.output/public/_nuxt/{r6zkA1SE.js → DcOlL-oi.js} +1 -1
  87. package/.output/public/_nuxt/{CxspCKpR.js → DeQ9sIia.js} +1 -1
  88. package/.output/public/_nuxt/{BkHJoHpc.js → DjX1bLZD.js} +1 -1
  89. package/.output/public/_nuxt/{Be0bwdsi.js → Dly7wCCl.js} +1 -1
  90. package/.output/public/_nuxt/DmeogbGY.js +1 -0
  91. package/.output/public/_nuxt/{CfV2N201.js → Dn_-RkxP.js} +1 -1
  92. package/.output/public/_nuxt/{dg6uXTyR.js → DoDo3VF2.js} +1 -1
  93. package/.output/public/_nuxt/{BMlKQMjM.js → DoVHTl-K.js} +1 -1
  94. package/.output/public/_nuxt/DpM8IgHL.js +1 -0
  95. package/.output/public/_nuxt/{B4NjylBn.js → Dpwj_1H5.js} +1 -1
  96. package/.output/public/_nuxt/{DzJa19LG.js → DvSHenmZ.js} +1 -1
  97. package/.output/public/_nuxt/DvYU87_a.js +1 -0
  98. package/.output/public/_nuxt/{G2J1dVVb.js → Dx41arC8.js} +1 -1
  99. package/.output/public/_nuxt/DxBrlj7b.js +1 -0
  100. package/.output/public/_nuxt/{r-HZNbp3.js → JNpNdV-o.js} +1 -1
  101. package/.output/public/_nuxt/Lz9MmwKY.js +1 -0
  102. package/.output/public/_nuxt/OMI0cmZ0.js +1 -0
  103. package/.output/public/_nuxt/{CUWrUpTl.js → UAmyrRCI.js} +1 -1
  104. package/.output/public/_nuxt/{EJllK0wm.js → VBTxfbqU.js} +1 -1
  105. package/.output/public/_nuxt/VbedPPFH.js +1 -0
  106. package/.output/public/_nuxt/{BY9A1aOT.js → _okd7MfH.js} +1 -1
  107. package/.output/public/_nuxt/{BOn5q0rT.js → bmAf49LT.js} +1 -1
  108. package/.output/public/_nuxt/builds/latest.json +1 -1
  109. package/.output/public/_nuxt/builds/meta/0174ebd8-8fa5-4698-aa79-7a8dd2f6527f.json +1 -0
  110. package/.output/public/_nuxt/{D0XWJGhG.js → e-GZmCeP.js} +1 -1
  111. package/.output/public/_nuxt/entry.Dv52uAyn.css +1 -0
  112. package/.output/public/_nuxt/{DVIIj6Vv.js → f9TbT3AM.js} +1 -1
  113. package/.output/public/_nuxt/gdlHFfN6.js +1 -0
  114. package/.output/public/_nuxt/{BTG_PmM5.js → huBoAZeM.js} +1 -1
  115. package/.output/public/_nuxt/{DadksxQ9.js → mYw4b7uY.js} +1 -1
  116. package/.output/public/_nuxt/{B0eHOux4.js → mi7tdFxN.js} +1 -1
  117. package/.output/public/_nuxt/sFe4Zr5j.js +1 -0
  118. package/.output/public/_nuxt/{CLrLFf3s.js → uspGXbik.js} +1 -1
  119. package/.output/public/_nuxt/{DLN-CQXF.js → w7KxwWEv.js} +1 -1
  120. package/.output/public/_nuxt/{Bp55g9gr.js → wa4k1aDz.js} +1 -1
  121. package/.output/public/_nuxt/{C2yZcDch.js → xuB8n0QL.js} +1 -1
  122. package/.output/public/favicon.ico +0 -0
  123. package/.output/public/trace-viewer/assets/codeMirrorModule-LEHpjmcn.js +32 -0
  124. package/.output/public/trace-viewer/assets/defaultSettingsView-BNmKHKpQ.js +264 -0
  125. package/.output/public/trace-viewer/assets/urlMatch-BYQrIQwR.js +1 -0
  126. package/.output/public/trace-viewer/assets/xtermModule-CsJ4vdCR.js +9 -0
  127. package/.output/public/trace-viewer/codeMirrorModule.DYBRYzYX.css +1 -0
  128. package/.output/public/trace-viewer/codicon.DCmgc-ay.ttf +0 -0
  129. package/.output/public/trace-viewer/defaultSettingsView.CjdS-WJx.css +1 -0
  130. package/.output/public/trace-viewer/index.CzXZzn5A.css +1 -0
  131. package/.output/public/trace-viewer/index.DMMX1gXU.js +2 -0
  132. package/.output/public/trace-viewer/index.html +44 -0
  133. package/.output/public/trace-viewer/manifest.webmanifest +16 -0
  134. package/.output/public/trace-viewer/playwright-logo.svg +9 -0
  135. package/.output/public/trace-viewer/snapshot.html +10 -0
  136. package/.output/public/trace-viewer/snapshot.v8KI4P3m.js +2 -0
  137. package/.output/public/trace-viewer/sw.bundle.js +5 -0
  138. package/.output/public/trace-viewer/uiMode.BZQ54Kgt.css +1 -0
  139. package/.output/public/trace-viewer/uiMode.Ut8wwJNp.js +6 -0
  140. package/.output/public/trace-viewer/uiMode.html +18 -0
  141. package/.output/public/trace-viewer/xtermModule.DYP7pi_n.css +32 -0
  142. package/.output/server/chunks/_/users.mjs +1 -1
  143. package/.output/server/chunks/build/{BreadcrumbNav-DBnGj5Jq.mjs → BreadcrumbNav-Bg4QGX0k.mjs} +11 -4
  144. package/.output/server/chunks/build/BreadcrumbNav-Bg4QGX0k.mjs.map +1 -0
  145. package/.output/server/chunks/build/{BrowserBadge-vFb1ERG_.mjs → BrowserBadge-yMgLTBUu.mjs} +17 -9
  146. package/.output/server/chunks/build/BrowserBadge-yMgLTBUu.mjs.map +1 -0
  147. package/.output/server/chunks/build/{ChartMarkerLines-BXqUpUcs.mjs → ChartMarkerLines-D0cTRlxF.mjs} +3 -3
  148. package/.output/server/chunks/build/ChartMarkerLines-D0cTRlxF.mjs.map +1 -0
  149. package/.output/server/chunks/build/{ChartTooltip-DoF6Smyc.mjs → ChartTooltip-B2t6VYYH.mjs} +3 -3
  150. package/.output/server/chunks/build/ChartTooltip-B2t6VYYH.mjs.map +1 -0
  151. package/.output/server/chunks/build/Checkbox-ChSYhiUz.mjs +1 -1
  152. package/.output/server/chunks/build/ClientDate-U97Z1p6-.mjs +32 -0
  153. package/.output/server/chunks/build/ClientDate-U97Z1p6-.mjs.map +1 -0
  154. package/.output/server/chunks/build/{CodeBlock-CmvKHaq8.mjs → CodeBlock-DuWhmcI2.mjs} +3 -3
  155. package/.output/server/chunks/build/CodeBlock-DuWhmcI2.mjs.map +1 -0
  156. package/.output/server/chunks/build/DashboardSidebarToggle-a5KYecZ0.mjs +1 -1
  157. package/.output/server/chunks/build/DashboardToolbar-BZoGc0ri.mjs +72 -0
  158. package/.output/server/chunks/build/DashboardToolbar-BZoGc0ri.mjs.map +1 -0
  159. package/.output/server/chunks/build/{DataLocationCard-ChV02QJj.mjs → DataLocationCard-DCdhQBIY.mjs} +2 -2
  160. package/.output/server/chunks/build/DataLocationCard-DCdhQBIY.mjs.map +1 -0
  161. package/.output/server/chunks/build/{DesktopRunLocallyButton-BfmbZpiL.mjs → DesktopRunLocallyButton-ChHg3GqK.mjs} +5 -5
  162. package/.output/server/chunks/build/{DesktopRunLocallyButton-BfmbZpiL.mjs.map → DesktopRunLocallyButton-ChHg3GqK.mjs.map} +1 -1
  163. package/.output/server/chunks/build/{DiagnosisPanel-C_ndadzP.mjs → DiagnosisPanel-DE-r2UV8.mjs} +5 -5
  164. package/.output/server/chunks/build/DiagnosisPanel-DE-r2UV8.mjs.map +1 -0
  165. package/.output/server/chunks/build/{DiagnosisResult-GAjo6Lt3.mjs → DiagnosisResult-CrGK--xh.mjs} +16 -10
  166. package/.output/server/chunks/build/DiagnosisResult-CrGK--xh.mjs.map +1 -0
  167. package/.output/server/chunks/build/{DurationValue-CObiBDnH.mjs → DurationValue-Dn06XQk3.mjs} +2 -2
  168. package/.output/server/chunks/build/DurationValue-Dn06XQk3.mjs.map +1 -0
  169. package/.output/server/chunks/build/EntityLinks-BcpvMt_V.mjs +1 -1
  170. package/.output/server/chunks/build/EnvManagedBadge-_8GfjWjE.mjs +1 -1
  171. package/.output/server/chunks/build/{FeatureUnavailable-Buoyoqx1.mjs → FeatureUnavailable-IaBjVCqQ.mjs} +2 -2
  172. package/.output/server/chunks/build/FeatureUnavailable-IaBjVCqQ.mjs.map +1 -0
  173. package/.output/server/chunks/build/{GetStartedWizard-tL3U_qM1.mjs → GetStartedWizard-BiyxEXWP.mjs} +3 -3
  174. package/.output/server/chunks/build/GetStartedWizard-BiyxEXWP.mjs.map +1 -0
  175. package/.output/server/chunks/build/{HelpHint-C96TlqxY.mjs → HelpHint-CdBz6deq.mjs} +2 -2
  176. package/.output/server/chunks/build/HelpHint-CdBz6deq.mjs.map +1 -0
  177. package/.output/server/chunks/build/{MetaStripGroup-Cp2WCQf7.mjs → MetaStripGroup-CDyGlsNt.mjs} +94 -21
  178. package/.output/server/chunks/build/MetaStripGroup-CDyGlsNt.mjs.map +1 -0
  179. package/.output/server/chunks/build/{NavbarActions-VCHW0u67.mjs → NavbarActions-BTWxKCVI.mjs} +2 -2
  180. package/.output/server/chunks/build/NavbarActions-BTWxKCVI.mjs.map +1 -0
  181. package/.output/server/chunks/build/NavigationMenu-D4ZpdCm_.mjs +1 -1
  182. package/.output/server/chunks/build/OpenInIdeLink-Bnl-_som.mjs +1 -1
  183. package/.output/server/chunks/build/{ProjectTestCasesTable-saHYJoyQ.mjs → ProjectTestCasesTable-DJDAZ9NQ.mjs} +9 -9
  184. package/.output/server/chunks/build/ProjectTestCasesTable-DJDAZ9NQ.mjs.map +1 -0
  185. package/.output/server/chunks/build/{RunReports-CKYYRC59.mjs → RunReports-BSo2cCNx.mjs} +4 -4
  186. package/.output/server/chunks/build/RunReports-BSo2cCNx.mjs.map +1 -0
  187. package/.output/server/chunks/build/{RunStatusBadge-CWhmAmKb.mjs → RunStatusBadge-zfeSwcTx.mjs} +2 -2
  188. package/.output/server/chunks/build/RunStatusBadge-zfeSwcTx.mjs.map +1 -0
  189. package/.output/server/chunks/build/{SectionCard-BB1O3uXd.mjs → SectionCard-CKD1s0eF.mjs} +2 -2
  190. package/.output/server/chunks/build/SectionCard-CKD1s0eF.mjs.map +1 -0
  191. package/.output/server/chunks/build/Select-COU8NARj.mjs +1 -1
  192. package/.output/server/chunks/build/SelectMenu-BUwwc3Qt.mjs +1 -1
  193. package/.output/server/chunks/build/{SettingsField-CEasBHu3.mjs → SettingsField-CDnUtiCM.mjs} +3 -3
  194. package/.output/server/chunks/build/SettingsField-CDnUtiCM.mjs.map +1 -0
  195. package/.output/server/chunks/build/Table-BET-DOtX.mjs +1 -1
  196. package/.output/server/chunks/build/{TestCaseHistoryChart-BgI6P_zS.mjs → TestCaseHistoryChart-Do7WK-ZY.mjs} +16 -17
  197. package/.output/server/chunks/build/TestCaseHistoryChart-Do7WK-ZY.mjs.map +1 -0
  198. package/.output/server/chunks/build/{TestStatusBar-DR8jM5th.mjs → TestStatusBar-BipoEOzd.mjs} +15 -6
  199. package/.output/server/chunks/build/TestStatusBar-BipoEOzd.mjs.map +1 -0
  200. package/.output/server/chunks/build/Tooltip-CK0ucuXC.mjs +1 -1
  201. package/.output/server/chunks/build/{_id_-rQhFY0fN.mjs → _id_-BLPB189b.mjs} +16 -16
  202. package/.output/server/chunks/build/{_id_-rQhFY0fN.mjs.map → _id_-BLPB189b.mjs.map} +1 -1
  203. package/.output/server/chunks/build/{_id_-kkexEH_q.mjs → _id_-BeGJOSxY.mjs} +16 -16
  204. package/.output/server/chunks/build/_id_-BeGJOSxY.mjs.map +1 -0
  205. package/.output/server/chunks/build/{_id_-B7Dw490u.mjs → _id_-CfLEW45H.mjs} +472 -304
  206. package/.output/server/chunks/build/_id_-CfLEW45H.mjs.map +1 -0
  207. package/.output/server/chunks/build/{_id_-DVPb1S93.mjs → _id_-DxHe32cW.mjs} +654 -453
  208. package/.output/server/chunks/build/_id_-DxHe32cW.mjs.map +1 -0
  209. package/.output/server/chunks/build/{about-C4AbyQ4q.mjs → about-FLAssVsA.mjs} +5 -5
  210. package/.output/server/chunks/build/about-FLAssVsA.mjs.map +1 -0
  211. package/.output/server/chunks/build/{account-B45bYZd1.mjs → account-Cvz6KkYu.mjs} +4 -4
  212. package/.output/server/chunks/build/account-Cvz6KkYu.mjs.map +1 -0
  213. package/.output/server/chunks/build/{ai-CgN9xXFf.mjs → ai-DR9Zry7B.mjs} +8 -8
  214. package/.output/server/chunks/build/{ai-CgN9xXFf.mjs.map → ai-DR9Zry7B.mjs.map} +1 -1
  215. package/.output/server/chunks/build/{analytics-BRkiUpwa.mjs → analytics-CCAQayhv.mjs} +9 -9
  216. package/.output/server/chunks/build/{analytics-BRkiUpwa.mjs.map → analytics-CCAQayhv.mjs.map} +1 -1
  217. package/.output/server/chunks/build/{auto-heal-BnTdKHQq.mjs → auto-heal-ngiiiVmq.mjs} +4 -4
  218. package/.output/server/chunks/build/auto-heal-ngiiiVmq.mjs.map +1 -0
  219. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  220. package/.output/server/chunks/build/{default-BGOdM_zA.mjs → default-wYpdMMvh.mjs} +15 -13
  221. package/.output/server/chunks/build/{default-BGOdM_zA.mjs.map → default-wYpdMMvh.mjs.map} +1 -1
  222. package/.output/server/chunks/build/{docs-D7R5eJ1Z.mjs → docs-BX9DoKOI.mjs} +4 -4
  223. package/.output/server/chunks/build/{docs-D7R5eJ1Z.mjs.map → docs-BX9DoKOI.mjs.map} +1 -1
  224. package/.output/server/chunks/build/{edit-BbL3k6c3.mjs → edit-DnyBC4uC.mjs} +7 -7
  225. package/.output/server/chunks/build/{edit-BbL3k6c3.mjs.map → edit-DnyBC4uC.mjs.map} +1 -1
  226. package/.output/server/chunks/build/fetch-DOcN2mHf.mjs +1 -1
  227. package/.output/server/chunks/build/{help-content-BK3jcgLw.mjs → help-content-3QLSe6Vd.mjs} +3 -3
  228. package/.output/server/chunks/build/help-content-3QLSe6Vd.mjs.map +1 -0
  229. package/.output/server/chunks/build/{import-ibAn_HB9.mjs → import-S-w3MXez.mjs} +8 -8
  230. package/.output/server/chunks/build/import-S-w3MXez.mjs.map +1 -0
  231. package/.output/server/chunks/build/{index-D5A0DW7Y.mjs → index-BFr7JW_2.mjs} +4 -4
  232. package/.output/server/chunks/build/index-BFr7JW_2.mjs.map +1 -0
  233. package/.output/server/chunks/build/{index-CqinXTVs.mjs → index-CdzYiYiu.mjs} +9 -9
  234. package/.output/server/chunks/build/{index-CqinXTVs.mjs.map → index-CdzYiYiu.mjs.map} +1 -1
  235. package/.output/server/chunks/build/{index-DreB_S-d.mjs → index-CgYJur1z.mjs} +31 -23
  236. package/.output/server/chunks/build/index-CgYJur1z.mjs.map +1 -0
  237. package/.output/server/chunks/build/{index-2GmuPNF-.mjs → index-CjnZ521K.mjs} +22 -4
  238. package/.output/server/chunks/build/index-CjnZ521K.mjs.map +1 -0
  239. package/.output/server/chunks/build/{index-KsRegEjT.mjs → index-xgA4P1ht.mjs} +3218 -4087
  240. package/.output/server/chunks/build/index-xgA4P1ht.mjs.map +1 -0
  241. package/.output/server/chunks/build/isValueEqualOrExist-D4lZ8uRY.mjs +1 -1
  242. package/.output/server/chunks/build/login-DueFS2RU.mjs +1 -1
  243. package/.output/server/chunks/build/{mcp-Dwj29-uG.mjs → mcp-DlZzubUF.mjs} +7 -7
  244. package/.output/server/chunks/build/mcp-DlZzubUF.mjs.map +1 -0
  245. package/.output/server/chunks/build/{notifications-CjAn5FJj.mjs → notifications-ByPVhyPX.mjs} +6 -6
  246. package/.output/server/chunks/build/notifications-ByPVhyPX.mjs.map +1 -0
  247. package/.output/server/chunks/build/{performance-DRzcu_c7.mjs → performance-Dc9FhaJr.mjs} +6 -6
  248. package/.output/server/chunks/build/performance-Dc9FhaJr.mjs.map +1 -0
  249. package/.output/server/chunks/build/{pr-feedback-DR60oGBf.mjs → pr-feedback-5kC_UmKG.mjs} +4 -4
  250. package/.output/server/chunks/build/pr-feedback-5kC_UmKG.mjs.map +1 -0
  251. package/.output/server/chunks/build/{selections-BjjolRZ9.mjs → selections-C6J9mI0s.mjs} +9 -9
  252. package/.output/server/chunks/build/selections-C6J9mI0s.mjs.map +1 -0
  253. package/.output/server/chunks/build/server.mjs +33 -33
  254. package/.output/server/chunks/build/{settings-B3NWV9tu.mjs → settings-DcCAv0U4.mjs} +17 -81
  255. package/.output/server/chunks/build/settings-DcCAv0U4.mjs.map +1 -0
  256. package/.output/server/chunks/build/{settings-metadata-DwJk8uSt.mjs → settings-metadata-B684YiW4.mjs} +2 -2
  257. package/.output/server/chunks/build/settings-metadata-B684YiW4.mjs.map +1 -0
  258. package/.output/server/chunks/build/{setup-BlgFTixN.mjs → setup-Cf3Mzf-W.mjs} +8 -8
  259. package/.output/server/chunks/build/{setup-BlgFTixN.mjs.map → setup-Cf3Mzf-W.mjs.map} +1 -1
  260. package/.output/server/chunks/build/{storage-C1O-FC0U.mjs → storage-B4VySiv3.mjs} +7 -7
  261. package/.output/server/chunks/build/storage-B4VySiv3.mjs.map +1 -0
  262. package/.output/server/chunks/build/{tags-dsvYrnii.mjs → tags-BvWdsd1F.mjs} +25 -11
  263. package/.output/server/chunks/build/tags-BvWdsd1F.mjs.map +1 -0
  264. package/.output/server/chunks/build/{test-cases-CFiOuyK6.mjs → test-cases-LIIu7dMu.mjs} +11 -11
  265. package/.output/server/chunks/build/test-cases-LIIu7dMu.mjs.map +1 -0
  266. package/.output/server/chunks/build/{test-functions-CbmBi6az.mjs → test-functions-Dv8nezrM.mjs} +8 -8
  267. package/.output/server/chunks/build/test-functions-Dv8nezrM.mjs.map +1 -0
  268. package/.output/server/chunks/build/{useCopyRich-DPKZKHvZ.mjs → useCopyRich-DRRKIts2.mjs} +17 -14
  269. package/.output/server/chunks/build/{useCopyRich-DPKZKHvZ.mjs.map → useCopyRich-DRRKIts2.mjs.map} +1 -1
  270. package/.output/server/chunks/build/{useDesktopDownload-R_RWSgUV.mjs → useDesktopDownload-CK-5nATq.mjs} +2 -2
  271. package/.output/server/chunks/build/useDesktopDownload-CK-5nATq.mjs.map +1 -0
  272. package/.output/server/chunks/build/{useDesktopLocalRuns-BdELBy0Y.mjs → useDesktopLocalRuns-BHZic4MJ.mjs} +3 -3
  273. package/.output/server/chunks/build/useDesktopLocalRuns-BHZic4MJ.mjs.map +1 -0
  274. package/.output/server/chunks/build/{useDesktopProjectLink-IUN7SIP2.mjs → useDesktopProjectLink-CqBvnXwG.mjs} +2 -2
  275. package/.output/server/chunks/build/useDesktopProjectLink-CqBvnXwG.mjs.map +1 -0
  276. package/.output/server/chunks/build/useOpenInIde-DS4YXevu.mjs +1 -1
  277. package/.output/server/chunks/build/{useSettingsNav-Dg87E7kY.mjs → useSettingsNav-dyHz-2Bz.mjs} +2 -2
  278. package/.output/server/chunks/build/useSettingsNav-dyHz-2Bz.mjs.map +1 -0
  279. package/.output/server/chunks/build/{users-DgsoiXxQ.mjs → users-CluLB8DL.mjs} +31 -13
  280. package/.output/server/chunks/build/users-CluLB8DL.mjs.map +1 -0
  281. package/.output/server/chunks/nitro/nitro.mjs +839 -680
  282. package/.output/server/chunks/routes/__piwi/session.get.mjs +1 -1
  283. package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs +5 -2
  284. package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs.map +1 -1
  285. package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs +1 -1
  286. package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs +1 -1
  287. package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs +42 -26
  288. package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs.map +1 -1
  289. package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs +1 -1
  290. package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs +1 -1
  291. package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs +1 -1
  292. package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs +1 -1
  293. package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs +1 -1
  294. package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs +1 -1
  295. package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs +1 -1
  296. package/.output/server/chunks/routes/api/test-runs/recent.get.mjs +1 -1
  297. package/.output/server/chunks/routes/api/test-runs/submit.post.mjs +1 -1
  298. package/.output/server/chunks/routes/api/test-runs/upload.post.mjs +1 -1
  299. package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs +1 -0
  300. package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs.map +1 -1
  301. package/.output/server/chunks/routes/api/traces/check.post.mjs +1 -1
  302. package/.output/server/chunks/routes/api/users/_id/index.post.mjs +1 -1
  303. package/.output/server/chunks/routes/api/users/_id/invite.post.mjs +1 -1
  304. package/.output/server/chunks/routes/api/users/_id/projects.get.mjs +1 -1
  305. package/.output/server/chunks/routes/api/users/_id/projects.put.mjs +1 -1
  306. package/.output/server/chunks/routes/mcp.post.mjs +1 -1
  307. package/.output/server/chunks/routes/renderer.mjs +1 -1
  308. package/.output/server/chunks/routes/share/_token_.get.mjs +1 -1
  309. package/.output/server/index.mjs +1 -1
  310. package/.output/server/package.json +1 -1
  311. package/package.json +1 -1
  312. package/.output/public/_nuxt/3HmftUHT.js +0 -1
  313. package/.output/public/_nuxt/B7zo6PK8.js +0 -1
  314. package/.output/public/_nuxt/BO4sfkbw.js +0 -1
  315. package/.output/public/_nuxt/BdyXNI2_.js +0 -1
  316. package/.output/public/_nuxt/Bg63qh8W.js +0 -1
  317. package/.output/public/_nuxt/BnhWd06P.js +0 -1
  318. package/.output/public/_nuxt/CHWW6xiX.js +0 -1
  319. package/.output/public/_nuxt/CIPvUOic.js +0 -2
  320. package/.output/public/_nuxt/CVcFbORW.js +0 -9
  321. package/.output/public/_nuxt/CZlz5y13.js +0 -1
  322. package/.output/public/_nuxt/CkV_UG8j.js +0 -1
  323. package/.output/public/_nuxt/D0TpBpCc.js +0 -1
  324. package/.output/public/_nuxt/D3LyIeiJ.js +0 -1
  325. package/.output/public/_nuxt/DcccidY5.js +0 -4
  326. package/.output/public/_nuxt/DqkCbAzo.js +0 -1
  327. package/.output/public/_nuxt/DwH4SIZE.js +0 -1
  328. package/.output/public/_nuxt/DwZS0oRm.js +0 -2
  329. package/.output/public/_nuxt/DxPZIuWy.js +0 -1
  330. package/.output/public/_nuxt/Dyb1FouX.js +0 -1
  331. package/.output/public/_nuxt/builds/meta/a5fb24cc-65e3-4e55-aa12-038fe2de4754.json +0 -1
  332. package/.output/public/_nuxt/entry.BFe0Ua9k.css +0 -1
  333. package/.output/public/_nuxt/i7znB42v.js +0 -1
  334. package/.output/server/chunks/build/BreadcrumbNav-DBnGj5Jq.mjs.map +0 -1
  335. package/.output/server/chunks/build/BrowserBadge-vFb1ERG_.mjs.map +0 -1
  336. package/.output/server/chunks/build/ChartMarkerLines-BXqUpUcs.mjs.map +0 -1
  337. package/.output/server/chunks/build/ChartTooltip-DoF6Smyc.mjs.map +0 -1
  338. package/.output/server/chunks/build/CodeBlock-CmvKHaq8.mjs.map +0 -1
  339. package/.output/server/chunks/build/DataLocationCard-ChV02QJj.mjs.map +0 -1
  340. package/.output/server/chunks/build/DiagnosisPanel-C_ndadzP.mjs.map +0 -1
  341. package/.output/server/chunks/build/DiagnosisResult-GAjo6Lt3.mjs.map +0 -1
  342. package/.output/server/chunks/build/DurationValue-CObiBDnH.mjs.map +0 -1
  343. package/.output/server/chunks/build/FeatureUnavailable-Buoyoqx1.mjs.map +0 -1
  344. package/.output/server/chunks/build/GetStartedWizard-tL3U_qM1.mjs.map +0 -1
  345. package/.output/server/chunks/build/HelpHint-C96TlqxY.mjs.map +0 -1
  346. package/.output/server/chunks/build/MetaStripGroup-Cp2WCQf7.mjs.map +0 -1
  347. package/.output/server/chunks/build/NavbarActions-VCHW0u67.mjs.map +0 -1
  348. package/.output/server/chunks/build/ProjectTestCasesTable-saHYJoyQ.mjs.map +0 -1
  349. package/.output/server/chunks/build/RunReports-CKYYRC59.mjs.map +0 -1
  350. package/.output/server/chunks/build/RunStatusBadge-CWhmAmKb.mjs.map +0 -1
  351. package/.output/server/chunks/build/SectionCard-BB1O3uXd.mjs.map +0 -1
  352. package/.output/server/chunks/build/SettingsField-CEasBHu3.mjs.map +0 -1
  353. package/.output/server/chunks/build/TestCaseHistoryChart-BgI6P_zS.mjs.map +0 -1
  354. package/.output/server/chunks/build/TestStatusBar-DR8jM5th.mjs.map +0 -1
  355. package/.output/server/chunks/build/_id_-B7Dw490u.mjs.map +0 -1
  356. package/.output/server/chunks/build/_id_-DVPb1S93.mjs.map +0 -1
  357. package/.output/server/chunks/build/_id_-kkexEH_q.mjs.map +0 -1
  358. package/.output/server/chunks/build/about-C4AbyQ4q.mjs.map +0 -1
  359. package/.output/server/chunks/build/account-B45bYZd1.mjs.map +0 -1
  360. package/.output/server/chunks/build/auto-heal-BnTdKHQq.mjs.map +0 -1
  361. package/.output/server/chunks/build/help-content-BK3jcgLw.mjs.map +0 -1
  362. package/.output/server/chunks/build/import-ibAn_HB9.mjs.map +0 -1
  363. package/.output/server/chunks/build/index-2GmuPNF-.mjs.map +0 -1
  364. package/.output/server/chunks/build/index-D5A0DW7Y.mjs.map +0 -1
  365. package/.output/server/chunks/build/index-DreB_S-d.mjs.map +0 -1
  366. package/.output/server/chunks/build/index-KsRegEjT.mjs.map +0 -1
  367. package/.output/server/chunks/build/mcp-Dwj29-uG.mjs.map +0 -1
  368. package/.output/server/chunks/build/notifications-CjAn5FJj.mjs.map +0 -1
  369. package/.output/server/chunks/build/performance-DRzcu_c7.mjs.map +0 -1
  370. package/.output/server/chunks/build/pr-feedback-DR60oGBf.mjs.map +0 -1
  371. package/.output/server/chunks/build/selections-BjjolRZ9.mjs.map +0 -1
  372. package/.output/server/chunks/build/settings-B3NWV9tu.mjs.map +0 -1
  373. package/.output/server/chunks/build/settings-metadata-DwJk8uSt.mjs.map +0 -1
  374. package/.output/server/chunks/build/storage-C1O-FC0U.mjs.map +0 -1
  375. package/.output/server/chunks/build/tags-dsvYrnii.mjs.map +0 -1
  376. package/.output/server/chunks/build/test-cases-CFiOuyK6.mjs.map +0 -1
  377. package/.output/server/chunks/build/test-functions-CbmBi6az.mjs.map +0 -1
  378. package/.output/server/chunks/build/useDesktopDownload-R_RWSgUV.mjs.map +0 -1
  379. package/.output/server/chunks/build/useDesktopLocalRuns-BdELBy0Y.mjs.map +0 -1
  380. package/.output/server/chunks/build/useDesktopProjectLink-IUN7SIP2.mjs.map +0 -1
  381. package/.output/server/chunks/build/useSettingsNav-Dg87E7kY.mjs.map +0 -1
  382. package/.output/server/chunks/build/users-DgsoiXxQ.mjs.map +0 -1
@@ -1,39 +1,40 @@
1
- import { _ as _sfc_main$1$1, a as _sfc_main$g } from './DashboardNavbar-C3PsNVJt.mjs';
1
+ import { _ as _sfc_main$1$1, a as _sfc_main$h } from './DashboardNavbar-C3PsNVJt.mjs';
2
2
  import { _ as _sfc_main$1$2 } from './Breadcrumb-DtV_L8Gt.mjs';
3
- import { _ as __nuxt_component_3$2 } from './BreadcrumbNav-DBnGj5Jq.mjs';
4
- import { u as useRoute, n as useRouter, G as useAsyncData, o as useHead, r as useRuntimeConfig, l as _sfc_main$k, v as __nuxt_component_12$1, m as _sfc_main$7$1, k as _sfc_main$p, w as __nuxt_component_7, j as useToast } from './server.mjs';
5
- import { u as useCopyRich, o as __nuxt_component_26, a as __nuxt_component_21, b as __nuxt_component_22, c as __nuxt_component_23, _ as __nuxt_component_27, d as __nuxt_component_29, e as __nuxt_component_6, f as __nuxt_component_7$1, q as __nuxt_component_1$2, i as isImageFile, g as isVideoFile, r as __nuxt_component_3$2$1, t as __nuxt_component_4$2$1, m as __nuxt_component_3$4, n as __nuxt_component_4$4, h as __nuxt_component_1$1$1, j as __nuxt_component_2$2, k as __nuxt_component_3$1$1, l as __nuxt_component_4$1$1 } from './useCopyRich-DPKZKHvZ.mjs';
6
- import { _ as __nuxt_component_14$1 } from './DesktopRunLocallyButton-BfmbZpiL.mjs';
7
- import { _ as __nuxt_component_4$3 } from './NavbarActions-VCHW0u67.mjs';
8
- import { _ as __nuxt_component_8, a as __nuxt_component_1$4, b as __nuxt_component_16$1, c as __nuxt_component_17$1 } from './MetaStripGroup-Cp2WCQf7.mjs';
9
- import { c as clusterSectionLocatorKey, a as __nuxt_component_28, d as __nuxt_component_3$3, f as __nuxt_component_6$1, e as __nuxt_component_8$1, b as __nuxt_component_1$3, _ as __nuxt_component_0$1 } from './DiagnosisResult-GAjo6Lt3.mjs';
10
- import { _ as __nuxt_component_14 } from './DurationValue-CObiBDnH.mjs';
11
- import { _ as __nuxt_component_3$5 } from './BrowserBadge-vFb1ERG_.mjs';
12
- import { _ as _sfc_main$j } from './Card--Ike7sYc.mjs';
3
+ import { _ as __nuxt_component_3$2 } from './BreadcrumbNav-Bg4QGX0k.mjs';
4
+ import { u as useRoute, n as useRouter, G as useAsyncData, o as useHead, r as useRuntimeConfig, l as _sfc_main$k, v as __nuxt_component_12$1, m as _sfc_main$7$1, w as __nuxt_component_8, k as _sfc_main$p, j as useToast } from './server.mjs';
5
+ import { u as useCopyRich, o as __nuxt_component_26, a as __nuxt_component_21, b as __nuxt_component_22, c as __nuxt_component_23, _ as __nuxt_component_27, d as __nuxt_component_29, e as __nuxt_component_6, f as __nuxt_component_7$1, q as __nuxt_component_1$2, i as isImageFile, g as isVideoFile, r as __nuxt_component_3$2$1, t as __nuxt_component_4$2$1, m as __nuxt_component_3$4, n as __nuxt_component_4$4, h as __nuxt_component_1$1$1, j as __nuxt_component_2$2, k as __nuxt_component_3$1$1, l as __nuxt_component_4$1$1 } from './useCopyRich-DRRKIts2.mjs';
6
+ import { _ as __nuxt_component_14$1 } from './DesktopRunLocallyButton-ChHg3GqK.mjs';
7
+ import { _ as __nuxt_component_4$3 } from './NavbarActions-BTWxKCVI.mjs';
8
+ import { _ as __nuxt_component_7, a as __nuxt_component_1$4, b as __nuxt_component_16$1, c as __nuxt_component_17$1 } from './MetaStripGroup-CDyGlsNt.mjs';
9
+ import { c as clusterSectionLocatorKey, a as __nuxt_component_28, d as __nuxt_component_3$3, f as __nuxt_component_6$1, e as __nuxt_component_8$1, b as __nuxt_component_1$3, _ as __nuxt_component_0$1 } from './DiagnosisResult-CrGK--xh.mjs';
10
+ import { _ as __nuxt_component_14 } from './DurationValue-Dn06XQk3.mjs';
11
+ import { _ as __nuxt_component_3$5 } from './BrowserBadge-yMgLTBUu.mjs';
12
+ import { _ as _sfc_main$l } from './Card--Ike7sYc.mjs';
13
13
  import { _ as __nuxt_component_2$3 } from './TestMetaBadges-G2dAHnT-.mjs';
14
14
  import { _ as __nuxt_component_1$1 } from './OpenInIdeLink-Bnl-_som.mjs';
15
15
  import { _ as __nuxt_component_1 } from './StatTileGrid-7zOFUQ6j.mjs';
16
16
  import { _ as __nuxt_component_2 } from './StatTile-DpcVQFVI.mjs';
17
- import { a as __nuxt_component_9, _ as __nuxt_component_2$1 } from './HelpHint-C96TlqxY.mjs';
17
+ import { a as __nuxt_component_9, _ as __nuxt_component_2$1 } from './HelpHint-CdBz6deq.mjs';
18
18
  import { _ as __nuxt_component_19$1 } from './EntityLinks-BcpvMt_V.mjs';
19
- import { w as getStatusColor, g as renderAnsi, o as fileApiUrl, B as httpMethodColor, C as httpStatusColor, a as formatRelativeTime, i as clusterErrorTypeColor, D as isPiwiAnnotation, E as formatDidNotRunReason, e as errorMessage, f as formatDuration } from './index-2GmuPNF-.mjs';
19
+ import { B as isFailedStatus, c as copyPreview, w as getStatusColor, b as formatStatusLabel, p as prettyDateFormat, a as formatRelativeTime, g as renderAnsi, o as fileApiUrl, C as httpMethodColor, D as httpStatusColor, i as clusterErrorTypeColor, E as formatTriageStatus, F as isPiwiAnnotation, G as formatDidNotRunReason, e as errorMessage, f as formatDuration } from './index-CjnZ521K.mjs';
20
20
  import { defineComponent, withAsyncContext, computed, ref, watch, provide, mergeProps, withCtx, unref, isRef, createVNode, createTextVNode, openBlock, createBlock, createCommentVNode, toDisplayString, Fragment, renderList, createSlots, toValue, useSSRContext } from 'vue';
21
21
  import { ssrRenderComponent, ssrRenderAttr, ssrInterpolate, ssrRenderList, ssrRenderClass, ssrRenderStyle, ssrIncludeBooleanAttr, ssrRenderAttrs } from 'vue/server-renderer';
22
- import { _ as __nuxt_component_11$1 } from './SectionCard-BB1O3uXd.mjs';
23
- import { _ as _sfc_main$f } from './Tooltip-CK0ucuXC.mjs';
24
- import { _ as _sfc_main$i } from './Textarea-CmjqdiIA.mjs';
25
- import { eM as buildRetryCommand, e$ as condenseErrorText, f0 as hasSlowMark, eW as extractCitedSectionIds, am as formatBytes } from '../nitro/nitro.mjs';
22
+ import { _ as __nuxt_component_11$1 } from './SectionCard-CKD1s0eF.mjs';
23
+ import { _ as _sfc_main$g } from './Tooltip-CK0ucuXC.mjs';
24
+ import { _ as _sfc_main$j } from './Textarea-CmjqdiIA.mjs';
25
+ import { eN as buildRetryCommand, f0 as condenseErrorText, f1 as hasSlowMark, eX as extractCitedSectionIds, am as formatBytes } from '../nitro/nitro.mjs';
26
26
  import { u as useAiStatus } from './useAiStatus-CiK1MZbH.mjs';
27
- import { _ as _sfc_main$h } from './Tabs-CC34LIUz.mjs';
27
+ import { _ as _sfc_main$i } from './Tabs-CC34LIUz.mjs';
28
28
  import { _ as __nuxt_component_13 } from './LoadingState-CxfFwac9.mjs';
29
- import { _ as __nuxt_component_4$2 } from './FeatureUnavailable-Buoyoqx1.mjs';
30
- import { _ as _sfc_main$l } from './Slideover-DN5CvSnw.mjs';
31
- import { _ as __nuxt_component_5 } from './CodeBlock-CmvKHaq8.mjs';
29
+ import { _ as __nuxt_component_4$2 } from './FeatureUnavailable-IaBjVCqQ.mjs';
30
+ import { _ as _sfc_main$m } from './Slideover-DN5CvSnw.mjs';
31
+ import { _ as __nuxt_component_5 } from './CodeBlock-DuWhmcI2.mjs';
32
+ import { _ as _sfc_main$f } from './Alert-gs8RgKxH.mjs';
32
33
  import { _ as __nuxt_component_3$1 } from './TableScroller-DMcdCVrH.mjs';
33
34
  import { _ as _sfc_main$e } from './Table-BET-DOtX.mjs';
34
35
  import { _ as __nuxt_component_4$1 } from './EmptyState-C-mCzGhO.mjs';
35
- import { _ as __nuxt_component_0, l as legendOf, C as CASE_STATUS_SERIES } from './ChartTooltip-DoF6Smyc.mjs';
36
- import { _ as __nuxt_component_42 } from './TestCaseHistoryChart-BgI6P_zS.mjs';
36
+ import { _ as __nuxt_component_0, l as legendOf, C as CASE_STATUS_SERIES } from './ChartTooltip-B2t6VYYH.mjs';
37
+ import { _ as __nuxt_component_43 } from './TestCaseHistoryChart-Do7WK-ZY.mjs';
37
38
  import { u as useFetch, a as useCopy } from './fetch-DOcN2mHf.mjs';
38
39
  import './DashboardSidebarToggle-a5KYecZ0.mjs';
39
40
  import 'vue-router';
@@ -95,28 +96,30 @@ import 'consola';
95
96
  import 'node:url';
96
97
  import '@iconify/utils';
97
98
  import './Modal-BGBGJtVH.mjs';
98
- import './Alert-gs8RgKxH.mjs';
99
99
  import './FormField-GYHKiSI6.mjs';
100
100
  import './Label-DYDR1Oeh.mjs';
101
101
  import './Select-COU8NARj.mjs';
102
102
  import './useFormControl-8skMOTIf.mjs';
103
103
  import './handleAndDispatchCustomEvent-Bk_AVSSo.mjs';
104
104
  import './Separator-CQsq6WA9.mjs';
105
- import './useDesktopDownload-R_RWSgUV.mjs';
105
+ import './useDesktopDownload-CK-5nATq.mjs';
106
106
  import './useIsDesktop-BS13spVj.mjs';
107
107
  import './useTauri-Kf3HE_42.mjs';
108
- import './useDesktopLocalRuns-BdELBy0Y.mjs';
108
+ import './useDesktopLocalRuns-BHZic4MJ.mjs';
109
109
  import './Switch-_NJhWmI9.mjs';
110
110
  import './useForwardScopeId-D0ameaSU.mjs';
111
111
  import './VisuallyHiddenInput-D4E5aJCQ.mjs';
112
- import './useDesktopProjectLink-IUN7SIP2.mjs';
112
+ import './useDesktopProjectLink-CqBvnXwG.mjs';
113
+ import './DashboardToolbar-BZoGc0ri.mjs';
114
+ import './NavigationMenu-D4ZpdCm_.mjs';
115
+ import './isValueEqualOrExist-D4lZ8uRY.mjs';
113
116
  import './useOpenInIde-DS4YXevu.mjs';
114
- import './help-content-BK3jcgLw.mjs';
117
+ import './help-content-3QLSe6Vd.mjs';
115
118
  import 'date-fns';
116
119
  import './RovingFocusItem-CLjuqlIR.mjs';
117
120
  import '@tanstack/vue-table';
118
121
  import '@tanstack/vue-virtual';
119
- import './ChartMarkerLines-BXqUpUcs.mjs';
122
+ import './ChartMarkerLines-D0cTRlxF.mjs';
120
123
  import './MarkerBadge-DmubzeuF.mjs';
121
124
  import '../_/marker-categories.mjs';
122
125
  import '@vue/shared';
@@ -139,6 +142,12 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
139
142
  emits: ["refresh"],
140
143
  setup(__props) {
141
144
  const props = __props;
145
+ const ideTarget = computed(() => {
146
+ const frames = props.testCase?.testSourceFrames;
147
+ const frame = frames?.[0];
148
+ if (!frame?.filePath) return null;
149
+ return { filePath: frame.filePath, line: frame.line };
150
+ });
142
151
  const signalBadges = computed(() => {
143
152
  const tc = props.testCase;
144
153
  if (!tc) return [];
@@ -174,11 +183,11 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
174
183
  const _component_StatusChip = __nuxt_component_1$4;
175
184
  const _component_DurationValue = __nuxt_component_14;
176
185
  const _component_BrowserBadge = __nuxt_component_3$5;
177
- const _component_UCard = _sfc_main$j;
186
+ const _component_UCard = _sfc_main$l;
178
187
  const _component_UBadge = _sfc_main$7$1;
179
188
  const _component_TestMetaBadges = __nuxt_component_2$3;
180
189
  const _component_OpenInIdeLink = __nuxt_component_1$1;
181
- const _component_ClientOnly = __nuxt_component_7;
190
+ const _component_ClientOnly = __nuxt_component_8;
182
191
  const _component_StatTileGrid = __nuxt_component_1;
183
192
  const _component_StatTile = __nuxt_component_2;
184
193
  const _component_UIcon = _sfc_main$p;
@@ -763,9 +772,11 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
763
772
  meta: __props.testCase?.testMeta
764
773
  }, null, _parent3, _scopeId2));
765
774
  _push3(`</div><p class="text-xs text-gray-500 mt-0.5 flex items-center gap-x-2 gap-y-0.5 flex-wrap"${_scopeId2}>`);
766
- if (__props.testCase?.location) {
775
+ if (unref(ideTarget)?.filePath || __props.testCase?.location) {
767
776
  _push3(ssrRenderComponent(_component_OpenInIdeLink, {
768
- location: __props.testCase.location,
777
+ "file-path": unref(ideTarget)?.filePath,
778
+ line: unref(ideTarget)?.line,
779
+ location: unref(ideTarget) ? void 0 : __props.testCase?.location ?? void 0,
769
780
  "project-key": __props.projectKey,
770
781
  "project-name": __props.projectName
771
782
  }, null, _parent3, _scopeId2));
@@ -789,14 +800,22 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
789
800
  _push4(ssrRenderComponent(_component_StatTile, { label: "Duration" }, {
790
801
  default: withCtx((_4, _push5, _parent5, _scopeId4) => {
791
802
  if (_push5) {
792
- _push5(ssrRenderComponent(_component_DurationValue, {
793
- ms: __props.testCase?.duration
794
- }, null, _parent5, _scopeId4));
803
+ if (__props.testCase?.status !== "didnotrun") {
804
+ _push5(ssrRenderComponent(_component_DurationValue, {
805
+ ms: __props.testCase?.duration
806
+ }, null, _parent5, _scopeId4));
807
+ } else {
808
+ _push5(`<span class="text-gray-400"${_scopeId4}>—</span>`);
809
+ }
795
810
  } else {
796
811
  return [
797
- createVNode(_component_DurationValue, {
812
+ __props.testCase?.status !== "didnotrun" ? (openBlock(), createBlock(_component_DurationValue, {
813
+ key: 0,
798
814
  ms: __props.testCase?.duration
799
- }, null, 8, ["ms"])
815
+ }, null, 8, ["ms"])) : (openBlock(), createBlock("span", {
816
+ key: 1,
817
+ class: "text-gray-400"
818
+ }, "—"))
800
819
  ];
801
820
  }
802
821
  }),
@@ -808,7 +827,9 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
808
827
  }, {
809
828
  default: withCtx((_4, _push5, _parent5, _scopeId4) => {
810
829
  if (_push5) {
811
- if (unref(attempts) && unref(attempts).length > 1) {
830
+ if (__props.testCase?.status === "didnotrun") {
831
+ _push5(`<span class="text-gray-400"${_scopeId4}>—</span>`);
832
+ } else if (unref(attempts) && unref(attempts).length > 1) {
812
833
  _push5(`<div class="flex items-center gap-1 flex-wrap"${_scopeId4}><!--[-->`);
813
834
  ssrRenderList(unref(attempts), (a) => {
814
835
  _push5(ssrRenderComponent(_component_UBadge, {
@@ -845,8 +866,11 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
845
866
  }
846
867
  } else {
847
868
  return [
848
- unref(attempts) && unref(attempts).length > 1 ? (openBlock(), createBlock("div", {
869
+ __props.testCase?.status === "didnotrun" ? (openBlock(), createBlock("span", {
849
870
  key: 0,
871
+ class: "text-gray-400"
872
+ }, "—")) : unref(attempts) && unref(attempts).length > 1 ? (openBlock(), createBlock("div", {
873
+ key: 1,
850
874
  class: "flex items-center gap-1 flex-wrap"
851
875
  }, [
852
876
  (openBlock(true), createBlock(Fragment, null, renderList(unref(attempts), (a) => {
@@ -868,7 +892,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
868
892
  _: 2
869
893
  }, 1032, ["color", "title"]);
870
894
  }), 128))
871
- ])) : (openBlock(), createBlock(Fragment, { key: 1 }, [
895
+ ])) : (openBlock(), createBlock(Fragment, { key: 2 }, [
872
896
  createTextVNode(toDisplayString(unref(attempts)?.length ?? (__props.testCase?.retries ?? 0) + 1), 1)
873
897
  ], 64))
874
898
  ];
@@ -888,9 +912,13 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
888
912
  return [
889
913
  createVNode(_component_StatTile, { label: "Duration" }, {
890
914
  default: withCtx(() => [
891
- createVNode(_component_DurationValue, {
915
+ __props.testCase?.status !== "didnotrun" ? (openBlock(), createBlock(_component_DurationValue, {
916
+ key: 0,
892
917
  ms: __props.testCase?.duration
893
- }, null, 8, ["ms"])
918
+ }, null, 8, ["ms"])) : (openBlock(), createBlock("span", {
919
+ key: 1,
920
+ class: "text-gray-400"
921
+ }, "—"))
894
922
  ]),
895
923
  _: 1
896
924
  }),
@@ -899,8 +927,11 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
899
927
  size: "sm"
900
928
  }, {
901
929
  default: withCtx(() => [
902
- unref(attempts) && unref(attempts).length > 1 ? (openBlock(), createBlock("div", {
930
+ __props.testCase?.status === "didnotrun" ? (openBlock(), createBlock("span", {
903
931
  key: 0,
932
+ class: "text-gray-400"
933
+ }, "—")) : unref(attempts) && unref(attempts).length > 1 ? (openBlock(), createBlock("div", {
934
+ key: 1,
904
935
  class: "flex items-center gap-1 flex-wrap"
905
936
  }, [
906
937
  (openBlock(true), createBlock(Fragment, null, renderList(unref(attempts), (a) => {
@@ -922,7 +953,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
922
953
  _: 2
923
954
  }, 1032, ["color", "title"]);
924
955
  }), 128))
925
- ])) : (openBlock(), createBlock(Fragment, { key: 1 }, [
956
+ ])) : (openBlock(), createBlock(Fragment, { key: 2 }, [
926
957
  createTextVNode(toDisplayString(unref(attempts)?.length ?? (__props.testCase?.retries ?? 0) + 1), 1)
927
958
  ], 64))
928
959
  ]),
@@ -941,7 +972,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
941
972
  }),
942
973
  _: 1
943
974
  }, _parent3, _scopeId2));
944
- if (__props.testCase?.slowestStep) {
975
+ if (__props.testCase?.slowestStep && __props.testCase?.status !== "didnotrun") {
945
976
  _push3(`<div class="flex items-center gap-2 text-sm"${_scopeId2}>`);
946
977
  _push3(ssrRenderComponent(_component_UIcon, {
947
978
  name: "i-lucide-zap",
@@ -1024,12 +1055,14 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1024
1055
  }, null, 8, ["tags", "meta"])
1025
1056
  ]),
1026
1057
  createVNode("p", { class: "text-xs text-gray-500 mt-0.5 flex items-center gap-x-2 gap-y-0.5 flex-wrap" }, [
1027
- __props.testCase?.location ? (openBlock(), createBlock(_component_OpenInIdeLink, {
1058
+ unref(ideTarget)?.filePath || __props.testCase?.location ? (openBlock(), createBlock(_component_OpenInIdeLink, {
1028
1059
  key: 0,
1029
- location: __props.testCase.location,
1060
+ "file-path": unref(ideTarget)?.filePath,
1061
+ line: unref(ideTarget)?.line,
1062
+ location: unref(ideTarget) ? void 0 : __props.testCase?.location ?? void 0,
1030
1063
  "project-key": __props.projectKey,
1031
1064
  "project-name": __props.projectName
1032
- }, null, 8, ["location", "project-key", "project-name"])) : createCommentVNode("", true),
1065
+ }, null, 8, ["file-path", "line", "location", "project-key", "project-name"])) : createCommentVNode("", true),
1033
1066
  createVNode(_component_ClientOnly, null, {
1034
1067
  default: withCtx(() => [
1035
1068
  unref(startedAtMs) ? (openBlock(), createBlock("span", {
@@ -1057,9 +1090,13 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1057
1090
  default: withCtx(() => [
1058
1091
  createVNode(_component_StatTile, { label: "Duration" }, {
1059
1092
  default: withCtx(() => [
1060
- createVNode(_component_DurationValue, {
1093
+ __props.testCase?.status !== "didnotrun" ? (openBlock(), createBlock(_component_DurationValue, {
1094
+ key: 0,
1061
1095
  ms: __props.testCase?.duration
1062
- }, null, 8, ["ms"])
1096
+ }, null, 8, ["ms"])) : (openBlock(), createBlock("span", {
1097
+ key: 1,
1098
+ class: "text-gray-400"
1099
+ }, "—"))
1063
1100
  ]),
1064
1101
  _: 1
1065
1102
  }),
@@ -1068,8 +1105,11 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1068
1105
  size: "sm"
1069
1106
  }, {
1070
1107
  default: withCtx(() => [
1071
- unref(attempts) && unref(attempts).length > 1 ? (openBlock(), createBlock("div", {
1108
+ __props.testCase?.status === "didnotrun" ? (openBlock(), createBlock("span", {
1072
1109
  key: 0,
1110
+ class: "text-gray-400"
1111
+ }, "—")) : unref(attempts) && unref(attempts).length > 1 ? (openBlock(), createBlock("div", {
1112
+ key: 1,
1073
1113
  class: "flex items-center gap-1 flex-wrap"
1074
1114
  }, [
1075
1115
  (openBlock(true), createBlock(Fragment, null, renderList(unref(attempts), (a) => {
@@ -1091,7 +1131,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1091
1131
  _: 2
1092
1132
  }, 1032, ["color", "title"]);
1093
1133
  }), 128))
1094
- ])) : (openBlock(), createBlock(Fragment, { key: 1 }, [
1134
+ ])) : (openBlock(), createBlock(Fragment, { key: 2 }, [
1095
1135
  createTextVNode(toDisplayString(unref(attempts)?.length ?? (__props.testCase?.retries ?? 0) + 1), 1)
1096
1136
  ], 64))
1097
1137
  ]),
@@ -1108,7 +1148,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1108
1148
  ]),
1109
1149
  _: 1
1110
1150
  }),
1111
- __props.testCase?.slowestStep ? (openBlock(), createBlock("div", {
1151
+ __props.testCase?.slowestStep && __props.testCase?.status !== "didnotrun" ? (openBlock(), createBlock("div", {
1112
1152
  key: 0,
1113
1153
  class: "flex items-center gap-2 text-sm"
1114
1154
  }, [
@@ -1312,12 +1352,14 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1312
1352
  }, null, 8, ["tags", "meta"])
1313
1353
  ]),
1314
1354
  createVNode("p", { class: "text-xs text-gray-500 mt-0.5 flex items-center gap-x-2 gap-y-0.5 flex-wrap" }, [
1315
- __props.testCase?.location ? (openBlock(), createBlock(_component_OpenInIdeLink, {
1355
+ unref(ideTarget)?.filePath || __props.testCase?.location ? (openBlock(), createBlock(_component_OpenInIdeLink, {
1316
1356
  key: 0,
1317
- location: __props.testCase.location,
1357
+ "file-path": unref(ideTarget)?.filePath,
1358
+ line: unref(ideTarget)?.line,
1359
+ location: unref(ideTarget) ? void 0 : __props.testCase?.location ?? void 0,
1318
1360
  "project-key": __props.projectKey,
1319
1361
  "project-name": __props.projectName
1320
- }, null, 8, ["location", "project-key", "project-name"])) : createCommentVNode("", true),
1362
+ }, null, 8, ["file-path", "line", "location", "project-key", "project-name"])) : createCommentVNode("", true),
1321
1363
  createVNode(_component_ClientOnly, null, {
1322
1364
  default: withCtx(() => [
1323
1365
  unref(startedAtMs) ? (openBlock(), createBlock("span", {
@@ -1345,9 +1387,13 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1345
1387
  default: withCtx(() => [
1346
1388
  createVNode(_component_StatTile, { label: "Duration" }, {
1347
1389
  default: withCtx(() => [
1348
- createVNode(_component_DurationValue, {
1390
+ __props.testCase?.status !== "didnotrun" ? (openBlock(), createBlock(_component_DurationValue, {
1391
+ key: 0,
1349
1392
  ms: __props.testCase?.duration
1350
- }, null, 8, ["ms"])
1393
+ }, null, 8, ["ms"])) : (openBlock(), createBlock("span", {
1394
+ key: 1,
1395
+ class: "text-gray-400"
1396
+ }, "—"))
1351
1397
  ]),
1352
1398
  _: 1
1353
1399
  }),
@@ -1356,8 +1402,11 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1356
1402
  size: "sm"
1357
1403
  }, {
1358
1404
  default: withCtx(() => [
1359
- unref(attempts) && unref(attempts).length > 1 ? (openBlock(), createBlock("div", {
1405
+ __props.testCase?.status === "didnotrun" ? (openBlock(), createBlock("span", {
1360
1406
  key: 0,
1407
+ class: "text-gray-400"
1408
+ }, "—")) : unref(attempts) && unref(attempts).length > 1 ? (openBlock(), createBlock("div", {
1409
+ key: 1,
1361
1410
  class: "flex items-center gap-1 flex-wrap"
1362
1411
  }, [
1363
1412
  (openBlock(true), createBlock(Fragment, null, renderList(unref(attempts), (a) => {
@@ -1379,7 +1428,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1379
1428
  _: 2
1380
1429
  }, 1032, ["color", "title"]);
1381
1430
  }), 128))
1382
- ])) : (openBlock(), createBlock(Fragment, { key: 1 }, [
1431
+ ])) : (openBlock(), createBlock(Fragment, { key: 2 }, [
1383
1432
  createTextVNode(toDisplayString(unref(attempts)?.length ?? (__props.testCase?.retries ?? 0) + 1), 1)
1384
1433
  ], 64))
1385
1434
  ]),
@@ -1396,7 +1445,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1396
1445
  ]),
1397
1446
  _: 1
1398
1447
  }),
1399
- __props.testCase?.slowestStep ? (openBlock(), createBlock("div", {
1448
+ __props.testCase?.slowestStep && __props.testCase?.status !== "didnotrun" ? (openBlock(), createBlock("div", {
1400
1449
  key: 0,
1401
1450
  class: "flex items-center gap-2 text-sm"
1402
1451
  }, [
@@ -1750,13 +1799,13 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
1750
1799
  const _component_SectionCard = __nuxt_component_11$1;
1751
1800
  const _component_UBadge = _sfc_main$7$1;
1752
1801
  const _component_UIcon = _sfc_main$p;
1753
- const _component_ClientOnly = __nuxt_component_7;
1802
+ const _component_ClientOnly = __nuxt_component_8;
1754
1803
  const _component_NuxtLink = __nuxt_component_12$1;
1755
- const _component_UTooltip = _sfc_main$f;
1804
+ const _component_UTooltip = _sfc_main$g;
1756
1805
  _push(ssrRenderComponent(_component_SectionCard, mergeProps({
1757
1806
  icon: "i-lucide-clipboard-check",
1758
1807
  "icon-class": "text-amber-500",
1759
- title: "Verdict",
1808
+ title: "Regression status",
1760
1809
  help: "case.verdict"
1761
1810
  }, _attrs), {
1762
1811
  default: withCtx((_, _push2, _parent2, _scopeId) => {
@@ -1843,7 +1892,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
1843
1892
  class: "text-primary hover:underline"
1844
1893
  }, {
1845
1894
  default: withCtx(() => [
1846
- createTextVNode(" run #" + toDisplayString(unref(verdict).lastPass.runId), 1)
1895
+ createTextVNode(" execution in run #" + toDisplayString(unref(verdict).lastPass.runId), 1)
1847
1896
  ]),
1848
1897
  _: 1
1849
1898
  }, 8, ["to"]),
@@ -1858,18 +1907,20 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
1858
1907
  ], 64)) : createCommentVNode("", true)
1859
1908
  ])) : createCommentVNode("", true),
1860
1909
  unref(strip).length > 1 ? (openBlock(), createBlock("div", { key: 1 }, [
1861
- createVNode("p", { class: "text-xs text-gray-400 mb-1" }, "Recent runs (oldest → newest)"),
1910
+ createVNode("p", { class: "text-xs text-gray-400 mb-1" }, "Recent executions of this test (oldest → newest)"),
1862
1911
  createVNode("div", { class: "flex items-center gap-1 flex-wrap" }, [
1863
1912
  (openBlock(true), createBlock(Fragment, null, renderList(unref(strip), (point) => {
1864
1913
  return openBlock(), createBlock(_component_UTooltip, {
1865
1914
  key: point.id,
1866
- text: `Run #${point.runId}: ${point.status}`
1915
+ text: `Execution in run #${point.runId}: ${point.status}`
1867
1916
  }, {
1868
1917
  default: withCtx(() => [
1869
1918
  createVNode(_component_NuxtLink, {
1870
1919
  to: `/test-run-cases/${point.id}`,
1920
+ "aria-label": `Execution in run #${point.runId}: ${("formatStatusLabel" in _ctx ? _ctx.formatStatusLabel : unref(formatStatusLabel))(point.status)}`,
1921
+ "aria-current": point.id === __props.currentId ? "true" : void 0,
1871
1922
  class: ["size-3.5 rounded-sm inline-block transition-colors", [squareClass(point.status), point.id === __props.currentId ? "ring-2 ring-offset-1 ring-primary" : ""]]
1872
- }, null, 8, ["to", "class"])
1923
+ }, null, 8, ["to", "aria-label", "aria-current", "class"])
1873
1924
  ]),
1874
1925
  _: 2
1875
1926
  }, 1032, ["text"]);
@@ -1945,17 +1996,17 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
1945
1996
  }
1946
1997
  if (__props.cluster.status && __props.cluster.status !== "open") {
1947
1998
  _push2(ssrRenderComponent(_component_UBadge, {
1948
- color: __props.cluster.status === "resolved" ? "success" : "neutral",
1999
+ color: "neutral",
1949
2000
  variant: "subtle",
1950
2001
  size: "sm",
1951
2002
  class: "capitalize"
1952
2003
  }, {
1953
2004
  default: withCtx((_2, _push3, _parent3, _scopeId2) => {
1954
2005
  if (_push3) {
1955
- _push3(`${ssrInterpolate(__props.cluster.status)}`);
2006
+ _push3(` Triage: ${ssrInterpolate(("formatTriageStatus" in _ctx ? _ctx.formatTriageStatus : unref(formatTriageStatus))(__props.cluster.status))}`);
1956
2007
  } else {
1957
2008
  return [
1958
- createTextVNode(toDisplayString(__props.cluster.status), 1)
2009
+ createTextVNode(" Triage: " + toDisplayString(("formatTriageStatus" in _ctx ? _ctx.formatTriageStatus : unref(formatTriageStatus))(__props.cluster.status)), 1)
1959
2010
  ];
1960
2011
  }
1961
2012
  }),
@@ -1979,16 +2030,16 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
1979
2030
  })) : createCommentVNode("", true),
1980
2031
  __props.cluster.status && __props.cluster.status !== "open" ? (openBlock(), createBlock(_component_UBadge, {
1981
2032
  key: 1,
1982
- color: __props.cluster.status === "resolved" ? "success" : "neutral",
2033
+ color: "neutral",
1983
2034
  variant: "subtle",
1984
2035
  size: "sm",
1985
2036
  class: "capitalize"
1986
2037
  }, {
1987
2038
  default: withCtx(() => [
1988
- createTextVNode(toDisplayString(__props.cluster.status), 1)
2039
+ createTextVNode(" Triage: " + toDisplayString(("formatTriageStatus" in _ctx ? _ctx.formatTriageStatus : unref(formatTriageStatus))(__props.cluster.status)), 1)
1989
2040
  ]),
1990
2041
  _: 1
1991
- }, 8, ["color"])) : createCommentVNode("", true)
2042
+ })) : createCommentVNode("", true)
1992
2043
  ];
1993
2044
  }
1994
2045
  }),
@@ -2347,7 +2398,7 @@ ${text}` : text;
2347
2398
  const _component_CopyAiPromptButton = __nuxt_component_1$3;
2348
2399
  const _component_UIcon = _sfc_main$p;
2349
2400
  const _component_DiagnosisCoverageStrip = __nuxt_component_3$3;
2350
- const _component_UTextarea = _sfc_main$i;
2401
+ const _component_UTextarea = _sfc_main$j;
2351
2402
  const _component_UButton = _sfc_main$k;
2352
2403
  const _component_DiagnosisResult = __nuxt_component_6$1;
2353
2404
  const _component_HelpHint = __nuxt_component_2$1;
@@ -2374,12 +2425,17 @@ ${text}` : text;
2374
2425
  }),
2375
2426
  default: withCtx((_, _push2, _parent2, _scopeId) => {
2376
2427
  if (_push2) {
2377
- _push2(`<div class="space-y-3"${_scopeId}><p class="text-xs text-gray-400 inline-flex items-center gap-1"${_scopeId}>`);
2378
- _push2(ssrRenderComponent(_component_UIcon, {
2379
- name: "i-lucide-triangle-alert",
2380
- class: "size-3 shrink-0"
2381
- }, null, _parent2, _scopeId));
2382
- _push2(` AI-generated — verify before applying. </p>`);
2428
+ _push2(`<div class="space-y-3"${_scopeId}>`);
2429
+ if (unref(aiStatus)?.configured) {
2430
+ _push2(`<p class="text-xs text-gray-400 inline-flex items-center gap-1"${_scopeId}>`);
2431
+ _push2(ssrRenderComponent(_component_UIcon, {
2432
+ name: "i-lucide-triangle-alert",
2433
+ class: "size-3 shrink-0"
2434
+ }, null, _parent2, _scopeId));
2435
+ _push2(` AI-generated — verify before applying. </p>`);
2436
+ } else {
2437
+ _push2(`<!---->`);
2438
+ }
2383
2439
  if (unref(aiStatus)?.configured) {
2384
2440
  _push2(ssrRenderComponent(_component_DiagnosisCoverageStrip, {
2385
2441
  sections: unref(contextSections),
@@ -2568,15 +2624,18 @@ ${text}` : text;
2568
2624
  } else {
2569
2625
  return [
2570
2626
  createVNode("div", { class: "space-y-3" }, [
2571
- createVNode("p", { class: "text-xs text-gray-400 inline-flex items-center gap-1" }, [
2627
+ unref(aiStatus)?.configured ? (openBlock(), createBlock("p", {
2628
+ key: 0,
2629
+ class: "text-xs text-gray-400 inline-flex items-center gap-1"
2630
+ }, [
2572
2631
  createVNode(_component_UIcon, {
2573
2632
  name: "i-lucide-triangle-alert",
2574
2633
  class: "size-3 shrink-0"
2575
2634
  }),
2576
2635
  createTextVNode(" AI-generated — verify before applying. ")
2577
- ]),
2636
+ ])) : createCommentVNode("", true),
2578
2637
  unref(aiStatus)?.configured ? (openBlock(), createBlock(_component_DiagnosisCoverageStrip, {
2579
- key: 0,
2638
+ key: 1,
2580
2639
  sections: unref(contextSections),
2581
2640
  "not-applicable": unref(coverage)?.notApplicable,
2582
2641
  "token-estimate": unref(tokenEstimate),
@@ -2584,7 +2643,7 @@ ${text}` : text;
2584
2643
  onViewSection,
2585
2644
  onOpen: ($event) => showAiContext.value = true
2586
2645
  }, null, 8, ["sections", "not-applicable", "token-estimate", "loading", "onOpen"])) : createCommentVNode("", true),
2587
- unref(aiStatus)?.configured ? (openBlock(), createBlock(Fragment, { key: 1 }, [
2646
+ unref(aiStatus)?.configured ? (openBlock(), createBlock(Fragment, { key: 2 }, [
2588
2647
  createVNode("div", null, [
2589
2648
  createVNode("button", {
2590
2649
  class: "flex items-center gap-1.5 text-xs font-medium text-gray-500 hover:text-gray-700 dark:hover:text-gray-300",
@@ -2672,7 +2731,7 @@ ${text}` : text;
2672
2731
  onPrefillContext
2673
2732
  }, null, 8, ["diagnosis"])) : createCommentVNode("", true)
2674
2733
  ], 64)) : (openBlock(), createBlock("div", {
2675
- key: 2,
2734
+ key: 3,
2676
2735
  class: "rounded-lg border border-dashed border-default p-4 text-center text-gray-400"
2677
2736
  }, [
2678
2737
  createVNode("p", { class: "text-sm inline-flex items-center gap-1 justify-center" }, [
@@ -2817,7 +2876,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
2817
2876
  __expose({ reveal: () => card.value?.reveal() });
2818
2877
  return (_ctx, _push, _parent, _attrs) => {
2819
2878
  const _component_CollapsibleSectionCard = __nuxt_component_27;
2820
- const _component_UTabs = _sfc_main$h;
2879
+ const _component_UTabs = _sfc_main$i;
2821
2880
  const _component_UIcon = _sfc_main$p;
2822
2881
  const _component_TraceCallStack = __nuxt_component_3$4;
2823
2882
  const _component_TestSourceStack = __nuxt_component_4$4;
@@ -3449,7 +3508,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
3449
3508
  { immediate: true }
3450
3509
  );
3451
3510
  return (_ctx, _push, _parent, _attrs) => {
3452
- const _component_USlideover = _sfc_main$l;
3511
+ const _component_USlideover = _sfc_main$m;
3453
3512
  const _component_UBadge = _sfc_main$7$1;
3454
3513
  const _component_DurationValue = __nuxt_component_14;
3455
3514
  const _component_CodeBlock = __nuxt_component_5;
@@ -3878,7 +3937,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
3878
3937
  const selected = ref(null);
3879
3938
  const drawerOpen = ref(false);
3880
3939
  return (_ctx, _push, _parent, _attrs) => {
3881
- const _component_UTabs = _sfc_main$h;
3940
+ const _component_UTabs = _sfc_main$i;
3882
3941
  const _component_UBadge = _sfc_main$7$1;
3883
3942
  const _component_DurationValue = __nuxt_component_14;
3884
3943
  const _component_TraceNetworkDrawer = __nuxt_component_3;
@@ -4171,7 +4230,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
4171
4230
  return (_ctx, _push, _parent, _attrs) => {
4172
4231
  const _component_SectionCard = __nuxt_component_11$1;
4173
4232
  const _component_UIcon = _sfc_main$p;
4174
- const _component_UTabs = _sfc_main$h;
4233
+ const _component_UTabs = _sfc_main$i;
4175
4234
  const _component_LoadingState = __nuxt_component_13;
4176
4235
  const _component_TraceNetworkList = __nuxt_component_4;
4177
4236
  const _component_UBadge = _sfc_main$7$1;
@@ -4179,7 +4238,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
4179
4238
  const _component_DocLink = __nuxt_component_9;
4180
4239
  _push(ssrRenderComponent(_component_SectionCard, mergeProps({
4181
4240
  icon: "i-lucide-network",
4182
- title: "Network & backend logs",
4241
+ title: "Network requests",
4183
4242
  count: unref(view) === "trace" ? unref(traceCount) : unref(totals).total,
4184
4243
  help: "case.network"
4185
4244
  }, _attrs), {
@@ -4882,7 +4941,7 @@ _sfc_main$2.setup = (props, ctx) => {
4882
4941
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/test-case/TestCaseTracesCard.vue");
4883
4942
  return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
4884
4943
  };
4885
- const __nuxt_component_36 = Object.assign(_sfc_main$2, { __name: "TestCaseTracesCard" });
4944
+ const __nuxt_component_37 = Object.assign(_sfc_main$2, { __name: "TestCaseTracesCard" });
4886
4945
  const _sfc_main$1 = /* @__PURE__ */ defineComponent({
4887
4946
  __name: "TestCaseAttachmentsCard",
4888
4947
  __ssrInlineRender: true,
@@ -5144,7 +5203,7 @@ _sfc_main$1.setup = (props, ctx) => {
5144
5203
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/test-case/TestCaseAttachmentsCard.vue");
5145
5204
  return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
5146
5205
  };
5147
- const __nuxt_component_37 = Object.assign(_sfc_main$1, { __name: "TestCaseAttachmentsCard" });
5206
+ const __nuxt_component_38 = Object.assign(_sfc_main$1, { __name: "TestCaseAttachmentsCard" });
5148
5207
  function getPerformanceHints(testCase) {
5149
5208
  const hints = [];
5150
5209
  if (!testCase) return hints;
@@ -5221,6 +5280,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5221
5280
  )), __temp = await __temp, __restore(), __temp);
5222
5281
  const { data: traceData, refresh: refreshTraces } = ([__temp, __restore] = withAsyncContext(() => useFetch(
5223
5282
  `/api/test-run-cases/${testCaseId}/traces`,
5283
+ {
5284
+ // The endpoint returns `{ items: [...] }` — without the unwrap, `hasTrace`
5285
+ // and every trace-gated view stay false and the Artifacts tab never shows
5286
+ // the Traces card.
5287
+ transform: (r) => r.items
5288
+ },
5224
5289
  "$bq3dlhiM5e"
5225
5290
  /* nuxt-injected */
5226
5291
  )), __temp = await __temp, __restore(), __temp);
@@ -5230,7 +5295,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5230
5295
  title: testCase.value?.title ? `${testCase.value.title} — execution — Piwi Dashboard` : `Execution #${testCaseId} — Piwi Dashboard`
5231
5296
  }))
5232
5297
  );
5233
- const hasError = computed(() => Boolean(testCase.value?.error));
5298
+ const hasFailedAttempt = computed(() => {
5299
+ const tc = testCase.value;
5300
+ if (!tc) return false;
5301
+ const statuses = [tc.status, ...(tc.attempts ?? []).map((a) => a.status)];
5302
+ return statuses.some((s) => isFailedStatus(s));
5303
+ });
5304
+ const runIsActive = computed(() => {
5305
+ const status = testCase.value?.testRun?.status;
5306
+ return status === "running" || status === "finalizing";
5307
+ });
5234
5308
  const performanceHints = computed(() => {
5235
5309
  if (!testCase.value) return [];
5236
5310
  return getPerformanceHints(testCase.value);
@@ -5277,13 +5351,38 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5277
5351
  });
5278
5352
  const tabItems = computed(() => {
5279
5353
  const items = [];
5280
- if (hasError.value) {
5281
- items.push({ label: "Diagnosis", icon: "i-lucide-stethoscope", value: "diagnosis", slot: "diagnosis" });
5282
- }
5283
- items.push({ label: `Steps (${steps.value.length})`, icon: "i-lucide-list-checks", value: "steps", slot: "steps" });
5284
- if (!hasError.value) {
5285
- items.push({ label: "Artifacts", icon: "i-lucide-paperclip", value: "artifacts", slot: "artifacts" });
5354
+ if (hasFailedAttempt.value) {
5355
+ items.push({
5356
+ label: "Diagnosis",
5357
+ icon: "i-lucide-stethoscope",
5358
+ value: "diagnosis",
5359
+ slot: "diagnosis",
5360
+ help: "case.diagnosis-tab"
5361
+ });
5362
+ } else if (runIsActive.value) {
5363
+ items.push({
5364
+ label: "Diagnosis",
5365
+ icon: "i-lucide-stethoscope",
5366
+ value: "diagnosis",
5367
+ slot: "diagnosis",
5368
+ disabled: true,
5369
+ disabledReason: "unavailable until a test fails"
5370
+ });
5286
5371
  }
5372
+ items.push({
5373
+ label: `Steps (${steps.value.length})`,
5374
+ icon: "i-lucide-list-checks",
5375
+ value: "steps",
5376
+ slot: "steps",
5377
+ help: "case.steps"
5378
+ });
5379
+ items.push({
5380
+ label: "Artifacts",
5381
+ icon: "i-lucide-paperclip",
5382
+ value: "artifacts",
5383
+ slot: "artifacts",
5384
+ help: "case.artifacts"
5385
+ });
5287
5386
  items.push({ label: "Performance", icon: "i-lucide-gauge", value: "performance", slot: "performance" });
5288
5387
  items.push({
5289
5388
  label: `History${historyData.value?.length ? ` (${historyData.value.length})` : ""}`,
@@ -5293,14 +5392,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5293
5392
  });
5294
5393
  return items;
5295
5394
  });
5296
- const tabValues = computed(() => tabItems.value.map((t) => t.value));
5395
+ const tabValues = computed(() => tabItems.value.filter((t) => !t.disabled).map((t) => t.value));
5297
5396
  function defaultTab() {
5298
- return hasError.value ? "diagnosis" : "steps";
5397
+ return hasFailedAttempt.value ? "diagnosis" : "steps";
5299
5398
  }
5300
5399
  function normalizeTab(raw) {
5301
5400
  let t = typeof raw === "string" ? raw : "";
5302
5401
  if (t === "error") t = "diagnosis";
5303
- if (t === "traces") t = hasError.value ? "diagnosis" : "artifacts";
5402
+ if (t === "traces") t = "artifacts";
5304
5403
  return tabValues.value.includes(t) ? t : defaultTab();
5305
5404
  }
5306
5405
  const activeTab = ref(normalizeTab(route.query.tab));
@@ -5360,7 +5459,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5360
5459
  idx = i;
5361
5460
  }
5362
5461
  });
5363
- return idx;
5462
+ return max > 0 ? idx : -1;
5364
5463
  });
5365
5464
  const maxStepDuration = computed(() => steps.value.reduce((m, s) => Math.max(m, s.duration || 0), 0));
5366
5465
  const hasStepTimings = computed(
@@ -5416,17 +5515,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5416
5515
  const { copy: copyRetry, copied: retryCopied } = useCopy();
5417
5516
  const navbarActions = computed(() => [
5418
5517
  {
5419
- label: retryCopied.value ? "Copied" : "Retry command",
5420
- icon: retryCopied.value ? "i-lucide-check" : "i-lucide-play",
5518
+ label: retryCopied.value ? "Copied" : "Copy retry command",
5519
+ icon: retryCopied.value ? "i-lucide-check" : "i-lucide-clipboard",
5520
+ variant: "outline",
5521
+ title: retryCopied.value ? "Copied!" : copyPreview(retryCommand.value),
5421
5522
  onClick: () => copyRetry(retryCommand.value, { toast: "Retry command copied" })
5422
5523
  },
5423
5524
  { label: "Refresh", icon: "i-lucide-refresh-cw", onClick: () => refresh() }
5424
5525
  ]);
5425
5526
  Boolean(useRuntimeConfig().public.demoMode);
5426
- const runIsActive = computed(() => {
5427
- const status = testCase.value?.testRun?.status;
5428
- return status === "running" || status === "finalizing";
5429
- });
5430
5527
  watch(
5431
5528
  runIsActive,
5432
5529
  (active) => {
@@ -5503,13 +5600,30 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5503
5600
  activeTab.value = "steps";
5504
5601
  }
5505
5602
  };
5603
+ const sectionChips = computed(
5604
+ () => [
5605
+ {
5606
+ id: "testSource",
5607
+ label: "Test source",
5608
+ available: Boolean(testCase.value?.testSourceFrames?.length || testCase.value?.testSource || hasTrace.value)
5609
+ },
5610
+ { id: "environmentDiff", label: "Environment diff", available: Boolean(testCase.value?.testRun?.id) },
5611
+ { id: "visualDiff", label: "Visual diff", available: Boolean(testCase.value?.testRun?.id) },
5612
+ { id: "domSnapshot", label: "DOM snapshot", available: Boolean(testCase.value?.testRun?.id) },
5613
+ { id: "ariaSnapshot", label: "ARIA snapshot", available: Boolean(testCase.value?.ariaSnapshot) },
5614
+ { id: "screenshots", label: "Screenshots", available: true },
5615
+ { id: "console", label: "Console", available: Boolean(testCase.value?.consoleLogs?.length) },
5616
+ { id: "networkRequests", label: "Network", available: networkRequests.value.length > 0 || hasTrace.value },
5617
+ { id: "steps", label: "Steps", available: true }
5618
+ ].filter((c) => c.available)
5619
+ );
5506
5620
  provide(clusterSectionLocatorKey, {
5507
5621
  canLocate: (id) => id in sectionToAction,
5508
5622
  open: (id) => sectionToAction[id]?.()
5509
5623
  });
5510
5624
  return (_ctx, _push, _parent, _attrs) => {
5511
5625
  const _component_UDashboardPanel = _sfc_main$1$1;
5512
- const _component_UDashboardNavbar = _sfc_main$g;
5626
+ const _component_UDashboardNavbar = _sfc_main$h;
5513
5627
  const _component_UDashboardSidebarCollapse = _sfc_main$1$2;
5514
5628
  const _component_BreadcrumbNav = __nuxt_component_3$2;
5515
5629
  const _component_NuxtLink = __nuxt_component_12$1;
@@ -5518,11 +5632,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5518
5632
  const _component_ExportMenu = __nuxt_component_7$1;
5519
5633
  const _component_DesktopRunLocallyButton = __nuxt_component_14$1;
5520
5634
  const _component_NavbarActions = __nuxt_component_4$3;
5521
- const _component_DetailPageLayout = __nuxt_component_8;
5635
+ const _component_DetailPageLayout = __nuxt_component_7;
5522
5636
  const _component_TestCaseSummary = __nuxt_component_11;
5523
5637
  const _component_DidNotRunCard = __nuxt_component_12;
5524
5638
  const _component_SectionCard = __nuxt_component_11$1;
5525
- const _component_UTooltip = _sfc_main$f;
5639
+ const _component_UTooltip = _sfc_main$g;
5526
5640
  const _component_UButton = _sfc_main$k;
5527
5641
  const _component_TestCaseVerdictCard = __nuxt_component_16;
5528
5642
  const _component_FailureClusterCard = __nuxt_component_17;
@@ -5538,23 +5652,27 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5538
5652
  const _component_CollapsibleSectionCard = __nuxt_component_27;
5539
5653
  const _component_MarkdownPreview = __nuxt_component_28;
5540
5654
  const _component_DomSnapshotCard = __nuxt_component_29;
5655
+ const _component_UAlert = _sfc_main$f;
5541
5656
  const _component_UBadge = _sfc_main$7$1;
5542
5657
  const _component_DurationValue = __nuxt_component_14;
5543
5658
  const _component_TableScroller = __nuxt_component_3$1;
5544
5659
  const _component_UTable = _sfc_main$e;
5545
5660
  const _component_OpenInIdeLink = __nuxt_component_1$1;
5546
5661
  const _component_EmptyState = __nuxt_component_4$1;
5547
- const _component_TestCaseTracesCard = __nuxt_component_36;
5548
- const _component_TestCaseAttachmentsCard = __nuxt_component_37;
5662
+ const _component_TestCaseTracesCard = __nuxt_component_37;
5663
+ const _component_TestCaseAttachmentsCard = __nuxt_component_38;
5549
5664
  const _component_StatTileGrid = __nuxt_component_1;
5550
5665
  const _component_StatTile = __nuxt_component_2;
5551
5666
  const _component_FeatureUnavailable = __nuxt_component_4$2;
5552
5667
  const _component_ChartCard = __nuxt_component_0;
5553
- const _component_TestCaseHistoryChart = __nuxt_component_42;
5668
+ const _component_TestCaseHistoryChart = __nuxt_component_43;
5669
+ const _component_ClientOnly = __nuxt_component_8;
5554
5670
  _push(ssrRenderComponent(_component_UDashboardPanel, mergeProps({ id: "test-run-case-detail" }, _attrs), {
5555
5671
  header: withCtx((_, _push2, _parent2, _scopeId) => {
5556
5672
  if (_push2) {
5557
- _push2(ssrRenderComponent(_component_UDashboardNavbar, null, {
5673
+ _push2(ssrRenderComponent(_component_UDashboardNavbar, {
5674
+ title: unref(testCase)?.title ?? `Execution #${unref(testCaseId)}`
5675
+ }, {
5558
5676
  leading: withCtx((_2, _push3, _parent3, _scopeId2) => {
5559
5677
  if (_push3) {
5560
5678
  _push3(ssrRenderComponent(_component_UDashboardSidebarCollapse, null, null, _parent3, _scopeId2));
@@ -5604,11 +5722,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5604
5722
  }),
5605
5723
  right: withCtx((_2, _push3, _parent3, _scopeId2) => {
5606
5724
  if (_push3) {
5725
+ _push3(`<div class="flex items-center gap-1 shrink-0 min-w-0"${_scopeId2}>`);
5607
5726
  if (unref(testCase)?.testCaseId) {
5608
5727
  _push3(ssrRenderComponent(_component_NuxtLink, {
5609
5728
  to: `/test-cases/${unref(testCase).testCaseId}`,
5610
- class: "text-xs text-gray-500 hover:text-primary mr-2 flex items-center gap-1",
5611
- title: "View test case evolution and history"
5729
+ class: "text-xs text-gray-500 hover:text-primary mr-2 flex items-center gap-1 shrink-0",
5730
+ title: "View test case history"
5612
5731
  }, {
5613
5732
  default: withCtx((_3, _push4, _parent4, _scopeId3) => {
5614
5733
  if (_push4) {
@@ -5616,14 +5735,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5616
5735
  name: "i-lucide-trending-up",
5617
5736
  class: "size-3.5"
5618
5737
  }, null, _parent4, _scopeId3));
5619
- _push4(`<span class="hidden sm:inline"${_scopeId3}>Evolution</span>`);
5738
+ _push4(`<span class="hidden sm:inline"${_scopeId3}>Test case</span>`);
5620
5739
  } else {
5621
5740
  return [
5622
5741
  createVNode(_component_UIcon, {
5623
5742
  name: "i-lucide-trending-up",
5624
5743
  class: "size-3.5"
5625
5744
  }),
5626
- createVNode("span", { class: "hidden sm:inline" }, "Evolution")
5745
+ createVNode("span", { class: "hidden sm:inline" }, "Test case")
5627
5746
  ];
5628
5747
  }
5629
5748
  }),
@@ -5655,40 +5774,43 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5655
5774
  class: "mr-2"
5656
5775
  }, null, _parent3, _scopeId2));
5657
5776
  _push3(ssrRenderComponent(_component_NavbarActions, { actions: unref(navbarActions) }, null, _parent3, _scopeId2));
5777
+ _push3(`</div>`);
5658
5778
  } else {
5659
5779
  return [
5660
- unref(testCase)?.testCaseId ? (openBlock(), createBlock(_component_NuxtLink, {
5661
- key: 0,
5662
- to: `/test-cases/${unref(testCase).testCaseId}`,
5663
- class: "text-xs text-gray-500 hover:text-primary mr-2 flex items-center gap-1",
5664
- title: "View test case evolution and history"
5665
- }, {
5666
- default: withCtx(() => [
5667
- createVNode(_component_UIcon, {
5668
- name: "i-lucide-trending-up",
5669
- class: "size-3.5"
5670
- }),
5671
- createVNode("span", { class: "hidden sm:inline" }, "Evolution")
5672
- ]),
5673
- _: 1
5674
- }, 8, ["to"])) : createCommentVNode("", true),
5675
- unref(testCase) ? (openBlock(), createBlock(_component_ShareLinksModal, {
5676
- key: 1,
5677
- endpoint: `/api/test-run-cases/${unref(testCase).id}/share-links`
5678
- }, null, 8, ["endpoint"])) : createCommentVNode("", true),
5679
- unref(testCase) ? (openBlock(), createBlock(_component_ExportMenu, {
5680
- key: 2,
5681
- endpoint: `/api/test-run-cases/${unref(testCase).id}/export`,
5682
- "base-name": `piwi-execution-${unref(testCase).id}`,
5683
- class: "mr-2"
5684
- }, null, 8, ["endpoint", "base-name"])) : createCommentVNode("", true),
5685
- createVNode(_component_DesktopRunLocallyButton, {
5686
- "project-id": unref(testCase)?.testRun?.project?.id,
5687
- "project-label": unref(testCase)?.testRun?.project?.label ?? unref(testCase)?.testRun?.project?.name,
5688
- cases: unref(retryCases),
5689
- class: "mr-2"
5690
- }, null, 8, ["project-id", "project-label", "cases"]),
5691
- createVNode(_component_NavbarActions, { actions: unref(navbarActions) }, null, 8, ["actions"])
5780
+ createVNode("div", { class: "flex items-center gap-1 shrink-0 min-w-0" }, [
5781
+ unref(testCase)?.testCaseId ? (openBlock(), createBlock(_component_NuxtLink, {
5782
+ key: 0,
5783
+ to: `/test-cases/${unref(testCase).testCaseId}`,
5784
+ class: "text-xs text-gray-500 hover:text-primary mr-2 flex items-center gap-1 shrink-0",
5785
+ title: "View test case history"
5786
+ }, {
5787
+ default: withCtx(() => [
5788
+ createVNode(_component_UIcon, {
5789
+ name: "i-lucide-trending-up",
5790
+ class: "size-3.5"
5791
+ }),
5792
+ createVNode("span", { class: "hidden sm:inline" }, "Test case")
5793
+ ]),
5794
+ _: 1
5795
+ }, 8, ["to"])) : createCommentVNode("", true),
5796
+ unref(testCase) ? (openBlock(), createBlock(_component_ShareLinksModal, {
5797
+ key: 1,
5798
+ endpoint: `/api/test-run-cases/${unref(testCase).id}/share-links`
5799
+ }, null, 8, ["endpoint"])) : createCommentVNode("", true),
5800
+ unref(testCase) ? (openBlock(), createBlock(_component_ExportMenu, {
5801
+ key: 2,
5802
+ endpoint: `/api/test-run-cases/${unref(testCase).id}/export`,
5803
+ "base-name": `piwi-execution-${unref(testCase).id}`,
5804
+ class: "mr-2"
5805
+ }, null, 8, ["endpoint", "base-name"])) : createCommentVNode("", true),
5806
+ createVNode(_component_DesktopRunLocallyButton, {
5807
+ "project-id": unref(testCase)?.testRun?.project?.id,
5808
+ "project-label": unref(testCase)?.testRun?.project?.label ?? unref(testCase)?.testRun?.project?.name,
5809
+ cases: unref(retryCases),
5810
+ class: "mr-2"
5811
+ }, null, 8, ["project-id", "project-label", "cases"]),
5812
+ createVNode(_component_NavbarActions, { actions: unref(navbarActions) }, null, 8, ["actions"])
5813
+ ])
5692
5814
  ];
5693
5815
  }
5694
5816
  }),
@@ -5696,7 +5818,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5696
5818
  }, _parent2, _scopeId));
5697
5819
  } else {
5698
5820
  return [
5699
- createVNode(_component_UDashboardNavbar, null, {
5821
+ createVNode(_component_UDashboardNavbar, {
5822
+ title: unref(testCase)?.title ?? `Execution #${unref(testCaseId)}`
5823
+ }, {
5700
5824
  leading: withCtx(() => [
5701
5825
  createVNode(_component_UDashboardSidebarCollapse),
5702
5826
  createVNode(_component_BreadcrumbNav, {
@@ -5720,41 +5844,43 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5720
5844
  }, null, 8, ["items"])
5721
5845
  ]),
5722
5846
  right: withCtx(() => [
5723
- unref(testCase)?.testCaseId ? (openBlock(), createBlock(_component_NuxtLink, {
5724
- key: 0,
5725
- to: `/test-cases/${unref(testCase).testCaseId}`,
5726
- class: "text-xs text-gray-500 hover:text-primary mr-2 flex items-center gap-1",
5727
- title: "View test case evolution and history"
5728
- }, {
5729
- default: withCtx(() => [
5730
- createVNode(_component_UIcon, {
5731
- name: "i-lucide-trending-up",
5732
- class: "size-3.5"
5733
- }),
5734
- createVNode("span", { class: "hidden sm:inline" }, "Evolution")
5735
- ]),
5736
- _: 1
5737
- }, 8, ["to"])) : createCommentVNode("", true),
5738
- unref(testCase) ? (openBlock(), createBlock(_component_ShareLinksModal, {
5739
- key: 1,
5740
- endpoint: `/api/test-run-cases/${unref(testCase).id}/share-links`
5741
- }, null, 8, ["endpoint"])) : createCommentVNode("", true),
5742
- unref(testCase) ? (openBlock(), createBlock(_component_ExportMenu, {
5743
- key: 2,
5744
- endpoint: `/api/test-run-cases/${unref(testCase).id}/export`,
5745
- "base-name": `piwi-execution-${unref(testCase).id}`,
5746
- class: "mr-2"
5747
- }, null, 8, ["endpoint", "base-name"])) : createCommentVNode("", true),
5748
- createVNode(_component_DesktopRunLocallyButton, {
5749
- "project-id": unref(testCase)?.testRun?.project?.id,
5750
- "project-label": unref(testCase)?.testRun?.project?.label ?? unref(testCase)?.testRun?.project?.name,
5751
- cases: unref(retryCases),
5752
- class: "mr-2"
5753
- }, null, 8, ["project-id", "project-label", "cases"]),
5754
- createVNode(_component_NavbarActions, { actions: unref(navbarActions) }, null, 8, ["actions"])
5847
+ createVNode("div", { class: "flex items-center gap-1 shrink-0 min-w-0" }, [
5848
+ unref(testCase)?.testCaseId ? (openBlock(), createBlock(_component_NuxtLink, {
5849
+ key: 0,
5850
+ to: `/test-cases/${unref(testCase).testCaseId}`,
5851
+ class: "text-xs text-gray-500 hover:text-primary mr-2 flex items-center gap-1 shrink-0",
5852
+ title: "View test case history"
5853
+ }, {
5854
+ default: withCtx(() => [
5855
+ createVNode(_component_UIcon, {
5856
+ name: "i-lucide-trending-up",
5857
+ class: "size-3.5"
5858
+ }),
5859
+ createVNode("span", { class: "hidden sm:inline" }, "Test case")
5860
+ ]),
5861
+ _: 1
5862
+ }, 8, ["to"])) : createCommentVNode("", true),
5863
+ unref(testCase) ? (openBlock(), createBlock(_component_ShareLinksModal, {
5864
+ key: 1,
5865
+ endpoint: `/api/test-run-cases/${unref(testCase).id}/share-links`
5866
+ }, null, 8, ["endpoint"])) : createCommentVNode("", true),
5867
+ unref(testCase) ? (openBlock(), createBlock(_component_ExportMenu, {
5868
+ key: 2,
5869
+ endpoint: `/api/test-run-cases/${unref(testCase).id}/export`,
5870
+ "base-name": `piwi-execution-${unref(testCase).id}`,
5871
+ class: "mr-2"
5872
+ }, null, 8, ["endpoint", "base-name"])) : createCommentVNode("", true),
5873
+ createVNode(_component_DesktopRunLocallyButton, {
5874
+ "project-id": unref(testCase)?.testRun?.project?.id,
5875
+ "project-label": unref(testCase)?.testRun?.project?.label ?? unref(testCase)?.testRun?.project?.name,
5876
+ cases: unref(retryCases),
5877
+ class: "mr-2"
5878
+ }, null, 8, ["project-id", "project-label", "cases"]),
5879
+ createVNode(_component_NavbarActions, { actions: unref(navbarActions) }, null, 8, ["actions"])
5880
+ ])
5755
5881
  ]),
5756
5882
  _: 1
5757
- })
5883
+ }, 8, ["title"])
5758
5884
  ];
5759
5885
  }
5760
5886
  }),
@@ -5833,6 +5959,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5833
5959
  variant: "ghost",
5834
5960
  color: "neutral",
5835
5961
  icon: unref(failureCopied) ? "i-lucide-check" : "i-lucide-clipboard",
5962
+ "aria-label": "Copy failure",
5836
5963
  onClick: copyFailure
5837
5964
  }, null, _parent5, _scopeId4));
5838
5965
  } else {
@@ -5842,6 +5969,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5842
5969
  variant: "ghost",
5843
5970
  color: "neutral",
5844
5971
  icon: unref(failureCopied) ? "i-lucide-check" : "i-lucide-clipboard",
5972
+ "aria-label": "Copy failure",
5845
5973
  onClick: copyFailure
5846
5974
  }, null, 8, ["icon"])
5847
5975
  ];
@@ -5860,6 +5988,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5860
5988
  variant: "ghost",
5861
5989
  color: "neutral",
5862
5990
  icon: unref(failureCopied) ? "i-lucide-check" : "i-lucide-clipboard",
5991
+ "aria-label": "Copy failure",
5863
5992
  onClick: copyFailure
5864
5993
  }, null, 8, ["icon"])
5865
5994
  ]),
@@ -5885,7 +6014,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5885
6014
  } else {
5886
6015
  _push3(`<!---->`);
5887
6016
  }
5888
- _push3(`</div><div class="grid grid-cols-1 xl:grid-cols-[3fr_2fr] gap-4"${_scopeId2}><div class="space-y-4 xl:order-2"${_scopeId2}>`);
6017
+ _push3(`</div><div class="flex flex-wrap gap-1.5"${_scopeId2}><!--[-->`);
6018
+ ssrRenderList(unref(sectionChips), (s) => {
6019
+ _push3(ssrRenderComponent(_component_UButton, {
6020
+ key: s.id,
6021
+ size: "xs",
6022
+ variant: "soft",
6023
+ color: "neutral",
6024
+ label: s.label,
6025
+ onClick: ($event) => sectionToAction[s.id]?.()
6026
+ }, null, _parent3, _scopeId2));
6027
+ });
6028
+ _push3(`<!--]--></div><div class="grid grid-cols-1 xl:grid-cols-[3fr_2fr] gap-4"${_scopeId2}><div class="space-y-4 lg:order-2"${_scopeId2}>`);
5889
6029
  _push3(ssrRenderComponent(_component_TestCaseVerdictCard, {
5890
6030
  "test-case": unref(testCase) ?? null,
5891
6031
  history: unref(historyData),
@@ -5899,7 +6039,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5899
6039
  _push3(ssrRenderComponent(_component_TestCaseAiCard, {
5900
6040
  "test-runs-case-id": Number(unref(testCaseId))
5901
6041
  }, null, _parent3, _scopeId2));
5902
- _push3(`</div><div class="space-y-4 xl:order-1 min-w-0"${_scopeId2}>`);
6042
+ _push3(`</div><div class="space-y-4 lg:order-1 min-w-0"${_scopeId2}>`);
5903
6043
  if (unref(testCase)?.testSourceFrames?.length || unref(testCase)?.testSource || unref(hasTrace)) {
5904
6044
  _push3(ssrRenderComponent(_component_TestSourceCard, {
5905
6045
  ref_key: "testSourceCard",
@@ -6062,6 +6202,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6062
6202
  variant: "ghost",
6063
6203
  color: "neutral",
6064
6204
  icon: unref(failureCopied) ? "i-lucide-check" : "i-lucide-clipboard",
6205
+ "aria-label": "Copy failure",
6065
6206
  onClick: copyFailure
6066
6207
  }, null, 8, ["icon"])
6067
6208
  ]),
@@ -6077,8 +6218,20 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6077
6218
  _: 1
6078
6219
  })) : createCommentVNode("", true)
6079
6220
  ], 512),
6221
+ createVNode("div", { class: "flex flex-wrap gap-1.5" }, [
6222
+ (openBlock(true), createBlock(Fragment, null, renderList(unref(sectionChips), (s) => {
6223
+ return openBlock(), createBlock(_component_UButton, {
6224
+ key: s.id,
6225
+ size: "xs",
6226
+ variant: "soft",
6227
+ color: "neutral",
6228
+ label: s.label,
6229
+ onClick: ($event) => sectionToAction[s.id]?.()
6230
+ }, null, 8, ["label", "onClick"]);
6231
+ }), 128))
6232
+ ]),
6080
6233
  createVNode("div", { class: "grid grid-cols-1 xl:grid-cols-[3fr_2fr] gap-4" }, [
6081
- createVNode("div", { class: "space-y-4 xl:order-2" }, [
6234
+ createVNode("div", { class: "space-y-4 lg:order-2" }, [
6082
6235
  createVNode(_component_TestCaseVerdictCard, {
6083
6236
  "test-case": unref(testCase) ?? null,
6084
6237
  history: unref(historyData),
@@ -6092,7 +6245,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6092
6245
  "test-runs-case-id": Number(unref(testCaseId))
6093
6246
  }, null, 8, ["test-runs-case-id"])
6094
6247
  ]),
6095
- createVNode("div", { class: "space-y-4 xl:order-1 min-w-0" }, [
6248
+ createVNode("div", { class: "space-y-4 lg:order-1 min-w-0" }, [
6096
6249
  unref(testCase)?.testSourceFrames?.length || unref(testCase)?.testSource || unref(hasTrace) ? (openBlock(), createBlock(_component_TestSourceCard, {
6097
6250
  key: 0,
6098
6251
  ref_key: "testSourceCard",
@@ -6204,6 +6357,17 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6204
6357
  "tab-steps": withCtx((_2, _push3, _parent3, _scopeId2) => {
6205
6358
  if (_push3) {
6206
6359
  _push3(`<div class="space-y-3"${_scopeId2}>`);
6360
+ if (("isFailedStatus" in _ctx ? _ctx.isFailedStatus : unref(isFailedStatus))(unref(testCase)?.status ?? "") && unref(steps).length > 0 && !unref(steps).some((s) => s.failed)) {
6361
+ _push3(ssrRenderComponent(_component_UAlert, {
6362
+ color: "warning",
6363
+ variant: "subtle",
6364
+ icon: "i-lucide-info",
6365
+ title: "The failure was not captured at step level",
6366
+ description: "The test failed, but none of the recorded steps is marked failed — the error happened outside the step list."
6367
+ }, null, _parent3, _scopeId2));
6368
+ } else {
6369
+ _push3(`<!---->`);
6370
+ }
6207
6371
  if (unref(steps).length > 0) {
6208
6372
  _push3(`<div${_scopeId2}><div class="flex flex-wrap items-center gap-x-3 gap-y-1.5 text-xs mb-3"${_scopeId2}><span class="font-medium text-gray-600 dark:text-gray-300"${_scopeId2}>${ssrInterpolate(unref(steps).length)} steps</span><span class="text-gray-300 dark:text-gray-600"${_scopeId2}>·</span><!--[-->`);
6209
6373
  ssrRenderList(unref(stepSummary), (c) => {
@@ -6259,19 +6423,25 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6259
6423
  }),
6260
6424
  "status-cell": withCtx(({ row }, _push5, _parent5, _scopeId4) => {
6261
6425
  if (_push5) {
6262
- if (row.original.failed) {
6426
+ if (unref(testCase)?.status === "didnotrun") {
6427
+ _push5(`<span class="inline-flex items-center justify-center size-5 rounded-full bg-gray-100 dark:bg-gray-800 text-gray-400 dark:text-gray-500 text-xs leading-none" title="Not run"${_scopeId4}>–</span>`);
6428
+ } else if (row.original.failed) {
6263
6429
  _push5(`<span 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"${_scopeId4}>✗</span>`);
6264
6430
  } else {
6265
6431
  _push5(`<span 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"${_scopeId4}>✓</span>`);
6266
6432
  }
6267
6433
  } else {
6268
6434
  return [
6269
- row.original.failed ? (openBlock(), createBlock("span", {
6435
+ unref(testCase)?.status === "didnotrun" ? (openBlock(), createBlock("span", {
6270
6436
  key: 0,
6437
+ class: "inline-flex items-center justify-center size-5 rounded-full bg-gray-100 dark:bg-gray-800 text-gray-400 dark:text-gray-500 text-xs leading-none",
6438
+ title: "Not run"
6439
+ }, "–")) : row.original.failed ? (openBlock(), createBlock("span", {
6440
+ key: 1,
6271
6441
  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",
6272
6442
  title: "Step failed"
6273
6443
  }, "✗")) : (openBlock(), createBlock("span", {
6274
- key: 1,
6444
+ key: 2,
6275
6445
  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",
6276
6446
  title: "Step passed"
6277
6447
  }, "✓"))
@@ -6443,12 +6613,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6443
6613
  createVNode("span", { class: "text-xs tabular-nums text-gray-400 dark:text-gray-500" }, toDisplayString(row.index + 1), 1)
6444
6614
  ]),
6445
6615
  "status-cell": withCtx(({ row }) => [
6446
- row.original.failed ? (openBlock(), createBlock("span", {
6616
+ unref(testCase)?.status === "didnotrun" ? (openBlock(), createBlock("span", {
6447
6617
  key: 0,
6618
+ class: "inline-flex items-center justify-center size-5 rounded-full bg-gray-100 dark:bg-gray-800 text-gray-400 dark:text-gray-500 text-xs leading-none",
6619
+ title: "Not run"
6620
+ }, "–")) : row.original.failed ? (openBlock(), createBlock("span", {
6621
+ key: 1,
6448
6622
  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",
6449
6623
  title: "Step failed"
6450
6624
  }, "✗")) : (openBlock(), createBlock("span", {
6451
- key: 1,
6625
+ key: 2,
6452
6626
  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",
6453
6627
  title: "Step passed"
6454
6628
  }, "✓"))
@@ -6535,7 +6709,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6535
6709
  } else {
6536
6710
  return [
6537
6711
  createVNode("div", { class: "space-y-3" }, [
6538
- unref(steps).length > 0 ? (openBlock(), createBlock("div", { key: 0 }, [
6712
+ ("isFailedStatus" in _ctx ? _ctx.isFailedStatus : unref(isFailedStatus))(unref(testCase)?.status ?? "") && unref(steps).length > 0 && !unref(steps).some((s) => s.failed) ? (openBlock(), createBlock(_component_UAlert, {
6713
+ key: 0,
6714
+ color: "warning",
6715
+ variant: "subtle",
6716
+ icon: "i-lucide-info",
6717
+ title: "The failure was not captured at step level",
6718
+ description: "The test failed, but none of the recorded steps is marked failed — the error happened outside the step list."
6719
+ })) : createCommentVNode("", true),
6720
+ unref(steps).length > 0 ? (openBlock(), createBlock("div", { key: 1 }, [
6539
6721
  createVNode("div", { class: "flex flex-wrap items-center gap-x-3 gap-y-1.5 text-xs mb-3" }, [
6540
6722
  createVNode("span", { class: "font-medium text-gray-600 dark:text-gray-300" }, toDisplayString(unref(steps).length) + " steps", 1),
6541
6723
  createVNode("span", { class: "text-gray-300 dark:text-gray-600" }, "·"),
@@ -6583,12 +6765,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6583
6765
  createVNode("span", { class: "text-xs tabular-nums text-gray-400 dark:text-gray-500" }, toDisplayString(row.index + 1), 1)
6584
6766
  ]),
6585
6767
  "status-cell": withCtx(({ row }) => [
6586
- row.original.failed ? (openBlock(), createBlock("span", {
6768
+ unref(testCase)?.status === "didnotrun" ? (openBlock(), createBlock("span", {
6587
6769
  key: 0,
6770
+ class: "inline-flex items-center justify-center size-5 rounded-full bg-gray-100 dark:bg-gray-800 text-gray-400 dark:text-gray-500 text-xs leading-none",
6771
+ title: "Not run"
6772
+ }, "–")) : row.original.failed ? (openBlock(), createBlock("span", {
6773
+ key: 1,
6588
6774
  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",
6589
6775
  title: "Step failed"
6590
6776
  }, "✗")) : (openBlock(), createBlock("span", {
6591
- key: 1,
6777
+ key: 2,
6592
6778
  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",
6593
6779
  title: "Step passed"
6594
6780
  }, "✓"))
@@ -6663,7 +6849,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6663
6849
  _: 1
6664
6850
  })
6665
6851
  ])) : (openBlock(), createBlock(_component_EmptyState, {
6666
- key: 1,
6852
+ key: 2,
6667
6853
  icon: "i-lucide-list-checks",
6668
6854
  text: "No steps recorded for this execution"
6669
6855
  }))
@@ -6706,23 +6892,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6706
6892
  _push3(`<!---->`);
6707
6893
  }
6708
6894
  if (!unref(traceData)?.length && !unref(testCase)?.attachments?.length && !unref(testCase)?.consoleLogs?.length && !unref(networkRequests).length) {
6709
- _push3(`<div class="flex flex-col items-center justify-center py-12 text-gray-400"${_scopeId2}>`);
6710
- if (unref(runIsActive)) {
6711
- _push3(`<!--[-->`);
6712
- _push3(ssrRenderComponent(_component_UIcon, {
6713
- name: "i-lucide-loader-circle",
6714
- class: "size-8 mb-2 animate-spin"
6715
- }, null, _parent3, _scopeId2));
6716
- _push3(`<p class="text-sm"${_scopeId2}> Run in progress — traces and attachments appear here as soon as they are uploaded. </p><!--]-->`);
6717
- } else {
6718
- _push3(`<!--[-->`);
6719
- _push3(ssrRenderComponent(_component_UIcon, {
6720
- name: "i-lucide-inbox",
6721
- class: "size-8 mb-2"
6722
- }, null, _parent3, _scopeId2));
6723
- _push3(`<p class="text-sm"${_scopeId2}>No traces, console logs, or network requests captured for this test case.</p><!--]-->`);
6724
- }
6725
- _push3(`</div>`);
6895
+ _push3(ssrRenderComponent(_component_EmptyState, {
6896
+ icon: unref(runIsActive) ? "i-lucide-loader-circle" : "i-lucide-inbox",
6897
+ text: unref(runIsActive) ? "Run in progress — traces and attachments appear here as soon as they are uploaded." : "No traces, console logs, or network requests captured for this test case."
6898
+ }, null, _parent3, _scopeId2));
6726
6899
  } else {
6727
6900
  _push3(`<!---->`);
6728
6901
  }
@@ -6752,24 +6925,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6752
6925
  "test-runs-case-id": Number(unref(testCaseId)),
6753
6926
  "has-trace": unref(hasTrace)
6754
6927
  }, null, 8, ["requests", "run-id", "test-runs-case-id", "has-trace"])) : createCommentVNode("", true),
6755
- !unref(traceData)?.length && !unref(testCase)?.attachments?.length && !unref(testCase)?.consoleLogs?.length && !unref(networkRequests).length ? (openBlock(), createBlock("div", {
6928
+ !unref(traceData)?.length && !unref(testCase)?.attachments?.length && !unref(testCase)?.consoleLogs?.length && !unref(networkRequests).length ? (openBlock(), createBlock(_component_EmptyState, {
6756
6929
  key: 3,
6757
- class: "flex flex-col items-center justify-center py-12 text-gray-400"
6758
- }, [
6759
- unref(runIsActive) ? (openBlock(), createBlock(Fragment, { key: 0 }, [
6760
- createVNode(_component_UIcon, {
6761
- name: "i-lucide-loader-circle",
6762
- class: "size-8 mb-2 animate-spin"
6763
- }),
6764
- createVNode("p", { class: "text-sm" }, " Run in progress — traces and attachments appear here as soon as they are uploaded. ")
6765
- ], 64)) : (openBlock(), createBlock(Fragment, { key: 1 }, [
6766
- createVNode(_component_UIcon, {
6767
- name: "i-lucide-inbox",
6768
- class: "size-8 mb-2"
6769
- }),
6770
- createVNode("p", { class: "text-sm" }, "No traces, console logs, or network requests captured for this test case.")
6771
- ], 64))
6772
- ])) : createCommentVNode("", true)
6930
+ icon: unref(runIsActive) ? "i-lucide-loader-circle" : "i-lucide-inbox",
6931
+ text: unref(runIsActive) ? "Run in progress — traces and attachments appear here as soon as they are uploaded." : "No traces, console logs, or network requests captured for this test case."
6932
+ }, null, 8, ["icon", "text"])) : createCommentVNode("", true)
6773
6933
  ])
6774
6934
  ];
6775
6935
  }
@@ -7567,24 +7727,20 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
7567
7727
  }, {
7568
7728
  "startTime-cell": withCtx(({ row }, _push5, _parent5, _scopeId4) => {
7569
7729
  if (_push5) {
7570
- _push5(`<span class="text-xs whitespace-nowrap"${_scopeId4}><span class="text-gray-500"${_scopeId4}>${ssrInterpolate(new Date(row.original.startTime).toLocaleDateString("en-US", {
7571
- month: "short",
7572
- day: "numeric"
7573
- }))}</span><span class="text-gray-400 ml-1"${_scopeId4}>${ssrInterpolate(new Date(row.original.startTime).toLocaleTimeString("en-US", {
7574
- hour: "2-digit",
7575
- minute: "2-digit"
7576
- }))}</span></span>`);
7730
+ _push5(`<span class="text-xs whitespace-nowrap"${_scopeId4}>`);
7731
+ _push5(ssrRenderComponent(_component_ClientOnly, null, {}, _parent5, _scopeId4));
7732
+ _push5(`</span>`);
7577
7733
  } else {
7578
7734
  return [
7579
7735
  createVNode("span", { class: "text-xs whitespace-nowrap" }, [
7580
- createVNode("span", { class: "text-gray-500" }, toDisplayString(new Date(row.original.startTime).toLocaleDateString("en-US", {
7581
- month: "short",
7582
- day: "numeric"
7583
- })), 1),
7584
- createVNode("span", { class: "text-gray-400 ml-1" }, toDisplayString(new Date(row.original.startTime).toLocaleTimeString("en-US", {
7585
- hour: "2-digit",
7586
- minute: "2-digit"
7587
- })), 1)
7736
+ createVNode(_component_ClientOnly, null, {
7737
+ default: withCtx(() => [
7738
+ createVNode("span", {
7739
+ title: ("prettyDateFormat" in _ctx ? _ctx.prettyDateFormat : unref(prettyDateFormat))(row.original.startTime)
7740
+ }, toDisplayString(("formatRelativeTime" in _ctx ? _ctx.formatRelativeTime : unref(formatRelativeTime))(row.original.startTime)), 9, ["title"])
7741
+ ]),
7742
+ _: 2
7743
+ }, 1024)
7588
7744
  ])
7589
7745
  ];
7590
7746
  }
@@ -7598,10 +7754,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
7598
7754
  }, {
7599
7755
  default: withCtx((_4, _push6, _parent6, _scopeId5) => {
7600
7756
  if (_push6) {
7601
- _push6(`${ssrInterpolate(row.original.status)}`);
7757
+ _push6(`${ssrInterpolate(("formatStatusLabel" in _ctx ? _ctx.formatStatusLabel : unref(formatStatusLabel))(row.original.status))}`);
7602
7758
  } else {
7603
7759
  return [
7604
- createTextVNode(toDisplayString(row.original.status), 1)
7760
+ createTextVNode(toDisplayString(("formatStatusLabel" in _ctx ? _ctx.formatStatusLabel : unref(formatStatusLabel))(row.original.status)), 1)
7605
7761
  ];
7606
7762
  }
7607
7763
  }),
@@ -7615,7 +7771,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
7615
7771
  class: "capitalize"
7616
7772
  }, {
7617
7773
  default: withCtx(() => [
7618
- createTextVNode(toDisplayString(row.original.status), 1)
7774
+ createTextVNode(toDisplayString(("formatStatusLabel" in _ctx ? _ctx.formatStatusLabel : unref(formatStatusLabel))(row.original.status)), 1)
7619
7775
  ]),
7620
7776
  _: 2
7621
7777
  }, 1032, ["color"])
@@ -7708,14 +7864,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
7708
7864
  }, {
7709
7865
  "startTime-cell": withCtx(({ row }) => [
7710
7866
  createVNode("span", { class: "text-xs whitespace-nowrap" }, [
7711
- createVNode("span", { class: "text-gray-500" }, toDisplayString(new Date(row.original.startTime).toLocaleDateString("en-US", {
7712
- month: "short",
7713
- day: "numeric"
7714
- })), 1),
7715
- createVNode("span", { class: "text-gray-400 ml-1" }, toDisplayString(new Date(row.original.startTime).toLocaleTimeString("en-US", {
7716
- hour: "2-digit",
7717
- minute: "2-digit"
7718
- })), 1)
7867
+ createVNode(_component_ClientOnly, null, {
7868
+ default: withCtx(() => [
7869
+ createVNode("span", {
7870
+ title: ("prettyDateFormat" in _ctx ? _ctx.prettyDateFormat : unref(prettyDateFormat))(row.original.startTime)
7871
+ }, toDisplayString(("formatRelativeTime" in _ctx ? _ctx.formatRelativeTime : unref(formatRelativeTime))(row.original.startTime)), 9, ["title"])
7872
+ ]),
7873
+ _: 2
7874
+ }, 1024)
7719
7875
  ])
7720
7876
  ]),
7721
7877
  "status-cell": withCtx(({ row }) => [
@@ -7725,7 +7881,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
7725
7881
  class: "capitalize"
7726
7882
  }, {
7727
7883
  default: withCtx(() => [
7728
- createTextVNode(toDisplayString(row.original.status), 1)
7884
+ createTextVNode(toDisplayString(("formatStatusLabel" in _ctx ? _ctx.formatStatusLabel : unref(formatStatusLabel))(row.original.status)), 1)
7729
7885
  ]),
7730
7886
  _: 2
7731
7887
  }, 1032, ["color"])
@@ -7839,14 +7995,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
7839
7995
  }, {
7840
7996
  "startTime-cell": withCtx(({ row }) => [
7841
7997
  createVNode("span", { class: "text-xs whitespace-nowrap" }, [
7842
- createVNode("span", { class: "text-gray-500" }, toDisplayString(new Date(row.original.startTime).toLocaleDateString("en-US", {
7843
- month: "short",
7844
- day: "numeric"
7845
- })), 1),
7846
- createVNode("span", { class: "text-gray-400 ml-1" }, toDisplayString(new Date(row.original.startTime).toLocaleTimeString("en-US", {
7847
- hour: "2-digit",
7848
- minute: "2-digit"
7849
- })), 1)
7998
+ createVNode(_component_ClientOnly, null, {
7999
+ default: withCtx(() => [
8000
+ createVNode("span", {
8001
+ title: ("prettyDateFormat" in _ctx ? _ctx.prettyDateFormat : unref(prettyDateFormat))(row.original.startTime)
8002
+ }, toDisplayString(("formatRelativeTime" in _ctx ? _ctx.formatRelativeTime : unref(formatRelativeTime))(row.original.startTime)), 9, ["title"])
8003
+ ]),
8004
+ _: 2
8005
+ }, 1024)
7850
8006
  ])
7851
8007
  ]),
7852
8008
  "status-cell": withCtx(({ row }) => [
@@ -7856,7 +8012,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
7856
8012
  class: "capitalize"
7857
8013
  }, {
7858
8014
  default: withCtx(() => [
7859
- createTextVNode(toDisplayString(row.original.status), 1)
8015
+ createTextVNode(toDisplayString(("formatStatusLabel" in _ctx ? _ctx.formatStatusLabel : unref(formatStatusLabel))(row.original.status)), 1)
7860
8016
  ]),
7861
8017
  _: 2
7862
8018
  }, 1032, ["color"])
@@ -7961,6 +8117,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
7961
8117
  variant: "ghost",
7962
8118
  color: "neutral",
7963
8119
  icon: unref(failureCopied) ? "i-lucide-check" : "i-lucide-clipboard",
8120
+ "aria-label": "Copy failure",
7964
8121
  onClick: copyFailure
7965
8122
  }, null, 8, ["icon"])
7966
8123
  ]),
@@ -7976,8 +8133,20 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
7976
8133
  _: 1
7977
8134
  })) : createCommentVNode("", true)
7978
8135
  ], 512),
8136
+ createVNode("div", { class: "flex flex-wrap gap-1.5" }, [
8137
+ (openBlock(true), createBlock(Fragment, null, renderList(unref(sectionChips), (s) => {
8138
+ return openBlock(), createBlock(_component_UButton, {
8139
+ key: s.id,
8140
+ size: "xs",
8141
+ variant: "soft",
8142
+ color: "neutral",
8143
+ label: s.label,
8144
+ onClick: ($event) => sectionToAction[s.id]?.()
8145
+ }, null, 8, ["label", "onClick"]);
8146
+ }), 128))
8147
+ ]),
7979
8148
  createVNode("div", { class: "grid grid-cols-1 xl:grid-cols-[3fr_2fr] gap-4" }, [
7980
- createVNode("div", { class: "space-y-4 xl:order-2" }, [
8149
+ createVNode("div", { class: "space-y-4 lg:order-2" }, [
7981
8150
  createVNode(_component_TestCaseVerdictCard, {
7982
8151
  "test-case": unref(testCase) ?? null,
7983
8152
  history: unref(historyData),
@@ -7991,7 +8160,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
7991
8160
  "test-runs-case-id": Number(unref(testCaseId))
7992
8161
  }, null, 8, ["test-runs-case-id"])
7993
8162
  ]),
7994
- createVNode("div", { class: "space-y-4 xl:order-1 min-w-0" }, [
8163
+ createVNode("div", { class: "space-y-4 lg:order-1 min-w-0" }, [
7995
8164
  unref(testCase)?.testSourceFrames?.length || unref(testCase)?.testSource || unref(hasTrace) ? (openBlock(), createBlock(_component_TestSourceCard, {
7996
8165
  key: 0,
7997
8166
  ref_key: "testSourceCard",
@@ -8100,7 +8269,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
8100
8269
  ]),
8101
8270
  "tab-steps": withCtx(() => [
8102
8271
  createVNode("div", { class: "space-y-3" }, [
8103
- unref(steps).length > 0 ? (openBlock(), createBlock("div", { key: 0 }, [
8272
+ ("isFailedStatus" in _ctx ? _ctx.isFailedStatus : unref(isFailedStatus))(unref(testCase)?.status ?? "") && unref(steps).length > 0 && !unref(steps).some((s) => s.failed) ? (openBlock(), createBlock(_component_UAlert, {
8273
+ key: 0,
8274
+ color: "warning",
8275
+ variant: "subtle",
8276
+ icon: "i-lucide-info",
8277
+ title: "The failure was not captured at step level",
8278
+ description: "The test failed, but none of the recorded steps is marked failed — the error happened outside the step list."
8279
+ })) : createCommentVNode("", true),
8280
+ unref(steps).length > 0 ? (openBlock(), createBlock("div", { key: 1 }, [
8104
8281
  createVNode("div", { class: "flex flex-wrap items-center gap-x-3 gap-y-1.5 text-xs mb-3" }, [
8105
8282
  createVNode("span", { class: "font-medium text-gray-600 dark:text-gray-300" }, toDisplayString(unref(steps).length) + " steps", 1),
8106
8283
  createVNode("span", { class: "text-gray-300 dark:text-gray-600" }, "·"),
@@ -8148,12 +8325,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
8148
8325
  createVNode("span", { class: "text-xs tabular-nums text-gray-400 dark:text-gray-500" }, toDisplayString(row.index + 1), 1)
8149
8326
  ]),
8150
8327
  "status-cell": withCtx(({ row }) => [
8151
- row.original.failed ? (openBlock(), createBlock("span", {
8328
+ unref(testCase)?.status === "didnotrun" ? (openBlock(), createBlock("span", {
8152
8329
  key: 0,
8330
+ class: "inline-flex items-center justify-center size-5 rounded-full bg-gray-100 dark:bg-gray-800 text-gray-400 dark:text-gray-500 text-xs leading-none",
8331
+ title: "Not run"
8332
+ }, "–")) : row.original.failed ? (openBlock(), createBlock("span", {
8333
+ key: 1,
8153
8334
  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",
8154
8335
  title: "Step failed"
8155
8336
  }, "✗")) : (openBlock(), createBlock("span", {
8156
- key: 1,
8337
+ key: 2,
8157
8338
  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",
8158
8339
  title: "Step passed"
8159
8340
  }, "✓"))
@@ -8228,7 +8409,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
8228
8409
  _: 1
8229
8410
  })
8230
8411
  ])) : (openBlock(), createBlock(_component_EmptyState, {
8231
- key: 1,
8412
+ key: 2,
8232
8413
  icon: "i-lucide-list-checks",
8233
8414
  text: "No steps recorded for this execution"
8234
8415
  }))
@@ -8258,24 +8439,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
8258
8439
  "test-runs-case-id": Number(unref(testCaseId)),
8259
8440
  "has-trace": unref(hasTrace)
8260
8441
  }, null, 8, ["requests", "run-id", "test-runs-case-id", "has-trace"])) : createCommentVNode("", true),
8261
- !unref(traceData)?.length && !unref(testCase)?.attachments?.length && !unref(testCase)?.consoleLogs?.length && !unref(networkRequests).length ? (openBlock(), createBlock("div", {
8442
+ !unref(traceData)?.length && !unref(testCase)?.attachments?.length && !unref(testCase)?.consoleLogs?.length && !unref(networkRequests).length ? (openBlock(), createBlock(_component_EmptyState, {
8262
8443
  key: 3,
8263
- class: "flex flex-col items-center justify-center py-12 text-gray-400"
8264
- }, [
8265
- unref(runIsActive) ? (openBlock(), createBlock(Fragment, { key: 0 }, [
8266
- createVNode(_component_UIcon, {
8267
- name: "i-lucide-loader-circle",
8268
- class: "size-8 mb-2 animate-spin"
8269
- }),
8270
- createVNode("p", { class: "text-sm" }, " Run in progress — traces and attachments appear here as soon as they are uploaded. ")
8271
- ], 64)) : (openBlock(), createBlock(Fragment, { key: 1 }, [
8272
- createVNode(_component_UIcon, {
8273
- name: "i-lucide-inbox",
8274
- class: "size-8 mb-2"
8275
- }),
8276
- createVNode("p", { class: "text-sm" }, "No traces, console logs, or network requests captured for this test case.")
8277
- ], 64))
8278
- ])) : createCommentVNode("", true)
8444
+ icon: unref(runIsActive) ? "i-lucide-loader-circle" : "i-lucide-inbox",
8445
+ text: unref(runIsActive) ? "Run in progress — traces and attachments appear here as soon as they are uploaded." : "No traces, console logs, or network requests captured for this test case."
8446
+ }, null, 8, ["icon", "text"])) : createCommentVNode("", true)
8279
8447
  ])
8280
8448
  ]),
8281
8449
  "tab-performance": withCtx(() => [
@@ -8521,14 +8689,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
8521
8689
  }, {
8522
8690
  "startTime-cell": withCtx(({ row }) => [
8523
8691
  createVNode("span", { class: "text-xs whitespace-nowrap" }, [
8524
- createVNode("span", { class: "text-gray-500" }, toDisplayString(new Date(row.original.startTime).toLocaleDateString("en-US", {
8525
- month: "short",
8526
- day: "numeric"
8527
- })), 1),
8528
- createVNode("span", { class: "text-gray-400 ml-1" }, toDisplayString(new Date(row.original.startTime).toLocaleTimeString("en-US", {
8529
- hour: "2-digit",
8530
- minute: "2-digit"
8531
- })), 1)
8692
+ createVNode(_component_ClientOnly, null, {
8693
+ default: withCtx(() => [
8694
+ createVNode("span", {
8695
+ title: ("prettyDateFormat" in _ctx ? _ctx.prettyDateFormat : unref(prettyDateFormat))(row.original.startTime)
8696
+ }, toDisplayString(("formatRelativeTime" in _ctx ? _ctx.formatRelativeTime : unref(formatRelativeTime))(row.original.startTime)), 9, ["title"])
8697
+ ]),
8698
+ _: 2
8699
+ }, 1024)
8532
8700
  ])
8533
8701
  ]),
8534
8702
  "status-cell": withCtx(({ row }) => [
@@ -8538,7 +8706,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
8538
8706
  class: "capitalize"
8539
8707
  }, {
8540
8708
  default: withCtx(() => [
8541
- createTextVNode(toDisplayString(row.original.status), 1)
8709
+ createTextVNode(toDisplayString(("formatStatusLabel" in _ctx ? _ctx.formatStatusLabel : unref(formatStatusLabel))(row.original.status)), 1)
8542
8710
  ]),
8543
8711
  _: 2
8544
8712
  }, 1032, ["color"])
@@ -8605,4 +8773,4 @@ _sfc_main.setup = (props, ctx) => {
8605
8773
  };
8606
8774
 
8607
8775
  export { _sfc_main as default };
8608
- //# sourceMappingURL=_id_-B7Dw490u.mjs.map
8776
+ //# sourceMappingURL=_id_-CfLEW45H.mjs.map