@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.
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{BdQ7kfxJ.js → 1QWBzxLM.js} +4 -4
- package/.output/public/_nuxt/{CY1UsEbI.js → 4hW9LHwA.js} +1 -1
- package/.output/public/_nuxt/96uxfdYT.js +1 -0
- package/.output/public/_nuxt/{HGYIpJtg.js → AbnDY6Zr.js} +1 -1
- package/.output/public/_nuxt/{CZ6WR7uw.js → B-1zt4pp.js} +1 -1
- package/.output/public/_nuxt/{Sx5-c-bZ.js → B1iYmAt_.js} +1 -1
- package/.output/public/_nuxt/{CbzgEkmW.js → B2bxEmbR.js} +1 -1
- package/.output/public/_nuxt/B3hAvaCe.js +4 -0
- package/.output/public/_nuxt/{CyWOerIG.js → B4lvHjBe.js} +1 -1
- package/.output/public/_nuxt/B5S7BkC3.js +1 -0
- package/.output/public/_nuxt/{Bb_1uAHn.js → B6j5Ornu.js} +1 -1
- package/.output/public/_nuxt/{CrsaY0R_.js → B82vqOZe.js} +1 -1
- package/.output/public/_nuxt/{CTFUlsXp.js → B9oXlGro.js} +1 -1
- package/.output/public/_nuxt/{CsJ9Ce4U.js → BABCH5kE.js} +1 -1
- package/.output/public/_nuxt/{Gn1Ns00e.js → BF5qB58w.js} +1 -1
- package/.output/public/_nuxt/{CsGsLxHg.js → BFLa9ZEP.js} +1 -1
- package/.output/public/_nuxt/BIlohx1E.js +1 -0
- package/.output/public/_nuxt/{B6djubIK.js → BM5C-Oec.js} +1 -1
- package/.output/public/_nuxt/{CrZhoZuI.js → BOA-I6S9.js} +1 -1
- package/.output/public/_nuxt/{Bp2zrrkV.js → BQUhoGCh.js} +1 -1
- package/.output/public/_nuxt/{DUC3QnqW.js → BQYLGX9o.js} +1 -1
- package/.output/public/_nuxt/{CUjzhXN1.js → BRMeEHXd.js} +1 -1
- package/.output/public/_nuxt/{Cf_a8ynB.js → BRtaKOKv.js} +2 -2
- package/.output/public/_nuxt/{B7uPoZ7T.js → BS91Og__.js} +1 -1
- package/.output/public/_nuxt/{DKgbchez.js → BTGAvMoT.js} +1 -1
- package/.output/public/_nuxt/{BIamiwb7.js → BaLX92Wz.js} +1 -1
- package/.output/public/_nuxt/{LWIyaZKe.js → Bc6Zr-Xn.js} +1 -1
- package/.output/public/_nuxt/{R7AVOWi_.js → BceMEnJt.js} +1 -1
- package/.output/public/_nuxt/{Q2oJNyXL.js → BeCAVtCK.js} +1 -1
- package/.output/public/_nuxt/{D_SD71Qf.js → Bf119e7x.js} +1 -1
- package/.output/public/_nuxt/BfRcdz11.js +9 -0
- package/.output/public/_nuxt/{CxwnFFD0.js → Bl0xzETD.js} +1 -1
- package/.output/public/_nuxt/{C_eXufkv.js → BnUQ3i5l.js} +1 -1
- package/.output/public/_nuxt/{rPG7kzfL.js → Bp1WeQ0_.js} +1 -1
- package/.output/public/_nuxt/{BL8cYWsR.js → Bp31ZRcA.js} +1 -1
- package/.output/public/_nuxt/{Drh1_ASq.js → BrxUH8qL.js} +1 -1
- package/.output/public/_nuxt/{D72Ce8Ff.js → BsdfEbVC.js} +1 -1
- package/.output/public/_nuxt/BtGI4ZbP.js +1 -0
- package/.output/public/_nuxt/{BV8EzO8q.js → BuMX-4RF.js} +1 -1
- package/.output/public/_nuxt/{DPPhFZOr.js → BuXJR5tn.js} +1 -1
- package/.output/public/_nuxt/{Bh2WA4IJ.js → Bx_lfKHl.js} +1 -1
- package/.output/public/_nuxt/{vcSKeWsW.js → C4UKyPQn.js} +1 -1
- package/.output/public/_nuxt/{IoE3eJ9F.js → C9XCTbtQ.js} +1 -1
- package/.output/public/_nuxt/{BilJoEne.js → CEPU6VkU.js} +1 -1
- package/.output/public/_nuxt/CHz7LJIX.js +1 -0
- package/.output/public/_nuxt/{BPhGDGAR.js → CMhd8IBr.js} +1 -1
- package/.output/public/_nuxt/{C5X_N4R7.js → CN1M6i4K.js} +33 -33
- package/.output/public/_nuxt/CQLkowA3.js +1 -0
- package/.output/public/_nuxt/{DTtizz85.js → CU_2YLhT.js} +1 -1
- package/.output/public/_nuxt/{CMVTTE_g.js → CXkXHtcx.js} +1 -1
- package/.output/public/_nuxt/{igDJCTgt.js → CZeKW-zP.js} +1 -1
- package/.output/public/_nuxt/{9oKY4Zb7.js → CapSEET7.js} +1 -1
- package/.output/public/_nuxt/{j2eGYaRa.js → CeExxGSu.js} +1 -1
- package/.output/public/_nuxt/{CEgRB8H9.js → CfwpqSe7.js} +1 -1
- package/.output/public/_nuxt/{CFKbXp6V.js → ChOtLYkd.js} +1 -1
- package/.output/public/_nuxt/ChuJzPWz.js +1 -0
- package/.output/public/_nuxt/{Bo73sAu8.js → CiCUZGFZ.js} +1 -1
- package/.output/public/_nuxt/{C6R4tyud.js → CkL_oDa8.js} +1 -1
- package/.output/public/_nuxt/{DtGJeysS.js → CkhOMiiO.js} +1 -1
- package/.output/public/_nuxt/ClmHMP65.js +2 -0
- package/.output/public/_nuxt/{BtcDY0Du.js → Cnm0d_7S.js} +1 -1
- package/.output/public/_nuxt/{CK2AMqz_.js → CtQMagSz.js} +1 -1
- package/.output/public/_nuxt/{B1KjIR-q.js → Ctnn3S3-.js} +1 -1
- package/.output/public/_nuxt/{DCeZxpxe.js → CywiLuOD.js} +4 -4
- package/.output/public/_nuxt/{oA84LLqO.js → CzRkZLB4.js} +1 -1
- package/.output/public/_nuxt/CzyCEdYP.js +1 -0
- package/.output/public/_nuxt/{D56yp7m9.js → D-F0Rhjj.js} +1 -1
- package/.output/public/_nuxt/D4mPjHHR.js +2 -0
- package/.output/public/_nuxt/{BsGvSoPC.js → D4v7lLm3.js} +1 -1
- package/.output/public/_nuxt/{CxRTKV-K.js → D6B0WKO0.js} +1 -1
- package/.output/public/_nuxt/{jv8U_Tup.js → DAg6jtav.js} +1 -1
- package/.output/public/_nuxt/DBXXb0w8.js +1 -0
- package/.output/public/_nuxt/{ChlP20A5.js → DHN2t5Vt.js} +1 -1
- package/.output/public/_nuxt/{B8tezsWe.js → DJKHXfNS.js} +1 -1
- package/.output/public/_nuxt/{CFg5qdS0.js → DMqAUHFN.js} +1 -1
- package/.output/public/_nuxt/{C9A3sPDo.js → DURme_kn.js} +1 -1
- package/.output/public/_nuxt/{C2hIM5f9.js → DVo_e_uj.js} +1 -1
- package/.output/public/_nuxt/{DKhqIou2.js → DXh8q5KY.js} +1 -1
- package/.output/public/_nuxt/{CZXeJs2k.js → DXz1Kb4-.js} +1 -1
- package/.output/public/_nuxt/{CPrVhXJk.js → DYdwHaco.js} +1 -1
- package/.output/public/_nuxt/{WZXZeGYt.js → D_ZAGxCQ.js} +1 -1
- package/.output/public/_nuxt/{D5SN7rPK.js → D_dhjJvR.js} +1 -1
- package/.output/public/_nuxt/{DR1jFptD.js → DamZHy5M.js} +1 -1
- package/.output/public/_nuxt/{xKX9IHe3.js → DbtjJCra.js} +1 -1
- package/.output/public/_nuxt/{r6zkA1SE.js → DcOlL-oi.js} +1 -1
- package/.output/public/_nuxt/{CxspCKpR.js → DeQ9sIia.js} +1 -1
- package/.output/public/_nuxt/{BkHJoHpc.js → DjX1bLZD.js} +1 -1
- package/.output/public/_nuxt/{Be0bwdsi.js → Dly7wCCl.js} +1 -1
- package/.output/public/_nuxt/DmeogbGY.js +1 -0
- package/.output/public/_nuxt/{CfV2N201.js → Dn_-RkxP.js} +1 -1
- package/.output/public/_nuxt/{dg6uXTyR.js → DoDo3VF2.js} +1 -1
- package/.output/public/_nuxt/{BMlKQMjM.js → DoVHTl-K.js} +1 -1
- package/.output/public/_nuxt/DpM8IgHL.js +1 -0
- package/.output/public/_nuxt/{B4NjylBn.js → Dpwj_1H5.js} +1 -1
- package/.output/public/_nuxt/{DzJa19LG.js → DvSHenmZ.js} +1 -1
- package/.output/public/_nuxt/DvYU87_a.js +1 -0
- package/.output/public/_nuxt/{G2J1dVVb.js → Dx41arC8.js} +1 -1
- package/.output/public/_nuxt/DxBrlj7b.js +1 -0
- package/.output/public/_nuxt/{r-HZNbp3.js → JNpNdV-o.js} +1 -1
- package/.output/public/_nuxt/Lz9MmwKY.js +1 -0
- package/.output/public/_nuxt/OMI0cmZ0.js +1 -0
- package/.output/public/_nuxt/{CUWrUpTl.js → UAmyrRCI.js} +1 -1
- package/.output/public/_nuxt/{EJllK0wm.js → VBTxfbqU.js} +1 -1
- package/.output/public/_nuxt/VbedPPFH.js +1 -0
- package/.output/public/_nuxt/{BY9A1aOT.js → _okd7MfH.js} +1 -1
- package/.output/public/_nuxt/{BOn5q0rT.js → bmAf49LT.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/0174ebd8-8fa5-4698-aa79-7a8dd2f6527f.json +1 -0
- package/.output/public/_nuxt/{D0XWJGhG.js → e-GZmCeP.js} +1 -1
- package/.output/public/_nuxt/entry.Dv52uAyn.css +1 -0
- package/.output/public/_nuxt/{DVIIj6Vv.js → f9TbT3AM.js} +1 -1
- package/.output/public/_nuxt/gdlHFfN6.js +1 -0
- package/.output/public/_nuxt/{BTG_PmM5.js → huBoAZeM.js} +1 -1
- package/.output/public/_nuxt/{DadksxQ9.js → mYw4b7uY.js} +1 -1
- package/.output/public/_nuxt/{B0eHOux4.js → mi7tdFxN.js} +1 -1
- package/.output/public/_nuxt/sFe4Zr5j.js +1 -0
- package/.output/public/_nuxt/{CLrLFf3s.js → uspGXbik.js} +1 -1
- package/.output/public/_nuxt/{DLN-CQXF.js → w7KxwWEv.js} +1 -1
- package/.output/public/_nuxt/{Bp55g9gr.js → wa4k1aDz.js} +1 -1
- package/.output/public/_nuxt/{C2yZcDch.js → xuB8n0QL.js} +1 -1
- package/.output/public/favicon.ico +0 -0
- package/.output/public/trace-viewer/assets/codeMirrorModule-LEHpjmcn.js +32 -0
- package/.output/public/trace-viewer/assets/defaultSettingsView-BNmKHKpQ.js +264 -0
- package/.output/public/trace-viewer/assets/urlMatch-BYQrIQwR.js +1 -0
- package/.output/public/trace-viewer/assets/xtermModule-CsJ4vdCR.js +9 -0
- package/.output/public/trace-viewer/codeMirrorModule.DYBRYzYX.css +1 -0
- package/.output/public/trace-viewer/codicon.DCmgc-ay.ttf +0 -0
- package/.output/public/trace-viewer/defaultSettingsView.CjdS-WJx.css +1 -0
- package/.output/public/trace-viewer/index.CzXZzn5A.css +1 -0
- package/.output/public/trace-viewer/index.DMMX1gXU.js +2 -0
- package/.output/public/trace-viewer/index.html +44 -0
- package/.output/public/trace-viewer/manifest.webmanifest +16 -0
- package/.output/public/trace-viewer/playwright-logo.svg +9 -0
- package/.output/public/trace-viewer/snapshot.html +10 -0
- package/.output/public/trace-viewer/snapshot.v8KI4P3m.js +2 -0
- package/.output/public/trace-viewer/sw.bundle.js +5 -0
- package/.output/public/trace-viewer/uiMode.BZQ54Kgt.css +1 -0
- package/.output/public/trace-viewer/uiMode.Ut8wwJNp.js +6 -0
- package/.output/public/trace-viewer/uiMode.html +18 -0
- package/.output/public/trace-viewer/xtermModule.DYP7pi_n.css +32 -0
- package/.output/server/chunks/_/users.mjs +1 -1
- package/.output/server/chunks/build/{BreadcrumbNav-DBnGj5Jq.mjs → BreadcrumbNav-Bg4QGX0k.mjs} +11 -4
- package/.output/server/chunks/build/BreadcrumbNav-Bg4QGX0k.mjs.map +1 -0
- package/.output/server/chunks/build/{BrowserBadge-vFb1ERG_.mjs → BrowserBadge-yMgLTBUu.mjs} +17 -9
- package/.output/server/chunks/build/BrowserBadge-yMgLTBUu.mjs.map +1 -0
- package/.output/server/chunks/build/{ChartMarkerLines-BXqUpUcs.mjs → ChartMarkerLines-D0cTRlxF.mjs} +3 -3
- package/.output/server/chunks/build/ChartMarkerLines-D0cTRlxF.mjs.map +1 -0
- package/.output/server/chunks/build/{ChartTooltip-DoF6Smyc.mjs → ChartTooltip-B2t6VYYH.mjs} +3 -3
- package/.output/server/chunks/build/ChartTooltip-B2t6VYYH.mjs.map +1 -0
- package/.output/server/chunks/build/Checkbox-ChSYhiUz.mjs +1 -1
- package/.output/server/chunks/build/ClientDate-U97Z1p6-.mjs +32 -0
- package/.output/server/chunks/build/ClientDate-U97Z1p6-.mjs.map +1 -0
- package/.output/server/chunks/build/{CodeBlock-CmvKHaq8.mjs → CodeBlock-DuWhmcI2.mjs} +3 -3
- package/.output/server/chunks/build/CodeBlock-DuWhmcI2.mjs.map +1 -0
- package/.output/server/chunks/build/DashboardSidebarToggle-a5KYecZ0.mjs +1 -1
- package/.output/server/chunks/build/DashboardToolbar-BZoGc0ri.mjs +72 -0
- package/.output/server/chunks/build/DashboardToolbar-BZoGc0ri.mjs.map +1 -0
- package/.output/server/chunks/build/{DataLocationCard-ChV02QJj.mjs → DataLocationCard-DCdhQBIY.mjs} +2 -2
- package/.output/server/chunks/build/DataLocationCard-DCdhQBIY.mjs.map +1 -0
- package/.output/server/chunks/build/{DesktopRunLocallyButton-BfmbZpiL.mjs → DesktopRunLocallyButton-ChHg3GqK.mjs} +5 -5
- package/.output/server/chunks/build/{DesktopRunLocallyButton-BfmbZpiL.mjs.map → DesktopRunLocallyButton-ChHg3GqK.mjs.map} +1 -1
- package/.output/server/chunks/build/{DiagnosisPanel-C_ndadzP.mjs → DiagnosisPanel-DE-r2UV8.mjs} +5 -5
- package/.output/server/chunks/build/DiagnosisPanel-DE-r2UV8.mjs.map +1 -0
- package/.output/server/chunks/build/{DiagnosisResult-GAjo6Lt3.mjs → DiagnosisResult-CrGK--xh.mjs} +16 -10
- package/.output/server/chunks/build/DiagnosisResult-CrGK--xh.mjs.map +1 -0
- package/.output/server/chunks/build/{DurationValue-CObiBDnH.mjs → DurationValue-Dn06XQk3.mjs} +2 -2
- package/.output/server/chunks/build/DurationValue-Dn06XQk3.mjs.map +1 -0
- package/.output/server/chunks/build/EntityLinks-BcpvMt_V.mjs +1 -1
- package/.output/server/chunks/build/EnvManagedBadge-_8GfjWjE.mjs +1 -1
- package/.output/server/chunks/build/{FeatureUnavailable-Buoyoqx1.mjs → FeatureUnavailable-IaBjVCqQ.mjs} +2 -2
- package/.output/server/chunks/build/FeatureUnavailable-IaBjVCqQ.mjs.map +1 -0
- package/.output/server/chunks/build/{GetStartedWizard-tL3U_qM1.mjs → GetStartedWizard-BiyxEXWP.mjs} +3 -3
- package/.output/server/chunks/build/GetStartedWizard-BiyxEXWP.mjs.map +1 -0
- package/.output/server/chunks/build/{HelpHint-C96TlqxY.mjs → HelpHint-CdBz6deq.mjs} +2 -2
- package/.output/server/chunks/build/HelpHint-CdBz6deq.mjs.map +1 -0
- package/.output/server/chunks/build/{MetaStripGroup-Cp2WCQf7.mjs → MetaStripGroup-CDyGlsNt.mjs} +94 -21
- package/.output/server/chunks/build/MetaStripGroup-CDyGlsNt.mjs.map +1 -0
- package/.output/server/chunks/build/{NavbarActions-VCHW0u67.mjs → NavbarActions-BTWxKCVI.mjs} +2 -2
- package/.output/server/chunks/build/NavbarActions-BTWxKCVI.mjs.map +1 -0
- package/.output/server/chunks/build/NavigationMenu-D4ZpdCm_.mjs +1 -1
- package/.output/server/chunks/build/OpenInIdeLink-Bnl-_som.mjs +1 -1
- package/.output/server/chunks/build/{ProjectTestCasesTable-saHYJoyQ.mjs → ProjectTestCasesTable-DJDAZ9NQ.mjs} +9 -9
- package/.output/server/chunks/build/ProjectTestCasesTable-DJDAZ9NQ.mjs.map +1 -0
- package/.output/server/chunks/build/{RunReports-CKYYRC59.mjs → RunReports-BSo2cCNx.mjs} +4 -4
- package/.output/server/chunks/build/RunReports-BSo2cCNx.mjs.map +1 -0
- package/.output/server/chunks/build/{RunStatusBadge-CWhmAmKb.mjs → RunStatusBadge-zfeSwcTx.mjs} +2 -2
- package/.output/server/chunks/build/RunStatusBadge-zfeSwcTx.mjs.map +1 -0
- package/.output/server/chunks/build/{SectionCard-BB1O3uXd.mjs → SectionCard-CKD1s0eF.mjs} +2 -2
- package/.output/server/chunks/build/SectionCard-CKD1s0eF.mjs.map +1 -0
- package/.output/server/chunks/build/Select-COU8NARj.mjs +1 -1
- package/.output/server/chunks/build/SelectMenu-BUwwc3Qt.mjs +1 -1
- package/.output/server/chunks/build/{SettingsField-CEasBHu3.mjs → SettingsField-CDnUtiCM.mjs} +3 -3
- package/.output/server/chunks/build/SettingsField-CDnUtiCM.mjs.map +1 -0
- package/.output/server/chunks/build/Table-BET-DOtX.mjs +1 -1
- package/.output/server/chunks/build/{TestCaseHistoryChart-BgI6P_zS.mjs → TestCaseHistoryChart-Do7WK-ZY.mjs} +16 -17
- package/.output/server/chunks/build/TestCaseHistoryChart-Do7WK-ZY.mjs.map +1 -0
- package/.output/server/chunks/build/{TestStatusBar-DR8jM5th.mjs → TestStatusBar-BipoEOzd.mjs} +15 -6
- package/.output/server/chunks/build/TestStatusBar-BipoEOzd.mjs.map +1 -0
- package/.output/server/chunks/build/Tooltip-CK0ucuXC.mjs +1 -1
- package/.output/server/chunks/build/{_id_-rQhFY0fN.mjs → _id_-BLPB189b.mjs} +16 -16
- package/.output/server/chunks/build/{_id_-rQhFY0fN.mjs.map → _id_-BLPB189b.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-kkexEH_q.mjs → _id_-BeGJOSxY.mjs} +16 -16
- package/.output/server/chunks/build/_id_-BeGJOSxY.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-B7Dw490u.mjs → _id_-CfLEW45H.mjs} +472 -304
- package/.output/server/chunks/build/_id_-CfLEW45H.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-DVPb1S93.mjs → _id_-DxHe32cW.mjs} +654 -453
- package/.output/server/chunks/build/_id_-DxHe32cW.mjs.map +1 -0
- package/.output/server/chunks/build/{about-C4AbyQ4q.mjs → about-FLAssVsA.mjs} +5 -5
- package/.output/server/chunks/build/about-FLAssVsA.mjs.map +1 -0
- package/.output/server/chunks/build/{account-B45bYZd1.mjs → account-Cvz6KkYu.mjs} +4 -4
- package/.output/server/chunks/build/account-Cvz6KkYu.mjs.map +1 -0
- package/.output/server/chunks/build/{ai-CgN9xXFf.mjs → ai-DR9Zry7B.mjs} +8 -8
- package/.output/server/chunks/build/{ai-CgN9xXFf.mjs.map → ai-DR9Zry7B.mjs.map} +1 -1
- package/.output/server/chunks/build/{analytics-BRkiUpwa.mjs → analytics-CCAQayhv.mjs} +9 -9
- package/.output/server/chunks/build/{analytics-BRkiUpwa.mjs.map → analytics-CCAQayhv.mjs.map} +1 -1
- package/.output/server/chunks/build/{auto-heal-BnTdKHQq.mjs → auto-heal-ngiiiVmq.mjs} +4 -4
- package/.output/server/chunks/build/auto-heal-ngiiiVmq.mjs.map +1 -0
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/{default-BGOdM_zA.mjs → default-wYpdMMvh.mjs} +15 -13
- package/.output/server/chunks/build/{default-BGOdM_zA.mjs.map → default-wYpdMMvh.mjs.map} +1 -1
- package/.output/server/chunks/build/{docs-D7R5eJ1Z.mjs → docs-BX9DoKOI.mjs} +4 -4
- package/.output/server/chunks/build/{docs-D7R5eJ1Z.mjs.map → docs-BX9DoKOI.mjs.map} +1 -1
- package/.output/server/chunks/build/{edit-BbL3k6c3.mjs → edit-DnyBC4uC.mjs} +7 -7
- package/.output/server/chunks/build/{edit-BbL3k6c3.mjs.map → edit-DnyBC4uC.mjs.map} +1 -1
- package/.output/server/chunks/build/fetch-DOcN2mHf.mjs +1 -1
- package/.output/server/chunks/build/{help-content-BK3jcgLw.mjs → help-content-3QLSe6Vd.mjs} +3 -3
- package/.output/server/chunks/build/help-content-3QLSe6Vd.mjs.map +1 -0
- package/.output/server/chunks/build/{import-ibAn_HB9.mjs → import-S-w3MXez.mjs} +8 -8
- package/.output/server/chunks/build/import-S-w3MXez.mjs.map +1 -0
- package/.output/server/chunks/build/{index-D5A0DW7Y.mjs → index-BFr7JW_2.mjs} +4 -4
- package/.output/server/chunks/build/index-BFr7JW_2.mjs.map +1 -0
- package/.output/server/chunks/build/{index-CqinXTVs.mjs → index-CdzYiYiu.mjs} +9 -9
- package/.output/server/chunks/build/{index-CqinXTVs.mjs.map → index-CdzYiYiu.mjs.map} +1 -1
- package/.output/server/chunks/build/{index-DreB_S-d.mjs → index-CgYJur1z.mjs} +31 -23
- package/.output/server/chunks/build/index-CgYJur1z.mjs.map +1 -0
- package/.output/server/chunks/build/{index-2GmuPNF-.mjs → index-CjnZ521K.mjs} +22 -4
- package/.output/server/chunks/build/index-CjnZ521K.mjs.map +1 -0
- package/.output/server/chunks/build/{index-KsRegEjT.mjs → index-xgA4P1ht.mjs} +3218 -4087
- package/.output/server/chunks/build/index-xgA4P1ht.mjs.map +1 -0
- package/.output/server/chunks/build/isValueEqualOrExist-D4lZ8uRY.mjs +1 -1
- package/.output/server/chunks/build/login-DueFS2RU.mjs +1 -1
- package/.output/server/chunks/build/{mcp-Dwj29-uG.mjs → mcp-DlZzubUF.mjs} +7 -7
- package/.output/server/chunks/build/mcp-DlZzubUF.mjs.map +1 -0
- package/.output/server/chunks/build/{notifications-CjAn5FJj.mjs → notifications-ByPVhyPX.mjs} +6 -6
- package/.output/server/chunks/build/notifications-ByPVhyPX.mjs.map +1 -0
- package/.output/server/chunks/build/{performance-DRzcu_c7.mjs → performance-Dc9FhaJr.mjs} +6 -6
- package/.output/server/chunks/build/performance-Dc9FhaJr.mjs.map +1 -0
- package/.output/server/chunks/build/{pr-feedback-DR60oGBf.mjs → pr-feedback-5kC_UmKG.mjs} +4 -4
- package/.output/server/chunks/build/pr-feedback-5kC_UmKG.mjs.map +1 -0
- package/.output/server/chunks/build/{selections-BjjolRZ9.mjs → selections-C6J9mI0s.mjs} +9 -9
- package/.output/server/chunks/build/selections-C6J9mI0s.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +33 -33
- package/.output/server/chunks/build/{settings-B3NWV9tu.mjs → settings-DcCAv0U4.mjs} +17 -81
- package/.output/server/chunks/build/settings-DcCAv0U4.mjs.map +1 -0
- package/.output/server/chunks/build/{settings-metadata-DwJk8uSt.mjs → settings-metadata-B684YiW4.mjs} +2 -2
- package/.output/server/chunks/build/settings-metadata-B684YiW4.mjs.map +1 -0
- package/.output/server/chunks/build/{setup-BlgFTixN.mjs → setup-Cf3Mzf-W.mjs} +8 -8
- package/.output/server/chunks/build/{setup-BlgFTixN.mjs.map → setup-Cf3Mzf-W.mjs.map} +1 -1
- package/.output/server/chunks/build/{storage-C1O-FC0U.mjs → storage-B4VySiv3.mjs} +7 -7
- package/.output/server/chunks/build/storage-B4VySiv3.mjs.map +1 -0
- package/.output/server/chunks/build/{tags-dsvYrnii.mjs → tags-BvWdsd1F.mjs} +25 -11
- package/.output/server/chunks/build/tags-BvWdsd1F.mjs.map +1 -0
- package/.output/server/chunks/build/{test-cases-CFiOuyK6.mjs → test-cases-LIIu7dMu.mjs} +11 -11
- package/.output/server/chunks/build/test-cases-LIIu7dMu.mjs.map +1 -0
- package/.output/server/chunks/build/{test-functions-CbmBi6az.mjs → test-functions-Dv8nezrM.mjs} +8 -8
- package/.output/server/chunks/build/test-functions-Dv8nezrM.mjs.map +1 -0
- package/.output/server/chunks/build/{useCopyRich-DPKZKHvZ.mjs → useCopyRich-DRRKIts2.mjs} +17 -14
- package/.output/server/chunks/build/{useCopyRich-DPKZKHvZ.mjs.map → useCopyRich-DRRKIts2.mjs.map} +1 -1
- package/.output/server/chunks/build/{useDesktopDownload-R_RWSgUV.mjs → useDesktopDownload-CK-5nATq.mjs} +2 -2
- package/.output/server/chunks/build/useDesktopDownload-CK-5nATq.mjs.map +1 -0
- package/.output/server/chunks/build/{useDesktopLocalRuns-BdELBy0Y.mjs → useDesktopLocalRuns-BHZic4MJ.mjs} +3 -3
- package/.output/server/chunks/build/useDesktopLocalRuns-BHZic4MJ.mjs.map +1 -0
- package/.output/server/chunks/build/{useDesktopProjectLink-IUN7SIP2.mjs → useDesktopProjectLink-CqBvnXwG.mjs} +2 -2
- package/.output/server/chunks/build/useDesktopProjectLink-CqBvnXwG.mjs.map +1 -0
- package/.output/server/chunks/build/useOpenInIde-DS4YXevu.mjs +1 -1
- package/.output/server/chunks/build/{useSettingsNav-Dg87E7kY.mjs → useSettingsNav-dyHz-2Bz.mjs} +2 -2
- package/.output/server/chunks/build/useSettingsNav-dyHz-2Bz.mjs.map +1 -0
- package/.output/server/chunks/build/{users-DgsoiXxQ.mjs → users-CluLB8DL.mjs} +31 -13
- package/.output/server/chunks/build/users-CluLB8DL.mjs.map +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +839 -680
- package/.output/server/chunks/routes/__piwi/session.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs +5 -2
- package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs +42 -26
- package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/recent.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/submit.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/upload.post.mjs +1 -1
- package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs +1 -0
- package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/traces/check.post.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id/invite.post.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id/projects.get.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id/projects.put.mjs +1 -1
- package/.output/server/chunks/routes/mcp.post.mjs +1 -1
- package/.output/server/chunks/routes/renderer.mjs +1 -1
- package/.output/server/chunks/routes/share/_token_.get.mjs +1 -1
- package/.output/server/index.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/package.json +1 -1
- package/.output/public/_nuxt/3HmftUHT.js +0 -1
- package/.output/public/_nuxt/B7zo6PK8.js +0 -1
- package/.output/public/_nuxt/BO4sfkbw.js +0 -1
- package/.output/public/_nuxt/BdyXNI2_.js +0 -1
- package/.output/public/_nuxt/Bg63qh8W.js +0 -1
- package/.output/public/_nuxt/BnhWd06P.js +0 -1
- package/.output/public/_nuxt/CHWW6xiX.js +0 -1
- package/.output/public/_nuxt/CIPvUOic.js +0 -2
- package/.output/public/_nuxt/CVcFbORW.js +0 -9
- package/.output/public/_nuxt/CZlz5y13.js +0 -1
- package/.output/public/_nuxt/CkV_UG8j.js +0 -1
- package/.output/public/_nuxt/D0TpBpCc.js +0 -1
- package/.output/public/_nuxt/D3LyIeiJ.js +0 -1
- package/.output/public/_nuxt/DcccidY5.js +0 -4
- package/.output/public/_nuxt/DqkCbAzo.js +0 -1
- package/.output/public/_nuxt/DwH4SIZE.js +0 -1
- package/.output/public/_nuxt/DwZS0oRm.js +0 -2
- package/.output/public/_nuxt/DxPZIuWy.js +0 -1
- package/.output/public/_nuxt/Dyb1FouX.js +0 -1
- package/.output/public/_nuxt/builds/meta/a5fb24cc-65e3-4e55-aa12-038fe2de4754.json +0 -1
- package/.output/public/_nuxt/entry.BFe0Ua9k.css +0 -1
- package/.output/public/_nuxt/i7znB42v.js +0 -1
- package/.output/server/chunks/build/BreadcrumbNav-DBnGj5Jq.mjs.map +0 -1
- package/.output/server/chunks/build/BrowserBadge-vFb1ERG_.mjs.map +0 -1
- package/.output/server/chunks/build/ChartMarkerLines-BXqUpUcs.mjs.map +0 -1
- package/.output/server/chunks/build/ChartTooltip-DoF6Smyc.mjs.map +0 -1
- package/.output/server/chunks/build/CodeBlock-CmvKHaq8.mjs.map +0 -1
- package/.output/server/chunks/build/DataLocationCard-ChV02QJj.mjs.map +0 -1
- package/.output/server/chunks/build/DiagnosisPanel-C_ndadzP.mjs.map +0 -1
- package/.output/server/chunks/build/DiagnosisResult-GAjo6Lt3.mjs.map +0 -1
- package/.output/server/chunks/build/DurationValue-CObiBDnH.mjs.map +0 -1
- package/.output/server/chunks/build/FeatureUnavailable-Buoyoqx1.mjs.map +0 -1
- package/.output/server/chunks/build/GetStartedWizard-tL3U_qM1.mjs.map +0 -1
- package/.output/server/chunks/build/HelpHint-C96TlqxY.mjs.map +0 -1
- package/.output/server/chunks/build/MetaStripGroup-Cp2WCQf7.mjs.map +0 -1
- package/.output/server/chunks/build/NavbarActions-VCHW0u67.mjs.map +0 -1
- package/.output/server/chunks/build/ProjectTestCasesTable-saHYJoyQ.mjs.map +0 -1
- package/.output/server/chunks/build/RunReports-CKYYRC59.mjs.map +0 -1
- package/.output/server/chunks/build/RunStatusBadge-CWhmAmKb.mjs.map +0 -1
- package/.output/server/chunks/build/SectionCard-BB1O3uXd.mjs.map +0 -1
- package/.output/server/chunks/build/SettingsField-CEasBHu3.mjs.map +0 -1
- package/.output/server/chunks/build/TestCaseHistoryChart-BgI6P_zS.mjs.map +0 -1
- package/.output/server/chunks/build/TestStatusBar-DR8jM5th.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-B7Dw490u.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-DVPb1S93.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-kkexEH_q.mjs.map +0 -1
- package/.output/server/chunks/build/about-C4AbyQ4q.mjs.map +0 -1
- package/.output/server/chunks/build/account-B45bYZd1.mjs.map +0 -1
- package/.output/server/chunks/build/auto-heal-BnTdKHQq.mjs.map +0 -1
- package/.output/server/chunks/build/help-content-BK3jcgLw.mjs.map +0 -1
- package/.output/server/chunks/build/import-ibAn_HB9.mjs.map +0 -1
- package/.output/server/chunks/build/index-2GmuPNF-.mjs.map +0 -1
- package/.output/server/chunks/build/index-D5A0DW7Y.mjs.map +0 -1
- package/.output/server/chunks/build/index-DreB_S-d.mjs.map +0 -1
- package/.output/server/chunks/build/index-KsRegEjT.mjs.map +0 -1
- package/.output/server/chunks/build/mcp-Dwj29-uG.mjs.map +0 -1
- package/.output/server/chunks/build/notifications-CjAn5FJj.mjs.map +0 -1
- package/.output/server/chunks/build/performance-DRzcu_c7.mjs.map +0 -1
- package/.output/server/chunks/build/pr-feedback-DR60oGBf.mjs.map +0 -1
- package/.output/server/chunks/build/selections-BjjolRZ9.mjs.map +0 -1
- package/.output/server/chunks/build/settings-B3NWV9tu.mjs.map +0 -1
- package/.output/server/chunks/build/settings-metadata-DwJk8uSt.mjs.map +0 -1
- package/.output/server/chunks/build/storage-C1O-FC0U.mjs.map +0 -1
- package/.output/server/chunks/build/tags-dsvYrnii.mjs.map +0 -1
- package/.output/server/chunks/build/test-cases-CFiOuyK6.mjs.map +0 -1
- package/.output/server/chunks/build/test-functions-CbmBi6az.mjs.map +0 -1
- package/.output/server/chunks/build/useDesktopDownload-R_RWSgUV.mjs.map +0 -1
- package/.output/server/chunks/build/useDesktopLocalRuns-BdELBy0Y.mjs.map +0 -1
- package/.output/server/chunks/build/useDesktopProjectLink-IUN7SIP2.mjs.map +0 -1
- package/.output/server/chunks/build/useSettingsNav-Dg87E7kY.mjs.map +0 -1
- package/.output/server/chunks/build/users-DgsoiXxQ.mjs.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{_ as cs}from"./BuMX-4RF.js";import{d as ge,o as s,e as v,f as o,h as i,_ as _e,i as ee,k as w,t as l,c as a,l as f,H as Be,g as n,A as ds,G as ht,b as t,z as ie,j as Fe,F as K,B as yt,q as Dt,C as kt,am as ms,P as Ct,x as Le,an as St,m as Re,E as bt,R as fs,D as je,v as I,r as H,M as Oe,a1 as $e,n as at,K as mt,a as de,ad as wt,ao as It,I as ps,L as gs,u as Ye,w as qe,aj as xs,p as vs,s as hs}from"./1QWBzxLM.js";import{_ as ys}from"./OMI0cmZ0.js";import{_ as ks}from"./ChuJzPWz.js";import{_ as bs,a as ws}from"./BS91Og__.js";import{_ as _s,a as $s,b as Ts,c as Rs}from"./CQLkowA3.js";import{_ as Cs}from"./DvYU87_a.js";import{_ as Ze}from"./Bc6Zr-Xn.js";import{_ as Me}from"./B82vqOZe.js";import{_ as Nt}from"./Dx41arC8.js";import{_ as Ss}from"./BnUQ3i5l.js";import{_ as Is}from"./DbtjJCra.js";import{_ as zs}from"./D-F0Rhjj.js";import{C as Pt,u as jt,p as Bt,a as _t,f as Fs,i as Mt,n as Ds,D as pt,E as gt,l as Xe,F as At,x as Ge,k as xt,o as Ns,G as Ps,d as js,q as Bs,c as Ms,j as pe}from"./D4mPjHHR.js";import{f as nt}from"./D-c8ZSws.js";import{_ as As}from"./D4v7lLm3.js";import{_ as $t}from"./AbnDY6Zr.js";import{_ as Us}from"./CN1M6i4K.js";import{b as Ut}from"./BOA-I6S9.js";import{a as Tt,u as Je}from"./CU_2YLhT.js";import{_ as Ls}from"./e-GZmCeP.js";import{_ as Lt}from"./BQUhoGCh.js";import{_ as Es}from"./DcOlL-oi.js";import{_ as Et}from"./DYdwHaco.js";import{_ as Os}from"./BFLa9ZEP.js";import{_ as Ot}from"./Lz9MmwKY.js";import{_ as Ke}from"./Dn_-RkxP.js";import{u as Ks}from"./B6j5Ornu.js";import{_ as Ws}from"./DVo_e_uj.js";import{_ as Kt}from"./Bx_lfKHl.js";import{_ as Vs}from"./bmAf49LT.js";import{_ as Rt}from"./uspGXbik.js";import{_ as Wt}from"./BuXJR5tn.js";import{_ as Hs}from"./ChOtLYkd.js";import{_ as Vt}from"./CtQMagSz.js";import{_ as Gs}from"./UAmyrRCI.js";import{_ as Xs}from"./DvSHenmZ.js";import{_ as qs}from"./B-1zt4pp.js";import{u as Js}from"./DamZHy5M.js";import{_ as Ys}from"./C4UKyPQn.js";import{u as Zs,s as Qs}from"./_okd7MfH.js";import"./CiCUZGFZ.js";import"./DMqAUHFN.js";import"./BTGAvMoT.js";import"./BIlohx1E.js";import"./CHz7LJIX.js";import"./CEPU6VkU.js";import"./B4lvHjBe.js";import"./Bl0xzETD.js";import"./CapSEET7.js";import"./DpM8IgHL.js";import"./DBXXb0w8.js";import"./Bp1WeQ0_.js";import"./BF5qB58w.js";import"./Bp31ZRcA.js";import"./DoDo3VF2.js";import"./D_ZAGxCQ.js";import"./Dpwj_1H5.js";import"./VBTxfbqU.js";import"./B1iYmAt_.js";import"./DJKHXfNS.js";const en={key:1,class:"shrink-0 inline-flex items-center gap-1 rounded-full bg-emerald-500/10 px-2 py-0.5 text-xs text-emerald-600 dark:text-emerald-400"},tn=ge({__name:"RunFreshnessPill",props:{latestRunId:{},currentRunId:{},isActive:{type:Boolean}},setup(e){return(g,k)=>{const T=_e,S=Be;return e.latestRunId&&e.latestRunId!==e.currentRunId?(s(),v(S,{key:0,to:`/test-runs/${e.latestRunId}`,"aria-label":e.isActive?`Go to running run #${e.latestRunId}`:`Go to latest run #${e.latestRunId}`,class:"shrink-0 inline-flex items-center gap-1 rounded-full bg-blue-500/10 hover:bg-blue-500/20 transition-colors px-2 py-0.5 text-xs text-blue-500"},{default:o(()=>[i(T,{name:"i-lucide-circle-play",class:ee(["size-3.5",{"animate-pulse":e.isActive}])},null,8,["class"]),w(" "+l(e.isActive?"Running":"Newer run")+" → #"+l(e.latestRunId),1)]),_:1},8,["to","aria-label"])):e.latestRunId?(s(),a("span",en,[i(T,{name:"i-lucide-check-circle-2",class:"size-3.5"}),k[0]||(k[0]=w(" Latest run ",-1))])):f("",!0)}}}),sn=Object.assign(tn,{__name:"RunFreshnessPill"}),nn={key:0,class:"inline-flex items-center gap-2 text-info"},an={type:"button",class:"inline-flex items-center gap-1.5 rounded-md px-1.5 py-0.5 -my-0.5 -ml-1.5 text-muted hover:text-default hover:bg-elevated/60 transition-colors cursor-pointer",title:"Stored reports & artifacts"},ln={class:"tabular-nums whitespace-nowrap"},on={class:"text-dimmed"},rn={class:"p-3 w-72 space-y-2"},un={class:"text-xs font-medium text-muted inline-flex items-center gap-1"},cn={class:"text-xs tabular-nums text-dimmed shrink-0"},dn={key:0,class:"flex items-center justify-between gap-2 text-sm border-t border-default pt-2"},mn={class:"truncate"},fn={class:"text-xs tabular-nums text-dimmed shrink-0"},pn=ge({__name:"RunStorageChip",props:{storageStats:{},reports:{},finalizing:{type:Boolean}},setup(e){const g=yt();return(k,T)=>{const S=_e,c=ds,R=Me,r=Fe,x=ht;return e.finalizing?(s(),a("div",nn,[i(S,{name:"i-lucide-upload",class:"size-3.5 shrink-0 animate-pulse"}),T[0]||(T[0]=n("span",{class:"text-xs font-medium whitespace-nowrap"},"Uploading reports & traces…",-1)),i(c,{value:null,size:"sm",color:"info",class:"w-24 rounded-full animate-pulse"})])):e.storageStats?.totalFiles?(s(),v(x,{key:1},{content:o(()=>[n("div",rn,[n("p",un,[T[1]||(T[1]=w(" Stored artifacts ",-1)),i(R,{topic:"run.reports"})]),(s(!0),a(K,null,ie(e.reports,M=>(s(),a("div",{key:`${M.type}-${M.path}`,class:"flex items-center justify-between gap-2 min-w-0"},[i(r,{href:("fileApiUrl"in k?k.fileApiUrl:t(jt))(M.path,null,t(g).app?.baseURL),icon:("reportIcon"in k?k.reportIcon:t(Pt))(M.type),target:"_blank",size:"xs",variant:"outline",class:"min-w-0",ui:{label:"truncate"}},{default:o(()=>[w(l(M.label),1)]),_:2},1032,["href","icon"]),n("span",cn,l(("formatBytes"in k?k.formatBytes:t(nt))(M.size)),1)]))),128)),e.storageStats.testCaseFilesCount>0?(s(),a("div",dn,[n("span",mn,"Test files ("+l(e.storageStats.testCaseFilesCount)+")",1),n("span",fn,l(("formatBytes"in k?k.formatBytes:t(nt))(e.storageStats.testCaseFilesSize)),1)])):f("",!0)])]),default:o(()=>[n("button",an,[i(S,{name:"i-lucide-database",class:"size-3.5 text-dimmed shrink-0"}),n("span",ln,[w(l(("formatBytes"in k?k.formatBytes:t(nt))(e.storageStats.totalSize))+" ",1),n("span",on,"· "+l(e.storageStats.totalFiles)+" file"+l(e.storageStats.totalFiles===1?"":"s"),1)]),i(S,{name:"i-lucide-chevron-down",class:"size-3 text-dimmed shrink-0"})])]),_:1})):f("",!0)}}}),gn=Object.assign(pn,{__name:"RunStorageChip"}),xn={class:"flex items-center gap-3 flex-1 min-w-0 justify-between"},vn={class:"flex items-center gap-3 min-w-0"},hn={class:"text-sm font-semibold truncate flex items-center gap-1"},yn=["onKeydown"],kn={class:"flex items-center gap-3 shrink-0 max-sm:hidden"},bn={class:"text-xs text-zinc-500 tabular-nums whitespace-nowrap"},wn={class:"text-zinc-700 dark:text-zinc-300"},_n={class:"text-xs text-emerald-600 dark:text-emerald-400 tabular-nums whitespace-nowrap"},$n={class:"text-xs text-rose-600 dark:text-rose-400 tabular-nums whitespace-nowrap"},Tn={class:"text-xs text-zinc-500 tabular-nums whitespace-nowrap"},Rn={class:"text-xs text-amber-600 dark:text-amber-400 tabular-nums whitespace-nowrap",title:"Tests that never ran (maxFailures cutoff or a serial-group failure)"},Cn={class:"text-xs text-orange-600 dark:text-orange-400 tabular-nums whitespace-nowrap"},Sn={class:"@container"},In={class:"space-y-3"},zn={class:"flex items-start justify-between gap-x-3 gap-y-2 flex-wrap pr-8"},Fn={class:"min-w-0 flex-1 basis-64"},Dn={class:"flex items-center gap-2 flex-wrap"},Nn={class:"text-base font-bold shrink-0 flex items-center gap-1"},Pn={class:"mt-1 text-xs text-muted flex items-center gap-1.5 flex-wrap"},jn=["title"],Bn={class:"flex items-center gap-1.5 shrink-0"},Mn={class:"p-2 space-y-1 min-w-32"},An=["onClick"],Un={class:"hidden @2xl:inline"},Ln=["aria-pressed","disabled"],En={class:"text-xl font-bold mt-0.5"},On={class:"relative"},Kn=["aria-pressed","disabled"],Wn={class:"text-xl font-bold mt-0.5 text-emerald-600 dark:text-emerald-400"},Vn=["aria-pressed"],Hn=["aria-pressed","disabled"],Gn={class:"text-xl font-bold mt-0.5 text-rose-600 dark:text-rose-400"},Xn=["aria-pressed","disabled"],qn={class:"text-xl font-bold mt-0.5 text-zinc-600 dark:text-zinc-400"},Jn=["aria-pressed","disabled"],Yn={class:"text-xl font-bold mt-0.5 text-amber-600 dark:text-amber-400"},Zn={key:0,class:"flex items-center gap-x-4 gap-y-1.5 flex-wrap"},Qn={class:"flex-1 basis-60 min-w-44 max-w-xl"},ea={class:"flex items-center flex-wrap gap-x-3 gap-y-1 text-xs shrink-0"},ta={class:"flex items-center gap-1"},sa={key:0,class:"flex items-center gap-1"},na={key:1,class:"flex items-center gap-1"},aa={key:2,class:"flex items-center gap-1",title:"Wasted in fixed waits"},la={key:0,class:"rounded-full border border-default px-2 py-0.5 text-xs bg-elevated/60"},oa={key:1},ia=["href"],ra={key:1},ua={class:"text-muted"},ca={key:0,class:"font-medium"},da=["title"],ma={key:2,class:"text-muted"},fa=["title"],pa={class:"text-muted whitespace-nowrap"},ga={class:"text-muted"},xa={key:0,class:"mt-2"},va={class:"bg-zinc-50 dark:bg-zinc-900 p-2.5 rounded text-xs font-mono overflow-x-auto max-h-48 overflow-y-auto"},ha={class:"m-0"},ya=ge({__name:"RunSummary",props:{testRun:{},displayProgress:{},allReports:{},showCustomData:{type:Boolean},finalizing:{type:Boolean},activeStatuses:{},totalWastedTime:{}},emits:["update:showCustomData","toggle-status","label-updated"],setup(e,{emit:g}){const k=e,T=g,S=Dt(),c=yt(),R=I(()=>k.testRun?.storageStats),r=I(()=>k.testRun?.metadata?.ci),x=I(()=>k.testRun?.metadata?.scm),M=I(()=>k.testRun?.metadata?.tags),U=I(()=>k.testRun?.metadata?.customData),B=I(()=>!!(r.value||k.testRun?.environment)),F=I(()=>!!(k.testRun?.playwrightVersion||k.testRun?.reporterVersion)),j=I(()=>!!(R.value?.totalFiles||k.finalizing)),G=I(()=>k.allReports[0]??null),{copy:Y,copied:b}=Tt(),z=H("file-line"),N=H(!1),m=H(!1);kt(()=>{m.value=!!ms()});const u=I(()=>k.testRun?.testCases?k.testRun.testCases.filter(L=>L.status==="failed"||L.status==="timedout").map(L=>({filePath:(L.filePath||L.location?.split(":")[0])??"",title:L.title,line:L.location&&parseInt(L.location.split(":")[1]??"",10)||null,projectName:L.browser?.projectName||null})):[]);function h(){return Ut(u.value,{mode:z.value})}async function y(){const L=h();L&&(N.value=!0,await Y(L,{toast:"Retry command copied"}),setTimeout(()=>{N.value=!1},2e3))}const X=I(()=>N.value?"Copied!":Mt(h()));function W(){const L=k.testRun;if(!L)return"";const C=L.status==="passed"?"✅":L.status==="failed"?"❌":L.status==="running"?"🔄":"⚠️",ve=L.label?` — ${L.label}`:"",ue=L.project?.label??L.project?.name??"",te=L.totalTests??0,$=L.passedTests??0,Z=L.failedTests??0,ae=L.skippedTests??0,se=L.didNotRunTests??0,p=L.flakyTests??0,P=Fs(L.duration),J=p>0?` · ${p} flaky`:"",ce=se>0?` · ${se} didn't run`:"";return[`*Run #${L.id}*${ve}`,`Status: ${C} ${L.status} | Project: ${ue}`,`Tests: ${te} total · ${$} passed · ${Z} failed · ${ae} skipped${ce}${J}`,`Duration: ${P}`].join(`
|
|
2
|
+
`)}const _=H(""),O=H(!1),oe=H(!1);let Q=!1;const ne=H(null);function me(){Q=!1,_.value=k.testRun?.label??"",O.value=!0,Oe(()=>ne.value?.focus())}async function xe(){if(oe.value)return;if(Q){Q=!1;return}const L=k.testRun;if(L){oe.value=!0;try{await $fetch(`/api/test-runs/${L.id}`,{method:"PATCH",body:{label:_.value||null}}),O.value=!1,T("label-updated")}catch(C){const ve=C&&typeof C=="object"&&"data"in C?C.data?.message:"Failed to save label";S.add({title:"Error",description:ve||"Failed to save label",color:"error"})}finally{oe.value=!1}}}function A(){Q=!0,O.value=!1}function q(L){L.key==="Enter"?xe():L.key==="Escape"&&A()}return(L,C)=>{const ve=_s,ue=_e,te=Re,$=Cs,Z=Ze,ae=Me,se=Nt,p=Be,P=Ss,J=bt,ce=Fe,Ce=ht,Te=Is,fe=zs,ye=Ts,De=gn,be=As,we=$s,Ne=$t,Ae=Us;return s(),v(Ae,{"storage-key":"test-run"},{folded:o(()=>[n("div",xn,[n("div",vn,[i(ve,{status:e.testRun?.status??"",size:"sm"},null,8,["status"]),n("span",hn,[w(" Run #"+l(e.testRun?.id)+" ",1),t(O)?(s(),a(K,{key:0},[Ct(n("input",{ref_key:"labelInputRef",ref:ne,"onUpdate:modelValue":C[0]||(C[0]=le=>Le(_)?_.value=le:null),type:"text",placeholder:"Add a label...",class:"inline-block w-40 text-sm font-normal border-b border-dashed border-zinc-400 bg-transparent outline-none focus:border-primary px-0.5 py-0",onKeydown:q,onBlur:xe},null,544),[[St,t(_)]]),t(oe)?(s(),v(ue,{key:0,name:"i-lucide-loader-circle",class:"size-3.5 text-zinc-400 animate-spin shrink-0"})):f("",!0)],64)):(s(),a(K,{key:1},[e.testRun?.label?(s(),a("span",{key:0,role:"button",tabindex:"0",class:"font-normal text-zinc-500 ml-1.5 cursor-pointer hover:text-zinc-700 dark:hover:text-zinc-300 border-b border-dashed border-transparent hover:border-zinc-400",onClick:je(me,["stop"]),onKeydown:fs(je(me,["stop"]),["enter"])},"— "+l(e.testRun.label),41,yn)):(s(),a("button",{key:1,class:"text-xs text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-300 border-b border-dashed border-transparent hover:border-zinc-400 ml-1",title:"Add a label",onClick:me}," + label "))],64))]),e.testRun?.shardTotal&&e.testRun.shardTotal>1?(s(),v(te,{key:0,color:"neutral",variant:"soft",size:"sm",class:"shrink-0",title:`Shard ${e.testRun.shardsFinished??0}/${e.testRun.shardTotal}`},{default:o(()=>[i(ue,{name:"i-lucide-layout-grid",class:"size-3 mr-1"}),w(" "+l(e.testRun.shardsFinished??0)+"/"+l(e.testRun.shardTotal),1)]),_:1},8,["title"])):f("",!0)]),n("div",kn,[n("span",bn,[C[12]||(C[12]=w(" T: ",-1)),n("strong",wn,l(e.displayProgress?.totalTests??e.testRun?.totalTests??0),1)]),n("span",_n,[C[13]||(C[13]=w(" P: ",-1)),n("strong",null,l(e.displayProgress?.passedTests??e.testRun?.passedTests??0),1)]),n("span",$n,[C[14]||(C[14]=w(" F: ",-1)),n("strong",null,l(e.displayProgress?.failedTests??e.testRun?.failedTests??0),1)]),n("span",Tn,[C[15]||(C[15]=w(" S: ",-1)),n("strong",null,l(e.displayProgress?.skippedTests??e.testRun?.skippedTests??0),1)]),n("span",Rn,[C[16]||(C[16]=w(" DNR: ",-1)),n("strong",null,l(e.testRun?.didNotRunTests??0),1)]),n("span",Cn,[C[17]||(C[17]=w(" Fl: ",-1)),n("strong",null,l(e.testRun?.flakyTests??0),1)]),i($,{passed:e.displayProgress?.passedTests??e.testRun?.passedTests??0,failed:e.displayProgress?.failedTests??e.testRun?.failedTests??0,skipped:e.displayProgress?.skippedTests??e.testRun?.skippedTests??0,flaky:e.testRun?.flakyTests??0,"did-not-run":e.testRun?.didNotRunTests??0,total:e.displayProgress?.totalTests??e.testRun?.totalTests??0},null,8,["passed","failed","skipped","flaky","did-not-run","total"]),i(Z,{ms:e.testRun?.duration,class:"text-xs text-zinc-400"},null,8,["ms"])])])]),default:o(()=>[n("div",Sn,[i(Ne,{class:"shadow-xs",ui:{footer:"px-4 py-2.5 sm:px-4 bg-muted/30"}},{footer:o(()=>[i(we,null,{default:o(()=>[t(B)?(s(),v(ye,{key:0,label:"CI & environment",icon:"i-lucide-cloud",help:"run.ci-env"},{default:o(()=>[e.testRun?.environment?(s(),a("span",la,l(e.testRun.environment),1)):f("",!0),t(r)?.provider?(s(),a("span",oa,l(t(r).provider),1)):f("",!0),t(r)?.buildNumber||t(r)?.buildUrl?(s(),a(K,{key:2},[C[31]||(C[31]=n("span",{class:"text-dimmed"},"·",-1)),t(r)?.buildUrl?(s(),a("a",{key:0,href:t(r).buildUrl,target:"_blank",class:"text-primary hover:underline"},l(t(r)?.buildNumber?`Build #${t(r).buildNumber}`:"View build"),9,ia)):(s(),a("span",ra,"Build #"+l(t(r).buildNumber),1))],64)):f("",!0),t(r)?.workflow||t(r)?.jobName?(s(),a(K,{key:3},[C[32]||(C[32]=n("span",{class:"text-dimmed"},"·",-1)),n("span",ua,[t(r)?.workflow?(s(),a(K,{key:0},[w(l(t(r).workflow),1)],64)):f("",!0),t(r)?.workflow&&t(r)?.jobName?(s(),a(K,{key:1},[w(" · ")],64)):f("",!0),t(r)?.jobName?(s(),a(K,{key:2},[w(l(t(r).jobName),1)],64)):f("",!0)])],64)):f("",!0)]),_:1})):f("",!0),t(x)?(s(),v(ye,{key:1,label:"Source",icon:"i-lucide-git-branch"},{default:o(()=>[t(x).branch?(s(),a("span",ca,l(t(x).branch),1)):f("",!0),t(x).commit?(s(),a("code",{key:1,class:"text-xs font-mono bg-zinc-100 dark:bg-zinc-800 px-1 py-0.5 rounded",title:t(x).commit},l(t(x).commit.length>=8?t(x).commit.substring(0,8):t(x).commit),9,da)):f("",!0),t(x).author?(s(),a("span",ma,l(t(x).author),1)):f("",!0),t(x).commitMessage?(s(),a("span",{key:3,class:"text-xs text-dimmed truncate max-w-[40ch]",title:t(x).commitMessage},l(t(x).commitMessage),9,fa)):f("",!0)]),_:1})):f("",!0),t(F)?(s(),v(ye,{key:2,label:"Tooling versions",icon:"i-lucide-tag"},{default:o(()=>[n("span",pa,[e.testRun?.playwrightVersion?(s(),a(K,{key:0},[w("Playwright v"+l(e.testRun.playwrightVersion),1)],64)):f("",!0),e.testRun?.playwrightVersion&&e.testRun?.reporterVersion?(s(),a(K,{key:1},[w(" · ")],64)):f("",!0),e.testRun?.reporterVersion?(s(),a(K,{key:2},[w("Piwi v"+l(e.testRun.reporterVersion),1)],64)):f("",!0)])]),_:1})):f("",!0),t(M)?.length?(s(),v(ye,{key:3,label:"Tags",icon:"i-lucide-tags"},{default:o(()=>[(s(!0),a(K,null,ie(t(M),le=>(s(),v(te,{key:le,color:"neutral",variant:"soft",size:"sm"},{default:o(()=>[w(l(le),1)]),_:2},1024))),128))]),_:1})):f("",!0),e.testRun?.metadata?.relatedIssue?(s(),v(ye,{key:4,label:"Related issue",icon:"i-lucide-bookmark"},{default:o(()=>[n("span",ga,l(e.testRun.metadata.relatedIssue),1)]),_:1})):f("",!0),t(j)?(s(),v(ye,{key:5,label:"Storage"},{default:o(()=>[i(De,{"storage-stats":t(R),reports:e.allReports,finalizing:e.finalizing},null,8,["storage-stats","reports","finalizing"])]),_:1})):f("",!0),i(ye,{label:"Links",icon:"i-lucide-link",help:"run.metadata"},{default:o(()=>[i(be,{"entity-type":"test_run","entity-id":e.testRun.id,links:e.testRun.links??null,onUpdated:C[10]||(C[10]=le=>L.$emit("label-updated"))},null,8,["entity-id","links"])]),_:1}),t(U)?(s(),v(ye,{key:6,label:"Custom data"},{default:o(()=>[i(ce,{size:"xs",variant:"ghost",color:"neutral",icon:e.showCustomData?"i-lucide-chevron-up":"i-lucide-chevron-down",onClick:C[11]||(C[11]=le=>T("update:showCustomData",!e.showCustomData))},{default:o(()=>[...C[33]||(C[33]=[w(" Custom data ",-1)])]),_:1},8,["icon"])]),_:1})):f("",!0)]),_:1}),e.showCustomData&&t(U)?(s(),a("div",xa,[n("div",va,[n("pre",ha,l(JSON.stringify(t(U),null,2)),1)])])):f("",!0)]),default:o(()=>[n("div",In,[n("div",zn,[n("div",Fn,[n("div",Dn,[i(ve,{status:e.testRun?.status??""},null,8,["status"]),e.testRun?.status==="interrupted"||e.testRun?.shardTotal&&e.testRun.shardTotal>1?(s(),v(ae,{key:0,topic:"run.partial"})):f("",!0),n("h2",Nn,[w(" Run #"+l(e.testRun?.id)+" ",1),t(O)?(s(),a(K,{key:0},[Ct(n("input",{ref_key:"labelInputRef",ref:ne,"onUpdate:modelValue":C[1]||(C[1]=le=>Le(_)?_.value=le:null),type:"text",placeholder:"Add a label...",class:"inline-block w-48 text-sm font-normal border-b border-dashed border-zinc-400 bg-transparent outline-none focus:border-primary px-0.5 py-0",onKeydown:q,onBlur:xe},null,544),[[St,t(_)]]),t(oe)?(s(),v(ue,{key:0,name:"i-lucide-loader-circle",class:"size-3.5 text-zinc-400 animate-spin shrink-0"})):f("",!0)],64)):(s(),a(K,{key:1},[e.testRun?.label?(s(),a("span",{key:0,class:"font-normal text-zinc-500 ml-1.5 cursor-pointer hover:text-zinc-700 dark:hover:text-zinc-300 border-b border-dashed border-transparent hover:border-zinc-400",onClick:me},"— "+l(e.testRun.label),1)):(s(),a("button",{key:1,class:"text-xs text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-300 border-b border-dashed border-transparent hover:border-zinc-400 ml-1.5",title:"Add a label",onClick:me}," + label "))],64)),i(ae,{topic:"run.summary"})]),e.testRun?.shardTotal&&e.testRun.shardTotal>1?(s(),v(te,{key:1,color:"neutral",variant:"soft",size:"sm",class:"shrink-0",title:`Shard ${e.testRun.shardsFinished??0}/${e.testRun.shardTotal}`},{default:o(()=>[i(ue,{name:"i-lucide-layout-grid",class:"size-3 mr-1"}),w(" "+l(e.testRun.shardsFinished??0)+"/"+l(e.testRun.shardTotal),1)]),_:1},8,["title"])):f("",!0),e.testRun?.precedingMarker?(s(),v(P,{key:2,text:`This run started after: ${e.testRun.precedingMarker.label}`},{default:o(()=>[i(p,{to:`/projects/${e.testRun.projectId}?tab=timeline`,class:"shrink-0 inline-flex items-center gap-1"},{default:o(()=>[C[18]||(C[18]=n("span",{class:"text-xs text-muted"},"After",-1)),i(se,{marker:e.testRun.precedingMarker,size:"xs"},null,8,["marker"])]),_:1},8,["to"])]),_:1},8,["text"])):f("",!0)]),n("p",Pn,[i(J,null,{default:o(()=>[n("span",{title:("prettyDateFormat"in L?L.prettyDateFormat:t(Bt))(e.testRun?.startTime)}," Started "+l(("formatRelativeTime"in L?L.formatRelativeTime:t(_t))(e.testRun?.startTime)),9,jn)]),_:1}),e.testRun?.shardTotal&&e.testRun.shardTotal>1?(s(),a(K,{key:0},[C[19]||(C[19]=n("span",{class:"text-dimmed"},"·",-1)),i(ae,{topic:"run.partial"})],64)):f("",!0)])]),n("div",Bn,[i(P,{text:t(b)?"Copied!":"Copy run summary"},{default:o(()=>[i(ce,{size:"xs",variant:"ghost",color:"neutral",icon:t(b)?"i-lucide-check":"i-lucide-clipboard","aria-label":"Copy run summary",class:"text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-300",onClick:C[2]||(C[2]=le=>t(Y)(W(),{toast:"Run summary copied"}))},null,8,["icon"])]),_:1},8,["text"]),t(u).length>0&&!t(m)?(s(),v(Ce,{key:0},{content:o(()=>[n("div",Mn,[C[21]||(C[21]=n("p",{class:"text-xs font-medium text-zinc-500 px-2 py-1"},"Mode",-1)),(s(),a(K,null,ie(["file-line","grep","file"],le=>n("button",{key:le,class:ee(["w-full text-left px-2 py-1 text-sm rounded hover:bg-zinc-100 dark:hover:bg-zinc-800",t(z)===le?"bg-primary/10 text-primary":""]),onClick:Pe=>z.value=le},l(le==="file-line"?"File:line":le==="grep"?"Title (grep)":"File only"),11,An)),64))])]),default:o(()=>[i(ce,{size:"xs",color:"warning",variant:"subtle",icon:t(N)?"i-lucide-check":"i-lucide-clipboard",title:t(X),"aria-label":"Copy retry command",onClick:C[3]||(C[3]=le=>y())},{default:o(()=>[...C[20]||(C[20]=[n("span",{class:"hidden @2xl:inline"},"Copy retry command",-1)])]),_:1},8,["icon","title"])]),_:1})):f("",!0),t(u).length>0?(s(),v(Te,{key:1,"project-id":e.testRun?.project?.id,"project-label":e.testRun?.project?.label??e.testRun?.project?.name,cases:t(u)},null,8,["project-id","project-label","cases"])):f("",!0),t(G)?(s(),v(ce,{key:2,href:("fileApiUrl"in L?L.fileApiUrl:t(jt))(t(G).path,null,t(c).app?.baseURL),icon:("reportIcon"in L?L.reportIcon:t(Pt))(t(G).type),target:"_blank",size:"xs",color:"primary",variant:"outline","aria-label":t(G).label,title:t(G).size?`${t(G).label} · ${("formatBytes"in L?L.formatBytes:t(nt))(t(G).size)}`:t(G).label},{default:o(()=>[n("span",Un,l(t(G).label),1)]),_:1},8,["href","icon","aria-label","title"])):f("",!0)])]),i(fe,{"min-tile-width":"7.5rem"},{default:o(()=>[n("button",{class:ee(["rounded-lg p-3 text-left w-full transition-colors cursor-pointer disabled:cursor-not-allowed disabled:opacity-40",e.activeStatuses.length===0?"bg-accented ring-2 ring-zinc-400 dark:ring-zinc-500":"bg-elevated/60 hover:bg-elevated"]),"aria-pressed":e.activeStatuses.length===0,disabled:(e.displayProgress?.totalTests??e.testRun?.totalTests??0)===0,onClick:C[4]||(C[4]=le=>T("toggle-status","all"))},[C[22]||(C[22]=n("p",{class:"text-xs font-medium text-zinc-500 uppercase tracking-wider"},"Total",-1)),n("p",En,l(e.displayProgress?.totalTests??e.testRun?.totalTests??0),1)],10,Ln),n("div",On,[n("button",{class:ee(["rounded-lg p-3 text-left w-full h-full transition-colors cursor-pointer disabled:cursor-not-allowed disabled:opacity-40",e.activeStatuses.includes("passed")?"bg-emerald-100 dark:bg-emerald-900/30 ring-2 ring-emerald-400 dark:ring-emerald-600":"bg-emerald-50 dark:bg-emerald-900/20 hover:bg-emerald-100 dark:hover:bg-emerald-900/30"]),"aria-pressed":e.activeStatuses.includes("passed"),disabled:(e.displayProgress?.passedTests??e.testRun?.passedTests??0)===0,onClick:C[5]||(C[5]=le=>T("toggle-status","passed"))},[C[23]||(C[23]=n("p",{class:"text-xs font-medium text-emerald-700 dark:text-emerald-400 uppercase tracking-wider"}," Passed ",-1)),n("p",Wn,l(e.displayProgress?.passedTests??e.testRun?.passedTests??0),1)],10,Kn),(e.testRun?.flakyTests??0)>0?(s(),a("button",{key:0,class:ee(["absolute top-1.5 right-1.5 inline-flex items-center gap-0.5 rounded-full px-1.5 py-0.5 text-xs font-semibold leading-none tabular-nums transition-colors cursor-pointer",e.activeStatuses.includes("flaky")?"bg-orange-200 dark:bg-orange-800/60 text-orange-800 dark:text-orange-200 ring-2 ring-orange-400 dark:ring-orange-600":"bg-orange-100 dark:bg-orange-900/40 text-orange-700 dark:text-orange-300 hover:bg-orange-200 dark:hover:bg-orange-800/60"]),title:"Flaky — passed only after a retry (a subset of passed). Click to filter.","aria-pressed":e.activeStatuses.includes("flaky"),onClick:C[6]||(C[6]=le=>T("toggle-status","flaky"))},[i(ue,{name:"i-lucide-shuffle",class:"size-3"}),w(" "+l(e.testRun?.flakyTests??0),1)],10,Vn)):f("",!0)]),n("button",{class:ee(["rounded-lg p-3 text-left w-full transition-colors cursor-pointer disabled:cursor-not-allowed disabled:opacity-40",e.activeStatuses.includes("failed")?"bg-rose-100 dark:bg-rose-900/30 ring-2 ring-rose-400 dark:ring-rose-600":"bg-rose-50 dark:bg-rose-900/20 hover:bg-rose-100 dark:hover:bg-rose-900/30"]),"aria-pressed":e.activeStatuses.includes("failed"),disabled:(e.displayProgress?.failedTests??e.testRun?.failedTests??0)===0,onClick:C[7]||(C[7]=le=>T("toggle-status","failed"))},[C[24]||(C[24]=n("p",{class:"text-xs font-medium text-rose-700 dark:text-rose-400 uppercase tracking-wider"},"Failed",-1)),n("p",Gn,l(e.displayProgress?.failedTests??e.testRun?.failedTests??0),1)],10,Hn),n("button",{class:ee(["rounded-lg p-3 text-left w-full transition-colors cursor-pointer disabled:cursor-not-allowed disabled:opacity-40",e.activeStatuses.includes("skipped")?"bg-accented ring-2 ring-zinc-400 dark:ring-zinc-500":"bg-elevated/60 hover:bg-elevated"]),"aria-pressed":e.activeStatuses.includes("skipped"),disabled:(e.displayProgress?.skippedTests??e.testRun?.skippedTests??0)===0,onClick:C[8]||(C[8]=le=>T("toggle-status","skipped"))},[C[25]||(C[25]=n("p",{class:"text-xs font-medium text-zinc-500 uppercase tracking-wider"},"Skipped",-1)),n("p",qn,l(e.displayProgress?.skippedTests??e.testRun?.skippedTests??0),1)],10,Xn),n("button",{class:ee(["rounded-lg p-3 text-left w-full transition-colors cursor-pointer disabled:cursor-not-allowed disabled:opacity-40",e.activeStatuses.includes("didnotrun")?"bg-amber-100 dark:bg-amber-900/30 ring-2 ring-amber-400 dark:ring-amber-600":"bg-amber-50 dark:bg-amber-900/20 hover:bg-amber-100 dark:hover:bg-amber-900/30"]),title:"Tests that never ran (maxFailures cutoff or a serial-group failure)","aria-pressed":e.activeStatuses.includes("didnotrun"),disabled:(e.testRun?.didNotRunTests??0)===0,onClick:C[9]||(C[9]=le=>T("toggle-status","didnotrun"))},[C[26]||(C[26]=n("p",{class:"text-xs font-medium text-amber-700 dark:text-amber-400 uppercase tracking-wider"},"Didn't run",-1)),n("p",Yn,l(e.testRun?.didNotRunTests??0),1)],10,Jn)]),_:1}),e.testRun?(s(),a("div",Zn,[n("div",Qn,[i($,{passed:e.displayProgress?.passedTests??e.testRun?.passedTests??0,failed:e.displayProgress?.failedTests??e.testRun?.failedTests??0,skipped:e.displayProgress?.skippedTests??e.testRun?.skippedTests??0,flaky:e.testRun?.flakyTests??0,"did-not-run":e.testRun?.didNotRunTests??0,total:e.displayProgress?.totalTests??e.testRun?.totalTests??0},null,8,["passed","failed","skipped","flaky","did-not-run","total"])]),n("div",ea,[n("div",ta,[i(ue,{name:"i-lucide-clock",class:"size-3.5 text-zinc-400"}),C[27]||(C[27]=n("span",{class:"text-zinc-500"},"Duration",-1)),i(Z,{ms:e.testRun?.duration,class:"font-medium"},null,8,["ms"])]),e.testRun?.avgTestDuration?(s(),a("div",sa,[i(ue,{name:"i-lucide-gauge",class:"size-3.5 text-zinc-400"}),C[28]||(C[28]=n("span",{class:"text-zinc-500"},"Avg",-1)),i(Z,{ms:e.testRun.avgTestDuration,class:"font-medium"},null,8,["ms"])])):f("",!0),e.testRun?.p90TestDuration?(s(),a("div",na,[i(ue,{name:"i-lucide-arrow-up-right",class:"size-3.5 text-orange-500"}),C[29]||(C[29]=n("span",{class:"text-zinc-500"},"P90",-1)),i(Z,{ms:e.testRun.p90TestDuration,class:"font-medium text-orange-600 dark:text-orange-400","unit-class":"opacity-60"},null,8,["ms"])])):f("",!0),e.totalWastedTime&&e.totalWastedTime>0?(s(),a("div",aa,[i(ue,{name:"i-lucide-clock",class:"size-3.5 text-amber-500"}),C[30]||(C[30]=n("span",{class:"text-zinc-500"},"Wasted",-1)),i(Z,{ms:e.totalWastedTime,class:"font-medium text-amber-600 dark:text-amber-400","unit-class":"opacity-60"},null,8,["ms"])])):f("",!0)])])):f("",!0)])]),_:1})])]),_:1})}}}),ka=Object.assign(ya,{__name:"RunSummary"}),ba={key:0,class:"inline-flex items-center gap-1 flex-wrap"},wa=ge({__name:"TestRowBadges",props:{mode:{default:null},isNewRegression:{type:[Boolean,null],default:!1},isNewFlaky:{type:[Boolean,null],default:!1},annotations:{default:null},tags:{default:null},meta:{default:null},maxTags:{default:0}},setup(e){const g=e;function k(x){return x==="fixme"||x==="slow"?"warning":x==="fail"?"error":x==="skip"?"neutral":x==="tag"?"primary":"info"}function T(x){switch(x){case"fixme":return"i-lucide-wrench";case"skip":return"i-lucide-skip-forward";case"slow":return"i-lucide-timer";case"fail":return"i-lucide-x-circle";case"tag":return"i-lucide-tag";default:return null}}function S(x){return x.type==="tag"?x.description??x.type:x.type}const c=I(()=>(g.annotations??[]).filter(x=>!Ds(x.type))),R=I(()=>!!((g.tags?.length??0)>0||g.meta?.owner||g.meta?.priority||g.meta?.feature||g.meta?.link)),r=I(()=>g.mode==="parallel"||g.mode==="serial"||!!g.isNewRegression||!!g.isNewFlaky||c.value.length>0||R.value);return(x,M)=>{const U=Re,B=_e,F=Os;return t(r)?(s(),a("div",ba,[e.mode==="parallel"?(s(),v(U,{key:0,color:"success",variant:"soft",size:"xs",class:"shrink-0"},{default:o(()=>[...M[0]||(M[0]=[w("parallel",-1)])]),_:1})):f("",!0),e.mode==="serial"?(s(),v(U,{key:1,color:"warning",variant:"soft",size:"xs",class:"shrink-0"},{default:o(()=>[...M[1]||(M[1]=[w("serial",-1)])]),_:1})):f("",!0),e.isNewRegression?(s(),v(U,{key:2,color:"error",variant:"solid",size:"xs",class:"uppercase tracking-wider shrink-0",title:"First run in which this test failed"},{default:o(()=>[...M[2]||(M[2]=[w(" NEW ",-1)])]),_:1})):f("",!0),e.isNewFlaky?(s(),v(U,{key:3,color:"info",variant:"solid",size:"xs",class:"uppercase tracking-wider shrink-0",title:"First run in which this test was flaky"},{default:o(()=>[...M[3]||(M[3]=[w(" FLAKY ",-1)])]),_:1})):f("",!0),(s(!0),a(K,null,ie(t(c),j=>(s(),v(U,{key:`${j.type}:${j.description??""}`,color:k(j.type),variant:"soft",size:"xs",title:j.type!=="tag"?j.description??void 0:void 0,class:"shrink-0 gap-1"},{default:o(()=>[T(j.type)?(s(),v(B,{key:0,name:T(j.type),class:"size-2.5 shrink-0"},null,8,["name"])):f("",!0),w(" "+l(S(j)),1)]),_:2},1032,["color","title"]))),128)),i(F,{tags:e.tags,meta:e.meta,"max-tags":e.maxTags},null,8,["tags","meta","max-tags"])])):f("",!0)}}}),Ht=Object.assign(wa,{__name:"TestRowBadges"}),_a={class:"inline-flex items-center gap-1 min-w-0 text-xs text-info","data-testid":"live-step"},$a=["title"],Ta=ge({__name:"TestRowLiveStep",props:{step:{}},setup(e){return(g,k)=>{const T=_e;return s(),a("span",_a,[e.step.status?(s(),v(T,{key:0,name:e.step.status==="failed"?"i-lucide-x":"i-lucide-check",class:ee([e.step.status==="failed"?"text-rose-500":"text-emerald-500","size-3 shrink-0"])},null,8,["name","class"])):(s(),v(T,{key:1,name:"i-lucide-loader-circle",class:"size-3 shrink-0 animate-spin"})),n("span",{class:"truncate",title:e.step.title},l(e.step.title),9,$a)])}}}),Gt=Object.assign(Ta,{__name:"TestRowLiveStep"});function vt(e,g){if(!e||g.status!=="running"||g.workerIndex==null)return null;const k=e[g.workerIndex];return!k||k.parentTitle&&k.parentTitle!==g.title?null:k}const Ra={class:"rounded-lg border border-default bg-default text-sm flex flex-col flex-1 min-h-0"},Ca={class:"flex items-center justify-end px-3 py-1.5 border-b border-default bg-elevated shrink-0"},Sa=["disabled","title"],Ia={class:"overflow-y-auto flex-1 min-h-0"},za=["onClick"],Fa={key:1,class:"font-medium truncate min-w-0 text-muted"},Da={class:"flex items-center gap-1.5 sm:gap-2 shrink-0 tabular-nums"},Na=["title"],Pa={class:"max-sm:sr-only"},ja=["aria-label","title"],Ba=["href","title","onClick"],Ma={class:"truncate"},Aa={class:"flex items-center gap-1.5 sm:gap-2 shrink-0 ml-auto"},Ua={key:1,class:"text-xs text-info"},La={key:4,class:"inline-flex items-center gap-0.5 text-xs text-amber-600 dark:text-amber-400",title:"Wasted in fixed waits"},Ea={key:0,class:"text-center py-8 text-muted"},Oa=ge({__name:"TestCasesTree",props:{testCases:{},suites:{},hasFilter:{type:Boolean},highlightedCaseId:{},liveSteps:{},projectKey:{},projectName:{}},setup(e){const g=e,k=I(()=>{const b=new Map;for(const z of g.suites)b.set(`${z.filePath}${z.suitePath.join("")}`,z);return b});function T(b){return b==="timedOut"||b==="timedout"?"failed":b}const S=["failed","passed","skipped","didnotrun","running"];function c(b){return S.filter(z=>b[z]>0).map(z=>({key:z,count:b[z],label:Xe(z)}))}function R(b){const z={passed:0,failed:0,skipped:0,didnotrun:0,running:0,total:0};for(const N of b){const m=T(N.status);m in z&&z[m]++,z.total++}return z}const r=H(new Set),x=I(()=>r.value.size===0);function M(b){return g.hasFilter?!0:!r.value.has(b)}function U(b){if(g.hasFilter)return;const z=new Set(r.value);z.has(b)?z.delete(b):z.add(b),r.value=z}function B(){const b=[],z=new Map;for(const N of g.testCases){const m=N.filePath??"unknown";z.has(m)||z.set(m,[]),z.get(m).push(N)}for(const[N,m]of z){b.push(`file:${N}`);const u=new Set;for(const h of m){const y=h.suitePath??[];for(let X=1;X<=y.length;X++)u.add(`group:${N}${y.slice(0,X).join("")}`)}for(const h of u)b.push(h)}return b}function F(){r.value=new Set(B())}function j(){r.value=new Set}function G(b,z,N,m,u){const h=z.filter(W=>(W.suitePath??[]).length===m.length),y=z.filter(W=>(W.suitePath??[]).length>m.length),X=new Map;for(const W of y){const _=(W.suitePath??[])[m.length];X.has(_)||X.set(_,[]),X.get(_).push(W)}for(const[W,_]of X){const O=[...m,W],oe=`group:${N}${O.join("")}`,Q=k.value.get(`${N}${O.join("")}`);b.push({kind:"group",depth:u,key:oe,label:W,stats:R(_),mode:Q?.mode??"default",annotations:Q?.annotations??[]}),M(oe)&&G(b,_,N,O,u+1)}for(const W of h)b.push({kind:"test",depth:u,key:`test:${W.executionId}`,test:W})}const Y=I(()=>{const b=[],z=new Map;for(const N of g.testCases){const m=N.filePath??"unknown";z.has(m)||z.set(m,[]),z.get(m).push(N)}for(const[N,m]of[...z.entries()].sort(([u],[h])=>u.localeCompare(h))){const u=`file:${N}`;b.push({kind:"group",depth:0,key:u,label:N,stats:R(m)}),M(u)&&G(b,m,N,[],1)}return b});return(b,z)=>{const N=_e,m=Et,u=Ht,h=Ot,y=Gt,X=Ze,W=Re;return s(),a("div",Ra,[n("div",Ca,[n("button",{class:ee(["flex items-center gap-1 text-xs transition-colors",e.hasFilter?"text-muted cursor-not-allowed opacity-50":"text-muted hover:text-default"]),disabled:e.hasFilter,title:e.hasFilter?"Clear filters to collapse/expand":x.value?"Collapse all":"Expand all",onClick:z[0]||(z[0]=_=>x.value?F():j())},[i(N,{name:x.value?"i-lucide-fold-vertical":"i-lucide-unfold-vertical",class:"size-3.5"},null,8,["name"]),w(" "+l(x.value?"Collapse all":"Expand all"),1)],10,Sa)]),n("div",Ia,[(s(!0),a(K,null,ie(Y.value,_=>(s(),a(K,{key:_.key},[_.kind==="group"?(s(),a("div",{key:0,class:ee(["flex items-center gap-2 py-2 pr-4 border-b border-default last:border-b-0 select-none sticky",[_.depth===0?"bg-elevated":"bg-default",!e.hasFilter&&"cursor-pointer"]]),style:$e({paddingLeft:`${_.depth*20+12}px`,top:`${_.depth*36}px`,zIndex:20-_.depth}),onClick:O=>U(_.key)},[i(N,{name:M(_.key)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3.5 text-muted shrink-0"},null,8,["name"]),i(N,{name:_.depth===0?"i-lucide-file-code-2":"i-lucide-folder-open",class:ee(["size-4 shrink-0",_.depth===0?"text-blue-500":"text-amber-500"])},null,8,["name","class"]),_.depth===0?(s(),a("span",{key:0,class:"min-w-0",onClick:z[1]||(z[1]=je(()=>{},["stop"]))},[i(m,{"file-path":_.label,"project-key":e.projectKey,"project-name":e.projectName,class:"font-medium text-default"},null,8,["file-path","project-key","project-name"])])):(s(),a("span",Fa,l(_.label),1)),_.depth>0?(s(),v(u,{key:2,mode:_.mode,annotations:_.annotations,class:"shrink-0"},null,8,["mode","annotations"])):f("",!0),z[2]||(z[2]=n("div",{class:"flex-1"},null,-1)),n("div",Da,[(s(!0),a(K,null,ie(c(_.stats),O=>(s(),a("span",{key:O.key,class:ee(["text-xs inline-flex items-center gap-0.5",[("getStatusTextClass"in b?b.getStatusTextClass:t(pt))(O.key),O.key==="failed"?"font-medium":""]]),title:`${O.count} ${O.label}`},[i(N,{name:("getStatusIcon"in b?b.getStatusIcon:t(gt))(O.key),class:"size-3 shrink-0 sm:hidden"},null,8,["name"]),w(" "+l(O.count),1),n("span",Pa,l(O.label),1)],10,Na))),128))])],14,za)):(s(),a("div",{key:1,class:ee(["flex flex-wrap items-center gap-x-2 gap-y-1 pr-3 py-2 sm:py-1.5 border-b border-default last:border-b-0 hover:bg-zinc-50 dark:hover:bg-zinc-900/40 transition-colors",e.highlightedCaseId===_.test.executionId?"animate-pulse bg-yellow-100 dark:bg-yellow-900/30":""]),style:$e({paddingLeft:`${_.depth*20+12}px`})},[i(h,{browser:_.test.browser,size:"sm"},null,8,["browser"]),n("span",{class:"size-4 shrink-0",role:"img","aria-label":`Status: ${("formatStatusLabel"in b?b.formatStatusLabel:t(Xe))(_.test.status)}`,title:("formatStatusLabel"in b?b.formatStatusLabel:t(Xe))(_.test.status)},[i(N,{name:("getStatusIcon"in b?b.getStatusIcon:t(gt))(_.test.status),class:ee(["size-4",[("getStatusTextClass"in b?b.getStatusTextClass:t(pt))(_.test.status),("isStatusInFlight"in b?b.isStatusInFlight:t(At))(_.test.status)?"animate-spin":""]])},null,8,["name","class"])],8,ja),n("a",{href:`/test-run-cases/${_.test.executionId}`,class:"text-highlighted hover:text-primary hover:underline min-w-32 self-stretch flex items-center",title:_.test.title,onClick:je(O=>("navigateTo"in b?b.navigateTo:t(at))(`/test-run-cases/${_.test.executionId}`),["prevent"])},[n("span",Ma,l(_.test.title),1)],8,Ba),i(u,{"is-new-regression":!!_.test.isNewRegression,"is-new-flaky":!!_.test.isNewFlaky,annotations:_.test.testAnnotations,tags:_.test.tags,meta:_.test.testMeta,"max-tags":3,class:"shrink-0"},null,8,["is-new-regression","is-new-flaky","annotations","tags","meta"]),n("div",Aa,[_.test.status==="running"?(s(),a(K,{key:0},[("liveStepForCase"in b?b.liveStepForCase:t(vt))(e.liveSteps,_.test)?(s(),v(y,{key:0,step:("liveStepForCase"in b?b.liveStepForCase:t(vt))(e.liveSteps,_.test),class:"max-w-48 lg:max-w-96"},null,8,["step"])):(s(),a("span",Ua,"In progress..."))],64)):_.test.duration?(s(),v(X,{key:1,ms:_.test.duration,class:"text-xs text-muted"},null,8,["ms"])):f("",!0),_.test.workerIndex!=null?(s(),v(W,{key:2,color:"neutral",variant:"soft",size:"xs",class:"font-mono",title:`Worker ${_.test.workerIndex}`},{default:o(()=>[w(" w"+l(_.test.workerIndex),1)]),_:2},1032,["title"])):f("",!0),(_.test.retries??0)>0?(s(),v(W,{key:3,color:"warning",variant:"soft",size:"xs"},{default:o(()=>[w(l(_.test.retries)+"x ",1)]),_:2},1024)):f("",!0),_.test.wastedTimeMs?(s(),a("span",La,[i(N,{name:"i-lucide-hourglass",class:"size-3 shrink-0"}),i(X,{ms:_.test.wastedTimeMs,"unit-class":"opacity-60","no-title":""},null,8,["ms"])])):f("",!0)])],6))],64))),128)),Y.value.length===0?(s(),a("div",Ea,[i(N,{name:"i-lucide-search-x",class:"size-6 mx-auto mb-2 text-zinc-300 dark:text-zinc-600"}),z[3]||(z[3]=n("p",{class:"text-sm"},"No test cases match your filters.",-1))])):f("",!0)])])}}}),Ka=Object.assign(Oa,{__name:"TestCasesTree"}),Wa={class:"flex flex-col min-h-0"},Va={class:"flex items-center rounded-md border border-default overflow-hidden"},Ha=["aria-pressed"],Ga=["aria-pressed"],Xa={key:0,"aria-live":"polite",class:"text-sm text-zinc-500 tabular-nums inline-flex items-center gap-1"},qa={key:1,class:"text-sm text-zinc-500 tabular-nums inline-flex items-center gap-1"},Ja={class:"flex flex-wrap items-center gap-1"},Ya=["aria-pressed","onClick"],Za={key:2,class:"flex items-center gap-1 md:hidden"},Qa={key:0,class:"flex-1 min-h-0 md:overflow-x-auto overflow-y-hidden rounded-lg border border-default bg-default"},el=["role","aria-label","aria-rowcount"],tl=["aria-sort","aria-label","title","onClick"],sl={key:1,class:"truncate"},nl={class:"flex items-start gap-2"},al=["aria-label","title"],ll=["href","onClick"],ol={class:"truncate"},il=["title"],rl={class:"pl-6 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs text-muted"},ul={key:1,class:"text-info"},cl={key:4,class:"inline-flex items-center gap-0.5 text-amber-600 dark:text-amber-400",title:"Wasted in fixed waits"},dl={class:"px-3 py-2 flex items-center min-w-0",role:"cell"},ml={class:"px-3 py-2 min-w-0 space-y-0.5",role:"cell"},fl={class:"flex items-center gap-1.5 min-w-0"},pl=["href","title","onClick"],gl={class:"truncate"},xl=["title"],vl={key:2,class:"min-w-0"},hl={class:"px-3 py-2 flex items-center",role:"cell"},yl={class:"px-3 py-2 flex items-center whitespace-nowrap",role:"cell"},kl={key:0,class:"text-info text-xs"},bl={class:"px-3 py-2 flex items-center",role:"cell"},wl={class:"px-3 py-2 flex items-center tabular-nums",role:"cell"},_l={key:0,class:"px-3 py-2 flex items-center whitespace-nowrap",role:"cell"},$l={key:1,class:"text-zinc-400"},Tl={class:"flex-1 min-h-0 flex items-center justify-center py-10 text-sm text-zinc-500"},tt="natural",Rl=ge({__name:"TestCasesList",props:gs({testCases:{},suites:{},isLive:{type:Boolean},liveSteps:{},failureClusterFilter:{},clusterNames:{},projectKey:{},projectName:{}},{search:{default:""},searchModifiers:{},activeStatuses:{default:()=>[]},activeStatusesModifiers:{},browserFilter:{default:"all"},browserFilterModifiers:{}}),emits:["update:search","update:activeStatuses","update:browserFilter"],setup(e,{expose:g}){const{treeView:k,setTreeView:T}=Ks("test-cases"),S=H(!1),c=I(()=>k.value&&!S.value),R=e,r=mt(e,"search"),x=mt(e,"activeStatuses"),M=mt(e,"browserFilter"),U=H(!1),B=H(!1),F=[{label:"Passed",value:"passed",color:"green"},{label:"Failed",value:"failed",color:"red"},{label:"Skipped",value:"skipped",color:"gray"},{label:"Didn't run",value:"didnotrun",color:"amber"},{label:"Flaky",value:"flaky",color:"orange"}];function j(p){x.value.indexOf(p)>=0?x.value=x.value.filter(J=>J!==p):x.value=[...x.value,p]}const G=I(()=>{const p=new Set;for(const J of R.testCases){const ce=J.browser?.projectName;ce&&p.add(ce)}const P=[{label:"All browsers",value:"all"}];for(const J of[...p].sort())P.push({label:J,value:J});return P});function Y(p){return p.status==="didnotrun"?Ns(p.didNotRunReason):Xe(p.status)}function b(p){return vt(R.liveSteps,p)}function z(p){return R.clusterNames?.[p]??`Cluster #${p}`}function N(p,P){return P==="failed"?Ge(p.status):P==="flaky"?p.status==="passed"&&(p.retries??0)>0:p.status===P}const m=I(()=>{let p=R.testCases;if(R.failureClusterFilter!=null&&(p=p.filter(P=>P.failureClusterId===R.failureClusterFilter)),x.value.length>0&&(p=p.filter(P=>x.value.some(J=>N(P,J)))),M.value!=="all"&&(p=p.filter(P=>P.browser?.projectName===M.value)),r.value){const P=r.value.toLowerCase();p=p.filter(J=>J.title.toLowerCase().includes(P)||J.location&&J.location.toLowerCase().includes(P))}return U.value&&(p=p.filter(P=>P.isNewRegression)),B.value&&(p=p.filter(P=>P.isNewFlaky)),p}),u=H(null),h=H("asc");function y(p){u.value!==p?(u.value=p,h.value="asc"):h.value==="asc"?h.value="desc":u.value=null}function X(p){return u.value!==p?"i-lucide-chevrons-up-down":h.value==="asc"?"i-lucide-chevron-up":"i-lucide-chevron-down"}function W(p,P){switch(P){case"browser":return p.browser?.projectName??"";case"title":return p.title??"";case"status":return Ge(p.status??"")?"failed":p.status??"";case"duration":return p.duration??0;case"workerIndex":return p.workerIndex??-1;case"retries":return p.retries??0;case"wastedTimeMs":return p.wastedTimeMs??0;default:return""}}const _=I(()=>R.testCases.filter(p=>Ge(p.status)).length),O=I(()=>{const p=m.value,P=u.value;if(!P)return _.value===0?p:[...p].sort((ce,Ce)=>Ps(ce.status,Ce.status));const J=h.value==="asc"?1:-1;return[...p].sort((ce,Ce)=>{const Te=W(ce,P),fe=W(Ce,P);return typeof Te=="number"&&typeof fe=="number"?(Te-fe)*J:String(Te).localeCompare(String(fe))*J})}),oe=I(()=>R.testCases.some(p=>(p.wastedTimeMs??0)>0)),Q=I(()=>R.testCases.filter(p=>p.status!=="running").length),ne=I(()=>{const p=[{key:"browser",label:"Browser",sortable:!0,width:"3.25rem",align:"left",icon:"i-lucide-monitor"},{key:"title",label:"Test case",sortable:!0,width:"minmax(12rem, 3fr)",align:"left"},{key:"status",label:"Status",sortable:!0,width:"6rem",align:"left"},{key:"duration",label:"Duration",sortable:!0,width:"7rem",align:"left"},{key:"workerIndex",label:"Worker",sortable:!0,width:"6rem",align:"left"},{key:"retries",label:"Retries",sortable:!0,width:"6.5rem",align:"left"}];return oe.value&&p.push({key:"wastedTimeMs",label:"Wasted",sortable:!0,width:"6rem",align:"left"}),p}),me=I(()=>[{label:_.value>0?"Failures first":"Run order",value:tt},...ne.value.map(p=>({label:p.label,value:p.key}))]),xe=I({get:()=>u.value??tt,set:p=>{u.value=p===tt?null:p,p!==tt&&(h.value="asc")}}),A=I(()=>ne.value.map(p=>p.width).join(" ")),q=I(()=>oe.value?"47.5rem":"41.5rem"),L=I(()=>r.value!==""||x.value.length>0||M.value!=="all"),C=H(null),ve=H(!1),ue=H(null);function te(p){return p.scrollHeight-p.scrollTop-p.clientHeight<50}function $(p){const P=p.target;P&&(ve.value=!te(P))}de(()=>R.isLive,p=>{p||(ve.value=!1)}),de(()=>O.value.length,()=>{!R.isLive||ve.value||Oe(()=>C.value?.scrollToBottom())});function Z(p){S.value=!0,ue.value=p;const P=()=>{const J=O.value.findIndex(ce=>ce.executionId===p);J>=0&&C.value?.scrollToItem(J,{behavior:"smooth"})};Oe(()=>{C.value?P():setTimeout(P,60),setTimeout(()=>{ue.value=null},3e3)})}function ae(p){S.value=!1,T(p)}const se=H(!1);return kt(()=>{const p=window.matchMedia("(min-width: 768px)"),P=()=>{se.value=p.matches};P(),p.addEventListener("change",P),wt(()=>p.removeEventListener("change",P))}),g({scrollToCase:Z}),(p,P)=>{const J=_e,ce=Me,Ce=ps,Te=Ls,fe=Lt,ye=Fe,De=Es,be=Ka,we=Re,Ne=Be,Ae=Ot,le=Et,Pe=Ht,Se=Gt,Ie=Ze,rt=It("DynamicScrollerItem"),ut=It("DynamicScroller"),Qe=bt,We=Ke;return s(),a("div",Wa,[i(De,{class:"mb-4 shrink-0"},{start:o(()=>[n("div",Va,[n("button",{class:ee(["px-2 py-1 text-xs transition-colors",c.value?"text-muted hover:bg-elevated/60":"bg-primary text-white dark:text-white"]),title:"Flat list","aria-pressed":!c.value,onClick:P[0]||(P[0]=d=>ae(!1))},[i(J,{name:"i-lucide-list",class:"size-3.5"})],10,Ha),n("button",{class:ee(["px-2 py-1 text-xs transition-colors",c.value?"bg-primary text-white dark:text-white":"text-muted hover:bg-elevated/60"]),title:"Tree view","aria-pressed":c.value,onClick:P[1]||(P[1]=d=>ae(!0))},[i(J,{name:"i-lucide-folder-tree",class:"size-3.5"})],10,Ga)]),e.isLive?(s(),a("span",Xa,[w(l(Q.value)+" / "+l(e.testCases.length)+" completed ",1),i(ce,{topic:"run.live"})])):(s(),a("span",qa,[w(l(O.value.length)+l(O.value.length!==e.testCases.length?` / ${e.testCases.length}`:"")+" cases ",1),i(ce,{topic:"run.test-cases"})]))]),default:o(()=>[i(Ce,{modelValue:r.value,"onUpdate:modelValue":P[2]||(P[2]=d=>r.value=d),placeholder:"Search test cases...",icon:"i-lucide-search",size:"sm",class:"min-w-48 max-sm:flex-1"},null,8,["modelValue"]),n("div",Ja,[(s(),a(K,null,ie(F,d=>n("button",{key:d.value,class:ee(["inline-flex items-center gap-1.5 px-2 py-1 rounded-md text-xs font-medium transition-colors whitespace-nowrap",x.value.includes(d.value)?d.color==="green"?"bg-emerald-100 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-400":d.color==="red"?"bg-rose-100 text-rose-700 dark:bg-rose-900/30 dark:text-rose-400":d.color==="orange"?"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400":"bg-zinc-200 text-zinc-700 dark:bg-zinc-700 dark:text-zinc-300":"bg-zinc-100 text-zinc-500 dark:bg-zinc-800 dark:text-zinc-400 hover:bg-zinc-200 dark:hover:bg-zinc-700"]),"aria-pressed":x.value.includes(d.value),onClick:Ue=>j(d.value)},[n("span",{class:ee(["size-2 rounded-full shrink-0",d.color==="green"?"bg-emerald-500":d.color==="red"?"bg-rose-500":d.color==="orange"?"bg-orange-500":"bg-zinc-400"])},null,2),w(" "+l(d.label),1)],10,Ya)),64))]),i(Te,{modelValue:M.value,"onUpdate:modelValue":P[3]||(P[3]=d=>M.value=d),items:G.value,size:"sm",class:"w-36","aria-label":"Filter by browser"},null,8,["modelValue","items"]),e.isLive?f("",!0):(s(),v(fe,{key:0,modelValue:U.value,"onUpdate:modelValue":P[4]||(P[4]=d=>U.value=d),label:"New regressions",size:"sm"},null,8,["modelValue"])),e.isLive?f("",!0):(s(),v(fe,{key:1,modelValue:B.value,"onUpdate:modelValue":P[5]||(P[5]=d=>B.value=d),label:"New flaky",size:"sm"},null,8,["modelValue"])),c.value?f("",!0):(s(),a("div",Za,[i(Te,{modelValue:xe.value,"onUpdate:modelValue":P[6]||(P[6]=d=>xe.value=d),items:me.value,size:"sm",class:"w-32","aria-label":"Sort cases by"},null,8,["modelValue","items"]),i(ye,{size:"sm",variant:"outline",color:"neutral",disabled:u.value===null,icon:h.value==="asc"?"i-lucide-arrow-up-narrow-wide":"i-lucide-arrow-down-wide-narrow",title:h.value==="asc"?"Sorted ascending":"Sorted descending","aria-label":h.value==="asc"?"Sorted ascending":"Sorted descending",onClick:P[7]||(P[7]=d=>h.value=h.value==="asc"?"desc":"asc")},null,8,["disabled","icon","title","aria-label"])]))]),_:1}),c.value?(s(),v(be,{key:0,"test-cases":O.value,suites:e.suites,"has-filter":L.value,"highlighted-case-id":ue.value,"live-steps":e.liveSteps,"project-key":e.projectKey,"project-name":e.projectName,class:"flex-1 min-h-0"},null,8,["test-cases","suites","has-filter","highlighted-case-id","live-steps","project-key","project-name"])):c.value?f("",!0):(s(),a(K,{key:1},[O.value.length>0?(s(),a("div",Qa,[n("div",{class:"flex flex-col h-full md:min-w-(--grid-min-width)",role:se.value?"table":void 0,"aria-label":se.value?"Test cases":void 0,"aria-rowcount":se.value?O.value.length+1:void 0,style:$e({"--grid-min-width":q.value})},[n("div",{class:"hidden md:grid shrink-0 bg-elevated/50 border-b border-default",role:"row",style:$e({gridTemplateColumns:A.value})},[(s(!0),a(K,null,ie(ne.value,d=>(s(),a(K,{key:d.key},[d.sortable?(s(),a("button",{key:0,type:"button",role:"columnheader","aria-sort":u.value===d.key?h.value==="asc"?"ascending":"descending":"none","aria-label":d.icon?d.label:void 0,title:d.icon?d.label:void 0,class:ee(["flex items-center gap-1 min-w-0 px-3 py-2 text-sm font-semibold select-none cursor-pointer hover:text-highlighted transition-colors",d.align==="right"?"justify-end":""]),onClick:Ue=>y(d.key)},[d.icon?(s(),v(J,{key:0,name:d.icon,class:"shrink-0 size-4"},null,8,["name"])):(s(),a("span",sl,l(d.label),1)),i(J,{name:X(d.key),class:ee(["shrink-0 size-3.5",u.value===d.key?"":"opacity-40"])},null,8,["name","class"])],10,tl)):(s(),a("div",{key:1,role:"columnheader",class:ee(["px-3 py-2 text-sm font-semibold",d.align==="right"?"text-right":""])},l(d.label),3))],64))),128))],4),i(Qe,null,{fallback:o(()=>[n("div",Tl,[i(J,{name:"i-lucide-loader-circle",class:"size-4 mr-2 animate-spin"}),P[9]||(P[9]=w(" Loading test cases… ",-1))])]),default:o(()=>[i(ut,{ref_key:"scrollerRef",ref:C,items:O.value,"min-item-size":44,"key-field":"executionId",role:se.value?"rowgroup":void 0,class:"flex-1 min-h-0",onScrollPassive:$},{default:o(({item:d,index:Ue,active:et})=>[i(rt,{item:d,active:et,"size-dependencies":[d.title,d.location,d.isNewRegression,d.isNewFlaky,d.testAnnotations,d.tags,b(d)?.title],"data-index":Ue},{default:o(()=>[n("div",{class:ee(["md:hidden border-b border-default px-3 py-2.5 space-y-1.5 text-sm transition-colors",ue.value===d.executionId?"animate-pulse bg-yellow-100 dark:bg-yellow-900/30":""])},[n("div",nl,[n("span",{class:"size-4 shrink-0 mt-0.5",role:"img","aria-label":`Status: ${Y(d)}`,title:Y(d)},[i(J,{name:("getStatusIcon"in p?p.getStatusIcon:t(gt))(d.status),class:ee(["size-4",[("getStatusTextClass"in p?p.getStatusTextClass:t(pt))(d.status),("isStatusInFlight"in p?p.isStatusInFlight:t(At))(d.status)?"animate-spin":""]])},null,8,["name","class"])],8,al),n("a",{href:`/test-run-cases/${d.executionId}`,class:"text-highlighted hover:text-primary hover:underline font-medium flex-1 min-w-0",onClick:je(ct=>("navigateTo"in p?p.navigateTo:t(at))(`/test-run-cases/${d.executionId}`),["prevent"])},l(d.title),9,ll),d.failureClusterId?(s(),v(Ne,{key:0,to:`/failure-clusters/${d.failureClusterId}`,class:"shrink-0"},{default:o(()=>[i(we,{color:"info",variant:"subtle",size:"xs",class:"max-w-44"},{default:o(()=>[n("span",ol,l(z(d.failureClusterId)),1)]),_:2},1024)]),_:2},1032,["to"])):f("",!0),i(Ae,{browser:d.browser,size:"sm",class:"mt-0.5"},null,8,["browser"])]),("isFailedStatus"in p?p.isFailedStatus:t(Ge))(d.status)&&d.error?(s(),a("p",{key:0,class:"pl-6 text-xs text-rose-600 dark:text-rose-400 truncate",title:d.error},l(d.error),9,il)):f("",!0),d.location?(s(),v(le,{key:1,location:d.location,"project-key":e.projectKey,"project-name":e.projectName,class:"block pl-6 text-xs text-gray-400 dark:text-gray-500"},null,8,["location","project-key","project-name"])):f("",!0),i(Pe,{"is-new-regression":!!d.isNewRegression,"is-new-flaky":!!d.isNewFlaky,annotations:d.testAnnotations,tags:d.tags,meta:d.testMeta,"max-tags":3,class:"pl-6"},null,8,["is-new-regression","is-new-flaky","annotations","tags","meta"]),n("div",rl,[d.status==="running"?(s(),a(K,{key:0},[b(d)?(s(),v(Se,{key:0,step:b(d),class:"max-w-full"},null,8,["step"])):(s(),a("span",ul,"In progress..."))],64)):d.duration?(s(),v(Ie,{key:1,ms:d.duration},null,8,["ms"])):f("",!0),d.workerIndex!=null?(s(),v(we,{key:2,color:"neutral",variant:"soft",size:"xs",class:"font-mono",title:`Worker ${d.workerIndex}`},{default:o(()=>[w(" w"+l(d.workerIndex),1)]),_:2},1032,["title"])):f("",!0),(d.retries??0)>0?(s(),v(we,{key:3,color:"warning",variant:"soft",size:"xs"},{default:o(()=>[w(l(d.retries)+"x ",1)]),_:2},1024)):f("",!0),d.wastedTimeMs?(s(),a("span",cl,[i(J,{name:"i-lucide-hourglass",class:"size-3 shrink-0"}),i(Ie,{ms:d.wastedTimeMs,"unit-class":"opacity-60","no-title":""},null,8,["ms"])])):f("",!0)])],2),n("div",{class:ee(["hidden md:grid items-center border-b border-default text-sm transition-colors hover:bg-zinc-50 dark:hover:bg-zinc-900/50",ue.value===d.executionId?"animate-pulse bg-yellow-100 dark:bg-yellow-900/30":""]),role:"row",style:$e({gridTemplateColumns:A.value})},[n("div",dl,[i(Ae,{browser:d.browser},null,8,["browser"])]),n("div",ml,[n("div",fl,[n("a",{href:`/test-run-cases/${d.executionId}`,class:"text-highlighted hover:text-primary hover:underline font-medium truncate",title:d.title,onClick:je(ct=>("navigateTo"in p?p.navigateTo:t(at))(`/test-run-cases/${d.executionId}`),["prevent"])},l(d.title),9,pl),i(Pe,{"is-new-regression":!!d.isNewRegression,"is-new-flaky":!!d.isNewFlaky,annotations:d.testAnnotations,tags:d.tags,meta:d.testMeta,"max-tags":3,class:"shrink-0"},null,8,["is-new-regression","is-new-flaky","annotations","tags","meta"]),d.failureClusterId?(s(),v(Ne,{key:0,to:`/failure-clusters/${d.failureClusterId}`,class:"shrink-0"},{default:o(()=>[i(we,{color:"info",variant:"subtle",size:"xs",class:"max-w-44"},{default:o(()=>[n("span",gl,l(z(d.failureClusterId)),1)]),_:2},1024)]),_:2},1032,["to"])):f("",!0)]),("isFailedStatus"in p?p.isFailedStatus:t(Ge))(d.status)&&d.error?(s(),a("p",{key:0,class:"text-xs text-rose-600 dark:text-rose-400 truncate",title:d.error},l(d.error),9,xl)):f("",!0),d.location?(s(),v(le,{key:1,location:d.location,"project-key":e.projectKey,"project-name":e.projectName,class:"text-xs text-zinc-400 dark:text-zinc-500"},null,8,["location","project-key","project-name"])):f("",!0),b(d)?(s(),a("div",vl,[i(Se,{step:b(d),class:"max-w-full"},null,8,["step"])])):f("",!0)]),n("div",hl,[i(we,{color:("getStatusColor"in p?p.getStatusColor:t(xt))(d.status==="timedOut"||d.status==="timedout"?"failed":d.status),variant:"subtle",class:"capitalize",title:Y(d)},{default:o(()=>[w(l(("formatStatusLabel"in p?p.formatStatusLabel:t(Xe))(d.status)),1)]),_:2},1032,["color","title"])]),n("div",yl,[d.status==="running"?(s(),a("span",kl,"In progress...")):(s(),v(Ie,{key:1,ms:d.duration,fallback:""},null,8,["ms"]))]),n("div",bl,[d.workerIndex!=null?(s(),v(we,{key:0,color:"neutral",variant:"soft",class:"font-mono text-xs"},{default:o(()=>[w(" w"+l(d.workerIndex),1)]),_:2},1024)):f("",!0)]),n("div",wl,l(d.retries&&d.retries>0?d.retries:""),1),oe.value?(s(),a("div",_l,[d.wastedTimeMs?(s(),v(Ie,{key:0,ms:d.wastedTimeMs,class:"text-amber-600 dark:text-amber-400","unit-class":"opacity-60"},null,8,["ms"])):(s(),a("span",$l,"—"))])):f("",!0)],6)]),_:2},1032,["item","active","size-dependencies","data-index"])]),_:1},8,["items","role"])]),_:1})],12,el)])):e.testCases.length===0?(s(),v(We,{key:1,icon:"i-lucide-beaker",text:"No test cases recorded for this run."})):(s(),v(We,{key:2,icon:"i-lucide-search-x",text:"No test cases match your filters."},{default:o(()=>[i(ye,{size:"xs",variant:"outline",color:"neutral",label:"Clear filters",onClick:P[8]||(P[8]=d=>{r.value="",x.value=[],M.value="all"})})]),_:1}))],64))])}}}),Cl=Object.assign(Rl,{__name:"TestCasesList"}),Sl={key:2,class:"p-4"},Il={key:3,class:"p-4"},zl={key:4,class:"p-4"},Fl={key:5,class:"space-y-6 p-4","data-shot":"run-insights"},Dl={class:"flex items-center gap-1.5 text-sm text-muted"},Nl={class:"grid grid-cols-1 sm:grid-cols-3 gap-4"},Pl={class:"space-y-1","data-shot":"pass-rate"},jl={class:"text-xl font-semibold"},Bl={key:0},Ml={key:1},Al={class:"space-y-1"},Ul={key:1,class:"text-xl font-semibold text-muted"},Ll={class:"space-y-1"},El={class:"space-y-0.5 text-sm"},Ol={key:0,class:"text-red-500"},Kl={key:1,class:"text-green-600"},Wl={key:2,class:"text-purple-500"},Vl={key:3,class:"text-muted"},Hl={class:"space-y-1"},Gl={class:"font-medium text-primary hover:underline truncate"},Xl={class:"text-gray-400 text-xs ml-auto shrink-0"},ql={class:"space-y-1"},Jl={class:"font-medium text-primary hover:underline truncate"},Yl={class:"space-y-1"},Zl={class:"font-medium text-primary hover:underline truncate"},Ql={class:"space-y-1"},eo={class:"font-medium text-primary hover:underline truncate"},to={class:"text-gray-400 text-xs ml-auto shrink-0"},so={class:"space-y-1"},no={class:"font-medium text-primary hover:underline truncate"},ao={class:"grid grid-cols-2 gap-4"},lo={key:0},oo={class:"space-y-1"},io={class:"text-red-500 font-mono shrink-0"},ro={class:"truncate text-primary hover:underline"},uo={key:1},co={class:"space-y-1"},mo={class:"text-green-500 font-mono shrink-0"},fo={class:"truncate text-primary hover:underline"},po={class:"space-y-1"},go={class:"flex-1 truncate text-primary hover:underline"},xo={class:"text-gray-500 font-mono text-xs shrink-0"},vo={class:"w-24 h-2 rounded-full bg-gray-100 shrink-0"},ho={key:0,class:"flex items-center gap-1.5 text-xs text-amber-600 mb-3"},yo={class:"flex items-end gap-2 h-20"},ko={class:"text-xs text-gray-500"},bo={class:"text-xs text-gray-400"},wo={class:"space-y-1"},_o={class:"truncate"},$o=ge({__name:"RunInsights",props:{testRunId:{},runStatus:{},refreshKey:{}},setup(e){const g=e,k=I(()=>{if(!c.value)return"";const B=c.value.passRateDelta;return B>0?"text-green-600":B<0?"text-red-600":"text-muted"}),T=I(()=>{if(!c.value)return"";const B=c.value.passRateDelta;return B>0?"i-lucide-trending-up":B<0?"i-lucide-trending-down":"i-lucide-minus"}),S=I(()=>c.value?.avgDurationDelta==null?"":c.value.avgDurationDelta>0?"text-red-600":"text-green-600"),c=H(null),R=H(!1),r=H(null),x=I(()=>g.runStatus==="running"||g.runStatus==="initializing"||g.runStatus==="finalizing");async function M(){if(!g.testRunId||x.value){c.value=null;return}R.value=!0,r.value=null;try{c.value=await $fetch(`/api/test-runs/${g.testRunId}/insights`)}catch(B){console.error("[RunInsights] failed to load",B),r.value=B?.data?.message||B?.message||"Failed to load insights"}finally{R.value=!1}}de(()=>g.testRunId,M,{immediate:!0}),de(()=>g.refreshKey,(B,F)=>{B!==F&&B!==void 0&&M()});function U(B){return B==null?"—":B<1e3?`${B}ms`:`${(B/1e3).toFixed(1)}s`}return(B,F)=>{const j=Fe,G=Ws,Y=Kt,b=Ke,z=_e,N=Me,m=Vs,u=Re,h=Be;return t(r)?(s(),v(G,{key:0,text:t(r),padded:""},{action:o(()=>[i(j,{size:"sm",onClick:M},{default:o(()=>[...F[0]||(F[0]=[w("Retry",-1)])]),_:1})]),_:1},8,["text"])):t(R)?(s(),v(Y,{key:1,padded:""})):t(x)?(s(),a("div",Sl,[i(b,{icon:"i-lucide-loader-circle",text:"Run in progress"},{default:o(()=>[...F[1]||(F[1]=[n("p",{class:"text-sm text-muted max-w-sm text-center"}," Insights are computed once the run finishes. Switch back here when the run completes. ",-1)])]),_:1})])):t(c)?t(c).hasBaseline?(s(),a("div",Fl,[n("div",Dl,[i(z,{name:"i-lucide-sparkles",class:"size-4 shrink-0 text-primary/70"}),F[3]||(F[3]=n("span",null,"Automatic highlights from this run",-1)),i(N,{topic:"run.insights"})]),i(m,{icon:"i-lucide-bar-chart-3","icon-class":"text-blue-500",title:"Run summary","data-shot":"run-summary"},{default:o(()=>[n("div",Nl,[n("div",Pl,[F[4]||(F[4]=n("p",{class:"text-xs text-muted"},"Pass rate",-1)),n("p",jl,l(t(c).passRate)+"%",1),n("div",{class:ee(["flex items-center gap-1 text-xs",t(k)])},[i(z,{name:t(T),class:"size-3.5"},null,8,["name"]),t(c).passRateDelta!==0?(s(),a("span",Bl,l(t(c).passRateDelta>0?"+":"")+l(t(c).passRateDelta)+"pp vs baseline",1)):(s(),a("span",Ml,"Same as baseline"))],2)]),n("div",Al,[F[5]||(F[5]=n("p",{class:"text-xs text-muted"},"Avg duration",-1)),t(c).avgDurationDelta!==null?(s(),a("p",{key:0,class:ee(["text-xl font-semibold",t(S)])},l(t(c).avgDurationDelta>0?"+":"")+l(t(c).avgDurationDelta)+"% ",3)):(s(),a("p",Ul,"—")),F[6]||(F[6]=n("p",{class:"text-xs text-muted"},"vs baseline (passing tests)",-1))]),n("div",Ll,[F[7]||(F[7]=n("p",{class:"text-xs text-muted"},"Changes",-1)),n("div",El,[t(c).newRegressions.length>0?(s(),a("p",Ol," +"+l(t(c).newRegressions.length)+" regressed ",1)):f("",!0),t(c).recovered.length>0?(s(),a("p",Kl,"+"+l(t(c).recovered.length)+" fixed",1)):f("",!0),t(c).newFlaky.length>0?(s(),a("p",Wl,"+"+l(t(c).newFlaky.length)+" flaky",1)):f("",!0),!t(c).newRegressions.length&&!t(c).recovered.length&&!t(c).newFlaky.length?(s(),a("p",Vl," No status changes ")):f("",!0)])])])]),_:1}),t(c).newRegressions.length>0?(s(),v(m,{key:0,icon:"i-lucide-alert-circle","icon-class":"text-red-500",title:"New regressions",count:t(c).newRegressions.length,"data-shot":"new-regressions"},{default:o(()=>[n("div",Hl,[(s(!0),a(K,null,ie(t(c).newRegressions,y=>(s(),v(h,{key:y.executionId,to:`/test-run-cases/${y.executionId}`,class:"flex items-center gap-2 text-sm hover:bg-red-50 dark:hover:bg-red-900/10 rounded px-1 -mx-1 transition-colors"},{default:o(()=>[i(u,{color:"error",variant:"solid",size:"xs"},{default:o(()=>[...F[8]||(F[8]=[w("NEW",-1)])]),_:1}),n("span",Gl,l(y.title),1),n("span",Xl,l(U(y.duration)),1)]),_:2},1032,["to"]))),128))])]),_:1},8,["count"])):f("",!0),t(c).recurrences.length>0?(s(),v(m,{key:1,icon:"i-lucide-refresh-cw","icon-class":"text-amber-500",title:"Recurring failures",count:t(c).recurrences.length},{default:o(()=>[n("div",ql,[(s(!0),a(K,null,ie(t(c).recurrences,y=>(s(),v(h,{key:y.executionId,to:`/test-run-cases/${y.executionId}`,class:"flex items-center gap-2 text-sm hover:bg-amber-50 dark:hover:bg-amber-900/10 rounded px-1 -mx-1 transition-colors"},{default:o(()=>[i(u,{color:"warning",variant:"solid",size:"xs"},{default:o(()=>[...F[9]||(F[9]=[w("RECURRING",-1)])]),_:1}),n("span",Jl,l(y.title),1)]),_:2},1032,["to"]))),128))])]),_:1},8,["count"])):f("",!0),t(c).recovered.length>0?(s(),v(m,{key:2,icon:"i-lucide-check-circle","icon-class":"text-green-500",title:"Fixed tests",count:t(c).recovered.length},{default:o(()=>[n("div",Yl,[(s(!0),a(K,null,ie(t(c).recovered,y=>(s(),v(h,{key:y.executionId,to:`/test-run-cases/${y.executionId}`,class:"flex items-center gap-2 text-sm hover:bg-green-50 dark:hover:bg-green-900/10 rounded px-1 -mx-1 transition-colors"},{default:o(()=>[i(u,{color:"success",variant:"solid",size:"xs"},{default:o(()=>[...F[10]||(F[10]=[w("FIXED",-1)])]),_:1}),n("span",Zl,l(y.title),1)]),_:2},1032,["to"]))),128))])]),_:1},8,["count"])):f("",!0),t(c).newFlaky.length>0?(s(),v(m,{key:3,icon:"i-lucide-flask","icon-class":"text-purple-500",title:"New flaky tests",count:t(c).newFlaky.length},{default:o(()=>[n("div",Ql,[(s(!0),a(K,null,ie(t(c).newFlaky,y=>(s(),v(h,{key:y.executionId,to:`/test-run-cases/${y.executionId}?tab=history`,class:"flex items-center gap-2 text-sm hover:bg-purple-50 dark:hover:bg-purple-900/10 rounded px-1 -mx-1 transition-colors"},{default:o(()=>[i(u,{color:"info",variant:"solid",size:"xs"},{default:o(()=>[...F[11]||(F[11]=[w("FLAKY",-1)])]),_:1}),n("span",eo,l(y.title),1),n("span",to,l(U(y.duration)),1)]),_:2},1032,["to"]))),128))])]),_:1},8,["count"])):f("",!0),t(c).flakyOnRetry.length>0?(s(),v(m,{key:4,icon:"i-lucide-repeat","icon-class":"text-orange-500",title:"Passed on retry",count:t(c).flakyOnRetry.length,subtitle:"Tests that passed but needed one or more retries"},{default:o(()=>[n("div",so,[(s(!0),a(K,null,ie(t(c).flakyOnRetry,y=>(s(),v(h,{key:y.executionId,to:`/test-run-cases/${y.executionId}?tab=history`,class:"flex items-center gap-2 text-sm hover:bg-orange-50 dark:hover:bg-orange-900/10 rounded px-1 -mx-1 transition-colors"},{default:o(()=>[i(u,{color:"warning",variant:"subtle",size:"xs"},{default:o(()=>[w("×"+l(y.retries),1)]),_:2},1024),n("span",no,l(y.title),1)]),_:2},1032,["to"]))),128))])]),_:1},8,["count"])):f("",!0),t(c).mostRegressed.length>0||t(c).mostImproved.length>0?(s(),v(m,{key:5,icon:"i-lucide-trending-up","icon-class":"text-blue-500",title:"Performance changes"},{default:o(()=>[n("div",ao,[t(c).mostRegressed.length>0?(s(),a("div",lo,[F[12]||(F[12]=n("p",{class:"text-xs font-medium text-red-500 mb-2"},"Slower",-1)),n("div",oo,[(s(!0),a(K,null,ie(t(c).mostRegressed,y=>(s(),v(h,{key:y.executionId,to:`/test-run-cases/${y.executionId}?tab=performance`,class:"flex items-center gap-2 text-sm hover:bg-red-50 dark:hover:bg-red-900/10 rounded px-1 -mx-1 transition-colors"},{default:o(()=>[n("span",io,"+"+l(y.pctChange)+"%",1),n("span",ro,l(y.title),1)]),_:2},1032,["to"]))),128))])])):f("",!0),t(c).mostImproved.length>0?(s(),a("div",uo,[F[13]||(F[13]=n("p",{class:"text-xs font-medium text-green-500 mb-2"},"Most improved",-1)),n("div",co,[(s(!0),a(K,null,ie(t(c).mostImproved,y=>(s(),v(h,{key:y.executionId,to:`/test-run-cases/${y.executionId}?tab=performance`,class:"flex items-center gap-2 text-sm hover:bg-green-50 dark:hover:bg-green-900/10 rounded px-1 -mx-1 transition-colors"},{default:o(()=>[n("span",mo,l(y.pctChange)+"%",1),n("span",fo,l(y.title),1)]),_:2},1032,["to"]))),128))])])):f("",!0)])]),_:1})):f("",!0),t(c).slowestTests.length>0?(s(),v(m,{key:6,icon:"i-lucide-clock","icon-class":"text-amber-500",title:"Slowest tests"},{default:o(()=>[n("div",po,[(s(!0),a(K,null,ie(t(c).slowestTests,y=>(s(),v(h,{key:y.executionId,to:`/test-run-cases/${y.executionId}?tab=performance`,class:"flex items-center gap-2 text-sm hover:bg-amber-50 dark:hover:bg-amber-900/10 rounded px-1 -mx-1 transition-colors"},{default:o(()=>[n("div",go,l(y.title),1),n("div",xo,l(U(y.duration)),1),n("div",vo,[n("div",{class:"h-full rounded-full bg-amber-400",style:$e({width:Math.min(100,y.duration/(t(c).slowestTests[0]?.duration||1)*100)+"%"})},null,4)])]),_:2},1032,["to"]))),128))])]),_:1})):f("",!0),t(c).workerImbalance.length>1?(s(),v(m,{key:7,icon:"i-lucide-users","icon-class":"text-gray-500",title:"Worker distribution"},{default:o(()=>[t(c).workerImbalanceWarning?(s(),a("div",ho,[i(z,{name:"i-lucide-alert-triangle",class:"size-3.5 shrink-0"}),n("span",null,l(t(c).workerImbalanceWarning),1)])):f("",!0),n("div",yo,[(s(!0),a(K,null,ie(t(c).workerImbalance,y=>(s(),a("div",{key:y.workerIndex,class:"flex-1 flex flex-col items-center gap-1"},[n("span",ko,l(y.count),1),n("div",{class:"w-full bg-blue-400 rounded-t",style:$e({height:Math.max(4,y.count/Math.max(...t(c).workerImbalance.map(X=>X.count))*60)+"px"})},null,4),n("span",bo,"W"+l(y.workerIndex),1)]))),128))])]),_:1})):f("",!0),t(c).clusterNew.length>0?(s(),v(m,{key:8,icon:"i-lucide-layers","icon-class":"text-purple-500",title:"New failure clusters",count:t(c).clusterNew.length},{default:o(()=>[n("div",wo,[(s(!0),a(K,null,ie(t(c).clusterNew,y=>(s(),v(h,{key:y.clusterId,to:`/failure-clusters/${y.clusterId}`,class:"flex items-center gap-2 text-sm text-primary hover:underline"},{default:o(()=>[n("span",_o,l(y.signature),1)]),_:2},1032,["to"]))),128))])]),_:1},8,["count"])):f("",!0)])):(s(),a("div",zl,[i(b,{icon:"i-lucide-git-compare-arrows",text:"No baseline run found"},{default:o(()=>[...F[2]||(F[2]=[n("p",{class:"text-sm text-muted max-w-sm text-center"}," Insights compare this run against the most recent passing run in the same project. No previous passing run exists yet — once you have at least two completed runs, comparisons will appear here automatically. ",-1)])]),_:1})])):(s(),a("div",Il,[i(b,{text:"No insights yet"})]))}}}),To=Object.assign($o,{__name:"RunInsights"}),Ro=ge({__name:"ClusterDiagnosis",props:{clusterId:{}},setup(e){return(g,k)=>{const T=Hs;return s(),v(T,{"cluster-id":e.clusterId},null,8,["cluster-id"])}}}),Co=Object.assign(Ro,{__name:"ClusterDiagnosis"}),So={class:"pt-4 space-y-3"},Io={key:0,class:"flex items-center justify-center py-8 text-gray-500 gap-2"},zo={class:"flex items-center justify-between gap-3"},Fo={class:"text-sm text-gray-500 dark:text-gray-400 inline-flex items-center gap-1"},Do={class:"min-w-0 space-y-0.5"},No=["title"],Po={key:0,class:"text-xs text-gray-500 truncate block"},jo={class:"font-mono"},Bo={key:1,class:"text-gray-400 text-xs"},Mo={key:1,class:"text-gray-400 text-xs"},Ao={class:"text-sm tabular-nums"},Uo={key:0,class:"flex flex-wrap gap-1"},Lo={key:1,class:"text-gray-400 text-xs"},Eo={key:0,class:"flex items-center gap-1 text-xs text-gray-500"},Oo={key:2,class:"text-gray-400 text-xs"},Ko={key:0,class:"text-xs font-medium text-warning-500"},Wo={key:1,class:"text-sm text-gray-500 whitespace-nowrap"},Vo={key:0,class:"ml-1 text-xs text-gray-400"},Ho={class:"flex justify-end gap-2"},Go=ge({__name:"FailureGroups",props:{refreshKey:{}},emits:["selectCluster"],async setup(e,{emit:g}){let k,T;const S=g,c=e,r=Ye().params.id,{data:x,pending:M,refresh:U}=([k,T]=qe(()=>Je(`/api/test-runs/${r}/failure-groups`,{lazy:!0,server:!1,transform:m=>m.items},"$MjXpKokGLu")),k=await k,T(),k);de(()=>c.refreshKey,(m,u)=>{m!==u&&m!==void 0&&U()});const B=H(null),{copy:F,copied:j}=Tt(),G=I(()=>x.value?x.value.flatMap(m=>m.cases.filter(u=>!u.passedOnRetry).map(u=>({filePath:u.filePath,title:u.title,line:null,projectName:null}))):[]),Y=I(()=>Ut(G.value));function b(){const m=Y.value;m&&F(m,{toast:"Retry command copied"})}const z=[{accessorKey:"signature",header:pe("Signature")},{accessorKey:"errorType",header:pe("Type")},{accessorKey:"status",header:pe("Triage")},{accessorKey:"caseCount",header:pe("Tests")},{accessorKey:"signals",header:"Signals"},{accessorKey:"diagnosis",header:"AI"},{accessorKey:"firstSeenRunId",header:pe("Known since")},{id:"actions",header:"Actions"}],N=I(()=>x.value?.reduce((m,u)=>m+u.caseCount,0)??0);return(m,u)=>{const h=_e,y=Me,X=Fe,W=Re,_=Be,O=Rt,oe=Wt,Q=$t,ne=Ke,me=Co,xe=Vt;return s(),a(K,null,[n("div",So,[t(M)?(s(),a("div",Io,[i(h,{name:"i-lucide-loader-2",class:"size-4 animate-spin"}),u[2]||(u[2]=n("span",null,"Grouping failures...",-1))])):t(x)&&t(x).length?(s(),a(K,{key:1},[n("div",zo,[n("p",Fo,[w(l(t(N))+" failing "+l(t(N)===1?"test":"tests")+" across "+l(t(x).length)+" "+l(t(x).length===1?"cluster":"clusters")+" ",1),i(y,{topic:"cluster.concept"})]),t(G).length>0?(s(),v(X,{key:0,size:"xs",variant:"outline",color:"neutral",icon:t(j)?"i-lucide-check":"i-lucide-play",title:t(j)?"Copied!":("copyPreview"in m?m.copyPreview:t(Mt))(t(Y)),onClick:u[0]||(u[0]=A=>b())},{default:o(()=>[...u[3]||(u[3]=[w(" Copy retry command ",-1)])]),_:1},8,["icon","title"])):f("",!0)]),i(Q,{ui:{body:"p-0 sm:p-0"}},{default:o(()=>[i(oe,{"min-width":"46rem",bleed:!1},{default:o(()=>[i(O,{data:t(x),columns:z,"aria-label":"Failure clusters"},{"actions-header":o(()=>[...u[4]||(u[4]=[n("div",{class:"text-right"},"Actions",-1)])]),"signature-cell":o(({row:A})=>[n("div",Do,[n("span",{class:ee(["text-sm block truncate",A.original.title?"":"font-mono"]),title:A.original.signature},l(A.original.title||A.original.signature),11,No),A.original.selector?(s(),a("span",Po,[u[5]||(u[5]=w(" Locator: ",-1)),n("code",jo,l(A.original.selector),1)])):f("",!0)])]),"errorType-cell":o(({row:A})=>[A.original.errorType?(s(),v(W,{key:0,color:("clusterErrorTypeColor"in m?m.clusterErrorTypeColor:t(Ms))(A.original.errorType),variant:"subtle",size:"sm"},{default:o(()=>[w(l(A.original.errorType),1)]),_:2},1032,["color"])):(s(),a("span",Bo,"—"))]),"status-cell":o(({row:A})=>[A.original.status?(s(),v(W,{key:0,color:("clusterStatusColor"in m?m.clusterStatusColor:t(js))(A.original.status),variant:"subtle",size:"sm"},{default:o(()=>[w(l(("formatTriageStatus"in m?m.formatTriageStatus:t(Bs))(A.original.status)),1)]),_:2},1032,["color"])):(s(),a("span",Mo,"—"))]),"caseCount-cell":o(({row:A})=>[n("span",Ao,l(A.original.caseCount),1)]),"signals-cell":o(({row:A})=>[A.original.isNew||A.original.flaky||A.original.workerCorrelated||A.original.locatorHealing?(s(),a("div",Uo,[A.original.isNew?(s(),v(W,{key:0,color:"warning",variant:"subtle",size:"sm"},{default:o(()=>[...u[6]||(u[6]=[w(" New ",-1)])]),_:1})):f("",!0),A.original.flaky?(s(),v(W,{key:1,color:"warning",variant:"outline",size:"sm"},{default:o(()=>[...u[7]||(u[7]=[w(" Flaky ",-1)])]),_:1})):f("",!0),A.original.workerCorrelated?(s(),v(W,{key:2,color:"info",variant:"outline",size:"sm",title:"All failures ran on the same worker"},{default:o(()=>[...u[8]||(u[8]=[w(" Same worker ",-1)])]),_:1})):f("",!0),A.original.locatorHealing?.healed?(s(),v(W,{key:3,color:"success",variant:"subtle",size:"sm",icon:"i-lucide-circle-check",title:"The recommended locator already passes at this call site in a later run"},{default:o(()=>[...u[9]||(u[9]=[w(" Healed ",-1)])]),_:1})):A.original.locatorHealing?(s(),v(W,{key:4,color:"success",variant:"outline",size:"sm",icon:"i-lucide-bandage",title:`Locator fix available: ${A.original.locatorHealing.recommended} — open the cluster to apply it`},{default:o(()=>[...u[10]||(u[10]=[w(" Locator fix ",-1)])]),_:1},8,["title"])):f("",!0)])):(s(),a("span",Lo,"—"))]),"diagnosis-cell":o(({row:A})=>[A.original.diagnosis?.status==="running"?(s(),a("div",Eo,[i(h,{name:"i-lucide-loader-2",class:"size-3 animate-spin"}),u[11]||(u[11]=w(" Running ",-1))])):A.original.diagnosis?.status==="completed"&&A.original.diagnosis.category?(s(),v(W,{key:1,color:"neutral",variant:"subtle",size:"sm",class:"gap-1"},{default:o(()=>[i(h,{name:"i-lucide-sparkles",class:"size-3"}),w(" "+l(A.original.diagnosis.category),1)]),_:2},1024)):(s(),a("span",Oo,"—"))]),"firstSeenRunId-cell":o(({row:A})=>[A.original.isNew?(s(),a("span",Ko,"New in this run")):(s(),a("div",Wo,[i(_,{to:`/test-runs/${A.original.firstSeenRunId}`,class:"text-primary hover:underline"},{default:o(()=>[w(" run #"+l(A.original.firstSeenRunId),1)]),_:2},1032,["to"]),A.original.firstSeenAt?(s(),a("span",Vo," ("+l(("formatRelativeTime"in m?m.formatRelativeTime:t(_t))(A.original.firstSeenAt))+") ",1)):f("",!0)]))]),"actions-cell":o(({row:A})=>[n("div",Ho,[i(X,{size:"sm",color:"primary",variant:"soft",onClick:q=>S("selectCluster",A.original.clusterId)},{default:o(()=>[...u[12]||(u[12]=[w(" Show failing tests ",-1)])]),_:1},8,["onClick"]),i(X,{size:"sm",color:"neutral",variant:"outline",icon:"i-lucide-sparkles",onClick:q=>B.value=A.original.clusterId},{default:o(()=>[...u[13]||(u[13]=[w(" Diagnose ",-1)])]),_:1},8,["onClick"]),i(X,{to:`/failure-clusters/${A.original.clusterId}`,size:"sm",variant:"outline","trailing-icon":"i-lucide-arrow-right"},{default:o(()=>[...u[14]||(u[14]=[w(" View ",-1)])]),_:1},8,["to"])])]),_:1},8,["data"])]),_:1})]),_:1})],64)):(s(),v(ne,{key:2,icon:"i-lucide-shield-check",text:"No failure clusters — failed tests without error details are not grouped"}))]),i(xe,{open:t(B)!==null,title:"AI diagnosis",ui:{content:"max-w-2xl"},"onUpdate:open":u[1]||(u[1]=A=>{A||(B.value=null)})},{body:o(()=>[t(B)!==null?(s(),v(me,{key:0,"cluster-id":t(B)},null,8,["cluster-id"])):f("",!0)]),_:1},8,["open"])],64)}}}),Xo=Object.assign(Go,{__name:"FailureGroups"}),qo={class:"pt-4"},Jo={key:2,class:"space-y-4"},Yo={class:"flex flex-wrap items-center gap-2 text-sm"},Zo={class:"text-gray-500 inline-flex items-center gap-1"},Qo={key:0,class:"text-gray-400"},ei={key:0,class:"flex flex-wrap items-center gap-2"},ti={class:"text-sm text-gray-500"},si={key:1,class:"flex items-center gap-2"},ni={class:"text-sm text-gray-500"},ai={class:"space-y-3"},li={class:"flex items-center gap-2 text-sm font-medium"},oi={class:"flex flex-wrap items-center gap-2 text-sm font-mono"},ii={key:0,class:"text-xs text-gray-400 font-sans"},ri={class:"flex flex-wrap items-center gap-2"},ui={class:"flex items-center gap-1.5 flex-1 min-w-0"},ci={class:"flex-1 text-xs bg-gray-100 dark:bg-gray-800 px-3 py-1.5 rounded font-mono truncate select-all"},di={key:3,class:"text-sm text-gray-500 flex items-center gap-2"},mi={class:"px-4 py-3 text-sm font-medium flex items-center gap-2 border-b border-default"},fi={class:"overflow-x-auto"},pi={class:"w-full min-w-[36rem] text-sm"},gi={class:"px-4 py-2 text-gray-500"},xi={class:"px-4 py-2 font-mono text-xs"},vi={key:0,class:"text-green-700 dark:text-green-400"},hi={key:1,class:"text-gray-400"},yi={class:"px-4 py-2 font-mono text-xs"},ki={key:0,class:"text-red-700 dark:text-red-400"},bi={key:1,class:"text-gray-400"},wi=ge({__name:"RegressionContext",props:{refreshKey:{}},async setup(e){let g,k;const S=Ye().params.id,c=e,{data:R,pending:r,refresh:x}=([g,k]=qe(()=>Je(`/api/test-runs/${S}/regression-context`,{lazy:!0},"$bK54nhbSza")),g=await g,k(),g);de(()=>c.refreshKey,(F,j)=>{F!==j&&F!==void 0&&x()});const{copy:M,copied:U}=Tt();function B(){M(R.value?.commitRange?.gitCommand)}return(F,j)=>{const G=Kt,Y=Ke,b=_e,z=Me,N=Be,m=Re,u=Fe,h=$t;return s(),a("div",qo,[t(r)?(s(),v(G,{key:0,text:"Looking for last passing run…"})):t(R)?.hasGreen?(s(),a("div",Jo,[n("div",Yo,[i(b,{name:"i-lucide-circle-check",class:"size-4 text-green-500 shrink-0"}),n("span",Zo,[j[0]||(j[0]=w("Last passing run: ",-1)),i(z,{topic:"run.regression"})]),i(N,{to:`/test-runs/${t(R).lastGreenRunId}`,class:"font-medium text-primary hover:underline"},{default:o(()=>[w(" Run #"+l(t(R).lastGreenRunId),1)]),_:1},8,["to"]),t(R).lastGreenRunAt?(s(),a("span",Qo," ("+l(("formatRelativeTime"in F?F.formatRelativeTime:t(_t))(t(R).lastGreenRunAt))+") ",1)):f("",!0)]),(t(R).newFailures??0)>0?(s(),a("div",ei,[i(m,{color:"error",variant:"soft",size:"lg"},{default:o(()=>[w(l(t(R).newFailures)+" new "+l(t(R).newFailures===1?"failure":"failures"),1)]),_:1}),n("span",ti,l(t(R).newFailures===1?"test":"tests")+" that "+l((t(R).newFailures===1,"passed"))+" in run #"+l(t(R).lastGreenRunId)+" but "+l(t(R).newFailures===1?"fails":"fail")+" here ",1)])):(s(),a("div",si,[i(m,{color:"warning",variant:"soft",size:"lg"},{default:o(()=>[...j[1]||(j[1]=[w(" No new regressions ",-1)])]),_:1}),n("span",ni,"All failing tests were also failing before run #"+l(t(R).lastGreenRunId),1)])),t(R).commitRange?(s(),v(h,{key:2,ui:{body:"p-4 sm:p-4"}},{default:o(()=>[n("div",ai,[n("div",li,[i(b,{name:"i-lucide-git-commit-horizontal",class:"size-4"}),j[2]||(j[2]=w(" Commits introduced since last passing run ",-1))]),n("div",oi,[i(m,{color:"success",variant:"soft",size:"sm"},{default:o(()=>[w(l(t(R).commitRange.fromShort),1)]),_:1}),i(b,{name:"i-lucide-arrow-right",class:"size-3 text-gray-400"}),i(m,{color:"error",variant:"soft",size:"sm"},{default:o(()=>[w(l(t(R).commitRange.toShort),1)]),_:1}),t(R).currentBranch||t(R).lastGreenBranch?(s(),a("span",ii," on "+l(t(R).currentBranch||t(R).lastGreenBranch),1)):f("",!0)]),n("div",ri,[t(R).commitRange.compareUrl?(s(),v(u,{key:0,to:t(R).commitRange.compareUrl,target:"_blank",external:"",icon:"i-lucide-external-link",size:"sm",variant:"soft",color:"primary"},{default:o(()=>[...j[3]||(j[3]=[w(" View commits ",-1)])]),_:1},8,["to"])):f("",!0),n("div",ui,[n("code",ci,l(t(R).commitRange.gitCommand),1),i(u,{icon:t(U)?"i-lucide-check":"i-lucide-clipboard",size:"xs",color:"neutral",variant:"ghost",title:t(U)?"Copied!":"Copy git command",onClick:B},null,8,["icon","title"])])])])]),_:1})):!t(R).currentCommit||!t(R).lastGreenCommit?(s(),a("div",di,[i(b,{name:"i-lucide-git-branch",class:"size-4 shrink-0"}),j[4]||(j[4]=w(" No commit info available — enable ",-1)),j[5]||(j[5]=n("code",{class:"font-mono text-xs"},"collectScmInfo: true",-1)),j[6]||(j[6]=w(" in the reporter to see commit ranges ",-1))])):f("",!0),t(R).metadataDiff&&t(R).metadataDiff.length>0?(s(),v(h,{key:4,ui:{body:"p-0 sm:p-0"}},{default:o(()=>[n("div",mi,[i(b,{name:"i-lucide-sliders-horizontal",class:"size-4"}),j[7]||(j[7]=w(" What changed between runs ",-1))]),n("div",fi,[n("table",pi,[j[8]||(j[8]=n("thead",null,[n("tr",{class:"text-xs text-gray-500 uppercase tracking-wider border-b border-default"},[n("th",{class:"text-left px-4 py-2 font-medium w-32"},"Field"),n("th",{class:"text-left px-4 py-2 font-medium"},"Last passing"),n("th",{class:"text-left px-4 py-2 font-medium"},"This run")])],-1)),n("tbody",null,[(s(!0),a(K,null,ie(t(R).metadataDiff,y=>(s(),a("tr",{key:y.key,class:"border-b last:border-b-0 border-default"},[n("td",gi,l(y.label),1),n("td",xi,[y.before?(s(),a("span",vi,l(y.before),1)):(s(),a("span",hi,"—"))]),n("td",yi,[y.after?(s(),a("span",ki,l(y.after),1)):(s(),a("span",bi,"—"))])]))),128))])])])]),_:1})):f("",!0)])):(s(),v(Y,{key:1,icon:"i-lucide-history",text:"No previous passing run found for this project"}))])}}}),_i=Object.assign(wi,{__name:"RegressionContext"}),$i={class:"flex items-center justify-between mb-2"},Ti={class:"text-xs text-gray-500 inline-flex items-center gap-1"},Ri={class:"flex items-center gap-1"},Ci={class:"p-2 flex flex-col gap-2 min-w-56"},Si=ge({__name:"TimelineHeader",props:{workerCount:{},shardTotal:{},testCount:{},hookCount:{},waitCount:{},spanTypes:{},live:{type:Boolean}},emits:["reset","toggleSpan"],setup(e){return(g,k)=>{const T=Me,S=Fe,c=Lt,R=ht;return s(),a("div",$i,[n("span",Ti,[n("span",null,[w(l(e.workerCount)+" worker"+l(e.workerCount>1?"s":"")+" ",1),e.shardTotal&&e.shardTotal>1?(s(),a(K,{key:0},[w(" · "+l(e.shardTotal)+" shard"+l(e.shardTotal>1?"s":""),1)],64)):f("",!0),w(" · "+l(e.testCount)+" tests ",1),e.hookCount>0?(s(),a(K,{key:1},[w(" · "+l(e.hookCount)+" hooks ",1)],64)):f("",!0),e.waitCount>0?(s(),a(K,{key:2},[w(" · "+l(e.waitCount)+" waits ",1)],64)):f("",!0)]),i(T,{topic:"run.timeline"})]),n("div",Ri,[e.spanTypes.length>1?(s(),v(R,{key:0,content:{align:"end"}},{content:o(()=>[n("div",Ci,[(s(!0),a(K,null,ie(e.spanTypes,r=>(s(),v(c,{key:r.key,"model-value":r.checked,label:r.label,"onUpdate:modelValue":x=>g.$emit("toggleSpan",r.key,x===!0)},null,8,["model-value","label","onUpdate:modelValue"]))),128))])]),default:o(()=>[i(S,{size:"xs",color:"neutral",variant:"ghost",icon:"i-lucide-list-filter","trailing-icon":"i-lucide-chevron-down",title:"Show or hide span types"},{default:o(()=>[...k[1]||(k[1]=[w(" Span types ",-1)])]),_:1})]),_:1})):f("",!0),e.live?f("",!0):(s(),v(S,{key:1,size:"xs",color:"neutral",variant:"ghost",icon:"i-lucide-rotate-ccw",onClick:k[0]||(k[0]=r=>g.$emit("reset"))},{default:o(()=>[...k[2]||(k[2]=[w(" Reset view ",-1)])]),_:1}))])])}}}),Ii=Object.assign(Si,{__name:"TimelineHeader"}),lt={barHeight:24,rowGap:8,labelWidth:80,sidePadding:16,axisHeight:28,get rowHeight(){return this.barHeight+this.rowGap}},zi={passed:"#16a34a",failed:"#dc2626",timedOut:"#ea580c",running:"#2563eb",initializing:"#2563eb",skipped:"#9ca3af",cancelled:"#a1a1aa",interrupted:"#ea580c",flaky:"#ca8a04"},Ee={fill:"#facc15",stroke:"#ca8a04",swatch:"#f59e0b"};function it(e){return zi[e]||"#a1a1aa"}function Xt(e){return it(e)+"66"}function qt(e){return it(e)}function ot(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m ${Math.floor(e%6e4/1e3)}s`}const Fi=["y","width","height"],Di=["y1","x2","y2"],Ni=["x1","y1","x2","y2"],Pi=["x1","y1","x2","y2"],ji=["x","y"],Bi=["y"],Mi=ge({__name:"TimelineGrid",props:{workerRows:{},shardGroups:{},tickMarks:{},contentWidth:{},shardTotal:{}},setup(e){const{barHeight:g,rowGap:k,axisHeight:T,rowHeight:S}=lt;return(c,R)=>(s(),a("g",null,[(s(!0),a(K,null,ie(e.workerRows,(r,x)=>(s(),a("rect",{key:"bg-"+x,x:0,y:x*t(S)+t(T),width:e.contentWidth,height:t(S),class:ee(x%2===1?"fill-black/[0.03] dark:fill-white/[0.03]":"fill-transparent")},null,10,Fi))),128)),(s(!0),a(K,null,ie(e.shardGroups.slice(1),r=>(s(),a("line",{key:"shard-sep-"+r.rowRange[0],x1:0,y1:r.rowRange[0]*t(S)+t(T)-t(k)/2,x2:e.contentWidth,y2:r.rowRange[0]*t(S)+t(T)-t(k)/2,stroke:"currentColor","stroke-dasharray":"4,3",class:"stroke-gray-400 dark:stroke-gray-500"},null,8,Di))),128)),n("line",{x1:t(lt).labelWidth,y1:t(T),x2:e.contentWidth,y2:t(T),stroke:"currentColor",class:"stroke-gray-300 dark:stroke-gray-600"},null,8,Ni),(s(!0),a(K,null,ie(e.tickMarks,r=>(s(),a("g",{key:r.ms},[n("line",{x1:r.x,y1:t(T)-4,x2:r.x,y2:t(T),stroke:"currentColor",class:"stroke-gray-300 dark:stroke-gray-600"},null,8,Pi),n("text",{x:r.x,y:t(T)-8,"text-anchor":"middle",class:"fill-gray-400 text-[10px]"},l(r.label),9,ji)]))),128)),(s(!0),a(K,null,ie(e.workerRows,(r,x)=>(s(),a("text",{key:"label-"+x,x:6,y:x*t(S)+t(T)+t(g)/2+4,class:"fill-gray-500 text-[11px] font-medium"},l(r.shardIndex!=null&&e.shardTotal&&e.shardTotal>1?`S${r.shardIndex} W${r.workerIndex}`:`Worker ${r.workerIndex}`),9,Bi))),128))]))}}),Ai=Object.assign(Mi,{__name:"TimelineGrid"}),Ui=["x","y","width","height","fill","stroke"],Li=["x","y"],Ei=["x","y","width","height","fill","stroke"],Oi=["x1","y1","x2","y2","stroke"],Ki=["x1","y1","x2","y2","stroke"],Wi=["x","y"],Vi=["cx","cy"],Hi=["cx","cy"],Gi=["x","y","width","height","fill"],Xi=["x","y"],qi=ge({__name:"TimelineBar",props:{item:{},x:{},y:{},width:{}},emits:["select","hover","move","leave"],setup(e,{emit:g}){const k=e,T=g,{barHeight:S}=lt,c=I(()=>["setup","hook","fixture"].includes(k.item.kind)),R=I(()=>k.item.testCaseId!=null),r=I(()=>R.value?"cursor-pointer":"cursor-default");function x(){k.item.testCaseId!=null&&T("select",k.item.testCaseId)}return(M,U)=>(s(),a("g",{class:"timeline-bar-group",onMouseenter:U[0]||(U[0]=B=>T("hover",e.item,B)),onMousemove:U[1]||(U[1]=B=>T("move",B)),onMouseleave:U[2]||(U[2]=B=>T("leave"))},[c.value?(s(),a(K,{key:0},[n("rect",{x:e.x,y:e.y,width:e.width,height:t(S),rx:3,ry:3,fill:t(Xt)(e.item.status),stroke:t(qt)(e.item.status),"stroke-width":"1","stroke-dasharray":"3,2",class:ee(["timeline-bar-shape transition-opacity duration-100 opacity-80",r.value]),onClick:x},null,10,Ui),e.width>60?(s(),a("text",{key:0,x:e.x+4,y:e.y+t(S)/2+4,class:"fill-gray-600 dark:fill-gray-300 text-[9px] font-medium pointer-events-none"},l(e.item.title),9,Li)):f("",!0)],64)):e.item.kind==="wait"?(s(),a(K,{key:1},[n("rect",{x:e.x,y:e.y-3,width:e.width,height:t(S)+6,rx:2,ry:2,fill:t(Ee).fill,"fill-opacity":"0.28",stroke:t(Ee).stroke,"stroke-width":"1.5",class:ee(["timeline-bar-shape transition-opacity duration-100 opacity-90",r.value]),onClick:x},null,10,Ei),e.width>4?(s(),a("line",{key:0,x1:e.x+1,y1:e.y-3,x2:e.x+e.width-1,y2:e.y+t(S)+3,stroke:t(Ee).stroke,"stroke-width":"1","stroke-opacity":"0.25",class:"pointer-events-none"},null,8,Oi)):f("",!0),e.width>4?(s(),a("line",{key:1,x1:e.x+e.width-1,y1:e.y-3,x2:e.x+1,y2:e.y+t(S)+3,stroke:t(Ee).stroke,"stroke-width":"1","stroke-opacity":"0.25",class:"pointer-events-none"},null,8,Ki)):f("",!0),e.width>50?(s(),a("text",{key:2,x:e.x+4,y:e.y+t(S)/2+4,class:"fill-yellow-800 dark:fill-yellow-200 text-[9px] font-bold pointer-events-none"}," wasted "+l(t(ot)(e.item.duration)),9,Wi)):f("",!0)],64)):e.item.status==="running"?(s(),a(K,{key:2},[n("circle",{cx:e.x+6,cy:e.y+t(S)/2,r:"3",fill:"#2563eb",filter:"url(#glow)",class:"timeline-bar-shape transition-opacity duration-100 cursor-pointer opacity-90",onClick:x},null,8,Vi),n("circle",{cx:e.x+6,cy:e.y+t(S)/2,r:"5",fill:"none",stroke:"#2563eb","stroke-width":"1.5","stroke-opacity":"0.4",filter:"url(#glow)",class:"timeline-bar-shape transition-opacity duration-100 cursor-pointer opacity-90",onClick:x},null,8,Hi)],64)):(s(),a(K,{key:3},[n("rect",{x:e.x,y:e.y,width:e.width,height:t(S),rx:3,ry:3,fill:t(it)(e.item.status),class:"timeline-bar-shape transition-opacity duration-100 cursor-pointer opacity-90",onClick:x},null,8,Gi),e.width>40?(s(),a("text",{key:0,x:e.x+4,y:e.y+t(S)/2+4,class:"fill-white text-[10px] font-medium pointer-events-none"},l(t(ot)(e.item.duration)),9,Xi)):f("",!0)],64))],32))}}),Ji=Object.assign(qi,{__name:"TimelineBar"}),Yi={class:"flex items-center gap-2 mb-1"},Zi={class:"font-medium text-gray-900 dark:text-white max-w-64 truncate"},Qi={class:"flex items-center gap-3 text-gray-500"},er={class:"capitalize"},tr={key:0,class:"italic truncate max-w-48"},sr=340,nr=ge({__name:"TimelineTooltip",props:{item:{},pos:{}},setup(e){const g=e,k=I(()=>{const S=g.item;return S?S.kind==="test"?{backgroundColor:it(S.status)}:S.kind==="wait"?{backgroundColor:Ee.swatch+"66",borderColor:Ee.swatch}:{backgroundColor:Xt(S.status),borderColor:qt(S.status)}:{}}),T=I(()=>{const{x:S,y:c}=g.pos;if(typeof window>"u")return{left:`${S+12}px`,top:`${c-10}px`};const R=S+12+sr>window.innerWidth,r=c+90>window.innerHeight;return{left:R?void 0:`${S+12}px`,right:R?`${window.innerWidth-S+12}px`:void 0,top:r?void 0:`${c-10}px`,bottom:r?`${window.innerHeight-c+10}px`:void 0}});return(S,c)=>(s(),v(xs,{to:"body"},[e.item?(s(),a("div",{key:0,class:"fixed z-[9999] pointer-events-none rounded-lg border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 px-3 py-2 text-xs shadow-lg",style:$e(T.value)},[n("div",Yi,[n("span",{class:ee(["inline-block size-2.5 rounded-full shrink-0",{"border border-dashed":e.item.kind!=="test"}]),style:$e(k.value)},null,6),n("span",Zi,[e.item.kind!=="test"?(s(),a("span",{key:0,class:ee(["uppercase text-[10px] tracking-wider mr-1",e.item.kind==="wait"?"text-amber-500":"text-gray-500"])},l(e.item.kind),3)):f("",!0),w(" "+l(e.item.title),1)])]),n("div",Qi,[n("span",er,l(e.item.status),1),n("span",null,l(t(ot)(e.item.duration)),1),n("span",null,"Worker "+l(e.item.workerIndex),1),e.item.parentTitle?(s(),a("span",tr," for "+l(e.item.parentTitle),1)):f("",!0)])],4)):f("",!0)]))}}),ar=Object.assign(nr,{__name:"TimelineTooltip"}),lr=["Wait for timeout*","*waitForTimeout*"];function or(e){const g=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${g}$`,"i")}const zt=new Map;function ir(e){let g=zt.get(e);return g||(g=or(e),zt.set(e,g)),g}function rr(e,g){if(!g||g.length===0)return!1;const k=e.title??"",T=e.location??"";for(const S of g){const c=ir(S);if(c.test(k)||T&&c.test(T))return!0}return!1}function ur(e){const g=new Map;for(const k of e){const T=k.workerIndex;if(T==null||T<0)continue;const S=k.shardIndex??null,c=`${S??"null"}|${T}`;let R=g.get(c);R||(R={shardIndex:S,workerIndex:T,cases:[]},g.set(c,R)),R.cases.push(k)}return[...g.values()].sort((k,T)=>{const S=k.shardIndex??1/0,c=T.shardIndex??1/0;return S!==c?S-c:k.workerIndex-T.workerIndex})}function st(e){if(e==null)return null;if(typeof e=="number")return Number.isFinite(e)?e:null;if(e instanceof Date)return e.getTime();const g=new Date(e).getTime();return Number.isNaN(g)?null:g}function cr(e,g){return e.category==="wait"?rr(e,g)?"wait":null:e.category==="hook"||e.category==="fixture"?e.category:null}function dr(e){const g=I(()=>e.wastedPatterns&&e.wastedPatterns.length>0?e.wastedPatterns:lr),k=I(()=>ur(e.testCases)),T=I(()=>{const r=k.value,x=g.value;let M=1/0;for(const G of r)for(const Y of G.cases){const b=st(Y.startedAt);b!=null&&b>0&&(M=Math.min(M,b))}const U=Number.isFinite(M),B=G=>Math.max(0,(st(G)??M)-M),F=[],j=new Map;if(r.forEach((G,Y)=>{const b=[],z=U?G.cases:[...G.cases].sort((m,u)=>(st(m.startedAt)??0)-(st(u.startedAt)??0));let N=0;for(const m of z){const u=m.duration??1e3,h=U?B(m.startedAt):N;b.push({key:`t${m.executionId}`,kind:"test",testCaseId:m.executionId,title:m.title,status:m.status,workerIndex:G.workerIndex,start:h,duration:u,rowIndex:Y}),N=h+u,(m.stepEvents??[]).forEach((X,W)=>{const _=cr(X,x);if(!_)return;const O=X.duration||0,oe=U?B(X.startedAt):N;b.push({key:`s${m.executionId}:${W}`,kind:_,testCaseId:m.executionId,title:X.title,status:X.status||"passed",workerIndex:G.workerIndex,start:oe,duration:O,rowIndex:Y,parentTitle:m.title}),N=oe+O})}b.sort((m,u)=>m.start-u.start),F.push(...b),j.has(G.workerIndex)||j.set(G.workerIndex,N)}),e.setupSteps&&e.setupSteps.length>0){const G=new Map;r.forEach((Y,b)=>{G.has(Y.workerIndex)||G.set(Y.workerIndex,b)}),e.setupSteps.forEach((Y,b)=>{const z=Y.workerIndex;if(z==null||z<0)return;const N=G.get(z);if(N==null)return;const m=Y.duration||0;let u;U?u=B(Y.startedAt):(u=j.get(z)??0,j.set(z,u+m)),F.push({key:`setup${z}:${b}`,kind:"setup",testCaseId:null,title:`[Setup] ${Y.title}`,status:Y.status||"passed",workerIndex:z,start:u,duration:m,rowIndex:N,parentTitle:null})})}return F}),S=I(()=>k.value.map(r=>({shardIndex:r.shardIndex,workerIndex:r.workerIndex}))),c=I(()=>{const r=[];for(let x=0;x<S.value.length;x++){const M=S.value[x],U=r[r.length-1];!U||U.shardIndex!==M.shardIndex?r.push({shardIndex:M.shardIndex,rowRange:[x,x]}):U.rowRange[1]=x}return r}),R=I(()=>{let r=0;for(const x of T.value)r=Math.max(r,x.start+x.duration);return r||6e4});return{timelineData:T,workerRows:S,shardGroups:c,maxTime:R}}const Ft=1.12,mr=10,fr=100,ft=[10,20,50,100,200,500,1e3,2e3,5e3,1e4,15e3,3e4,6e4,12e4,3e5,6e5,9e5,18e5,36e5];function pr(e){const{containerRef:g,maxTime:k,rowCount:T,hasData:S,live:c}=e,{labelWidth:R,sidePadding:r,axisHeight:x,rowHeight:M}=lt,U=H(1),B=H(0),F=H(!1),j=H(0),G=H(0),Y=I(()=>.5*U.value),b=I(()=>k.value*Y.value+R+r),z=I(()=>T.value*M+x);function N($){return $.start*Y.value+R}function m($){return Math.max($.duration*Y.value,3)}function u($){return $.rowIndex*M+x}function h(){const $=g.value?.clientWidth;if(!$||k.value<=0)return 1;const Z=($-R)/k.value;return Math.min(1,Z/.5)}function y(){const $=h();$>0&&(U.value=$,B.value=0)}function X($){if(!g.value)return $;const Z=g.value.clientWidth;return b.value<=Z?0:Math.max(Z-b.value,Math.min(0,$))}function W($,Z){const ae=Math.max(h(),Math.min(mr,$)),se=ae/U.value;U.value=ae,B.value=X(Z-(Z-B.value)*se)}const _=I(()=>{const $=fr/Y.value;let Z=ft.find(se=>se>=$)??ft[ft.length-1];for(;k.value/Z>1e3;)Z*=2;const ae=[];for(let se=0;se<=k.value;se+=Z)ae.push({ms:se,x:se*Y.value+R,label:ot(se)});return ae});function O($){if(c())return;const Z=$.deltaY>0?1/Ft:Ft,ae=g.value?.getBoundingClientRect();W(U.value*Z,ae?$.clientX-ae.left:0)}const oe=4,Q=new Map;let ne=null,me=0,xe=1,A=0;function q($,Z){ne=$,j.value=Z,G.value=B.value}function L($){if(!c()&&!($.pointerType==="mouse"&&$.button!==0)){if(Q.set($.pointerId,{x:$.clientX,y:$.clientY}),Q.size===1)q($.pointerId,$.clientX);else if(Q.size===2){ne=null,F.value=!1;for(const p of Q.keys())g.value?.setPointerCapture?.(p);const[Z,ae]=[...Q.values()];me=Math.hypot(Z.x-ae.x,Z.y-ae.y)||1,xe=U.value;const se=g.value?.getBoundingClientRect();A=(Z.x+ae.x)/2-(se?.left??0)}$.preventDefault()}}function C($){if(!(c()||!Q.has($.pointerId))){if(Q.set($.pointerId,{x:$.clientX,y:$.clientY}),Q.size>=2){const[Z,ae]=[...Q.values()],se=Math.hypot(Z.x-ae.x,Z.y-ae.y)||1;W(xe*(se/me),A);return}F.value?B.value=X(G.value+($.clientX-j.value)):ne===$.pointerId&&Math.abs($.clientX-j.value)>oe&&(g.value?.setPointerCapture?.($.pointerId),F.value=!0,B.value=X(G.value+($.clientX-j.value)))}}function ve($){if(Q.delete($.pointerId),ne===$.pointerId&&(ne=null),g.value?.releasePointerCapture?.($.pointerId),Q.size===1){const[Z]=[...Q.entries()];q(Z[0],Z[1].x)}else Q.size===0&&(F.value=!1)}function ue(){y()}let te=null;return kt(()=>{Oe(y),g.value&&(te=new ResizeObserver(()=>y()),te.observe(g.value))}),wt(()=>{te?.disconnect()}),de(()=>[c(),S.value,k.value,T.value],([$,Z])=>{$&&Z&&Oe(y)}),{panX:B,isPanning:F,pxPerMs:Y,contentWidth:b,contentHeight:z,getBarX:N,getBarWidth:m,getBarTop:u,tickMarks:_,onWheel:O,onPointerDown:L,onPointerMove:C,onPointerUp:ve,resetView:ue}}const gr={key:0,class:"relative select-none","data-shot":"run-timeline"},xr=["width","height"],vr=ge({__name:"WorkersTimeline",props:{testCases:{},setupSteps:{},shardTotal:{},live:{type:Boolean},wastedPatterns:{}},emits:["selectTestCase"],setup(e,{emit:g}){const k=e,T=g,{timelineData:S,workerRows:c,shardGroups:R,maxTime:r}=dr(k),x=H(null),M=I(()=>c.value.length),U=I(()=>S.value.length>0),{panX:B,isPanning:F,contentWidth:j,contentHeight:G,getBarX:Y,getBarWidth:b,getBarTop:z,tickMarks:N,onWheel:m,onPointerDown:u,onPointerMove:h,onPointerUp:y,resetView:X}=pr({containerRef:x,maxTime:r,rowCount:M,hasData:U,live:()=>k.live}),W=I(()=>S.value.filter(te=>te.kind==="test").length),_=I(()=>S.value.filter(te=>te.kind!=="test"&&te.kind!=="wait").length),O=I(()=>S.value.filter(te=>te.kind==="wait").length),oe=["test","setup","hook","fixture","wait"],Q={test:"Tests",setup:"Setup (beforeAll/afterAll)",hook:"Hooks",fixture:"Fixtures",wait:"Wasted waits"},ne=H({}),me=I(()=>S.value.filter(te=>!ne.value[te.kind])),xe=I(()=>{const te=new Set(S.value.map($=>$.kind));return oe.filter($=>te.has($)).map($=>({key:$,label:Q[$],checked:!ne.value[$]}))});function A(te,$){ne.value={...ne.value,[te]:!$}}const q=H(null),L=H({x:0,y:0});de(me,te=>{q.value&&(q.value=te.find($=>$.key===q.value.key)??null)});function C(te,$){q.value=te,L.value={x:$.clientX,y:$.clientY}}function ve(te){L.value={x:te.clientX,y:te.clientY}}function ue(){q.value=null}return(te,$)=>{const Z=Ii,ae=Ai,se=Ji,p=ar,P=Ke;return t(S).length>0?(s(),a("div",gr,[i(Z,{"worker-count":t(c).length,"shard-total":e.shardTotal,"test-count":W.value,"hook-count":_.value,"wait-count":O.value,"span-types":xe.value,live:e.live,onToggleSpan:A,onReset:t(X)},null,8,["worker-count","shard-total","test-count","hook-count","wait-count","span-types","live","onReset"]),n("div",{ref_key:"containerRef",ref:x,class:ee(["relative overflow-hidden rounded-lg border border-gray-200 dark:border-gray-700 touch-pan-y",{"cursor-grab":!t(F),"cursor-grabbing":t(F)}]),style:$e({height:t(G)+"px"}),onWheel:$[1]||($[1]=je((...J)=>t(m)&&t(m)(...J),["prevent"])),onPointerdown:$[2]||($[2]=(...J)=>t(u)&&t(u)(...J)),onPointermove:$[3]||($[3]=(...J)=>t(h)&&t(h)(...J)),onPointerup:$[4]||($[4]=(...J)=>t(y)&&t(y)(...J)),onPointercancel:$[5]||($[5]=(...J)=>t(y)&&t(y)(...J)),onPointerleave:$[6]||($[6]=(...J)=>t(y)&&t(y)(...J))},[(s(),a("svg",{class:"overflow-visible",style:$e({transform:`translateX(${t(B)}px)`}),width:t(j),height:t(G)},[$[7]||($[7]=n("defs",null,[n("filter",{id:"glow"},[n("feGaussianBlur",{stdDeviation:"2.5",result:"blur"}),n("feMerge",null,[n("feMergeNode",{in:"blur"}),n("feMergeNode",{in:"SourceGraphic"})])])],-1)),i(ae,{"worker-rows":t(c),"shard-groups":t(R),"tick-marks":t(N),"content-width":t(j),"shard-total":e.shardTotal},null,8,["worker-rows","shard-groups","tick-marks","content-width","shard-total"]),(s(!0),a(K,null,ie(me.value,J=>(s(),v(se,{key:J.key,item:J,x:t(Y)(J),y:t(z)(J),width:t(b)(J),onSelect:$[0]||($[0]=ce=>T("selectTestCase",ce)),onHover:C,onMove:ve,onLeave:ue},null,8,["item","x","y","width"]))),128))],12,xr))],38),i(p,{item:q.value,pos:L.value},null,8,["item","pos"])])):(s(),v(P,{key:1,icon:"i-lucide-rows-3",text:"No worker data available for this run."}))}}}),hr=Object.assign(vr,{__name:"WorkersTimeline"}),yr={key:0,class:"space-y-4"},kr={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},br={class:"flex items-center gap-2 py-1.5"},wr={class:"font-medium"},_r={key:0,class:"flex"},$r={key:1,class:"flex items-center justify-center py-6 text-gray-500 gap-2"},Tr={class:"flex flex-wrap gap-2 mt-1"},Rr={class:"flex flex-wrap gap-4 text-sm"},Cr={key:3,class:"text-sm text-gray-500"},Sr={class:"flex flex-wrap gap-4 text-sm"},Ir={key:0,class:"text-gray-400"},zr={key:0,class:"text-gray-400"},Fr={key:1,class:"text-gray-400"},Dr={key:1,class:"text-gray-400"},Nr={key:0,class:"text-gray-400"},Pr={key:0,class:"text-gray-400"},jr={key:1,class:"text-center py-10 text-gray-500"},Br=ge({__name:"RunCompare",props:{testRun:{}},setup(e){const g=e,T=Ye().params.id,S=H(null),c=H([]),R=I(()=>g.testRun?.status==="running"||g.testRun?.status==="finalizing");de(()=>g.testRun?.projectId,async u=>{if(!(!u||R.value)){try{S.value=await $fetch(`/api/projects/${u}`)}catch(h){console.error("Failed to fetch project for RunCompare",h)}try{const h=await $fetch(`/api/projects/${u}/markers`);c.value=h.items??[]}catch{}}},{immediate:!0});const r=I(()=>{if(!j.value||!g.testRun)return[];const u=new Date(j.value.startTime).getTime(),h=new Date(g.testRun.startTime).getTime(),y=Math.min(u,h),X=Math.max(u,h),W=new Set([j.value.environment,g.testRun.environment].filter(_=>_!=null));return c.value.filter(_=>{const O=new Date(_.occurredAt).getTime();return O<=y||O>=X?!1:_.environment==null||W.has(_.environment)})});function x(u){return{label:`Run #${u.id} — ${Bt(u.startTime,{dateOnly:!0})} (${u.status})`,value:u.id,status:u.status,startTime:new Date(u.startTime).getTime()}}const M=I(()=>{const u=S.value?.testRuns;if(!u||!g.testRun)return null;const h=new Date(g.testRun.startTime).getTime(),y=u.filter(W=>W.id!==Number(T)&&new Date(W.startTime).getTime()<h).sort((W,_)=>new Date(_.startTime).getTime()-new Date(W.startTime).getTime()),X=y.find(W=>W.status==="passed")??y[0];return X?x(X):null}),U=I(()=>{const u=S.value?.testRuns;if(!u)return[];const h=u.filter(X=>X.id!==Number(T)).slice(0,50).map(x),y=M.value;return y&&!h.some(X=>X.value===y.value)&&h.push(y),h});de([U,M],([u,h])=>{F.value||!h||(F.value=u.find(y=>y.value===h.value)??h)});const B=I(()=>{if(!S.value?.testRuns)return null;const u=[...S.value.testRuns].sort((y,X)=>new Date(X.startTime).getTime()-new Date(y.startTime).getTime()),h=u.findIndex(y=>y.id===Number(T));return h>=0&&h<u.length-1?u[h+1].id:null}),F=H(void 0),j=H(null),G=H(!1);de(F,async u=>{if(!u?.value){j.value=null;return}G.value=!0;try{j.value=await $fetch(`/api/test-runs/${u.value}`)}catch{}finally{G.value=!1}});function Y(){if(B.value){const u=U.value.find(h=>h.value===B.value);u&&(F.value=u)}}const b=I(()=>g.testRun??null),{comparisonData:z,comparisonSummary:N}=Js(j,b),m=[{accessorKey:"title",header:pe("Test case")},{accessorKey:"statusA",header:pe("Status A")},{accessorKey:"statusB",header:pe("Status B")},{accessorKey:"durationA",header:pe("Duration A")},{accessorKey:"durationB",header:pe("Duration B")},{accessorKey:"delta",header:pe("Delta")},{accessorKey:"percentChange",header:pe("Change")}];return(u,h)=>{const y=Gs,X=Xs,W=Fe,_=_e,O=Nt,oe=qs,Q=Re,ne=Ze,me=Rt,xe=Wt,A=Ke;return s(),a("div",null,[e.testRun&&!R.value?(s(),a("div",yr,[n("div",kr,[n("div",null,[h[1]||(h[1]=n("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",for:"compare-baseline-select"},"Run A (baseline)",-1)),i(y,{id:"compare-baseline-select",modelValue:F.value,"onUpdate:modelValue":h[0]||(h[0]=q=>F.value=q),items:U.value,placeholder:"Select a baseline run..."},null,8,["modelValue","items"])]),n("div",null,[h[2]||(h[2]=n("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Run B (this run)",-1)),n("div",br,[i(X,{status:e.testRun.status},null,8,["status"]),n("span",wr,"#"+l(e.testRun.id),1)])])]),B.value?(s(),a("div",_r,[i(W,{icon:"i-lucide-arrow-left-right",size:"sm",variant:"outline",label:"Compare with previous run",onClick:Y})])):f("",!0),G.value?(s(),a("div",$r,[i(_,{name:"i-lucide-loader-2",class:"size-4 animate-spin"}),h[3]||(h[3]=n("span",null,"Loading baseline data...",-1))])):r.value.length>0?(s(),v(oe,{key:2,color:"warning",variant:"subtle",icon:"i-lucide-milestone",title:`${r.value.length} timeline marker${r.value.length>1?"s":""} between these runs`},{description:o(()=>[n("div",Tr,[(s(!0),a(K,null,ie(r.value,q=>(s(),v(O,{key:q.id,marker:q,size:"sm"},null,8,["marker"]))),128))])]),_:1},8,["title"])):j.value&&t(z).length>0?(s(),a(K,{key:3},[n("div",Rr,[h[4]||(h[4]=n("span",{class:"text-xs font-semibold text-gray-500 uppercase tracking-wider mr-1"},"Status",-1)),t(N).newFailures>0?(s(),v(Q,{key:0,color:"error",variant:"soft",size:"lg"},{default:o(()=>[w(l(t(N).newFailures)+" new failure"+l(t(N).newFailures>1?"s":""),1)]),_:1})):f("",!0),t(N).recovered>0?(s(),v(Q,{key:1,color:"success",variant:"soft",size:"lg"},{default:o(()=>[w(l(t(N).recovered)+" recovered ",1)]),_:1})):f("",!0),t(N).stillFailing>0?(s(),v(Q,{key:2,color:"warning",variant:"soft",size:"lg"},{default:o(()=>[w(l(t(N).stillFailing)+" still failing ",1)]),_:1})):f("",!0),t(N).newFailures===0&&t(N).recovered===0&&t(N).stillFailing===0?(s(),a("span",Cr,"No status changes")):f("",!0)]),n("div",Sr,[h[5]||(h[5]=n("span",{class:"text-xs font-semibold text-gray-500 uppercase tracking-wider mr-1"},"Duration changes",-1)),t(N).regressed>0?(s(),v(Q,{key:0,color:"error",variant:"soft",size:"lg"},{default:o(()=>[w(l(t(N).regressed)+" regressed ",1)]),_:1})):f("",!0),t(N).improved>0?(s(),v(Q,{key:1,color:"success",variant:"soft",size:"lg"},{default:o(()=>[w(l(t(N).improved)+" improved ",1)]),_:1})):f("",!0),i(Q,{color:"neutral",variant:"soft",size:"lg"},{default:o(()=>[w(l(t(N).unchanged)+" unchanged ",1)]),_:1})]),i(xe,{"min-width":"48rem",bleed:!1},{default:o(()=>[i(me,{data:t(z),columns:m,ui:{base:"table-fixed border-separate border-spacing-0 min-w-[48rem]",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"statusA-cell":o(({row:q})=>[q.original.statusA?(s(),v(Q,{key:1,color:("getStatusColor"in u?u.getStatusColor:t(xt))(q.original.statusA),variant:"subtle",class:"capitalize"},{default:o(()=>[w(l(q.original.statusA),1)]),_:2},1032,["color"])):(s(),a("span",Ir,"—"))]),"statusB-cell":o(({row:q})=>[q.original.statusB?(s(),v(Q,{key:1,color:("getStatusColor"in u?u.getStatusColor:t(xt))(q.original.statusB),variant:"subtle",class:"capitalize"},{default:o(()=>[w(l(q.original.statusB),1)]),_:2},1032,["color"])):(s(),a("span",zr,"—"))]),"durationA-cell":o(({row:q})=>[q.original.durationA!==null?(s(),v(ne,{key:0,ms:q.original.durationA},null,8,["ms"])):(s(),a("span",Fr,"—"))]),"durationB-cell":o(({row:q})=>[q.original.durationB!==null?(s(),v(ne,{key:0,ms:q.original.durationB},null,8,["ms"])):(s(),a("span",Dr,"—"))]),"delta-cell":o(({row:q})=>[q.original.delta===null?(s(),a("span",Nr,"—")):(s(),a("span",{key:1,class:ee(q.original.delta>0?"text-red-600":q.original.delta<0?"text-green-600":"text-gray-500")},[w(l(q.original.delta>0?"+":""),1),i(ne,{ms:q.original.delta,"unit-class":"opacity-60"},null,8,["ms"])],2))]),"percentChange-cell":o(({row:q})=>[q.original.percentChange===null?(s(),a("span",Pr,"—")):(s(),a("span",{key:1,class:ee(q.original.percentChange>10?"text-red-600 font-medium":q.original.percentChange<-10?"text-green-600 font-medium":"text-gray-500")},l(q.original.percentChange>0?"+":"")+l(q.original.percentChange)+"% ",3))]),_:1},8,["data"])]),_:1})],64)):F.value&&!G.value?(s(),v(A,{key:4,icon:"i-lucide-git-compare-arrows",text:"No comparison data available."})):(s(),v(A,{key:5,icon:"i-lucide-arrow-left-right",text:"Select a baseline run to compare."}))])):R.value?(s(),a("div",jr,[i(_,{name:"i-lucide-git-compare-arrows",class:"size-8 mx-auto mb-2 text-gray-300 dark:text-gray-600"}),h[6]||(h[6]=n("p",null,"Comparison is available after the run finishes.",-1))])):f("",!0)])}}}),Mr=Object.assign(Br,{__name:"RunCompare"}),Ar={class:"flex flex-col overflow-hidden"},Ur={key:0,class:"flex-1 flex items-center justify-center text-gray-500 gap-2"},Lr={class:"text-xs font-mono break-all"},Er={key:0,class:"text-gray-400"},Or={key:1,class:"text-red-600 font-medium"},Kr=ge({__name:"SlowEndpoints",props:{refreshKey:{}},emits:["endpointsCount"],async setup(e,{emit:g}){let k,T;const c=Ye().params.id,R=e,r=g,{data:x,pending:M,refresh:U}=([k,T]=qe(()=>Je(`/api/test-runs/${c}/network-requests`,{lazy:!0,server:!1,transform:F=>F.items},"$QlrRz6EqI4")),k=await k,T(),k);de(x,F=>{r("endpointsCount",F?.length??0)}),de(()=>R.refreshKey,(F,j)=>{F!==j&&F!==void 0&&U()});const B=[{accessorKey:"method",header:pe("Method")},{accessorKey:"route",header:pe("Route")},{accessorKey:"count",header:pe("Calls")},{accessorKey:"avgDuration",header:pe("Avg")},{accessorKey:"p90Duration",header:pe("P90")},{accessorKey:"maxDuration",header:pe("Max")},{accessorKey:"errorRate",header:pe("Errors")}];return(F,j)=>{const G=_e,Y=Re,b=Ze,z=Rt,N=Ys;return s(),a("div",Ar,[t(M)?(s(),a("div",Ur,[i(G,{name:"i-lucide-loader-2",class:"size-4 animate-spin"}),j[0]||(j[0]=n("span",null,"Loading network data...",-1))])):t(x)&&t(x).length>0?(s(),v(z,{key:1,sticky:"",data:t(x),columns:B,"aria-label":"Slow endpoints",class:"flex-1 min-h-0",ui:{base:"table-fixed border-separate border-spacing-0 min-w-[44rem]",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0 [&>tr]:hover:bg-gray-50 dark:[&>tr]:hover:bg-gray-900/50",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"method-cell":o(({row:m})=>[i(Y,{color:m.original.method==="GET"?"info":m.original.method==="POST"?"success":m.original.method==="PUT"||m.original.method==="PATCH"?"warning":m.original.method==="DELETE"?"error":"neutral",variant:"soft",class:"font-mono text-xs"},{default:o(()=>[w(l(m.original.method),1)]),_:2},1032,["color"])]),"route-cell":o(({row:m})=>[n("code",Lr,l(m.original.route),1)]),"avgDuration-cell":o(({row:m})=>[n("span",{class:ee(m.original.avgDuration>1e3?"text-red-600 font-medium":m.original.avgDuration>500?"text-orange-500 font-medium":"")},[i(b,{ms:m.original.avgDuration,"unit-class":"opacity-60"},null,8,["ms"])],2)]),"p90Duration-cell":o(({row:m})=>[n("span",{class:ee(m.original.p90Duration>2e3?"text-red-600 font-medium":m.original.p90Duration>1e3?"text-orange-500":"")},[i(b,{ms:m.original.p90Duration,"unit-class":"opacity-60"},null,8,["ms"])],2)]),"maxDuration-cell":o(({row:m})=>[n("span",{class:ee(m.original.maxDuration>2e3?"text-red-600 font-medium":m.original.maxDuration>1e3?"text-orange-500":"")},[i(b,{ms:m.original.maxDuration,"unit-class":"opacity-60"},null,8,["ms"])],2)]),"errorRate-cell":o(({row:m})=>[m.original.errorRate===0?(s(),a("span",Er,"0%")):(s(),a("span",Or,l(m.original.errorRate)+"%",1))]),_:1},8,["data"])):(s(),v(N,{key:2,class:"flex-1",icon:"i-lucide-wifi-off",title:"No network requests captured",text:"Slow endpoints need the Piwi capture fixtures — extend your Playwright test with piwiFixtures and request timing rides along with every run.",doc:"capture-fixtures"}))])}}}),Wr=Object.assign(Kr,{__name:"SlowEndpoints"}),Vr={class:"flex items-center shrink-0 min-w-0"},Hr={key:0,class:"flex items-center gap-2 mb-3 shrink-0"},ec=ge({__name:"[id]",async setup(e){let g,k;const T=Ye(),S=vs(),c=T.params.id,R=!!yt().public.demoMode,{data:r,refresh:x}=([g,k]=qe(()=>Je(`/api/test-runs/${c}`,"$JCybzNzO0T")),g=await g,k(),g),M=r.value?.projectId,{data:U,refresh:B}=M?([g,k]=qe(()=>Je(`/api/projects/${M}/latest-run`,{key:`latest-run-${M}`},"$26uPrJhWGK")),g=await g,k(),g):{data:H(null),refresh:async()=>{}};Zs(B);const F=I(()=>U.value?.id??r.value?.project?.latestRunId??null),j=I(()=>U.value?.status??r.value?.project?.latestRunStatus??null),G=I(()=>j.value==="running"||j.value==="finalizing"),Y=I(()=>{const D=r.value?.project?.label||r.value?.project?.name;return D?`Run #${c} — ${D}`:`Run #${c}`});hs(I(()=>{const D=r.value?.project?.label||r.value?.project?.name;return{title:`Test run #${c}${D?` — ${D}`:""} — Piwi Dashboard`}}));const b=Dt(),z=H(!1),N=H(!1),m=I(()=>r.value?.status==="running"||r.value?.status==="finalizing"),u=H(!1),h=H([]),y=new Map,X=H(null),W=H({});let _=null;const O=H([]);de([m,r],()=>{m.value&&h.value.length>0?O.value=[...h.value]:r.value?.testCases?O.value=r.value.testCases:O.value=[]},{immediate:!0});function oe(D){for(const E of D){const re=`${E.title}@@${E.location}@@${JSON.stringify(E.browser)}`;y.has(re)||(y.set(re,!0),h.value=[...h.value,E])}O.value=[...h.value]}let Q=[],ne=null;function me(){if(Q.length===0)return;const D=Q;Q=[];for(const E of D){const re=E.data;if(E.type==="init")X.value={totalTests:re.totalTests,passedTests:re.passedTests,failedTests:re.failedTests,skippedTests:re.skippedTests};else if(E.type==="test-begin"){const V=re;if(V.stepCategory)continue;const ze=`${V.title}@@${V.location}@@${JSON.stringify(V.browser)}`;y.has(ze)||(y.set(ze,!0),h.value=[...h.value,{executionId:h.value.length+1,testCaseId:0,title:V.title,filePath:V.filePath,suitePath:V.suitePath??void 0,status:"running",location:V.location,workerIndex:V.workerIndex??null,startedAt:V.startedAt??Date.now(),browser:V.browser??null}],O.value=[...h.value])}else if(E.type==="test-completed"){const V=re;if(V.stepCategory)continue;const ze=`${V.title}@@${V.location}@@${JSON.stringify(V.browser)}`;if(y.has(ze)){const Ve=h.value.findIndex(ke=>`${ke.title}@@${ke.location}@@${JSON.stringify(ke.browser)}`===ze);if(Ve>=0){const ke=h.value[Ve],He=[...h.value];He[Ve]={...ke,filePath:V.filePath??ke.filePath,suitePath:V.suitePath??ke.suitePath,status:V.status,duration:V.duration,error:V.error,stepEvents:V.stepEvents??ke.stepEvents,wastedTimeMs:V.wastedTimeMs??ke.wastedTimeMs,workerIndex:V.workerIndex??ke.workerIndex,startedAt:V.startedAt?V.startedAt:ke.startedAt,browser:V.browser??ke.browser},h.value=He,O.value=[...He]}}else y.set(ze,!0),h.value=[...h.value,{executionId:h.value.length+1,testCaseId:0,title:V.title,filePath:V.filePath,suitePath:V.suitePath??void 0,status:V.status,duration:V.duration,location:V.location,error:V.error,stepEvents:V.stepEvents??null,wastedTimeMs:V.wastedTimeMs??null,workerIndex:V.workerIndex??null,startedAt:V.startedAt??void 0,browser:V.browser??null}],O.value=[...h.value]}else if(E.type==="step-begin"){const V=E.data;if(V.workerIndex==null)continue;W.value={...W.value,[V.workerIndex]:{title:V.title,category:V.stepCategory??null,status:void 0,parentTitle:V.parentTitle??null}}}else if(E.type==="step-end"){const V=E.data;if(V.workerIndex==null)continue;W.value={...W.value,[V.workerIndex]:{title:V.title,category:V.stepCategory??null,status:V.status??"passed",parentTitle:V.parentTitle??null}}}else E.type==="run-progress"?X.value=re:E.type==="run-finalizing"?(u.value=!0,X.value=re):E.type==="run-finished"&&(u.value=!1,W.value={},ve(),x(),Se.value++,xe())}}function xe(D=0){R||D>=5||setTimeout(async()=>{await x(),xe(D+1)},1500*(D+1))}function A(D){Q.push(D),ne&&clearTimeout(ne),ne=setTimeout(me,200)}let q=null;function L(){q||(r.value?.testCases?.length&&oe(r.value.testCases),q=Qs(D=>{D.scope==="run"&&D.runId===Number(c)?A(D.event):D.scope==="global"&&D.event.runId===Number(c)&&D.event.type==="run-started"&&x()}))}function C(){if(R){L();return}_||m.value&&(r.value?.testCases?.length&&oe(r.value.testCases),_=new EventSource(`/api/test-runs/${c}/stream`),_.onmessage=D=>{try{A(JSON.parse(D.data))}catch{}},_.onerror=()=>{})}function ve(){_&&(_.close(),_=null),q&&(q(),q=null)}const ue=I(()=>m.value||R&&r.value?.status==="initializing");de(ue,D=>{D?C():ve()},{immediate:!0}),wt(()=>{ve()});let te=null;const $=H([]);de(O,D=>{te===null&&(te=requestAnimationFrame(()=>{$.value=D,te=null}))},{immediate:!0});const Z=I(()=>m.value&&X.value?X.value:r.value?{totalTests:r.value.totalTests,passedTests:r.value.passedTests,failedTests:r.value.failedTests,skippedTests:r.value.skippedTests}:null);async function ae(){z.value=!1,N.value=!0;try{await $fetch(`/api/test-runs/${c}`,{method:"DELETE"}),b.add({title:"Test run deleted",color:"success"}),await at(`/projects/${r.value?.project?.id}`)}catch(D){const E=D&&typeof D=="object"&&"data"in D?D.data?.message:void 0;b.add({title:"Delete failed",description:E||"An error occurred",color:"error"})}finally{N.value=!1}}const se=H(!1),p=H(""),P=H([]),J=H("all");function ce(D){if(!D||D==="all"){P.value=[];return}P.value=P.value.includes(D)?P.value.filter(E=>E!==D):[...P.value,D]}const Ce=I(()=>r.value?.reports||[]),Te=I(()=>{const D=O.value;return D?D.reduce((E,re)=>E+(re.wastedTimeMs??0),0):0}),fe=H("test-cases"),ye=I(()=>(Z.value?.failedTests??0)>0),De=I(()=>ye.value||(r.value?.flakyTests??0)>0),be=H(null),we=H({});async function Ne(){try{const D=await $fetch(`/api/test-runs/${c}/failure-groups`);we.value=Object.fromEntries(D.items.map(E=>[E.clusterId,E.title||`Cluster #${E.clusterId}`]))}catch{}}de(De,D=>{D&&Ne()},{immediate:!0});const Ae=I(()=>{const D=be.value;return D?D.title??we.value[D.id]??`Cluster #${D.id}`:""}),le=I(()=>{const D=be.value;return D?O.value.filter(E=>E.failureClusterId===D.id).length:0}),Pe=typeof T.query.cluster=="string"?Number(T.query.cluster):null;Pe&&!Number.isNaN(Pe)&&(be.value={id:Pe,title:null},fe.value="test-cases");const Se=H(0);de(Se,()=>{De.value&&Ne()});const Ie=H(r.value?.networkRequestCount??0);de(()=>r.value?.networkRequestCount,D=>{D!=null&&(Ie.value=D)});function rt(){be.value=null}const ut=I(()=>{if(!r.value?.testCases)return 0;const D=new Set;for(const E of r.value.testCases)E.failureClusterId!=null&&D.add(E.failureClusterId);return D.size}),Qe=I(()=>{const D=m.value?O.value:r.value?.testCases;if(!D||D.length===0)return 0;const E=new Set;for(const re of D)re.workerIndex!=null&&re.workerIndex>=0&&E.add(re.workerIndex);return E.size}),We=I(()=>[{label:`Executions (${O.value.length})`,icon:"i-lucide-beaker",value:"test-cases",slot:"test-cases"},{label:"Insights",icon:"i-lucide-sparkles",value:"insights",slot:"insights"},{label:ye.value?`Failure clusters (${ut.value})`:"Failure clusters",icon:"i-lucide-layers",value:"failure-groups",slot:"failure-groups",disabled:!De.value,disabledReason:"no failing tests in this run"},{label:"Since last pass",icon:"i-lucide-git-pull-request-arrow",value:"regression",slot:"regression",disabled:!De.value,disabledReason:"no failing tests in this run"},{label:`Timeline${Qe.value>0?` (${Qe.value})`:""}`,icon:"i-lucide-timeline",value:"workers",slot:"workers"},{label:"Compare",icon:"i-lucide-git-compare-arrows",value:"compare",slot:"compare"},{label:`Slow endpoints${Ie.value>0?` (${Ie.value})`:""}`,icon:"i-lucide-network",value:"endpoints",slot:"endpoints"}]),d={"test-cases":"overflow-hidden flex flex-col",endpoints:"overflow-hidden flex flex-col"},Ue=I(()=>We.value.filter(D=>!D.disabled).map(D=>D.value));typeof T.query.tab=="string"&&Ue.value.includes(T.query.tab)&&(fe.value=T.query.tab),de(Ue,D=>{D.includes(fe.value)||(fe.value="test-cases")}),de([fe,be],([D,E])=>{const re={...T.query};E?re.cluster=String(E.id):delete re.cluster,re.tab=D,JSON.stringify(re)!==JSON.stringify({...T.query})&&S.replace({query:re})});const et=H(null);function ct(D){fe.value="test-cases",Oe(()=>{et.value?.scrollToCase(D)})}function Jt(D){be.value={id:D,title:null},fe.value="test-cases"}return(D,E)=>{const re=cs,V=Be,ze=sn,Ve=ys,ke=ks,He=ws,Yt=ka,Zt=Re,dt=Fe,Qt=Cl,es=To,ts=Xo,ss=_i,ns=hr,as=Mr,ls=Wr,os=Rs,is=bs,rs=Vt,us=bt;return s(),a(K,null,[i(is,{id:"test-run-detail"},{header:o(()=>[i(He,{title:Y.value},{leading:o(()=>[i(re),i(Ve,{items:[{label:"Home",icon:"i-lucide-house",to:"/"},{label:"Projects",to:"/projects"},...t(r)?.project?.id?[{label:t(r).project.label||t(r).project.name||"Project",to:`/projects/${t(r).project.id}`,slot:"project"}]:[{label:"Project"}],{label:`Run #${t(c)}`+(t(r)?.label?` — ${t(r).label}`:"")}]},{project:o(({item:he})=>[i(V,{to:he?.to,class:"text-sm font-medium text-[var(--ui-text-muted)] hover:text-[var(--ui-text)] transition-colors"},{default:o(()=>[w(l(he?.label),1)]),_:2},1032,["to"]),i(ze,{class:"ml-1","latest-run-id":F.value,"current-run-id":Number(t(c)),"is-active":G.value},null,8,["latest-run-id","current-run-id","is-active"])]),_:1},8,["items"]),i(ze,{class:"ml-1 sm:hidden","latest-run-id":F.value,"current-run-id":Number(t(c)),"is-active":G.value},null,8,["latest-run-id","current-run-id","is-active"])]),right:o(()=>[n("div",Vr,[i(ke,{actions:[{label:"Refresh",icon:"i-lucide-refresh-cw",onClick:()=>t(x)()},{label:"Delete",icon:"i-lucide-trash-2",color:"error",variant:"soft",loading:t(N),onClick:()=>z.value=!0}]},null,8,["actions"])])]),_:1},8,["title"])]),body:o(()=>[i(os,{modelValue:t(fe),"onUpdate:modelValue":E[5]||(E[5]=he=>Le(fe)?fe.value=he:null),"tab-items":We.value,"tab-panel-class":d},{summary:o(()=>[t(r)?(s(),v(Yt,{key:0,"test-run":t(r),"display-progress":Z.value,"all-reports":Ce.value,"show-custom-data":t(se),finalizing:t(u),"active-statuses":t(P),"total-wasted-time":Te.value,"onUpdate:showCustomData":E[0]||(E[0]=he=>se.value=he),onToggleStatus:ce,onLabelUpdated:t(x)},null,8,["test-run","display-progress","all-reports","show-custom-data","finalizing","active-statuses","total-wasted-time","onLabelUpdated"])):f("",!0)]),"tab-test-cases":o(()=>[t(be)!=null?(s(),a("div",Hr,[i(Zt,{color:"info",variant:"subtle",size:"sm"},{default:o(()=>[w(" Cluster: "+l(Ae.value)+" · "+l(le.value)+" "+l(le.value===1?"test":"tests"),1)]),_:1}),i(dt,{size:"xs",color:"neutral",variant:"ghost",icon:"i-lucide-x",label:"Clear filter",onClick:rt})])):f("",!0),i(Qt,{ref_key:"testCasesListRef",ref:et,search:t(p),"onUpdate:search":E[1]||(E[1]=he=>Le(p)?p.value=he:null),"active-statuses":t(P),"onUpdate:activeStatuses":E[2]||(E[2]=he=>Le(P)?P.value=he:null),"browser-filter":t(J),"onUpdate:browserFilter":E[3]||(E[3]=he=>Le(J)?J.value=he:null),"test-cases":t(O),suites:t(r)?.suites??[],"is-live":m.value,"live-steps":t(W),"failure-cluster-filter":t(be)?.id??null,"cluster-names":t(we),"project-key":t(r)?.projectId,"project-name":t(r)?.project?.name,class:"flex-1 min-h-0"},null,8,["search","active-statuses","browser-filter","test-cases","suites","is-live","live-steps","failure-cluster-filter","cluster-names","project-key","project-name"])]),"tab-insights":o(()=>[i(es,{"test-run-id":Number(t(c)),"run-status":t(r)?.status??"","refresh-key":t(Se),class:"flex-1 min-h-0 p-4"},null,8,["test-run-id","run-status","refresh-key"])]),"tab-failure-groups":o(()=>[i(ts,{"refresh-key":t(Se),onSelectCluster:Jt},null,8,["refresh-key"])]),"tab-regression":o(()=>[i(ss,{"refresh-key":t(Se)},null,8,["refresh-key"])]),"tab-workers":o(()=>[i(ns,{"test-cases":t($),"setup-steps":t(r)?.setupSteps??null,"shard-total":t(r)?.shardTotal??null,live:m.value,"wasted-patterns":t(r)?.wastedWaitPatterns??null,onSelectTestCase:ct},null,8,["test-cases","setup-steps","shard-total","live","wasted-patterns"])]),"tab-compare":o(()=>[i(as,{"test-run":t(r)},null,8,["test-run"])]),"tab-endpoints":o(()=>[i(ls,{"refresh-key":t(Se),class:"flex-1 min-h-0",onEndpointsCount:E[4]||(E[4]=he=>Ie.value=he)},null,8,["refresh-key"])]),_:1},8,["modelValue","tab-items"])]),_:1}),i(us,null,{default:o(()=>[i(rs,{open:t(z),title:"Delete test run","onUpdate:open":E[7]||(E[7]=he=>z.value=he)},{body:o(()=>[n("p",null,[E[8]||(E[8]=w(" Are you sure you want to delete ",-1)),n("strong",null,"test run #"+l(t(r)?.id),1),E[9]||(E[9]=w("? This will also remove all associated test results, reports, and traces. This action cannot be undone. ",-1))])]),footer:o(()=>[i(dt,{color:"neutral",variant:"ghost",label:"Cancel",onClick:E[6]||(E[6]=he=>z.value=!1)}),i(dt,{color:"error",label:"Delete",icon:"i-lucide-trash-2",loading:t(N),onClick:ae},null,8,["loading"])]),_:1},8,["open"])]),_:1})],64)}}});export{ec as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a3 as se,a5 as ie,aR as oe,aM as ue,aq as $,aS as H,aT as J,C as X,M as le,ad as fe,r as j,J as M,v as x,aU as k,o as ce,e as de,f as me,U as pe,D as ye,i as ve,b as g,ai as he,aV as Ee,a8 as be,N as w,aW as ge,aX as we,aY as Se,aZ as Fe}from"./
|
|
1
|
+
import{a3 as se,a5 as ie,aR as oe,aM as ue,aq as $,aS as H,aT as J,C as X,M as le,ad as fe,r as j,J as M,v as x,aU as k,o as ce,e as de,f as me,U as pe,D as ye,i as ve,b as g,ai as he,aV as Ee,a8 as be,N as w,aW as ge,aX as we,aY as Se,aZ as Fe}from"./1QWBzxLM.js";function Ie(n){return"schema"in n&&typeof n.coercer=="function"&&typeof n.validator=="function"&&typeof n.refiner=="function"}function qe(n){return"~standard"in n}async function je(n,i){const f=await i["~standard"].validate(n);return f.issues?{errors:f.issues?.map(u=>({name:u.path?.map(o=>typeof o=="object"?o.key:o).join(".")||"",message:u.message}))||[],result:null}:{errors:null,result:f.value}}async function xe(n,i){const[f,u]=i.validate(n);return f?{errors:f.failures().map(r=>({message:r.message,name:r.path.join(".")})),result:null}:{errors:null,result:u}}function Be(n,i){if(qe(i))return je(n,i);if(Ie(i))return xe(n,i);throw new Error("Form validation failed: Unsupported form schema")}function Ne(n,i){return i?i.split(".").reduce((u,o)=>u?.[o],n):n}function Oe(n,i,f){if(!i)return Object.assign(n,f);if(!n)return n;const u=i.split(".");let o=n;for(let y=0;y<u.length-1;y++){const v=u[y];(o[v]===void 0||o[v]===null)&&(y+1<u.length&&!Number.isNaN(Number(u[y+1]))?o[v]=[]:o[v]={}),o=o[v]}const r=u[u.length-1];return o[r]=f,n}class B extends Error{formId;errors;constructor(i,f){super("Form validation exception"),this.formId=i,this.errors=f,Object.setPrototypeOf(this,B.prototype)}}const Re={base:""},Ae={__name:"UForm",props:{id:{type:[String,Number],required:!1},schema:{type:null,required:!1},state:{type:null,required:!1},validate:{type:Function,required:!1},validateOn:{type:Array,required:!1,default(){return["input","blur","change"]}},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},validateOnInputDelay:{type:Number,required:!1,default:300},transform:{type:null,required:!1,default:()=>!0},nested:{type:Boolean,required:!1},loadingAuto:{type:Boolean,required:!1,default:!0},class:{type:null,required:!1},ui:{type:Object,required:!1},onSubmit:{type:Function,required:!1}},emits:["submit","error"],setup(n,{expose:i,emit:f}){const u=n,o=f,r=se("form",u),y=ie(),v=x(()=>be({extend:Re,...y.ui?.form||{}})),S=r.id??oe(),A=ue("formRef"),_=Ee(`form-${S}`),E=r.nested===!0&&$(H,void 0),C=r.nested===!0?$(J,void 0):void 0,F=x(()=>C?.value?r.name?Ne(C.value,r.name):C.value:r.state);w(H,_),w(J,F);const I=j(new Map);X(async()=>{E&&(await le(),E.emit({type:"attach",validate:q,formId:S,name:r.name,api:V}))}),fe(()=>{_.reset(),E&&E.emit({type:"detach",formId:S})}),X(async()=>{_.on(async e=>{e.type==="attach"?I.value.set(e.formId,{validate:e.validate,name:e.name,api:e.api}):e.type==="detach"?I.value.delete(e.formId):r.validateOn?.includes(e.type)&&!h.value&&(e.type!=="input"?await q({name:e.name,silent:!0,nested:!1}):(e.eager||K.has(e.name))&&await q({name:e.name,silent:!0,nested:!1})),e.type==="blur"&&K.add(e.name),(e.type==="change"||e.type==="input"||e.type==="blur"||e.type==="focus")&&T.add(e.name),(e.type==="change"||e.type==="input")&&O.add(e.name)})});const l=j([]);w(ge,l);const N=j({});w(we,N);const O=M(new Set),T=M(new Set),K=M(new Set);function W(e){return e.map(t=>({...t,id:t?.name?N.value[t.name]?.id:void 0}))}const R=j(null);async function Y(){let e=r.validate?await r.validate(F.value)??[]:[];if(r.schema){const{errors:t,result:a}=await Be(F.value,r.schema);t?e=e.concat(t):R.value=a}return W(e)}async function q(e={silent:!1,nested:!1,transform:!1}){const t=e.name&&!Array.isArray(e.name)?[e.name]:e.name;let a=[],s=[];if(!t&&e.nested){const p=Array.from(I.value.values()).map(m=>Z(m,e)),d=await Promise.all(p);s=d.filter(m=>m.error).flatMap(m=>m.error.errors.map(ne=>G(ne,m.name))),a=d.filter(m=>m.output!==void 0)}const b=[...await Y(),...s];if(t?l.value=ae(b,t):l.value=b,l.value?.length){if(e.silent)return!1;throw new B(S,l.value)}return e.transform?(a.forEach(p=>{p.name?Oe(R.value,p.name,p.output):Object.assign(R.value,p.output)}),R.value??F.value):F.value}const h=j(!1);w(Se,k(h));async function D(e){h.value=!!r.loadingAuto;const t=e;try{t.data=await q({nested:!0,transform:r.transform}),await r.onSubmit?.(t),O.clear()}catch(a){if(!(a instanceof B))throw a;const s={...t,errors:a.errors};o("error",s)}finally{h.value=!1}}const U=x(()=>r.disabled||h.value);w(Fe,x(()=>({disabled:U.value,validateOnInputDelay:r.validateOnInputDelay})));async function Z(e,t){try{const a=await e.validate({...t,silent:!1});return{name:e.name,output:a}}catch(a){if(!(a instanceof B))throw a;return{name:e.name,error:a}}}function G(e,t){return!t||!e.name?e:{...e,name:t+"."+e.name}}function Q(e,t){const a=t+".",s=e?.name?.startsWith(a)?e.name.substring(a.length):e.name;return{...e,name:s}}function ee(e,t){return t?e.filter(a=>a?.name?.startsWith(t+".")).map(a=>Q(a,t)):e}function L(e){return e.api.getErrors().map(t=>e.name?{...t,name:e.name+"."+t.name}:t)}function z(e,t){return!e||!t?!0:e instanceof RegExp?e.test(t):t===e||typeof e=="string"&&e.startsWith(t+".")}function te(e,t){if(!e||e instanceof RegExp)return e;if(t!==e)return typeof e=="string"&&e.startsWith(t+".")?e.substring(t.length+1):e}function ae(e,t){const a=new Set(t),s=t.map(d=>N.value?.[d]?.pattern).filter(Boolean),c=d=>d.name?a.has(d.name)?!0:s.some(m=>m.test(d.name)):!1,b=l.value.filter(d=>!c(d)),p=e.filter(c);return[...b,...p]}function re(e,t){return e.filter(a=>t instanceof RegExp?!(a.name&&t.test(a.name)):!a.name||a.name!==t)}function P(e){return!e.name||!!N.value[e.name]}const V={validate:q,errors:l,setErrors(e,t){const a=W(e.filter(P)),s=[];for(const c of I.value.values())if(z(t,c.name)){const b=ee(e,c.name);c.api.setErrors(b,te(t,c.name||"")),s.push(...L(c))}if(t){const c=re(l.value,t);l.value=[...c,...a,...s]}else l.value=[...a,...s]},async submit(){A.value instanceof HTMLFormElement&&A.value.reportValidity()===!1||await D(new Event("submit"))},getErrors(e){return e?l.value.filter(t=>e instanceof RegExp?t.name&&e.test(t.name):t.name===e):l.value},clear(e){const t=e?l.value.filter(s=>P(s)&&(e instanceof RegExp?!(s.name&&e.test(s.name)):s.name!==e)):[],a=[];for(const s of I.value.values())z(e,s.name)&&s.api.clear(),a.push(...L(s));l.value=[...t,...a]},disabled:U,loading:h,dirty:x(()=>!!O.size),dirtyFields:k(O),blurredFields:k(K),touchedFields:k(T)};return i(V),(e,t)=>(ce(),de(he(g(E)?"div":"form"),{id:g(S),ref_key:"formRef",ref:A,name:g(E)?void 0:g(r).name,method:"post",class:ve(v.value({class:[g(r).ui?.base,g(r).class]})),onSubmit:ye(D,["prevent"])},{default:me(()=>[pe(e.$slots,"default",{errors:l.value,loading:h.value})]),_:3},40,["id","name","class"]))}};export{Ae as _};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as O,Y as Q,X as ee,U as f,b as e,r as R,Z as te,T as B,o as r,e as i,f as u,V as D,W as I,ay as K,C as W,bp as U,h as k,bB as oe,bU as ae,bA as se,bV as x,by as le,a as N,v as F,P as L,ag as j,aA as X,bw as re,D as ne,l as g,$ as J,a0 as Y,bF as ue,a2 as ie,a3 as de,a4 as pe,a5 as fe,a6 as ce,a7 as ve,bG as ye,b2 as z,b1 as me,bW as _e,bR as ge,k as A,t as M,c as E,i as h,j as be,bJ as De,F as Oe,a8 as Ce,bX as qe}from"./BdQ7kfxJ.js";const[w,Be]=te("DialogRoot");var we=O({inheritAttrs:!1,__name:"DialogRoot",props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1,default:!1},modal:{type:Boolean,required:!1,default:!0},unmountOnHide:{type:Boolean,required:!1,default:!0}},emits:["update:open"],setup(d,{emit:n}){const a=d,o=Q(a,"open",n,{defaultValue:a.defaultOpen,passive:a.open===void 0}),t=R(),y=R(),{modal:p,unmountOnHide:c}=ee(a);return Be({open:o,modal:p,unmountOnHide:c,openModal:()=>{o.value=!0},onOpenChange:l=>{o.value=l},onOpenToggle:()=>{o.value=!o.value},contentId:"",titleId:"",descriptionId:"",triggerElement:t,contentElement:y}),(l,m)=>f(l.$slots,"default",{open:e(o),close:()=>o.value=!1})}}),he=we,ke=O({__name:"DialogClose",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(d){const n=d;B();const a=w();return(s,o)=>(r(),i(e(I),D(n,{type:s.as==="button"?"button":void 0,onClick:o[0]||(o[0]=t=>e(a).onOpenChange(!1))}),{default:u(()=>[f(s.$slots,"default")]),_:3},16,["type"]))}}),$e=ke,Pe=O({__name:"DialogContentImpl",props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},present:{type:Boolean,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(d,{emit:n}){const a=d,s=n,o=w(),{forwardRef:t,currentElement:y}=B();return o.titleId||=K(void 0,"reka-dialog-title"),o.descriptionId||=K(void 0,"reka-dialog-description"),W(()=>{o.contentElement=y,U()!==document.body&&(o.triggerElement.value=U())}),(p,c)=>(r(),i(e(se),{"as-child":"",loop:"",trapped:a.trapFocus,present:a.present,onMountAutoFocus:c[5]||(c[5]=l=>s("openAutoFocus",l)),onUnmountAutoFocus:c[6]||(c[6]=l=>s("closeAutoFocus",l))},{default:u(()=>[k(e(oe),D({id:e(o).contentId,ref:e(t),as:p.as,"as-child":p.asChild,present:a.present,"disable-outside-pointer-events":p.disableOutsidePointerEvents,role:"dialog","aria-describedby":e(o).descriptionId,"aria-labelledby":e(o).titleId,"data-state":e(ae)(e(o).open.value)},p.$attrs,{onDismiss:c[0]||(c[0]=l=>e(o).onOpenChange(!1)),onEscapeKeyDown:c[1]||(c[1]=l=>s("escapeKeyDown",l)),onFocusOutside:c[2]||(c[2]=l=>s("focusOutside",l)),onInteractOutside:c[3]||(c[3]=l=>s("interactOutside",l)),onPointerDownOutside:c[4]||(c[4]=l=>s("pointerDownOutside",l))}),{default:u(()=>[f(p.$slots,"default")]),_:3},16,["id","as","as-child","present","disable-outside-pointer-events","aria-describedby","aria-labelledby","data-state"])]),_:3},8,["trapped","present"]))}}),Z=Pe,Ee=O({__name:"DialogContentModal",props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},present:{type:Boolean,required:!0}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(d,{emit:n}){const a=d,s=n,o=w(),t=x(s),{forwardRef:y,currentElement:p}=B(),c=F(()=>a.present?p.value:void 0);le(c);const l=F(()=>{const{present:m,...v}=a;return v});return N(()=>a.present,(m,v)=>{!m&&v&&o.triggerElement.value?.focus()}),(m,v)=>(r(),i(Z,D({...l.value,...e(t)},{ref:e(y),present:m.present,"trap-focus":e(o).open.value,"disable-outside-pointer-events":a.disableOutsidePointerEvents,onCloseAutoFocus:v[0]||(v[0]=C=>{C.defaultPrevented||(C.preventDefault(),e(o).triggerElement.value?.focus())}),onPointerDownOutside:v[1]||(v[1]=C=>{const $=C.detail.originalEvent,b=$.button===0&&$.ctrlKey===!0;($.button===2||b)&&C.preventDefault()}),onFocusOutside:v[2]||(v[2]=C=>{C.preventDefault()})}),{default:u(()=>[f(m.$slots,"default")]),_:3},16,["present","trap-focus","disable-outside-pointer-events"]))}}),Fe=Ee,Ie=O({__name:"DialogContentNonModal",props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},present:{type:Boolean,required:!0}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(d,{emit:n}){const a=d,o=x(n);B();const t=w(),y=R(!1),p=R(!1),c=F(()=>{const{present:l,...m}=a;return m});return N(()=>a.present,(l,m)=>{!l&&m&&(y.value||t.triggerElement.value?.focus(),y.value=!1,p.value=!1)}),(l,m)=>(r(),i(Z,D({...c.value,...e(o)},{present:l.present,"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:m[0]||(m[0]=v=>{v.defaultPrevented||(y.value||e(t).triggerElement.value?.focus(),v.preventDefault()),y.value=!1,p.value=!1}),onInteractOutside:m[1]||(m[1]=v=>{v.defaultPrevented||(y.value=!0,v.detail.originalEvent.type==="pointerdown"&&(p.value=!0));const C=v.target;e(t).triggerElement.value?.contains(C)&&v.preventDefault(),v.detail.originalEvent.type==="focusin"&&p.value&&v.preventDefault()})}),{default:u(()=>[f(l.$slots,"default")]),_:3},16,["present"]))}}),Ae=Ie,Me=O({__name:"DialogContent",props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1,default:void 0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(d,{emit:n}){const a=d,s=n,o=w(),t=x(s),{forwardRef:y}=B();return(p,c)=>(r(),i(e(X),{present:p.forceMount||e(o).open.value,"force-mount":p.forceMount||!e(o).unmountOnHide.value},{default:u(({present:l})=>[e(o).modal.value?L((r(),i(Fe,D({key:0,ref:e(y),present:e(o).unmountOnHide.value||l},{...a,...e(t),...p.$attrs}),{default:u(()=>[f(p.$slots,"default")]),_:2},1040,["present"])),[[j,e(o).unmountOnHide.value||l]]):L((r(),i(Ae,D({key:1,ref:e(y),present:e(o).unmountOnHide.value||l},{...a,...e(t),...p.$attrs}),{default:u(()=>[f(p.$slots,"default")]),_:2},1040,["present"])),[[j,e(o).unmountOnHide.value||l]])]),_:3},8,["present","force-mount"]))}}),Re=Me,He=O({__name:"DialogDescription",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"p"}},setup(d){const n=d;B();const a=w();return(s,o)=>(r(),i(e(I),D(n,{id:e(a).descriptionId}),{default:u(()=>[f(s.$slots,"default")]),_:3},16,["id"]))}}),S=He,Te=O({__name:"DialogOverlayImpl",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1},present:{type:Boolean,required:!1,default:!0}},setup(d){const n=d,a=w(),s=re(n.present);return N(()=>n.present,o=>s.value=o),B(),(o,t)=>(r(),i(e(I),{as:o.as,"as-child":o.asChild,"data-state":e(a).open.value?"open":"closed",style:{"pointer-events":"auto"},onPointerdown:t[0]||(t[0]=ne(()=>{},["left","self","prevent"]))},{default:u(()=>[f(o.$slots,"default")]),_:3},8,["as","as-child","data-state"]))}}),Se=Te,Ve=O({__name:"DialogOverlay",props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(d){const n=w(),{forwardRef:a}=B();return(s,o)=>e(n)?.modal.value?(r(),i(e(X),{key:0,present:s.forceMount||e(n).open.value,"force-mount":s.forceMount||!e(n).unmountOnHide.value},{default:u(({present:t})=>[L(k(Se,D(s.$attrs,{ref:e(a),as:s.as,"as-child":s.asChild,present:e(n).unmountOnHide.value||t}),{default:u(()=>[f(s.$slots,"default")]),_:2},1040,["as","as-child","present"]),[[j,e(n).unmountOnHide.value||t]])]),_:3},8,["present","force-mount"])):g("v-if",!0)}}),G=Ve,Ke=O({__name:"DialogPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(d){const n=d;return(a,s)=>(r(),i(e(ue),J(Y(n)),{default:u(()=>[f(a.$slots,"default")]),_:3},16))}}),Le=Ke,je=O({__name:"DialogTitle",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"h2"}},setup(d){const n=d,a=w();return B(),(s,o)=>(r(),i(e(I),D(n,{id:e(a).titleId}),{default:u(()=>[f(s.$slots,"default")]),_:3},16,["id"]))}}),V=je,xe=O({__name:"DialogTrigger",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(d){const n=d,a=w(),{forwardRef:s,currentElement:o}=B();return a.contentId||=K(void 0,"reka-dialog-content"),W(()=>{a.triggerElement.value=o.value}),(t,y)=>(r(),i(e(I),D(n,{ref:e(s),type:t.as==="button"?"button":void 0,"aria-haspopup":"dialog","aria-expanded":e(a).open.value||!1,"aria-controls":e(a).open.value?e(a).contentId:void 0,"data-state":e(a).open.value?"open":"closed",onClick:e(a).onOpenToggle}),{default:u(()=>[f(t.$slots,"default")]),_:3},16,["type","aria-expanded","aria-controls","data-state","onClick"]))}}),Ne=xe;const Ue={slots:{overlay:"fixed inset-0",content:"bg-default divide-y divide-default flex flex-col focus:outline-none",header:"flex items-center gap-1.5 p-4 sm:px-6 min-h-(--ui-header-height)",wrapper:"",body:"flex-1 p-4 sm:p-6",footer:"flex items-center gap-1.5 p-4 sm:px-6",title:"text-highlighted font-semibold",description:"mt-1 text-muted text-sm",close:"absolute top-4 end-4"},variants:{transition:{true:{overlay:"data-[state=open]:animate-[fade-in_200ms_ease-out] data-[state=closed]:animate-[fade-out_200ms_ease-in]",content:"data-[state=open]:animate-[scale-in_200ms_ease-out] data-[state=closed]:animate-[scale-out_200ms_ease-in]"}},fullscreen:{true:{content:"inset-0"},false:{content:"w-[calc(100vw-2rem)] max-w-lg rounded-lg shadow-lg ring ring-default"}},overlay:{true:{overlay:"bg-elevated/75"}},scrollable:{true:{overlay:"overflow-y-auto",content:"relative"},false:{content:"fixed",body:"overflow-y-auto"}}},compoundVariants:[{scrollable:!0,fullscreen:!1,class:{overlay:"grid place-items-center p-4 sm:py-8"}},{scrollable:!1,fullscreen:!1,class:{content:"top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 max-h-[calc(100dvh-2rem)] sm:max-h-[calc(100dvh-4rem)] overflow-hidden"}}]},Ge={__name:"UModal",props:{title:{type:String,required:!1},description:{type:String,required:!1},content:{type:Object,required:!1},overlay:{type:Boolean,required:!1,default:!0},scrollable:{type:Boolean,required:!1},transition:{type:Boolean,required:!1,default:!0},fullscreen:{type:Boolean,required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},close:{type:[Boolean,Object],required:!1,default:!0},closeIcon:{type:null,required:!1},dismissible:{type:Boolean,required:!1,default:!0},class:{type:null,required:!1},ui:{type:Object,required:!1},open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1},modal:{type:Boolean,required:!1,default:!0},unmountOnHide:{type:Boolean,required:!1}},emits:["leave","after:leave","enter","after:enter","close:prevent","update:open"],setup(d,{emit:n}){const a=d,s=n,o=ie(),t=de("modal",a),{t:y}=pe(),p=fe(),c=ce(ve(t,"open","defaultOpen","modal","unmountOnHide"),s),l=ye(z(()=>t.portal)),m=z(()=>t.content),v=F(()=>t.dismissible?{pointerDownOutside:_=>qe(_,{scrollable:t.scrollable})}:["interactOutside","escapeKeyDown"].reduce((q,H)=>(q[H]=P=>{P.preventDefault(),s("close:prevent")},q),{})),[C,$]=me(),b=F(()=>Ce({extend:Ue,...p.ui?.modal||{}})({transition:t.transition,fullscreen:t.fullscreen,overlay:t.overlay,scrollable:t.scrollable}));return(_,q)=>(r(),i(e(he),J(Y(e(c))),{default:u(({open:H,close:P})=>[k(e(C),null,{default:u(()=>[k(e(Re),D({"data-slot":"content",class:b.value.content({class:[!o.default&&e(t).class,e(t).ui?.content]})},m.value,{onEnter:q[0]||(q[0]=T=>s("enter")),onAfterEnter:q[1]||(q[1]=T=>s("after:enter")),onLeave:q[2]||(q[2]=T=>s("leave")),onAfterLeave:q[3]||(q[3]=T=>s("after:leave"))},_e(v.value)),{default:u(()=>[!e(t).title&&!o.title||!e(t).description&&!o.description||o.content?(r(),i(e(ge),{key:0},{default:u(()=>[!e(t).title&&!o.title?(r(),i(e(V),{key:0})):o.content?(r(),i(e(V),{key:1},{default:u(()=>[f(_.$slots,"title",{},()=>[A(M(e(t).title),1)])]),_:3})):g("",!0),!e(t).description&&!o.description?(r(),i(e(S),{key:2})):o.content?(r(),i(e(S),{key:3},{default:u(()=>[f(_.$slots,"description",{},()=>[A(M(e(t).description),1)])]),_:3})):g("",!0)]),_:3})):g("",!0),f(_.$slots,"content",{close:P},()=>[o.header||e(t).title||o.title||e(t).description||o.description||e(t).close||o.close?(r(),E("div",{key:0,"data-slot":"header",class:h(b.value.header({class:e(t).ui?.header}))},[f(_.$slots,"header",{close:P},()=>[e(t).title||o.title||e(t).description||o.description?(r(),E("div",{key:0,"data-slot":"wrapper",class:h(b.value.wrapper({class:e(t).ui?.wrapper}))},[e(t).title||o.title?(r(),i(e(V),{key:0,"data-slot":"title",class:h(b.value.title({class:e(t).ui?.title}))},{default:u(()=>[f(_.$slots,"title",{},()=>[A(M(e(t).title),1)])]),_:3},8,["class"])):g("",!0),e(t).description||o.description?(r(),i(e(S),{key:1,"data-slot":"description",class:h(b.value.description({class:e(t).ui?.description}))},{default:u(()=>[f(_.$slots,"description",{},()=>[A(M(e(t).description),1)])]),_:3},8,["class"])):g("",!0)],2)):g("",!0),f(_.$slots,"actions"),e(t).close||o.close?(r(),i(e($e),{key:1,"as-child":""},{default:u(()=>[f(_.$slots,"close",{ui:b.value},()=>[e(t).close?(r(),i(be,D({key:0,icon:e(t).closeIcon||e(p).ui.icons.close,color:"neutral",variant:"ghost","aria-label":e(y)("modal.close")},typeof e(t).close=="object"?e(t).close:{},{"data-slot":"close",class:b.value.close({class:e(t).ui?.close})}),null,16,["icon","aria-label","class"])):g("",!0)])]),_:2},1024)):g("",!0)])],2)):g("",!0),o.body?(r(),E("div",{key:1,"data-slot":"body",class:h(b.value.body({class:e(t).ui?.body}))},[f(_.$slots,"body",{close:P})],2)):g("",!0),o.footer?(r(),E("div",{key:2,"data-slot":"footer",class:h(b.value.footer({class:e(t).ui?.footer}))},[f(_.$slots,"footer",{close:P})],2)):g("",!0)])]),_:2},1040,["class"])]),_:2},1024),o.default?(r(),i(e(Ne),{key:0,"as-child":"",class:h(e(t).class)},{default:u(()=>[f(_.$slots,"default",{open:H})]),_:2},1032,["class"])):g("",!0),k(e(Le),D(e(l),{"force-mount":e(l).disabled&&e(t).unmountOnHide===!1||void 0}),{default:u(()=>[k(e(De),null,{default:u(()=>[e(t).scrollable?(r(),i(e(G),{key:0,"data-slot":"overlay",class:h(b.value.overlay({class:e(t).ui?.overlay}))},{default:u(()=>[k(e($))]),_:1},8,["class"])):(r(),E(Oe,{key:1},[e(t).overlay?(r(),i(e(G),{key:0,"data-slot":"overlay",class:h(b.value.overlay({class:e(t).ui?.overlay}))},null,8,["class"])):g("",!0),k(e($))],64))]),_:1})]),_:1},16,["force-mount"])]),_:3},16))}};export{Ne as D,Ge as _,Le as a,G as b,Re as c,V as d,S as e,$e as f,he as g};
|
|
1
|
+
import{d as O,Y as Q,X as ee,U as f,b as e,r as R,Z as te,T as B,o as r,e as i,f as u,V as D,W as I,ay as K,C as W,bp as U,h as k,bB as oe,bU as ae,bA as se,bV as x,by as le,a as N,v as F,P as L,ag as j,aA as X,bw as re,D as ne,l as g,$ as J,a0 as Y,bF as ue,a2 as ie,a3 as de,a4 as pe,a5 as fe,a6 as ce,a7 as ve,bG as ye,b2 as z,b1 as me,bW as _e,bR as ge,k as A,t as M,c as E,i as h,j as be,bJ as De,F as Oe,a8 as Ce,bX as qe}from"./1QWBzxLM.js";const[w,Be]=te("DialogRoot");var we=O({inheritAttrs:!1,__name:"DialogRoot",props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1,default:!1},modal:{type:Boolean,required:!1,default:!0},unmountOnHide:{type:Boolean,required:!1,default:!0}},emits:["update:open"],setup(d,{emit:n}){const a=d,o=Q(a,"open",n,{defaultValue:a.defaultOpen,passive:a.open===void 0}),t=R(),y=R(),{modal:p,unmountOnHide:c}=ee(a);return Be({open:o,modal:p,unmountOnHide:c,openModal:()=>{o.value=!0},onOpenChange:l=>{o.value=l},onOpenToggle:()=>{o.value=!o.value},contentId:"",titleId:"",descriptionId:"",triggerElement:t,contentElement:y}),(l,m)=>f(l.$slots,"default",{open:e(o),close:()=>o.value=!1})}}),he=we,ke=O({__name:"DialogClose",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(d){const n=d;B();const a=w();return(s,o)=>(r(),i(e(I),D(n,{type:s.as==="button"?"button":void 0,onClick:o[0]||(o[0]=t=>e(a).onOpenChange(!1))}),{default:u(()=>[f(s.$slots,"default")]),_:3},16,["type"]))}}),$e=ke,Pe=O({__name:"DialogContentImpl",props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},present:{type:Boolean,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(d,{emit:n}){const a=d,s=n,o=w(),{forwardRef:t,currentElement:y}=B();return o.titleId||=K(void 0,"reka-dialog-title"),o.descriptionId||=K(void 0,"reka-dialog-description"),W(()=>{o.contentElement=y,U()!==document.body&&(o.triggerElement.value=U())}),(p,c)=>(r(),i(e(se),{"as-child":"",loop:"",trapped:a.trapFocus,present:a.present,onMountAutoFocus:c[5]||(c[5]=l=>s("openAutoFocus",l)),onUnmountAutoFocus:c[6]||(c[6]=l=>s("closeAutoFocus",l))},{default:u(()=>[k(e(oe),D({id:e(o).contentId,ref:e(t),as:p.as,"as-child":p.asChild,present:a.present,"disable-outside-pointer-events":p.disableOutsidePointerEvents,role:"dialog","aria-describedby":e(o).descriptionId,"aria-labelledby":e(o).titleId,"data-state":e(ae)(e(o).open.value)},p.$attrs,{onDismiss:c[0]||(c[0]=l=>e(o).onOpenChange(!1)),onEscapeKeyDown:c[1]||(c[1]=l=>s("escapeKeyDown",l)),onFocusOutside:c[2]||(c[2]=l=>s("focusOutside",l)),onInteractOutside:c[3]||(c[3]=l=>s("interactOutside",l)),onPointerDownOutside:c[4]||(c[4]=l=>s("pointerDownOutside",l))}),{default:u(()=>[f(p.$slots,"default")]),_:3},16,["id","as","as-child","present","disable-outside-pointer-events","aria-describedby","aria-labelledby","data-state"])]),_:3},8,["trapped","present"]))}}),Z=Pe,Ee=O({__name:"DialogContentModal",props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},present:{type:Boolean,required:!0}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(d,{emit:n}){const a=d,s=n,o=w(),t=x(s),{forwardRef:y,currentElement:p}=B(),c=F(()=>a.present?p.value:void 0);le(c);const l=F(()=>{const{present:m,...v}=a;return v});return N(()=>a.present,(m,v)=>{!m&&v&&o.triggerElement.value?.focus()}),(m,v)=>(r(),i(Z,D({...l.value,...e(t)},{ref:e(y),present:m.present,"trap-focus":e(o).open.value,"disable-outside-pointer-events":a.disableOutsidePointerEvents,onCloseAutoFocus:v[0]||(v[0]=C=>{C.defaultPrevented||(C.preventDefault(),e(o).triggerElement.value?.focus())}),onPointerDownOutside:v[1]||(v[1]=C=>{const $=C.detail.originalEvent,b=$.button===0&&$.ctrlKey===!0;($.button===2||b)&&C.preventDefault()}),onFocusOutside:v[2]||(v[2]=C=>{C.preventDefault()})}),{default:u(()=>[f(m.$slots,"default")]),_:3},16,["present","trap-focus","disable-outside-pointer-events"]))}}),Fe=Ee,Ie=O({__name:"DialogContentNonModal",props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},present:{type:Boolean,required:!0}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(d,{emit:n}){const a=d,o=x(n);B();const t=w(),y=R(!1),p=R(!1),c=F(()=>{const{present:l,...m}=a;return m});return N(()=>a.present,(l,m)=>{!l&&m&&(y.value||t.triggerElement.value?.focus(),y.value=!1,p.value=!1)}),(l,m)=>(r(),i(Z,D({...c.value,...e(o)},{present:l.present,"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:m[0]||(m[0]=v=>{v.defaultPrevented||(y.value||e(t).triggerElement.value?.focus(),v.preventDefault()),y.value=!1,p.value=!1}),onInteractOutside:m[1]||(m[1]=v=>{v.defaultPrevented||(y.value=!0,v.detail.originalEvent.type==="pointerdown"&&(p.value=!0));const C=v.target;e(t).triggerElement.value?.contains(C)&&v.preventDefault(),v.detail.originalEvent.type==="focusin"&&p.value&&v.preventDefault()})}),{default:u(()=>[f(l.$slots,"default")]),_:3},16,["present"]))}}),Ae=Ie,Me=O({__name:"DialogContent",props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1,default:void 0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(d,{emit:n}){const a=d,s=n,o=w(),t=x(s),{forwardRef:y}=B();return(p,c)=>(r(),i(e(X),{present:p.forceMount||e(o).open.value,"force-mount":p.forceMount||!e(o).unmountOnHide.value},{default:u(({present:l})=>[e(o).modal.value?L((r(),i(Fe,D({key:0,ref:e(y),present:e(o).unmountOnHide.value||l},{...a,...e(t),...p.$attrs}),{default:u(()=>[f(p.$slots,"default")]),_:2},1040,["present"])),[[j,e(o).unmountOnHide.value||l]]):L((r(),i(Ae,D({key:1,ref:e(y),present:e(o).unmountOnHide.value||l},{...a,...e(t),...p.$attrs}),{default:u(()=>[f(p.$slots,"default")]),_:2},1040,["present"])),[[j,e(o).unmountOnHide.value||l]])]),_:3},8,["present","force-mount"]))}}),Re=Me,He=O({__name:"DialogDescription",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"p"}},setup(d){const n=d;B();const a=w();return(s,o)=>(r(),i(e(I),D(n,{id:e(a).descriptionId}),{default:u(()=>[f(s.$slots,"default")]),_:3},16,["id"]))}}),S=He,Te=O({__name:"DialogOverlayImpl",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1},present:{type:Boolean,required:!1,default:!0}},setup(d){const n=d,a=w(),s=re(n.present);return N(()=>n.present,o=>s.value=o),B(),(o,t)=>(r(),i(e(I),{as:o.as,"as-child":o.asChild,"data-state":e(a).open.value?"open":"closed",style:{"pointer-events":"auto"},onPointerdown:t[0]||(t[0]=ne(()=>{},["left","self","prevent"]))},{default:u(()=>[f(o.$slots,"default")]),_:3},8,["as","as-child","data-state"]))}}),Se=Te,Ve=O({__name:"DialogOverlay",props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(d){const n=w(),{forwardRef:a}=B();return(s,o)=>e(n)?.modal.value?(r(),i(e(X),{key:0,present:s.forceMount||e(n).open.value,"force-mount":s.forceMount||!e(n).unmountOnHide.value},{default:u(({present:t})=>[L(k(Se,D(s.$attrs,{ref:e(a),as:s.as,"as-child":s.asChild,present:e(n).unmountOnHide.value||t}),{default:u(()=>[f(s.$slots,"default")]),_:2},1040,["as","as-child","present"]),[[j,e(n).unmountOnHide.value||t]])]),_:3},8,["present","force-mount"])):g("v-if",!0)}}),G=Ve,Ke=O({__name:"DialogPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(d){const n=d;return(a,s)=>(r(),i(e(ue),J(Y(n)),{default:u(()=>[f(a.$slots,"default")]),_:3},16))}}),Le=Ke,je=O({__name:"DialogTitle",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"h2"}},setup(d){const n=d,a=w();return B(),(s,o)=>(r(),i(e(I),D(n,{id:e(a).titleId}),{default:u(()=>[f(s.$slots,"default")]),_:3},16,["id"]))}}),V=je,xe=O({__name:"DialogTrigger",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(d){const n=d,a=w(),{forwardRef:s,currentElement:o}=B();return a.contentId||=K(void 0,"reka-dialog-content"),W(()=>{a.triggerElement.value=o.value}),(t,y)=>(r(),i(e(I),D(n,{ref:e(s),type:t.as==="button"?"button":void 0,"aria-haspopup":"dialog","aria-expanded":e(a).open.value||!1,"aria-controls":e(a).open.value?e(a).contentId:void 0,"data-state":e(a).open.value?"open":"closed",onClick:e(a).onOpenToggle}),{default:u(()=>[f(t.$slots,"default")]),_:3},16,["type","aria-expanded","aria-controls","data-state","onClick"]))}}),Ne=xe;const Ue={slots:{overlay:"fixed inset-0",content:"bg-default divide-y divide-default flex flex-col focus:outline-none",header:"flex items-center gap-1.5 p-4 sm:px-6 min-h-(--ui-header-height)",wrapper:"",body:"flex-1 p-4 sm:p-6",footer:"flex items-center gap-1.5 p-4 sm:px-6",title:"text-highlighted font-semibold",description:"mt-1 text-muted text-sm",close:"absolute top-4 end-4"},variants:{transition:{true:{overlay:"data-[state=open]:animate-[fade-in_200ms_ease-out] data-[state=closed]:animate-[fade-out_200ms_ease-in]",content:"data-[state=open]:animate-[scale-in_200ms_ease-out] data-[state=closed]:animate-[scale-out_200ms_ease-in]"}},fullscreen:{true:{content:"inset-0"},false:{content:"w-[calc(100vw-2rem)] max-w-lg rounded-lg shadow-lg ring ring-default"}},overlay:{true:{overlay:"bg-elevated/75"}},scrollable:{true:{overlay:"overflow-y-auto",content:"relative"},false:{content:"fixed",body:"overflow-y-auto"}}},compoundVariants:[{scrollable:!0,fullscreen:!1,class:{overlay:"grid place-items-center p-4 sm:py-8"}},{scrollable:!1,fullscreen:!1,class:{content:"top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 max-h-[calc(100dvh-2rem)] sm:max-h-[calc(100dvh-4rem)] overflow-hidden"}}]},Ge={__name:"UModal",props:{title:{type:String,required:!1},description:{type:String,required:!1},content:{type:Object,required:!1},overlay:{type:Boolean,required:!1,default:!0},scrollable:{type:Boolean,required:!1},transition:{type:Boolean,required:!1,default:!0},fullscreen:{type:Boolean,required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},close:{type:[Boolean,Object],required:!1,default:!0},closeIcon:{type:null,required:!1},dismissible:{type:Boolean,required:!1,default:!0},class:{type:null,required:!1},ui:{type:Object,required:!1},open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1},modal:{type:Boolean,required:!1,default:!0},unmountOnHide:{type:Boolean,required:!1}},emits:["leave","after:leave","enter","after:enter","close:prevent","update:open"],setup(d,{emit:n}){const a=d,s=n,o=ie(),t=de("modal",a),{t:y}=pe(),p=fe(),c=ce(ve(t,"open","defaultOpen","modal","unmountOnHide"),s),l=ye(z(()=>t.portal)),m=z(()=>t.content),v=F(()=>t.dismissible?{pointerDownOutside:_=>qe(_,{scrollable:t.scrollable})}:["interactOutside","escapeKeyDown"].reduce((q,H)=>(q[H]=P=>{P.preventDefault(),s("close:prevent")},q),{})),[C,$]=me(),b=F(()=>Ce({extend:Ue,...p.ui?.modal||{}})({transition:t.transition,fullscreen:t.fullscreen,overlay:t.overlay,scrollable:t.scrollable}));return(_,q)=>(r(),i(e(he),J(Y(e(c))),{default:u(({open:H,close:P})=>[k(e(C),null,{default:u(()=>[k(e(Re),D({"data-slot":"content",class:b.value.content({class:[!o.default&&e(t).class,e(t).ui?.content]})},m.value,{onEnter:q[0]||(q[0]=T=>s("enter")),onAfterEnter:q[1]||(q[1]=T=>s("after:enter")),onLeave:q[2]||(q[2]=T=>s("leave")),onAfterLeave:q[3]||(q[3]=T=>s("after:leave"))},_e(v.value)),{default:u(()=>[!e(t).title&&!o.title||!e(t).description&&!o.description||o.content?(r(),i(e(ge),{key:0},{default:u(()=>[!e(t).title&&!o.title?(r(),i(e(V),{key:0})):o.content?(r(),i(e(V),{key:1},{default:u(()=>[f(_.$slots,"title",{},()=>[A(M(e(t).title),1)])]),_:3})):g("",!0),!e(t).description&&!o.description?(r(),i(e(S),{key:2})):o.content?(r(),i(e(S),{key:3},{default:u(()=>[f(_.$slots,"description",{},()=>[A(M(e(t).description),1)])]),_:3})):g("",!0)]),_:3})):g("",!0),f(_.$slots,"content",{close:P},()=>[o.header||e(t).title||o.title||e(t).description||o.description||e(t).close||o.close?(r(),E("div",{key:0,"data-slot":"header",class:h(b.value.header({class:e(t).ui?.header}))},[f(_.$slots,"header",{close:P},()=>[e(t).title||o.title||e(t).description||o.description?(r(),E("div",{key:0,"data-slot":"wrapper",class:h(b.value.wrapper({class:e(t).ui?.wrapper}))},[e(t).title||o.title?(r(),i(e(V),{key:0,"data-slot":"title",class:h(b.value.title({class:e(t).ui?.title}))},{default:u(()=>[f(_.$slots,"title",{},()=>[A(M(e(t).title),1)])]),_:3},8,["class"])):g("",!0),e(t).description||o.description?(r(),i(e(S),{key:1,"data-slot":"description",class:h(b.value.description({class:e(t).ui?.description}))},{default:u(()=>[f(_.$slots,"description",{},()=>[A(M(e(t).description),1)])]),_:3},8,["class"])):g("",!0)],2)):g("",!0),f(_.$slots,"actions"),e(t).close||o.close?(r(),i(e($e),{key:1,"as-child":""},{default:u(()=>[f(_.$slots,"close",{ui:b.value},()=>[e(t).close?(r(),i(be,D({key:0,icon:e(t).closeIcon||e(p).ui.icons.close,color:"neutral",variant:"ghost","aria-label":e(y)("modal.close")},typeof e(t).close=="object"?e(t).close:{},{"data-slot":"close",class:b.value.close({class:e(t).ui?.close})}),null,16,["icon","aria-label","class"])):g("",!0)])]),_:2},1024)):g("",!0)])],2)):g("",!0),o.body?(r(),E("div",{key:1,"data-slot":"body",class:h(b.value.body({class:e(t).ui?.body}))},[f(_.$slots,"body",{close:P})],2)):g("",!0),o.footer?(r(),E("div",{key:2,"data-slot":"footer",class:h(b.value.footer({class:e(t).ui?.footer}))},[f(_.$slots,"footer",{close:P})],2)):g("",!0)])]),_:2},1040,["class"])]),_:2},1024),o.default?(r(),i(e(Ne),{key:0,"as-child":"",class:h(e(t).class)},{default:u(()=>[f(_.$slots,"default",{open:H})]),_:2},1032,["class"])):g("",!0),k(e(Le),D(e(l),{"force-mount":e(l).disabled&&e(t).unmountOnHide===!1||void 0}),{default:u(()=>[k(e(De),null,{default:u(()=>[e(t).scrollable?(r(),i(e(G),{key:0,"data-slot":"overlay",class:h(b.value.overlay({class:e(t).ui?.overlay}))},{default:u(()=>[k(e($))]),_:1},8,["class"])):(r(),E(Oe,{key:1},[e(t).overlay?(r(),i(e(G),{key:0,"data-slot":"overlay",class:h(b.value.overlay({class:e(t).ui?.overlay}))},null,8,["class"])):g("",!0),k(e($))],64))]),_:1})]),_:1},16,["force-mount"])]),_:3},16))}};export{Ne as D,Ge as _,Le as a,G as b,Re as c,V as d,S as e,$e as f,he as g};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as S}from"./
|
|
1
|
+
import{_ as S}from"./B-1zt4pp.js";import{_ as $}from"./CapSEET7.js";import{_ as q}from"./B4lvHjBe.js";import{d as T,q as j,w as F,aJ as N,c as y,h as n,f as r,o as m,b as e,e as O,l as P,g as c,i as B,F as I,z as R,I as E,j as M,k,r as z,J as A}from"./1QWBzxLM.js";import{_ as J}from"./bmAf49LT.js";import{u as K}from"./CU_2YLhT.js";import"./Bl0xzETD.js";import"./DpM8IgHL.js";import"./DBXXb0w8.js";import"./Bp1WeQ0_.js";import"./B82vqOZe.js";import"./CHz7LJIX.js";import"./AbnDY6Zr.js";const L={class:"space-y-6"},W={class:"space-y-4"},D={class:"flex items-center justify-between gap-2"},G={class:"flex items-center gap-2 shrink-0"},ce=T({__name:"pr-feedback",async setup(H){let u,p;const d=j(),{data:o,refresh:f}=([u,p]=F(()=>K("/api/settings/pr-feedback","$vSS3KCMfao")),u=await u,p(),u),l=z(!1),t=A({enabled:!1,comment:!0,status:!0,onlyOnFailure:!1,statusContext:"piwi/tests"});N(()=>{o.value&&Object.assign(t,o.value.settings)});const v=[{key:"comment",label:"Post a summary comment",description:"Creates one comment on the pull request and edits it on every later run, so a busy branch gets one comment rather than one per push."},{key:"status",label:"Set a commit status",description:"Marks the run’s commit passed or failed, so the pull request shows the result in its checks list. Still set on a green run when the comment is suppressed."},{key:"onlyOnFailure",label:"Only comment on failures",description:"Keeps green runs from adding a comment. The commit status is still set either way."}];async function g(){l.value=!0;try{const i=await $fetch("/api/settings/pr-feedback",{method:"PUT",body:{settings:{...t}}});o.value=i,Object.assign(t,i.settings),d.add({title:"Saved",color:"success"}),await f()}catch{d.add({title:"Save failed",color:"error"})}finally{l.value=!1}}async function w(){l.value=!0;try{const i=await $fetch("/api/settings/pr-feedback",{method:"PUT",body:{settings:null}});o.value=i,Object.assign(t,i.settings),d.add({title:"Reset to defaults",color:"success"}),await f()}catch{d.add({title:"Reset failed",color:"error"})}finally{l.value=!1}}return(i,s)=>{const x=S,h=$,_=q,C=E,b=M,V=J;return m(),y("div",L,[n(V,{icon:"i-lucide-git-pull-request",title:"Pull-request feedback",help:"settings.pr-feedback"},{subtitle:r(()=>[...s[2]||(s[2]=[k(" When a run finishes on a branch with an open pull request, post the result back to it — new failures separated from pre-existing ones, the failure clusters behind them, and the locator to use instead of the one that broke. ",-1)])]),footer:r(()=>[c("div",D,[s[4]||(s[4]=c("p",{class:"text-xs text-muted"}," Needs an SCM token with write access to the repository — set it globally, or per project in the project’s edit page. ",-1)),c("div",G,[n(b,{variant:"ghost",color:"neutral",disabled:e(l),label:"Reset to defaults",onClick:w},null,8,["disabled"]),n(b,{color:"primary",loading:e(l),icon:"i-lucide-save",onClick:g},{default:r(()=>[...s[3]||(s[3]=[k("Save",-1)])]),_:1},8,["loading"])])])]),default:r(()=>[e(o)&&!e(o).siteUrlConfigured?(m(),O(x,{key:0,color:"warning",variant:"soft",icon:"i-lucide-triangle-alert",title:"PIWI_SITE_URL is not set",description:"Nothing is posted until it is — every link in the comment is built from it, and a comment full of unreachable links is worse than no comment.",class:"mb-4"})):P("",!0),c("div",W,[n(h,{modelValue:e(t).enabled,"onUpdate:modelValue":s[0]||(s[0]=a=>e(t).enabled=a),label:"Post feedback to pull requests"},null,8,["modelValue"]),c("div",{class:B(["space-y-4 pl-1",!e(t).enabled&&"opacity-50 pointer-events-none"])},[(m(),y(I,null,R(v,a=>n(_,{key:a.key,label:a.label,description:a.description},{default:r(()=>[n(h,{modelValue:e(t)[a.key],"onUpdate:modelValue":U=>e(t)[a.key]=U},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1032,["label","description"])),64)),n(_,{label:"Commit status context",description:"The name shown next to the status in the pull request’s checks list.",hint:`default ${e(o)?.defaults.statusContext??""}`},{default:r(()=>[n(C,{modelValue:e(t).statusContext,"onUpdate:modelValue":s[1]||(s[1]=a=>e(t).statusContext=a),placeholder:e(o)?.defaults.statusContext,class:"w-full max-w-sm"},null,8,["modelValue","placeholder"])]),_:1},8,["hint"])],2)])]),_:1})])}}});export{ce as default};
|