@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
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a2 as j,a3 as D,a5 as C,b1 as B,o as i,c as k,h as w,f as z,U as a,$ as c,a0 as g,b as e,e as h,V as S,l as f,g as b,i as n,_ as R,k as O,t as V,W as M,F as x,v as N,a8 as T,aR as A,b2 as U}from"./
|
|
1
|
+
import{a2 as j,a3 as D,a5 as C,b1 as B,o as i,c as k,h as w,f as z,U as a,$ as c,a0 as g,b as e,e as h,V as S,l as f,g as b,i as n,_ as R,k as O,t as V,W as M,F as x,v as N,a8 as T,aR as A,b2 as U}from"./1QWBzxLM.js";import{a as P,_ as F,b as K,c as E}from"./CiCUZGFZ.js";const I={slots:{root:"h-(--ui-header-height) shrink-0 flex items-center justify-between border-b border-default px-4 sm:px-6 gap-1.5",left:"flex items-center gap-1.5 min-w-0",icon:"shrink-0 size-5 self-center me-1.5",title:"flex items-center gap-1.5 font-semibold text-highlighted truncate",center:"hidden lg:flex",right:"flex items-center shrink-0 gap-1.5",toggle:""},variants:{toggleSide:{left:{toggle:""},right:{toggle:""}}}},Q=Object.assign({inheritAttrs:!1},{__name:"UDashboardNavbar",props:{as:{type:null,required:!1},icon:{type:null,required:!1},title:{type:String,required:!1},toggle:{type:[Boolean,Object],required:!1,default:!0},toggleSide:{type:String,required:!1,default:"left"},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(m){const _=m,r=j(),s=D("dashboardNavbar",_),p=C(),o=P({}),[y,u]=B(),t=N(()=>T({extend:I,...p.ui?.dashboardNavbar||{}})());return(l,v)=>(i(),k(x,null,[w(e(y),null,{default:z(()=>[a(l.$slots,"toggle",c(g({...e(o),ui:t.value})),()=>[e(s).toggle?(i(),h(F,S({key:0},typeof e(s).toggle=="object"?e(s).toggle:{},{side:e(s).toggleSide,"data-slot":"toggle",class:t.value.toggle({class:e(s).ui?.toggle,toggleSide:e(s).toggleSide})}),null,16,["side","class"])):f("",!0)])]),_:3}),w(e(M),S({as:e(s).as,"data-slot":"root"},l.$attrs,{class:t.value.root({class:[e(s).ui?.root,e(s).class]})}),{default:z(()=>[b("div",{"data-slot":"left",class:n(t.value.left({class:e(s).ui?.left}))},[e(s).toggleSide==="left"?(i(),h(e(u),{key:0})):f("",!0),a(l.$slots,"left",c(g(e(o))),()=>[a(l.$slots,"leading",c(g({...e(o),ui:t.value})),()=>[e(s).icon?(i(),h(R,{key:0,name:e(s).icon,"data-slot":"icon",class:n(t.value.icon({class:e(s).ui?.icon}))},null,8,["name","class"])):f("",!0)]),b("h1",{"data-slot":"title",class:n(t.value.title({class:e(s).ui?.title}))},[a(l.$slots,"title",{},()=>[O(V(e(s).title),1)])],2),a(l.$slots,"trailing",c(g({...e(o),ui:t.value})))])],2),r.default?(i(),k("div",{key:0,"data-slot":"center",class:n(t.value.center({class:e(s).ui?.center}))},[a(l.$slots,"default",c(g(e(o))))],2)):f("",!0),b("div",{"data-slot":"right",class:n(t.value.right({class:e(s).ui?.right}))},[a(l.$slots,"right",c(g(e(o)))),e(s).toggleSide==="right"?(i(),h(e(u),{key:0})):f("",!0)],2)]),_:3},16,["as","class"])],64))}}),W={slots:{root:"relative flex flex-col min-w-0 min-h-svh lg:not-last:border-e lg:not-last:border-default shrink-0",body:"flex flex-col gap-4 sm:gap-6 flex-1 overflow-y-auto p-4 sm:p-6",handle:""},variants:{size:{true:{root:"w-full lg:w-(--width)"},false:{root:"flex-1"}}}},G=["data-dragging"],X=Object.assign({inheritAttrs:!1},{__name:"UDashboardPanel",props:{class:{type:null,required:!1},ui:{type:Object,required:!1},id:{type:String,required:!1},minSize:{type:Number,required:!1,default:15},maxSize:{type:Number,required:!1},defaultSize:{type:Number,required:!1},resizable:{type:Boolean,required:!1,default:!1}},setup(m){const r=D("dashboardPanel",m),s=C(),p=P({storageKey:"dashboard",unit:"%"}),o=`${p.storageKey}-panel-${r.id||A()}`,{el:y,size:u,isDragging:t,onMouseDown:l,onTouchStart:v,onDoubleClick:q}=K(o,U(()=>({...p,...r}))),$=N(()=>T({extend:W,...s.ui?.dashboardPanel||{}})({size:!!u.value}));return(d,H)=>(i(),k(x,null,[b("div",S({id:o,ref_key:"el",ref:y,"data-slot":"root"},d.$attrs,{"data-dragging":e(t),class:$.value.root({class:[e(r).ui?.root,e(r).class]}),style:[e(u)?{"--width":`${e(u)}${e(p).unit}`}:void 0]}),[a(d.$slots,"default",{},()=>[a(d.$slots,"header"),b("div",{"data-slot":"body",class:n($.value.body({class:e(r).ui?.body}))},[a(d.$slots,"body")],2),a(d.$slots,"footer")])],16,G),a(d.$slots,"resize-handle",{onMouseDown:e(l),onTouchStart:e(v),onDoubleClick:e(q)},()=>[e(r).resizable?(i(),h(E,{key:0,"aria-controls":o,"data-slot":"handle",class:n($.value.handle({class:e(r).ui?.handle})),onMousedown:e(l),onTouchstart:e(v),onDblclick:e(q)},null,8,["class","onMousedown","onTouchstart","onDblclick"])):f("",!0)])],64))}});export{X as _,Q as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{bZ as l,aQ as s}from"./
|
|
1
|
+
import{bZ as l,aQ as s}from"./1QWBzxLM.js";function t(r,i){return l(r)?!1:Array.isArray(r)?r.some(a=>s(a,i)):s(r,i)}export{t as i};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as W,_ as B}from"./
|
|
1
|
+
import{a as W,_ as B}from"./BRMeEHXd.js";import{_ as D}from"./DoDo3VF2.js";import{d as $,q as V,w as M,aJ as U,o as v,c as C,b as t,e as R,l as z,h as u,f as p,g as l,x as E,k as r,t as N,j as S,r as T,v as H,F as I,z as J,I as q,J as K}from"./1QWBzxLM.js";import{_ as F}from"./bmAf49LT.js";import{p as L,g as X}from"./CXkXHtcx.js";import{u as P}from"./CU_2YLhT.js";import{_ as Z}from"./B4lvHjBe.js";import"./B-1zt4pp.js";import"./B82vqOZe.js";import"./CHz7LJIX.js";import"./B2bxEmbR.js";import"./BnUQ3i5l.js";import"./AbnDY6Zr.js";import"./Bl0xzETD.js";const G={class:"space-y-6"},Q={class:"space-y-4"},Y={class:"text-xs text-gray-400"},ee={class:"flex items-center gap-2 justify-end"},te=$({__name:"WastedTimeCard",async setup(j){let m,y;const d=V(),{data:s,refresh:g}=([m,y]=M(()=>P("/api/settings/wasted-waits","$4Z8lhzMc_W")),m=await m,y(),m),o=T(""),n=T(!1);U(()=>{s.value&&(o.value=s.value.patterns.join(`
|
|
2
2
|
`))});const _=H(()=>s.value?.envManaged??!1),b=L(X("performance"));function x(a){return a.split(`
|
|
3
3
|
`).map(e=>e.trim()).filter(e=>e.length>0)}async function i(){n.value=!0;try{const a=await $fetch("/api/settings/wasted-waits",{method:"PUT",body:{patterns:x(o.value)}});s.value=a,d.add({title:"Wasted-time patterns saved",color:"success"}),await g()}catch(a){const e=a&&typeof a=="object"&&"data"in a?a.data?.message:void 0;d.add({title:"Save failed",description:e||"An error occurred",color:"error"})}finally{n.value=!1}}async function f(){n.value=!0;try{const a=await $fetch("/api/settings/wasted-waits",{method:"PUT",body:{patterns:null}});s.value=a,o.value=a.patterns.join(`
|
|
4
4
|
`),d.add({title:"Reset to defaults",color:"success"}),await g()}catch{d.add({title:"Reset failed",color:"error"})}finally{n.value=!1}}return(a,e)=>{const h=B,k=D,c=W,w=S,A=F;return v(),C("div",G,[t(_)?(v(),R(h,{key:0,"env-vars":t(b)},null,8,["env-vars"])):z("",!0),u(A,{icon:"i-lucide-hourglass",title:"Wasted-time patterns",help:"settings.wasted-time"},{subtitle:p(()=>[...e[1]||(e[1]=[r(" Define which wait steps count as ",-1),l("strong",null,"wasted time",-1),r(". A wait is wasted when any pattern below matches its step title or its source location. Patterns are case-insensitive and support ",-1),l("code",null,"*",-1),r(" and ",-1),l("code",null,"?",-1),r(" wildcards. Wasted time is recomputed when runs are viewed, so changes apply to existing runs immediately. ",-1)])]),footer:p(()=>[l("div",ee,[u(w,{variant:"ghost",color:"neutral",disabled:t(n)||t(_),label:"Reset to defaults",onClick:f},null,8,["disabled"]),u(w,{color:"primary",loading:t(n),disabled:t(_),icon:"i-lucide-save",onClick:i},{default:p(()=>[...e[8]||(e[8]=[r(" Save ",-1)])]),_:1},8,["loading","disabled"])])]),default:p(()=>[l("div",Q,[u(c,{label:"Patterns",help:"settings.wasted-time","env-managed":t(_),description:"One glob pattern per line. An empty list means no wait is counted as wasted."},{default:p(()=>[u(k,{modelValue:t(o),"onUpdate:modelValue":e[0]||(e[0]=O=>E(o)?o.value=O:null),rows:6,disabled:t(_),class:"w-full font-mono",placeholder:`Wait for timeout*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{K as m,f as p}from"./D4mPjHHR.js";import{d as f,o as n,c as o,b as t,F as r,k as i,t as l,g as d,i as _,v as c}from"./1QWBzxLM.js";const k=["title"],g=f({__name:"DurationValue",props:{ms:{default:null},fallback:{default:"—"},unitClass:{default:"text-gray-400/70 dark:text-gray-500/70"},noTitle:{type:Boolean,default:!1}},setup(e){const a=e,s=c(()=>m(a.ms)),u=c(()=>a.noTitle||a.ms===null||a.ms===void 0?void 0:p(a.ms));return(x,y)=>(n(),o("span",{class:"tabular-nums whitespace-nowrap",title:t(u)},[t(s)?(n(),o(r,{key:0},[i(l(t(s).value),1),d("span",{class:_(e.unitClass)},l(t(s).unit),3)],64)):(n(),o(r,{key:1},[i(l(e.fallback),1)],64))],8,k))}}),v=Object.assign(g,{__name:"DurationValue"});export{v as _};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as Y}from"./BV8EzO8q.js";import{_ as Z}from"./B7zo6PK8.js";import{_ as tt}from"./xKX9IHe3.js";import{_ as et}from"./DxPZIuWy.js";import{_ as st,a as at}from"./B7uPoZ7T.js";import{_ as ot}from"./CPrVhXJk.js";import{d as rt,u as nt,w as T,a as it,s as lt,e as u,f as a,v as j,o as n,g as i,t as l,b as t,l as d,c as _,h as o,m as ct,k as m,H as ut,j as dt,F as w,z as D,i as _t,_ as mt,r as pt,n as ft}from"./BdQ7kfxJ.js";import{_ as gt}from"./C9A3sPDo.js";import{_ as ht}from"./LWIyaZKe.js";import{_ as yt}from"./CrsaY0R_.js";import{_ as xt}from"./D56yp7m9.js";import{_ as bt}from"./D72Ce8Ff.js";import{e as vt,l as kt,C as $t}from"./DtGJeysS.js";import{_ as jt}from"./C_eXufkv.js";import{_ as Rt}from"./CLrLFf3s.js";import{_ as Ct}from"./CfV2N201.js";import{_ as St}from"./BOn5q0rT.js";import{_ as Tt}from"./BsGvSoPC.js";import{a as wt,k as Dt}from"./DwZS0oRm.js";import{u as I}from"./DTtizz85.js";import"./Bo73sAu8.js";import"./BilJoEne.js";import"./CrZhoZuI.js";import"./BL8cYWsR.js";import"./CZ6WR7uw.js";import"./D0XWJGhG.js";import"./i7znB42v.js";import"./CyWOerIG.js";import"./CxwnFFD0.js";import"./9oKY4Zb7.js";import"./BO4sfkbw.js";import"./rPG7kzfL.js";import"./Gn1Ns00e.js";import"./CK2AMqz_.js";import"./B4NjylBn.js";import"./Bg63qh8W.js";import"./Drh1_ASq.js";import"./G2J1dVVb.js";import"./EJllK0wm.js";import"./HGYIpJtg.js";const It={class:"flex flex-col gap-4 p-4","data-shot":"test-case-detail"},zt={class:"flex items-start gap-4 flex-wrap"},Et={class:"flex-1 min-w-0"},Lt={class:"text-xl font-bold truncate"},Nt={key:1,class:"flex items-center gap-2 mt-2"},Pt={key:0,class:"grid grid-cols-1 lg:grid-cols-2 gap-4"},Ut={class:"flex items-center gap-1 flex-wrap max-h-[200px] overflow-y-auto py-1"},At={key:0,class:"text-sm text-gray-400"},Bt={key:1,class:"text-center py-6 text-gray-400"},Vt={class:"text-xs whitespace-nowrap"},Ft={class:"text-gray-500"},Kt={class:"text-gray-400 ml-1"},Ht={key:1,class:"text-gray-400"},Ot=["title"],Mt={class:"flex justify-end"},Gt={class:"space-y-2"},Qt={class:"flex items-center gap-2 min-w-0"},qt={class:"text-sm truncate"},Jt={key:0,class:"text-xs text-gray-400 shrink-0"},Be=rt({__name:"[id]",async setup(Wt){let p,y;const h=nt().params.id,{data:s,refresh:z}=([p,y]=T(()=>I(`/api/test-cases/${h}`,"$IiVoRdAdzb")),p=await p,y(),p),{data:f}=([p,y]=T(()=>I(`/api/test-cases/${h}/history`,{transform:r=>r.items},"$cuQ0G6KeIS")),p=await p,y(),p),R=pt([]);it(()=>s.value?.project?.id,async r=>{if(r)try{R.value=(await $fetch(`/api/projects/${r}/markers`)).items??[]}catch{}},{immediate:!0});function E(){const r=s.value?.project?.id;r&&ft(`/projects/${r}?tab=timeline`)}lt(j(()=>({title:`${s.value?.title||`Test case #${h}`} — Piwi Dashboard`})));const x=j(()=>{const r=s.value;return!r||!r.totalRuns?null:Math.round((r.passedRuns+r.skippedRuns)/r.totalRuns*100)}),L=j(()=>s.value?.filePath?[{filePath:s.value.filePath,title:s.value.title,line:null}]:[]),N=r=>r==="open"?"error":r==="resolved"?"success":"neutral",P=[{accessorKey:"startTime",header:"Date"},{accessorKey:"status",header:"Status"},{accessorKey:"duration",header:"Duration"},{accessorKey:"retries",header:"Retries"},{accessorKey:"runId",header:"Run"},{accessorKey:"error",header:"Error"},{id:"actions",header:"Actions"}];return(r,c)=>{const U=Y,A=Z,B=tt,V=et,F=at,K=ot,b=ct,v=dt,k=ut,g=gt,C=ht,H=yt,O=xt,M=bt,S=vt,G=jt,Q=mt,q=Rt,J=Ct,$=St,W=Tt,X=st;return n(),u(X,{id:"test-case-evolution"},{header:a(()=>[o(F,null,{leading:a(()=>[o(U),o(A,{items:[{label:"Home",icon:"i-lucide-house",to:"/"},{label:"Projects",to:"/projects"},...t(s)?.project?.id?[{label:t(s).project.name||"Project",to:`/projects/${t(s).project.id}`}]:[{label:"Project"}],{label:t(s)?.title||`Test case #${t(h)}`}]},null,8,["items"])]),right:a(()=>[o(B,{"project-id":t(s)?.project?.id,"project-label":t(s)?.project?.label??t(s)?.project?.name,cases:t(L),label:"Reproduce locally","preset-options":{mode:"grep",repeatEach:20,trace:!0},class:"mr-2"},null,8,["project-id","project-label","cases"]),o(V,{actions:[{label:"Refresh",icon:"i-lucide-refresh-cw",onClick:()=>t(z)()}]},null,8,["actions"])]),_:1})]),body:a(()=>[i("div",It,[i("div",zt,[i("div",Et,[i("h1",Lt,l(t(s)?.title),1),t(s)?.filePath?(n(),u(K,{key:0,"file-path":t(s).filePath,"project-key":t(s)?.project?.id,"project-name":t(s)?.project?.name,class:"text-sm text-gray-500 mt-0.5"},null,8,["file-path","project-key","project-name"])):d("",!0),t(s)?.project?(n(),_("div",Nt,[o(b,{color:"neutral",variant:"soft",size:"xs",class:"font-mono"},{default:a(()=>[m(l(t(s).project.name),1)]),_:1}),t(s)?.flakyRuns>0?(n(),u(b,{key:0,color:"warning",variant:"soft",size:"xs"},{default:a(()=>[m(l(t(s).flakyRuns)+" flaky run"+l(t(s).flakyRuns===1?"":"s"),1)]),_:1})):d("",!0)])):d("",!0)]),t(s)?.lastExecutionId?(n(),u(k,{key:0,to:`/test-run-cases/${t(s).lastExecutionId}`,class:"shrink-0"},{default:a(()=>[o(v,{size:"sm",variant:"outline","trailing-icon":"i-lucide-arrow-right"},{default:a(()=>[...c[0]||(c[0]=[m(" Latest execution ",-1)])]),_:1})]),_:1},8,["to"])):d("",!0)]),o(O,null,{default:a(()=>[o(g,{label:"Total runs",value:t(s)?.totalRuns??0},null,8,["value"]),o(g,{label:"Pass rate",value:t(x)!==null?`${t(x)}%`:"—","value-class":(t(x)??0)>=80?"text-green-600":(t(x)??0)>=50?"text-yellow-600":"text-red-600"},null,8,["value","value-class"]),o(g,{label:"Failed",value:t(s)?.failedRuns??0,"value-class":"text-red-600"},null,8,["value"]),o(g,{label:"Avg duration"},{default:a(()=>[o(C,{ms:t(s)?.avgDuration},null,8,["ms"])]),_:1}),o(g,{label:"Flaky",value:t(s)?.flakyRuns??0,"value-class":(t(s)?.flakyRuns??0)>0?"text-purple-600":""},{label:a(()=>[c[1]||(c[1]=m(" Flaky ",-1)),o(H,{topic:"case.flaky-count"})]),_:1},8,["value","value-class"]),o(g,{label:"Last run",size:"sm",value:t(s)?.lastRunAt?("formatRelativeTime"in r?r.formatRelativeTime:t(wt))(t(s).lastRunAt):"—"},null,8,["value"])]),_:1}),t(f)&&t(f).length>1?(n(),_("div",Pt,[o(S,{title:"Duration trend",icon:"i-lucide-trending-up",help:"case.history-chart",legend:t(kt)(t($t))},{default:a(()=>[o(M,{data:t(f),height:200,markers:t(R),onMarkerClick:E},null,8,["data","markers"])]),_:1},8,["legend"]),o(S,{title:"Status history",icon:"i-lucide-check-circle",help:"case.sparkline"},{default:a(()=>[i("div",Ut,[(n(!0),_(w,null,D(t(f),(e,Yt)=>(n(),u(G,{key:e.id,text:`Run #${e.runId}: ${e.status} — ${new Date(e.startTime).toLocaleDateString("en-US",{month:"short",day:"numeric"})}`},{default:a(()=>[o(k,{to:`/test-run-cases/${e.id}`,class:_t([{"bg-red-500 hover:bg-red-600":e.status==="failed"||e.status==="timedOut","bg-green-500 hover:bg-green-600":e.status==="passed","bg-yellow-500 hover:bg-yellow-600":e.status==="skipped","bg-gray-400 hover:bg-gray-500":!["passed","failed","skipped","timedOut"].includes(e.status)},"size-3.5 rounded-sm inline-block transition-colors"]),title:`Run #${e.runId}: ${e.status}`},null,8,["to","class","title"])]),_:2},1032,["text"]))),128)),t(f).length===0?(n(),_("span",At,"No history yet")):d("",!0)])]),_:1})])):t(f)&&t(f).length<=1?(n(),_("div",Bt,[o(Q,{name:"i-lucide-trending-up",class:"size-6 mx-auto mb-1"}),c[2]||(c[2]=i("p",{class:"text-sm"},"Need at least 2 runs to show trends.",-1))])):d("",!0),o($,{icon:"i-lucide-list-checks",title:`Recent executions (${t(s)?.recentExecutions?.length??0})`},{default:a(()=>[t(s)?.recentExecutions?.length?(n(),u(q,{key:0,data:t(s).recentExecutions,columns:P,ui:{base:"table-fixed border-separate border-spacing-0",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"startTime-cell":a(({row:e})=>[i("span",Vt,[i("span",Ft,l(new Date(e.original.startTime).toLocaleDateString("en-US",{month:"short",day:"numeric"})),1),i("span",Kt,l(new Date(e.original.startTime).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"})),1)])]),"status-cell":a(({row:e})=>[o(b,{color:("getStatusColor"in r?r.getStatusColor:t(Dt))(e.original.status),variant:"subtle",class:"capitalize"},{default:a(()=>[m(l(e.original.status),1)]),_:2},1032,["color"])]),"duration-cell":a(({row:e})=>[e.original.duration!==null?(n(),u(C,{key:0,ms:e.original.duration},null,8,["ms"])):(n(),_("span",Ht,"—"))]),"retries-cell":a(({row:e})=>[m(l(e.original.retries&&e.original.retries>0?e.original.retries:""),1)]),"runId-cell":a(({row:e})=>[o(k,{to:`/test-runs/${e.original.runId}`,class:"text-primary hover:underline"},{default:a(()=>[m(l(e.original.runLabel?`${e.original.runLabel} (#${e.original.runId})`:`#${e.original.runId}`),1)]),_:2},1032,["to"])]),"error-cell":a(({row:e})=>[e.original.error?(n(),_("span",{key:0,class:"text-red-600 text-xs truncate max-w-xs block",title:e.original.error},l(e.original.error.length>80?`${e.original.error.substring(0,80)}…`:e.original.error),9,Ot)):d("",!0)]),"actions-header":a(()=>[...c[3]||(c[3]=[i("div",{class:"text-right"},"Actions",-1)])]),"actions-cell":a(({row:e})=>[i("div",Mt,[o(v,{to:`/test-run-cases/${e.original.id}`,size:"sm",variant:"outline","trailing-icon":"i-lucide-arrow-right"},{default:a(()=>[...c[4]||(c[4]=[m(" View ",-1)])]),_:1},8,["to"])])]),_:1},8,["data"])):(n(),u(J,{key:1,icon:"i-lucide-inbox",text:"No executions yet"}))]),_:1},8,["title"]),t(s)?.failureClusters?.length?(n(),u($,{key:2,icon:"i-lucide-bug",title:`Failure clusters (${t(s).failureClusters.length})`,help:"cluster.concept"},{default:a(()=>[i("div",Gt,[(n(!0),_(w,null,D(t(s).failureClusters,e=>(n(),_("div",{key:e.id,class:"flex items-center justify-between py-2 px-2 rounded hover:bg-gray-50 dark:hover:bg-gray-800"},[i("div",Qt,[o(b,{color:N(e.status),variant:"soft",size:"xs",class:"capitalize"},{default:a(()=>[m(l(e.status),1)]),_:2},1032,["color"]),i("span",qt,l(e.signature),1),e.occurrences>1?(n(),_("span",Jt,l(e.occurrences)+" occurrences ",1)):d("",!0)]),o(v,{to:`/failure-clusters/${e.id}`,size:"xs",variant:"outline","trailing-icon":"i-lucide-arrow-right"},{default:a(()=>[...c[5]||(c[5]=[m(" View ",-1)])]),_:1},8,["to"])]))),128))])]),_:1},8,["title"])):d("",!0),t(s)?.links?.length?(n(),u($,{key:3,icon:"i-lucide-link",title:"Links",help:"shared.entity-links"},{default:a(()=>[o(W,{"entity-type":"test_case","entity-id":Number(t(h)),links:t(s).links??null},null,8,["entity-id","links"])]),_:1})):d("",!0)])]),_:1})}}});export{Be as default};
|
|
1
|
+
import{_ as Y}from"./BuMX-4RF.js";import{_ as Z}from"./OMI0cmZ0.js";import{_ as tt}from"./DbtjJCra.js";import{_ as et}from"./ChuJzPWz.js";import{_ as st,a as at}from"./BS91Og__.js";import{_ as ot}from"./DYdwHaco.js";import{d as rt,u as nt,w as T,a as it,s as lt,e as u,f as a,v as j,o as n,g as i,t as l,b as t,l as d,c as _,h as o,m as ct,k as m,H as ut,j as dt,F as w,z as D,i as _t,_ as mt,r as pt,n as ft}from"./1QWBzxLM.js";import{_ as gt}from"./DURme_kn.js";import{_ as ht}from"./Bc6Zr-Xn.js";import{_ as yt}from"./B82vqOZe.js";import{_ as xt}from"./D-F0Rhjj.js";import{_ as bt}from"./BsdfEbVC.js";import{e as vt,l as kt,C as $t}from"./CkhOMiiO.js";import{_ as jt}from"./BnUQ3i5l.js";import{_ as Rt}from"./uspGXbik.js";import{_ as Ct}from"./Dn_-RkxP.js";import{_ as St}from"./bmAf49LT.js";import{_ as Tt}from"./D4v7lLm3.js";import{a as wt,k as Dt}from"./D4mPjHHR.js";import{u as I}from"./CU_2YLhT.js";import"./CiCUZGFZ.js";import"./CEPU6VkU.js";import"./BOA-I6S9.js";import"./Bp31ZRcA.js";import"./B-1zt4pp.js";import"./e-GZmCeP.js";import"./DpM8IgHL.js";import"./B4lvHjBe.js";import"./Bl0xzETD.js";import"./CapSEET7.js";import"./DBXXb0w8.js";import"./Bp1WeQ0_.js";import"./BF5qB58w.js";import"./CtQMagSz.js";import"./Dpwj_1H5.js";import"./CHz7LJIX.js";import"./BrxUH8qL.js";import"./Dx41arC8.js";import"./VBTxfbqU.js";import"./AbnDY6Zr.js";const It={class:"flex flex-col gap-4 p-4","data-shot":"test-case-detail"},zt={class:"flex items-start gap-4 flex-wrap"},Et={class:"flex-1 min-w-0"},Lt={class:"text-xl font-bold truncate"},Nt={key:1,class:"flex items-center gap-2 mt-2"},Pt={key:0,class:"grid grid-cols-1 lg:grid-cols-2 gap-4"},Ut={class:"flex items-center gap-1 flex-wrap max-h-[200px] overflow-y-auto py-1"},At={key:0,class:"text-sm text-gray-400"},Bt={key:1,class:"text-center py-6 text-gray-400"},Vt={class:"text-xs whitespace-nowrap"},Ft={class:"text-gray-500"},Kt={class:"text-gray-400 ml-1"},Ht={key:1,class:"text-gray-400"},Ot=["title"],Mt={class:"flex justify-end"},Gt={class:"space-y-2"},Qt={class:"flex items-center gap-2 min-w-0"},qt={class:"text-sm truncate"},Jt={key:0,class:"text-xs text-gray-400 shrink-0"},Be=rt({__name:"[id]",async setup(Wt){let p,y;const h=nt().params.id,{data:s,refresh:z}=([p,y]=T(()=>I(`/api/test-cases/${h}`,"$IiVoRdAdzb")),p=await p,y(),p),{data:f}=([p,y]=T(()=>I(`/api/test-cases/${h}/history`,{transform:r=>r.items},"$cuQ0G6KeIS")),p=await p,y(),p),R=pt([]);it(()=>s.value?.project?.id,async r=>{if(r)try{R.value=(await $fetch(`/api/projects/${r}/markers`)).items??[]}catch{}},{immediate:!0});function E(){const r=s.value?.project?.id;r&&ft(`/projects/${r}?tab=timeline`)}lt(j(()=>({title:`${s.value?.title||`Test case #${h}`} — Piwi Dashboard`})));const x=j(()=>{const r=s.value;return!r||!r.totalRuns?null:Math.round((r.passedRuns+r.skippedRuns)/r.totalRuns*100)}),L=j(()=>s.value?.filePath?[{filePath:s.value.filePath,title:s.value.title,line:null}]:[]),N=r=>r==="open"?"error":r==="resolved"?"success":"neutral",P=[{accessorKey:"startTime",header:"Date"},{accessorKey:"status",header:"Status"},{accessorKey:"duration",header:"Duration"},{accessorKey:"retries",header:"Retries"},{accessorKey:"runId",header:"Run"},{accessorKey:"error",header:"Error"},{id:"actions",header:"Actions"}];return(r,c)=>{const U=Y,A=Z,B=tt,V=et,F=at,K=ot,b=ct,v=dt,k=ut,g=gt,C=ht,H=yt,O=xt,M=bt,S=vt,G=jt,Q=mt,q=Rt,J=Ct,$=St,W=Tt,X=st;return n(),u(X,{id:"test-case-evolution"},{header:a(()=>[o(F,null,{leading:a(()=>[o(U),o(A,{items:[{label:"Home",icon:"i-lucide-house",to:"/"},{label:"Projects",to:"/projects"},...t(s)?.project?.id?[{label:t(s).project.name||"Project",to:`/projects/${t(s).project.id}`}]:[{label:"Project"}],{label:t(s)?.title||`Test case #${t(h)}`}]},null,8,["items"])]),right:a(()=>[o(B,{"project-id":t(s)?.project?.id,"project-label":t(s)?.project?.label??t(s)?.project?.name,cases:t(L),label:"Reproduce locally","preset-options":{mode:"grep",repeatEach:20,trace:!0},class:"mr-2"},null,8,["project-id","project-label","cases"]),o(V,{actions:[{label:"Refresh",icon:"i-lucide-refresh-cw",onClick:()=>t(z)()}]},null,8,["actions"])]),_:1})]),body:a(()=>[i("div",It,[i("div",zt,[i("div",Et,[i("h1",Lt,l(t(s)?.title),1),t(s)?.filePath?(n(),u(K,{key:0,"file-path":t(s).filePath,"project-key":t(s)?.project?.id,"project-name":t(s)?.project?.name,class:"text-sm text-gray-500 mt-0.5"},null,8,["file-path","project-key","project-name"])):d("",!0),t(s)?.project?(n(),_("div",Nt,[o(b,{color:"neutral",variant:"soft",size:"xs",class:"font-mono"},{default:a(()=>[m(l(t(s).project.name),1)]),_:1}),t(s)?.flakyRuns>0?(n(),u(b,{key:0,color:"warning",variant:"soft",size:"xs"},{default:a(()=>[m(l(t(s).flakyRuns)+" flaky run"+l(t(s).flakyRuns===1?"":"s"),1)]),_:1})):d("",!0)])):d("",!0)]),t(s)?.lastExecutionId?(n(),u(k,{key:0,to:`/test-run-cases/${t(s).lastExecutionId}`,class:"shrink-0"},{default:a(()=>[o(v,{size:"sm",variant:"outline","trailing-icon":"i-lucide-arrow-right"},{default:a(()=>[...c[0]||(c[0]=[m(" Latest execution ",-1)])]),_:1})]),_:1},8,["to"])):d("",!0)]),o(O,null,{default:a(()=>[o(g,{label:"Total runs",value:t(s)?.totalRuns??0},null,8,["value"]),o(g,{label:"Pass rate",value:t(x)!==null?`${t(x)}%`:"—","value-class":(t(x)??0)>=80?"text-green-600":(t(x)??0)>=50?"text-yellow-600":"text-red-600"},null,8,["value","value-class"]),o(g,{label:"Failed",value:t(s)?.failedRuns??0,"value-class":"text-red-600"},null,8,["value"]),o(g,{label:"Avg duration"},{default:a(()=>[o(C,{ms:t(s)?.avgDuration},null,8,["ms"])]),_:1}),o(g,{label:"Flaky",value:t(s)?.flakyRuns??0,"value-class":(t(s)?.flakyRuns??0)>0?"text-purple-600":""},{label:a(()=>[c[1]||(c[1]=m(" Flaky ",-1)),o(H,{topic:"case.flaky-count"})]),_:1},8,["value","value-class"]),o(g,{label:"Last run",size:"sm",value:t(s)?.lastRunAt?("formatRelativeTime"in r?r.formatRelativeTime:t(wt))(t(s).lastRunAt):"—"},null,8,["value"])]),_:1}),t(f)&&t(f).length>1?(n(),_("div",Pt,[o(S,{title:"Duration trend",icon:"i-lucide-trending-up",help:"case.history-chart",legend:t(kt)(t($t))},{default:a(()=>[o(M,{data:t(f),height:200,markers:t(R),onMarkerClick:E},null,8,["data","markers"])]),_:1},8,["legend"]),o(S,{title:"Status history",icon:"i-lucide-check-circle",help:"case.sparkline"},{default:a(()=>[i("div",Ut,[(n(!0),_(w,null,D(t(f),(e,Yt)=>(n(),u(G,{key:e.id,text:`Run #${e.runId}: ${e.status} — ${new Date(e.startTime).toLocaleDateString("en-US",{month:"short",day:"numeric"})}`},{default:a(()=>[o(k,{to:`/test-run-cases/${e.id}`,class:_t([{"bg-red-500 hover:bg-red-600":e.status==="failed"||e.status==="timedOut","bg-green-500 hover:bg-green-600":e.status==="passed","bg-yellow-500 hover:bg-yellow-600":e.status==="skipped","bg-gray-400 hover:bg-gray-500":!["passed","failed","skipped","timedOut"].includes(e.status)},"size-3.5 rounded-sm inline-block transition-colors"]),title:`Run #${e.runId}: ${e.status}`},null,8,["to","class","title"])]),_:2},1032,["text"]))),128)),t(f).length===0?(n(),_("span",At,"No history yet")):d("",!0)])]),_:1})])):t(f)&&t(f).length<=1?(n(),_("div",Bt,[o(Q,{name:"i-lucide-trending-up",class:"size-6 mx-auto mb-1"}),c[2]||(c[2]=i("p",{class:"text-sm"},"Need at least 2 runs to show trends.",-1))])):d("",!0),o($,{icon:"i-lucide-list-checks",title:`Recent executions (${t(s)?.recentExecutions?.length??0})`},{default:a(()=>[t(s)?.recentExecutions?.length?(n(),u(q,{key:0,data:t(s).recentExecutions,columns:P,ui:{base:"table-fixed border-separate border-spacing-0",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"startTime-cell":a(({row:e})=>[i("span",Vt,[i("span",Ft,l(new Date(e.original.startTime).toLocaleDateString("en-US",{month:"short",day:"numeric"})),1),i("span",Kt,l(new Date(e.original.startTime).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"})),1)])]),"status-cell":a(({row:e})=>[o(b,{color:("getStatusColor"in r?r.getStatusColor:t(Dt))(e.original.status),variant:"subtle",class:"capitalize"},{default:a(()=>[m(l(e.original.status),1)]),_:2},1032,["color"])]),"duration-cell":a(({row:e})=>[e.original.duration!==null?(n(),u(C,{key:0,ms:e.original.duration},null,8,["ms"])):(n(),_("span",Ht,"—"))]),"retries-cell":a(({row:e})=>[m(l(e.original.retries&&e.original.retries>0?e.original.retries:""),1)]),"runId-cell":a(({row:e})=>[o(k,{to:`/test-runs/${e.original.runId}`,class:"text-primary hover:underline"},{default:a(()=>[m(l(e.original.runLabel?`${e.original.runLabel} (#${e.original.runId})`:`#${e.original.runId}`),1)]),_:2},1032,["to"])]),"error-cell":a(({row:e})=>[e.original.error?(n(),_("span",{key:0,class:"text-red-600 text-xs truncate max-w-xs block",title:e.original.error},l(e.original.error.length>80?`${e.original.error.substring(0,80)}…`:e.original.error),9,Ot)):d("",!0)]),"actions-header":a(()=>[...c[3]||(c[3]=[i("div",{class:"text-right"},"Actions",-1)])]),"actions-cell":a(({row:e})=>[i("div",Mt,[o(v,{to:`/test-run-cases/${e.original.id}`,size:"sm",variant:"outline","trailing-icon":"i-lucide-arrow-right"},{default:a(()=>[...c[4]||(c[4]=[m(" View ",-1)])]),_:1},8,["to"])])]),_:1},8,["data"])):(n(),u(J,{key:1,icon:"i-lucide-inbox",text:"No executions yet"}))]),_:1},8,["title"]),t(s)?.failureClusters?.length?(n(),u($,{key:2,icon:"i-lucide-bug",title:`Failure clusters (${t(s).failureClusters.length})`,help:"cluster.concept"},{default:a(()=>[i("div",Gt,[(n(!0),_(w,null,D(t(s).failureClusters,e=>(n(),_("div",{key:e.id,class:"flex items-center justify-between py-2 px-2 rounded hover:bg-gray-50 dark:hover:bg-gray-800"},[i("div",Qt,[o(b,{color:N(e.status),variant:"soft",size:"xs",class:"capitalize"},{default:a(()=>[m(l(e.status),1)]),_:2},1032,["color"]),i("span",qt,l(e.signature),1),e.occurrences>1?(n(),_("span",Jt,l(e.occurrences)+" occurrences ",1)):d("",!0)]),o(v,{to:`/failure-clusters/${e.id}`,size:"xs",variant:"outline","trailing-icon":"i-lucide-arrow-right"},{default:a(()=>[...c[5]||(c[5]=[m(" View ",-1)])]),_:1},8,["to"])]))),128))])]),_:1},8,["title"])):d("",!0),t(s)?.links?.length?(n(),u($,{key:3,icon:"i-lucide-link",title:"Links",help:"shared.entity-links"},{default:a(()=>[o(W,{"entity-type":"test_case","entity-id":Number(t(h)),links:t(s).links??null},null,8,["entity-id","links"])]),_:1})):d("",!0)])]),_:1})}}});export{Be as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as $}from"./
|
|
1
|
+
import{_ as $}from"./B-1zt4pp.js";import{_ as C}from"./CapSEET7.js";import{_ as R}from"./UAmyrRCI.js";import{_ as O}from"./B4lvHjBe.js";import{d as I,q as T,w as v,aJ as A,c as B,h as o,f as n,o as x,b as e,e as N,l as q,g as d,i as E,I as F,j as K,k as w,v as z,r as J,J as W}from"./1QWBzxLM.js";import{_ as D}from"./bmAf49LT.js";import{u as V}from"./CU_2YLhT.js";import"./Bl0xzETD.js";import"./DpM8IgHL.js";import"./DBXXb0w8.js";import"./Bp1WeQ0_.js";import"./VBTxfbqU.js";import"./B82vqOZe.js";import"./CHz7LJIX.js";import"./AbnDY6Zr.js";const H={class:"space-y-6"},L={class:"space-y-4"},Q={class:"flex items-center justify-between gap-2"},Y={class:"flex items-center gap-2 shrink-0"},pe=I({__name:"auto-heal",async setup(G){let i,m;const h=T(),{data:l,refresh:y}=([i,m]=v(()=>V("/api/settings/auto-heal","$nzVbYQbfFh")),i=await i,m(),i),{data:j}=([i,m]=v(()=>V("/api/projects/menu",{default:()=>[],transform:r=>r.items},"$7HEKoMfKtv")),i=await i,m(),i),P=z(()=>(j.value??[]).map(r=>({label:r.label||r.name,value:r.id}))),u=J(!1),a=W({enabled:!1,projects:[],minScore:80,draft:!0,maxOpenPrs:3,branchPrefix:"piwi/heal/",commitMessage:"test: heal broken locators"});A(()=>{l.value&&Object.assign(a,l.value.settings)});async function b(r,t){u.value=!0;try{const p=await $fetch("/api/settings/auto-heal",{method:"PUT",body:r});l.value=p,Object.assign(a,p.settings),h.add({title:t,color:"success"}),await y()}catch{h.add({title:"Save failed",color:"error"})}finally{u.value=!1}}const k=()=>b({settings:{...a,projects:[...a.projects]}},"Saved"),U=()=>b({settings:null},"Reset to defaults");return(r,t)=>{const p=$,_=C,M=R,c=O,f=F,g=K,S=D;return x(),B("div",H,[o(S,{icon:"i-lucide-bandage",title:"Auto-heal pull requests",help:"settings.auto-heal"},{subtitle:n(()=>[...t[7]||(t[7]=[w(" When a locator breaks on the default branch and healing has a high-confidence replacement, Piwi opens the fix pull request itself — a deterministic one-line locator edit per broken call site. No AI-generated code is ever in the write path. ",-1)])]),footer:n(()=>[d("div",Q,[t[9]||(t[9]=d("p",{class:"text-xs text-muted"}," Needs an SCM token with write access. Prefer a per-project token — the global one grants write everywhere it reaches. ",-1)),d("div",Y,[o(g,{variant:"ghost",color:"neutral",disabled:e(u),label:"Reset to defaults",onClick:U},null,8,["disabled"]),o(g,{color:"primary",loading:e(u),icon:"i-lucide-save",onClick:k},{default:n(()=>[...t[8]||(t[8]=[w("Save",-1)])]),_:1},8,["loading"])])])]),default:n(()=>[e(l)&&!e(l).siteUrlConfigured?(x(),N(p,{key:0,color:"warning",variant:"soft",icon:"i-lucide-triangle-alert",title:"PIWI_SITE_URL is not set",description:"Nothing is opened until it is — the links in the PR body are built from it.",class:"mb-4"})):q("",!0),d("div",L,[o(_,{modelValue:e(a).enabled,"onUpdate:modelValue":t[0]||(t[0]=s=>e(a).enabled=s),label:"Open pull requests to heal broken locators"},null,8,["modelValue"]),d("div",{class:E(["space-y-4 pl-1",!e(a).enabled&&"opacity-50 pointer-events-none"])},[o(c,{label:"Projects",description:"Auto-heal only acts on the projects you list here — it never touches a project that isn’t selected."},{default:n(()=>[o(M,{modelValue:e(a).projects,"onUpdate:modelValue":t[1]||(t[1]=s=>e(a).projects=s),items:e(P),"value-key":"value",multiple:"",placeholder:"Select projects…",class:"w-full max-w-md"},null,8,["modelValue","items"])]),_:1}),o(c,{label:"Minimum score",description:"The stability score (0–100) a replacement needs before it opens a PR. A locator you confirmed in the picker is always eligible.",hint:`default ${e(l)?.defaults.minScore??80}`},{default:n(()=>[o(f,{modelValue:e(a).minScore,"onUpdate:modelValue":t[2]||(t[2]=s=>e(a).minScore=s),modelModifiers:{number:!0},type:"number",min:"0",max:"100",class:"w-28"},null,8,["modelValue"])]),_:1},8,["hint"]),o(c,{label:"Open as draft",description:"Open the PR as a draft. Ignored on Bitbucket, which has no draft pull requests."},{default:n(()=>[o(_,{modelValue:e(a).draft,"onUpdate:modelValue":t[3]||(t[3]=s=>e(a).draft=s)},null,8,["modelValue"])]),_:1}),o(c,{label:"Max open PRs per project",description:"A ceiling on how many auto-heal PRs can be open at once for one project.",hint:`default ${e(l)?.defaults.maxOpenPrs??3}`},{default:n(()=>[o(f,{modelValue:e(a).maxOpenPrs,"onUpdate:modelValue":t[4]||(t[4]=s=>e(a).maxOpenPrs=s),modelModifiers:{number:!0},type:"number",min:"0",max:"50",class:"w-28"},null,8,["modelValue"])]),_:1},8,["hint"]),o(c,{label:"Branch prefix",description:"The branch namespace auto-heal pushes to. Runs reported from a branch under this prefix never trigger another heal.",hint:`default ${e(l)?.defaults.branchPrefix??""}`},{default:n(()=>[o(f,{modelValue:e(a).branchPrefix,"onUpdate:modelValue":t[5]||(t[5]=s=>e(a).branchPrefix=s),placeholder:e(l)?.defaults.branchPrefix,class:"w-full max-w-xs"},null,8,["modelValue","placeholder"])]),_:1},8,["hint"]),o(c,{label:"Commit message",description:"The commit subject (and PR title). Keep it a conventional-commit subject so your commit lint accepts it.",hint:`default ${e(l)?.defaults.commitMessage??""}`},{default:n(()=>[o(f,{modelValue:e(a).commitMessage,"onUpdate:modelValue":t[6]||(t[6]=s=>e(a).commitMessage=s),placeholder:e(l)?.defaults.commitMessage,class:"w-full max-w-md"},null,8,["modelValue","placeholder"])]),_:1},8,["hint"])],2)])]),_:1})])}}});export{pe as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as G}from"./
|
|
1
|
+
import{_ as G}from"./BuMX-4RF.js";import{_ as K}from"./OMI0cmZ0.js";import{_ as M,a as Q}from"./BS91Og__.js";import{_ as W,a as X}from"./DmeogbGY.js";import{d as N,a as Y,b as t,o as p,e as v,f as a,c as B,g as c,h as i,_ as tt,i as et,t as S,j as z,k as u,l as y,m as st,r as C,u as ot,p as nt,q as at,w as F,s as it,v as P,x as lt}from"./1QWBzxLM.js";import{_ as rt}from"./Cnm0d_7S.js";import{_ as ct}from"./AbnDY6Zr.js";import{_ as dt}from"./bmAf49LT.js";import{u as ut,i as pt,a as mt}from"./Bp31ZRcA.js";import{u as D}from"./CU_2YLhT.js";import{o as _t,s as x}from"./DGnQ69wW.js";import"./CiCUZGFZ.js";import"./B4lvHjBe.js";import"./Bl0xzETD.js";import"./DoDo3VF2.js";import"./B82vqOZe.js";import"./CHz7LJIX.js";import"./mi7tdFxN.js";import"./UAmyrRCI.js";import"./DpM8IgHL.js";import"./Bp1WeQ0_.js";import"./VBTxfbqU.js";import"./D4mPjHHR.js";const ft={key:0,class:"space-y-3"},gt={class:"flex items-center justify-between gap-3"},kt={class:"flex items-center gap-2 min-w-0 text-sm"},vt={class:"text-xs break-all"},bt={class:"flex items-center gap-1.5 shrink-0"},ht={key:0,class:"text-sm text-warning"},xt={key:1,class:"flex items-center justify-between gap-3"},jt=N({__name:"DesktopProjectFolderSection",props:{projectId:{}},setup(U){const d=U,{available:f,link:r,busy:g,pickAndLink:b,unlink:m}=ut(()=>d.projectId),o=C(null);return Y(()=>r.value?.path,async _=>{o.value=_&&r.value?.exists?await mt(_):null},{immediate:!0}),(_,n)=>{const h=st,$=tt,s=z,k=W,T=dt;return t(f)?(p(),v(T,{key:0,id:"local-folder",icon:"i-lucide-folder-symlink",title:"Local folder",help:"project.local-folder"},{subtitle:a(()=>[...n[0]||(n[0]=[u(" The checkout of this project on this machine — used to run tests locally and open files in your IDE. ",-1)])]),actions:a(()=>[t(r)&&!t(r).exists?(p(),v(h,{key:0,color:"warning",variant:"subtle",size:"sm"},{default:a(()=>[...n[1]||(n[1]=[u("missing",-1)])]),_:1})):t(o)&&("isFolderPiwiReady"in _?_.isFolderPiwiReady:t(pt))(t(o))?(p(),v(h,{key:1,color:"success",variant:"subtle",size:"sm"},{default:a(()=>[...n[2]||(n[2]=[u(" ready ",-1)])]),_:1})):t(o)?(p(),v(h,{key:2,color:"warning",variant:"subtle",size:"sm"},{default:a(()=>[...n[3]||(n[3]=[u("needs setup",-1)])]),_:1})):y("",!0)]),default:a(()=>[t(r)?(p(),B("div",ft,[c("div",gt,[c("div",kt,[i($,{name:t(r).exists?"i-lucide-folder-check":"i-lucide-folder-x",class:et(["size-4 shrink-0",t(r).exists?"text-success":"text-warning"])},null,8,["name","class"]),c("code",vt,S(t(r).path),1)]),c("div",bt,[i(s,{size:"xs",color:"neutral",variant:"soft",icon:"i-lucide-folder-search",loading:t(g),onClick:t(b)},{default:a(()=>[...n[4]||(n[4]=[u(" Change ",-1)])]),_:1},8,["loading","onClick"]),i(s,{size:"xs",color:"neutral",variant:"ghost",icon:"i-lucide-unlink",disabled:t(g),onClick:t(m)},{default:a(()=>[...n[5]||(n[5]=[u(" Unlink ",-1)])]),_:1},8,["disabled","onClick"])])]),t(r).exists?y("",!0):(p(),B("p",ht," The folder is gone from this machine — pick the checkout again. ")),t(o)?(p(),v(k,{key:1,inspection:t(o)},null,8,["inspection"])):y("",!0)])):(p(),B("div",xt,[n[7]||(n[7]=c("p",{class:"text-sm text-muted"},"No folder linked on this machine yet.",-1)),i(s,{size:"xs",icon:"i-lucide-folder-plus",loading:t(g),onClick:t(b)},{default:a(()=>[...n[6]||(n[6]=[u("Choose folder…",-1)])]),_:1},8,["loading","onClick"])]))]),_:1})):y("",!0)}}}),yt=Object.assign(jt,{__name:"DesktopProjectFolderSection"}),Ct={class:"p-4 space-y-4"},$t={class:"text-sm text-gray-600 mt-1"},Tt={class:"font-medium"},wt={class:"flex justify-end gap-2 pt-2"},Wt=N({__name:"edit",async setup(U){let d,f;const r=ot(),g=nt(),b=at(),m=r.params.id,{data:o}=([d,f]=F(()=>D(`/api/projects/${m}`,"$CprFePJ4Up")),d=await d,f(),d),{data:_,refresh:n}=([d,f]=F(()=>D("/api/tags","$vxtZOtP06T")),d=await d,f(),d);it(P(()=>({title:`Edit ${o.value?.label||o.value?.name||"Project"} — Piwi Dashboard`})));const h=P(()=>_.value?.items||[]),$=P(()=>!!o.value?.hasScmToken),s=C({label:o.value?.label||"",description:o.value?.description||"",diagnosisInstructions:o.value?.diagnosisInstructions||"",scmToken:"",defaultBranch:o.value?.defaultBranch||""}),k=C(o.value?.tags||[]),T=_t({label:x().optional(),description:x().optional(),diagnosisInstructions:x().optional(),scmToken:x().optional(),defaultBranch:x().optional()}),w=C(!1);async function E(){try{w.value=!0,await $fetch(`/api/projects/${m}`,{method:"PATCH",body:{label:s.value.label||null,description:s.value.description||null,diagnosisInstructions:s.value.diagnosisInstructions||null,scmToken:s.value.scmToken||null,defaultBranch:s.value.defaultBranch||null,tagIds:k.value.map(j=>j.id)}}),b.add({title:"Project updated",description:"Project settings have been saved successfully",color:"success"}),await g.push(`/projects/${m}`)}catch(j){console.error("Error updating project:",j),b.add({title:"Error",description:"Failed to update project",color:"error"})}finally{w.value=!1}}function R(){g.push(`/projects/${m}`)}return(j,e)=>{const V=G,A=K,H=Q,L=X,I=z,O=rt,q=ct,J=yt,Z=M;return p(),v(Z,{id:"project-edit"},{header:a(()=>[i(H,null,{leading:a(()=>[i(V),i(A,{items:[{label:"Home",icon:"i-lucide-house",to:"/"},{label:"Projects",to:"/projects"},{label:t(o)?.label||t(o)?.name||"Project",to:`/projects/${t(m)}`},{label:"Edit"}]},null,8,["items"])]),_:1})]),body:a(()=>[c("div",Ct,[i(q,null,{header:a(()=>[e[8]||(e[8]=c("h2",null,"Edit project settings",-1)),c("p",$t,[e[7]||(e[7]=u(" Project Name: ",-1)),c("span",Tt,S(t(o)?.name),1)]),e[9]||(e[9]=c("p",{class:"text-xs text-gray-500 mt-1"}," Note: The project name is used to match test results from the reporter and cannot be changed. ",-1))]),default:a(()=>[i(O,{schema:t(T),state:t(s),class:"space-y-5",onSubmit:E},{default:a(()=>[i(L,{mode:"edit","has-token":t($),label:t(s).label,"onUpdate:label":e[0]||(e[0]=l=>t(s).label=l),description:t(s).description,"onUpdate:description":e[1]||(e[1]=l=>t(s).description=l),diagnosisInstructions:t(s).diagnosisInstructions,"onUpdate:diagnosisInstructions":e[2]||(e[2]=l=>t(s).diagnosisInstructions=l),scmToken:t(s).scmToken,"onUpdate:scmToken":e[3]||(e[3]=l=>t(s).scmToken=l),defaultBranch:t(s).defaultBranch,"onUpdate:defaultBranch":e[4]||(e[4]=l=>t(s).defaultBranch=l),tags:t(k),"onUpdate:tags":e[5]||(e[5]=l=>lt(k)?k.value=l:null),"all-tags":t(h),onTagCreated:e[6]||(e[6]=l=>t(n)())},null,8,["has-token","label","description","diagnosisInstructions","scmToken","defaultBranch","tags","all-tags"]),c("div",wt,[i(I,{variant:"ghost",color:"neutral",onClick:R},{default:a(()=>[...e[10]||(e[10]=[u(" Cancel ",-1)])]),_:1}),i(I,{type:"submit",icon:"i-lucide-check",loading:t(w)},{default:a(()=>[...e[11]||(e[11]=[u(" Save changes ",-1)])]),_:1},8,["loading"])])]),_:1},8,["schema","state"])]),_:1}),i(J,{"project-id":t(m)},null,8,["project-id"])])]),_:1})}}});export{Wt as default};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import{_ as ls}from"./BuMX-4RF.js";import{_ as cs}from"./OMI0cmZ0.js";import{d as oe,o as t,e as _,f as c,g as o,h as r,t as l,c as a,F as A,z as Y,b as e,m as me,k as p,l as i,E as qe,i as te,_ as le,v,H as Ie,j as Re,q as us,C as _t,x as ge,r as B,ab as we,a as ke,ac as ds,B as Ge,a1 as $e,u as ms,p as fs,w as We,s as ps,ad as gs,ae as ys,N as hs}from"./1QWBzxLM.js";import{d as xs,e as vs,h as Je,a as _s,b as ks,c as bs,_ as ws,o as $s,p as Cs,q as Ts,u as Ss,f as Is,i as Rs,j as Ls,k as zs,l as js,m as Ns,n as Ds}from"./CywiLuOD.js";import{_ as Ms}from"./DbtjJCra.js";import{_ as As}from"./ChuJzPWz.js";import{_ as Ps,a as Bs}from"./BS91Og__.js";import{_ as Us,a as Fs,b as Es,c as Vs}from"./CQLkowA3.js";import{_ as Le}from"./Bc6Zr-Xn.js";import{_ as Os}from"./Lz9MmwKY.js";import{_ as Hs}from"./BFLa9ZEP.js";import{_ as kt}from"./DYdwHaco.js";import{_ as bt}from"./DURme_kn.js";import{_ as wt}from"./D-F0Rhjj.js";import{_ as $t,a as Ct}from"./B82vqOZe.js";import{_ as Ks}from"./D4v7lLm3.js";import{_ as Ws}from"./AbnDY6Zr.js";import{_ as qs,d as Gs,e as Js,f as Qs,g as Zs,h as Xs,a as Tt,i as Se,b as Ae,c as Ys}from"./CN1M6i4K.js";import{a as Ce,n as en,o as tn,l as St,c as sn,q as nn,e as an,u as It,v as Qe,w as Ze,f as on,k as rn,p as ln,x as ht,r as xt,i as cn}from"./D4mPjHHR.js";import{_ as fe}from"./bmAf49LT.js";import{_ as Rt}from"./BnUQ3i5l.js";import{_ as un}from"./DoDo3VF2.js";import{u as dn}from"./B1iYmAt_.js";import{_ as Xe}from"./mYw4b7uY.js";import{_ as Ye}from"./Bx_lfKHl.js";import{_ as Lt}from"./C4UKyPQn.js";import{f as be}from"./D-c8ZSws.js";import{_ as mn}from"./BF5qB58w.js";import{_ as fn}from"./CMhd8IBr.js";import{_ as pn}from"./B-1zt4pp.js";import{_ as gn}from"./uspGXbik.js";import{_ as yn}from"./BuXJR5tn.js";import{_ as hn}from"./Dn_-RkxP.js";import{_ as xn}from"./BsdfEbVC.js";import{e as vn,l as _n,C as kn}from"./CkhOMiiO.js";import{b as bn}from"./BOA-I6S9.js";import{a as wn,u as vt}from"./CU_2YLhT.js";import"./CiCUZGFZ.js";import"./e-GZmCeP.js";import"./DpM8IgHL.js";import"./B4lvHjBe.js";import"./Bl0xzETD.js";import"./CtQMagSz.js";import"./Dpwj_1H5.js";import"./BABCH5kE.js";import"./CzyCEdYP.js";import"./CEPU6VkU.js";import"./CapSEET7.js";import"./DBXXb0w8.js";import"./Bp1WeQ0_.js";import"./Bp31ZRcA.js";import"./DMqAUHFN.js";import"./BTGAvMoT.js";import"./BIlohx1E.js";import"./CHz7LJIX.js";import"./D_ZAGxCQ.js";import"./VBTxfbqU.js";import"./BrxUH8qL.js";import"./Dx41arC8.js";const $n={class:"text-sm font-semibold truncate min-w-0"},Cn={class:"flex items-center gap-3 ml-auto max-sm:hidden"},Tn={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},Sn={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},In={class:"text-gray-700 dark:text-gray-300"},Rn={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},Ln={class:"text-gray-700 dark:text-gray-300"},zn={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},jn={class:"text-gray-700 dark:text-gray-300"},Nn={key:0,class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},Dn={class:"text-gray-700 dark:text-gray-300"},Mn={class:"@container"},An={class:"space-y-3"},Pn={class:"flex items-start gap-2.5 pr-8"},Bn={class:"min-w-0 flex-1"},Un={class:"flex items-center gap-2 flex-wrap"},Fn={class:"text-base font-bold truncate max-w-full"},En={class:"text-xs text-gray-500 mt-0.5 flex items-center gap-x-2 gap-y-0.5 flex-wrap"},Vn=["title"],On={key:1},Hn={key:1,class:"text-gray-400"},Kn={key:0,class:"text-gray-400"},Wn={key:1,class:"flex items-center gap-1 flex-wrap"},qn={key:0,class:"flex items-center gap-2 text-sm"},Gn={class:"text-gray-700 dark:text-gray-300 truncate"},Jn={key:0,class:"text-gray-500 shrink-0"},Qn={key:1,class:"flex items-center gap-1.5 text-sm"},Zn={key:0,class:"font-medium"},Xn=["title"],Yn={key:2,class:"text-muted"},ea=["title"],ta={key:0,class:"rounded-full border border-default px-2 py-0.5 text-xs bg-elevated/60"},sa={key:1},na=["href"],aa={key:1},oa={class:"text-muted"},ra={key:0,class:"tabular-nums text-muted"},ia={key:0,class:"text-dimmed"},la=oe({__name:"TestCaseSummary",props:{testCase:{},scmInfo:{},ciInfo:{},browser:{},environment:{},stepsCount:{},historicalTiming:{},stableLinks:{},projectKey:{},projectName:{}},emits:["refresh"],setup(s){const h=s,x=v(()=>{const u=h.testCase?.testSourceFrames?.[0];return u?.filePath?{filePath:u.filePath,line:u.line}:null}),b=v(()=>{const C=h.testCase;if(!C)return[];const u=[];return C.isNewRegression&&u.push({label:"New regression",color:"error",title:"Passed in the baseline run, failing here"}),C.isNewFlaky&&u.push({label:"New flaky",color:"warning",title:"Newly started passing only on retry"}),C.status==="passed"&&(C.retries??0)>0&&u.push({label:"Passed on retry",color:"warning",title:"This test failed then passed on a retry"}),u}),T=v(()=>(h.testCase?.testAnnotations??[]).filter(C=>!en(C.type))),g=v(()=>h.testCase?.startedAt??null),n=v(()=>!!(h.ciInfo||h.environment)),d=v(()=>h.testCase?.attempts??null);function f(C){return C==="passed"?"success":C==="failed"||C==="timedout"||C==="timedOut"?"error":"neutral"}function N(C){const u=C.startedAt?` at ${new Date(C.startedAt).toLocaleString()}`:"";return`Attempt ${C.retry+1}: ${C.status} (${Math.round(C.duration)} ms)${u}`}return(C,u)=>{const j=Us,U=Le,S=Os,w=me,y=Hs,O=kt,P=qe,L=bt,q=le,Q=wt,F=$t,Z=Es,H=Ks,ce=Fs,$=Ws,M=qs;return t(),_(M,{"storage-key":"test-case"},{folded:c(()=>[r(j,{status:s.testCase?.status??"",size:"sm"},null,8,["status"]),o("span",$n,l(s.testCase?.title),1),o("div",Cn,[o("span",Tn,[u[1]||(u[1]=p(" Dur: ",-1)),r(U,{ms:s.testCase?.duration,class:"font-bold text-gray-700 dark:text-gray-300"},null,8,["ms"])]),o("span",Sn,[u[2]||(u[2]=p(" Retries: ",-1)),o("strong",In,l(s.testCase?.retries??0),1)]),o("span",Rn,[u[3]||(u[3]=p(" Steps: ",-1)),o("strong",Ln,l(s.stepsCount),1)]),o("span",zn,[u[4]||(u[4]=p(" Worker: ",-1)),o("strong",jn,l(s.testCase?.workerIndex??"—"),1)]),s.testCase?.shardIndex!=null?(t(),a("span",Nn,[u[5]||(u[5]=p(" Shard: ",-1)),o("strong",Dn,l(s.testCase.shardIndex),1)])):i("",!0)]),s.browser?(t(),_(S,{key:0,browser:s.browser,size:"sm",class:"shrink-0 max-sm:hidden"},null,8,["browser"])):i("",!0)]),default:c(()=>[o("div",Mn,[r($,{class:"shadow-xs",ui:{footer:"px-4 py-2.5 sm:px-4 bg-muted/30"}},{footer:c(()=>[r(ce,null,{default:c(()=>[s.scmInfo?(t(),_(Z,{key:0,label:"Source",icon:"i-lucide-git-branch"},{default:c(()=>[s.scmInfo.branch?(t(),a("span",Zn,l(s.scmInfo.branch),1)):i("",!0),s.scmInfo.commit?(t(),a("code",{key:1,class:"text-xs font-mono bg-zinc-100 dark:bg-zinc-800 px-1 py-0.5 rounded",title:s.scmInfo.commit},l(s.scmInfo.commit.length>=8?s.scmInfo.commit.substring(0,8):s.scmInfo.commit),9,Xn)):i("",!0),s.scmInfo.author?(t(),a("span",Yn,l(s.scmInfo.author),1)):i("",!0),s.scmInfo.commitMessage?(t(),a("span",{key:3,class:"text-xs text-dimmed truncate max-w-[40ch]",title:s.scmInfo.commitMessage},l(s.scmInfo.commitMessage),9,ea)):i("",!0)]),_:1})):i("",!0),e(n)?(t(),_(Z,{key:1,label:"CI & environment",icon:"i-lucide-cloud",help:"run.ci-env"},{default:c(()=>[s.environment?(t(),a("span",ta,l(s.environment),1)):i("",!0),s.ciInfo?.provider?(t(),a("span",sa,l(s.ciInfo.provider),1)):i("",!0),s.ciInfo?.buildNumber||s.ciInfo?.buildUrl?(t(),a(A,{key:2},[u[12]||(u[12]=o("span",{class:"text-dimmed"},"·",-1)),s.ciInfo?.buildUrl?(t(),a("a",{key:0,href:s.ciInfo.buildUrl,target:"_blank",class:"text-primary hover:underline"},l(s.ciInfo?.buildNumber?`Build #${s.ciInfo.buildNumber}`:"View build"),9,na)):(t(),a("span",aa,"Build #"+l(s.ciInfo.buildNumber),1))],64)):i("",!0),s.ciInfo?.workflow||s.ciInfo?.jobName?(t(),a(A,{key:3},[u[13]||(u[13]=o("span",{class:"text-dimmed"},"·",-1)),o("span",oa,[s.ciInfo?.workflow?(t(),a(A,{key:0},[p(l(s.ciInfo.workflow),1)],64)):i("",!0),s.ciInfo?.workflow&&s.ciInfo?.jobName?(t(),a(A,{key:1},[p(" · ")],64)):i("",!0),s.ciInfo?.jobName?(t(),a(A,{key:2},[p(l(s.ciInfo.jobName),1)],64)):i("",!0)])],64)):i("",!0)]),_:1})):i("",!0),s.browser?(t(),_(Z,{key:2,label:"Browser"},{default:c(()=>[r(S,{browser:{...s.browser,viewport:void 0},size:"sm"},null,8,["browser"]),s.browser.viewport?(t(),a("span",ra,[p(l(s.browser.viewport.width)+"×"+l(s.browser.viewport.height)+" ",1),s.browser.deviceScaleFactor&&s.browser.deviceScaleFactor!==1?(t(),a("span",ia,"@"+l(s.browser.deviceScaleFactor)+"x",1)):i("",!0)])):i("",!0)]),_:1})):i("",!0),r(Z,{label:"Links",icon:"i-lucide-link"},{default:c(()=>[s.testCase?.executionId?(t(),_(H,{key:0,"entity-type":"test_case","entity-id":s.testCase.executionId,links:s.stableLinks??null,onUpdated:u[0]||(u[0]=E=>C.$emit("refresh"))},null,8,["entity-id","links"])):i("",!0)]),_:1})]),_:1})]),default:c(()=>[o("div",An,[o("div",Pn,[r(j,{status:s.testCase?.status??"",class:"mt-0.5"},null,8,["status"]),o("div",Bn,[o("div",Un,[o("h2",Fn,l(s.testCase?.title),1),(t(!0),a(A,null,Y(e(b),E=>(t(),_(w,{key:E.label,color:E.color,variant:"subtle",size:"xs",title:E.title},{default:c(()=>[p(l(E.label),1)]),_:2},1032,["color","title"]))),128)),(t(!0),a(A,null,Y(e(T),(E,k)=>(t(),_(w,{key:`ann-${k}`,color:"neutral",variant:"soft",size:"xs",class:"font-mono",title:E.description||E.type},{default:c(()=>[p(" @"+l(E.type),1)]),_:2},1032,["title"]))),128)),r(y,{tags:s.testCase?.tags,meta:s.testCase?.testMeta},null,8,["tags","meta"])]),o("p",En,[e(x)?.filePath||s.testCase?.location?(t(),_(O,{key:0,"file-path":e(x)?.filePath,line:e(x)?.line,location:e(x)?void 0:s.testCase?.location??void 0,"project-key":s.projectKey,"project-name":s.projectName},null,8,["file-path","line","location","project-key","project-name"])):i("",!0),r(P,null,{default:c(()=>[e(g)?(t(),a("span",{key:0,class:"text-gray-400",title:new Date(e(g)).toLocaleString()}," started "+l(("formatRelativeTime"in C?C.formatRelativeTime:e(Ce))(e(g))),9,Vn)):i("",!0)]),_:1}),s.historicalTiming?(t(),a("span",On,[u[6]||(u[6]=p(" Avg ",-1)),r(U,{ms:s.historicalTiming.avg},null,8,["ms"]),u[7]||(u[7]=p(" · ",-1)),o("span",{class:te(s.historicalTiming.diff>0?"text-red-600":"text-green-600")},l(s.historicalTiming.diff>0?"+":"")+l(s.historicalTiming.pct)+"% ",3)])):i("",!0)])])]),r(Q,null,{default:c(()=>[r(L,{label:"Duration"},{default:c(()=>[s.testCase?.status!=="didnotrun"?(t(),_(U,{key:0,ms:s.testCase?.duration},null,8,["ms"])):(t(),a("span",Hn,"—"))]),_:1}),r(L,{label:"Attempts",size:"sm"},{default:c(()=>[s.testCase?.status==="didnotrun"?(t(),a("span",Kn,"—")):e(d)&&e(d).length>1?(t(),a("div",Wn,[(t(!0),a(A,null,Y(e(d),E=>(t(),_(w,{key:E.retry,color:f(E.status),variant:"soft",size:"sm",class:"font-mono",title:N(E)},{default:c(()=>[p(l(E.retry+1)+"/"+l(e(d).length)+" ",1),r(q,{name:E.status==="passed"?"i-lucide-check":"i-lucide-x",class:"w-3 h-3"},null,8,["name"])]),_:2},1032,["color","title"]))),128))])):(t(),a(A,{key:2},[p(l(e(d)?.length??(s.testCase?.retries??0)+1),1)],64))]),_:1}),r(L,{label:"Steps",value:s.stepsCount},null,8,["value"]),r(L,{label:"Worker",value:s.testCase?.workerIndex??"—"},null,8,["value"])]),_:1}),s.testCase?.slowestStep&&s.testCase?.status!=="didnotrun"?(t(),a("div",qn,[r(q,{name:"i-lucide-zap",class:"size-4 text-amber-500 shrink-0"}),u[10]||(u[10]=o("span",{class:"font-medium text-amber-700 dark:text-amber-300"},"Slowest step:",-1)),o("span",Gn,l(s.testCase.slowestStep),1),s.testCase.slowestStepDuration?(t(),a("span",Jn,[u[8]||(u[8]=p("(",-1)),r(U,{ms:s.testCase.slowestStepDuration},null,8,["ms"]),u[9]||(u[9]=p(")",-1))])):i("",!0)])):i("",!0),(s.testCase?.wastedTimeMs??0)>0?(t(),a("div",Qn,[r(q,{name:"i-lucide-hourglass",class:"size-4 text-amber-500 shrink-0"}),u[11]||(u[11]=o("span",{class:"font-medium text-amber-700 dark:text-amber-300"},"Wasted in fixed waits:",-1)),r(U,{ms:s.testCase?.wastedTimeMs,class:"text-gray-700 dark:text-gray-300"},null,8,["ms"]),r(F,{topic:"case.wasted-time"})])):i("",!0)])]),_:1})])]),_:1})}}}),ca=Object.assign(la,{__name:"TestCaseSummary"}),ua={class:"space-y-4 text-sm"},da={class:"flex items-center gap-2"},ma={key:0,class:"text-gray-600 dark:text-gray-400"},fa={key:1,class:"text-gray-600 dark:text-gray-400"},pa={key:2,class:"text-gray-600 dark:text-gray-400"},ga={key:1},ya={class:"text-gray-600 dark:text-gray-400 mb-2"},ha={class:"text-gray-800 dark:text-gray-200"},xa={class:"space-y-1"},va=oe({__name:"DidNotRunCard",props:{status:{},reason:{},blockedByCase:{},blockedTests:{}},setup(s){const h=s,x=v(()=>h.status==="didnotrun"),b=v(()=>h.blockedTests??[]),T=v(()=>b.value.length>0),g=v(()=>x.value||T.value),n=v(()=>tn(h.reason)),d=v(()=>{switch(h.reason){case"global-timeout":return"The run hit its global timeout before this test could start, so Playwright stopped launching new tests.";case"max-failures":return"The run reached its configured maximum number of failures and stopped before this test could start.";case"interrupted":return"The run was interrupted (a worker crashed or it was cancelled) before this test could start.";default:return null}});return(f,N)=>{const C=le,u=me,j=Ie,U=fe;return e(g)?(t(),_(U,{key:0,icon:"i-lucide-circle-slash","icon-class":"text-amber-500",title:e(x)?"Did not run":"Blocked tests"},{default:c(()=>[o("div",ua,[e(x)?(t(),a(A,{key:0},[o("div",da,[r(u,{color:"warning",variant:"subtle",size:"sm",class:"inline-flex items-center gap-1"},{default:c(()=>[r(C,{name:"i-lucide-circle-slash",class:"size-3 shrink-0"}),p(" "+l(e(n)),1)]),_:1})]),s.blockedByCase?(t(),a("p",ma,[N[0]||(N[0]=p(" Skipped after ",-1)),r(j,{to:`/test-run-cases/${s.blockedByCase.id}`,class:"text-primary hover:underline font-medium"},{default:c(()=>[p(l(s.blockedByCase.title),1)]),_:1},8,["to"]),N[1]||(N[1]=p(" failed earlier in the same serial group. ",-1))])):e(d)?(t(),a("p",fa,l(e(d)),1)):s.reason==="previous-failure"?(t(),a("p",pa," Skipped because an earlier step in its serial group failed. ")):i("",!0)],64)):i("",!0),e(T)?(t(),a("div",ga,[o("p",ya,[N[2]||(N[2]=p(" This failure stopped ",-1)),o("strong",ha,l(e(b).length),1),p(" later test"+l(e(b).length===1?"":"s")+" in the same serial group from running: ",1)]),o("ul",xa,[(t(!0),a(A,null,Y(e(b),S=>(t(),a("li",{key:S.id,class:"flex items-center gap-2 min-w-0"},[r(C,{name:"i-lucide-circle-slash",class:"size-3.5 shrink-0 text-amber-500"}),r(j,{to:`/test-run-cases/${S.id}`,class:"text-primary hover:underline truncate"},{default:c(()=>[p(l(S.title),1)]),_:2},1032,["to"])]))),128))])])):i("",!0)])]),_:1},8,["title"])):i("",!0)}}}),_a=Object.assign(va,{__name:"DidNotRunCard"}),ka={class:"space-y-3"},ba={key:0,class:"flex flex-wrap gap-1.5"},wa={key:0,class:"text-sm text-gray-600 dark:text-gray-400"},$a={class:"text-gray-800 dark:text-gray-200"},Ca={key:1},Ta={class:"flex items-center gap-1 flex-wrap"},Sa=oe({__name:"TestCaseVerdictCard",props:{testCase:{},history:{},currentId:{}},setup(s){const h=s,x=d=>d==="failed"||d==="timedOut"||d==="timedout",b=v(()=>{const d=h.testCase;if(!d)return[];const f=[];return d.isNewRegression&&f.push({label:"New regression",color:"error",icon:"i-lucide-git-pull-request-arrow",title:"Passed in the baseline run, failing here — likely fallout from the latest change"}),d.isNewFlaky&&f.push({label:"New flaky",color:"warning",icon:"i-lucide-shuffle",title:"Newly started passing only on retry — intermittent failure"}),(d.status==="timedOut"||d.status==="timedout")&&f.push({label:"Timed out",color:"warning",icon:"i-lucide-timer-off",title:"The test exceeded its timeout"}),(d.retries??0)>0&&f.push({label:d.status==="passed"?`Passed on retry ${d.retries}`:`Retried ${d.retries}×`,color:d.status==="passed"?"warning":"neutral",icon:"i-lucide-refresh-cw",title:`This execution retried ${d.retries} time${d.retries===1?"":"s"}`}),f}),T=v(()=>h.history.slice(0,24).slice().reverse()),g=v(()=>{const d=h.history;if(!d.length)return null;const f=Math.max(0,d.findIndex(u=>u.id===h.currentId));let N=0;for(let u=f;u<d.length&&x(d[u].status);u++)N++;let C=null;for(let u=f+1;u<d.length;u++)if(d[u].status==="passed"){C=d[u];break}return{streak:N,lastPass:C,total:d.length,anchorFailing:x(d[f]?.status)}}),n=d=>({"bg-red-500 hover:bg-red-600":x(d),"bg-green-500 hover:bg-green-600":d==="passed","bg-yellow-500 hover:bg-yellow-600":d==="skipped","bg-gray-400 hover:bg-gray-500":!x(d)&&!["passed","skipped"].includes(d)});return(d,f)=>{const N=le,C=me,u=Ie,j=Rt,U=qe,S=fe;return t(),_(S,{icon:"i-lucide-clipboard-check","icon-class":"text-amber-500",title:"Regression status",help:"case.verdict"},{default:c(()=>[o("div",ka,[e(b).length?(t(),a("div",ba,[(t(!0),a(A,null,Y(e(b),w=>(t(),_(C,{key:w.label,color:w.color,variant:"subtle",size:"sm",title:w.title,class:"inline-flex items-center gap-1"},{default:c(()=>[r(N,{name:w.icon,class:"size-3 shrink-0"},null,8,["name"]),p(" "+l(w.label),1)]),_:2},1032,["color","title"]))),128))])):i("",!0),r(U,null,{default:c(()=>[e(g)?(t(),a("p",wa,[e(g).streak>=1?(t(),a(A,{key:0},[f[1]||(f[1]=p(" Failing for ",-1)),o("strong",$a,l(e(g).streak),1),p(" consecutive run"+l(e(g).streak===1?"":"s")+". ",1),e(g).lastPass?(t(),a(A,{key:0},[f[0]||(f[0]=p(" Last passed in ",-1)),r(u,{to:`/test-run-cases/${e(g).lastPass.id}`,class:"text-primary hover:underline"},{default:c(()=>[p(" execution in run #"+l(e(g).lastPass.runId),1)]),_:1},8,["to"]),p(" ("+l(("formatRelativeTime"in d?d.formatRelativeTime:e(Ce))(e(g).lastPass.startTime))+"). ",1)],64)):e(g).total>1?(t(),a(A,{key:1},[p(" No passing run in the last "+l(e(g).total)+" recorded. ",1)],64)):(t(),a(A,{key:2},[p(" First recorded run of this test. ")],64))],64)):s.testCase?.status==="passed"?(t(),a(A,{key:1},[p(" This execution passed. ")],64)):i("",!0)])):i("",!0),e(T).length>1?(t(),a("div",Ca,[f[2]||(f[2]=o("p",{class:"text-xs text-gray-400 mb-1"},"Recent executions of this test (oldest → newest)",-1)),o("div",Ta,[(t(!0),a(A,null,Y(e(T),w=>(t(),_(j,{key:w.id,text:`Execution in run #${w.runId}: ${w.status}`},{default:c(()=>[r(u,{to:`/test-run-cases/${w.id}`,"aria-label":`Execution in run #${w.runId}: ${("formatStatusLabel"in d?d.formatStatusLabel:e(St))(w.status)}`,"aria-current":w.id===s.currentId?"true":void 0,class:te(["size-3.5 rounded-sm inline-block transition-colors",[n(w.status),w.id===s.currentId?"ring-2 ring-offset-1 ring-primary":""]])},null,8,["to","aria-label","aria-current","class"])]),_:2},1032,["text"]))),128))])])):i("",!0)]),_:1})])]),_:1})}}}),Ia=Object.assign(Sa,{__name:"TestCaseVerdictCard"}),Ra={class:"space-y-3"},La={class:"space-y-1.5"},za={class:"flex items-center gap-2 flex-wrap"},ja={class:"text-xs text-gray-500"},Na=["title"],Da={class:"text-xs text-gray-500 dark:text-gray-400"},Ma={key:0,class:"rounded-lg border border-default bg-elevated/40 p-2.5 space-y-1"},Aa={class:"flex items-center gap-1.5 flex-wrap"},Pa={class:"text-xs text-gray-600 dark:text-gray-400 line-clamp-3"},Ba=["title"],Ua=oe({__name:"FailureClusterCard",props:{cluster:{}},setup(s){const h=s,x=v(()=>Math.max(0,h.cluster.sameRunCaseCount-1)),b=v(()=>{const g=h.cluster.diagnosis;return g&&g.status==="completed"&&g.summary?g:null}),T=g=>g==="high"?"success":g==="medium"?"warning":"neutral";return(g,n)=>{const d=me,f=Ie,N=le,C=Re,u=fe;return t(),_(u,{icon:"i-lucide-layers","icon-class":"text-primary",title:"Failure cluster",help:"cluster.concept"},{actions:c(()=>[s.cluster.isNew?(t(),_(d,{key:0,color:"warning",variant:"subtle",size:"sm"},{default:c(()=>[...n[0]||(n[0]=[p("New",-1)])]),_:1})):i("",!0),s.cluster.status&&s.cluster.status!=="open"?(t(),_(d,{key:1,color:"neutral",variant:"subtle",size:"sm",class:"capitalize"},{default:c(()=>[p(" Triage: "+l(("formatTriageStatus"in g?g.formatTriageStatus:e(nn))(s.cluster.status)),1)]),_:1})):i("",!0)]),default:c(()=>[o("div",Ra,[o("div",La,[o("div",za,[s.cluster.errorType?(t(),_(d,{key:0,color:e(sn)(s.cluster.errorType),variant:"soft",size:"sm"},{default:c(()=>[p(l(s.cluster.errorType),1)]),_:1},8,["color"])):i("",!0),o("span",ja,l(s.cluster.occurrences??0)+" occurrence"+l((s.cluster.occurrences??0)===1?"":"s"),1)]),o("p",{class:"font-mono text-xs text-gray-600 dark:text-gray-400 break-all line-clamp-2",title:s.cluster.signature},l(s.cluster.signature),9,Na)]),o("p",Da,[e(x)>0?(t(),a(A,{key:0},[p(" Matches "+l(e(x))+" other failing "+l(e(x)===1?"test":"tests")+" in this run. ",1)],64)):i("",!0),s.cluster.isNew?(t(),a(A,{key:2},[p("Opened a new cluster in this run.")],64)):(t(),a(A,{key:1},[n[1]||(n[1]=p(" Known failure — first seen in ",-1)),r(f,{to:`/test-runs/${s.cluster.firstSeenRunId}`,class:"text-primary hover:underline"},{default:c(()=>[p(" run #"+l(s.cluster.firstSeenRunId),1)]),_:1},8,["to"]),s.cluster.firstSeenAt?(t(),a(A,{key:0},[p(" ("+l(("formatRelativeTime"in g?g.formatRelativeTime:e(Ce))(s.cluster.firstSeenAt))+")",1)],64)):i("",!0),n[2]||(n[2]=p(". ",-1))],64))]),e(b)?(t(),a("div",Ma,[o("div",Aa,[r(N,{name:"i-lucide-sparkles",class:"size-3.5 text-primary shrink-0"}),n[3]||(n[3]=o("span",{class:"text-xs font-medium"},"AI verdict",-1)),e(b).category?(t(),_(d,{key:0,color:"neutral",variant:"soft",size:"xs"},{default:c(()=>[p(l(e(b).category),1)]),_:1})):i("",!0),e(b).confidence?(t(),_(d,{key:1,color:T(e(b).confidence),variant:"soft",size:"xs"},{default:c(()=>[p(l(e(b).confidence)+" confidence ",1)]),_:1},8,["color"])):i("",!0)]),o("p",Pa,l(e(b).summary),1)])):i("",!0),s.cluster.triageNote?(t(),a("p",{key:1,class:"text-xs italic text-gray-500 dark:text-gray-400",title:s.cluster.triageNote}," “"+l(s.cluster.triageNote)+"” ",9,Ba)):i("",!0),r(C,{to:`/failure-clusters/${s.cluster.id}`,size:"sm",color:"primary",variant:"solid",block:"","trailing-icon":"i-lucide-arrow-right"},{default:c(()=>[...n[4]||(n[4]=[p(" Open cluster investigation ",-1)])]),_:1},8,["to"])])]),_:1})}}}),Fa=Object.assign(Ua,{__name:"FailureClusterCard"}),Ea={class:"space-y-3"},Va={key:0,class:"text-xs text-gray-400 inline-flex items-center gap-1"},Oa={key:0,class:"text-primary"},Ha={key:0,class:"flex items-center justify-between gap-2 rounded-lg border border-default bg-elevated/40 p-2.5"},Ka={class:"inline-flex items-center gap-2 text-sm text-gray-500"},Wa={key:1,class:"flex items-center gap-2"},qa={key:3,class:"rounded-lg border border-dashed border-default p-4 text-center text-gray-400"},Ga={class:"text-sm inline-flex items-center gap-1 justify-center"},Ja={class:"pt-1 text-center"},Qa=oe({__name:"TestCaseAiCard",props:{testRunsCaseId:{}},setup(s){const h=s,{aiStatus:x}=dn(),b=us(),T=B(null),g=B(!1),n=B(null),d=B([]),f=B(0),N=B(0),C=B(null),u=B(!1),j=B(!1),U=B(null),S=B(!1),w=B("");async function y(){u.value=!0;try{const $=await $fetch(`/api/test-run-cases/${h.testRunsCaseId}/diagnosis-context`,{query:{format:"json"}});n.value=$.text,d.value=$.sections,f.value=$.tokenEstimate,N.value=$.imageTokenEstimate??0,C.value=$.coverage}catch{n.value=null,d.value=[],f.value=0,C.value=null}finally{u.value=!1}}async function O(){try{const $=await $fetch(`/api/test-run-cases/${h.testRunsCaseId}/diagnosis`);T.value=$.diagnosis}catch{}}_t(()=>{O(),y()});const P=v(()=>{const $=T.value?.details;if(!$)return[];const M=[];if(Array.isArray($.evidence)&&M.push(...$.evidence),Array.isArray($.hypotheses))for(const E of $.hypotheses)Array.isArray(E?.evidence)&&M.push(...E.evidence);return Xs(M)});function L($){U.value=$,j.value=!0}function q($){w.value=w.value?`${w.value}
|
|
2
|
+
|
|
3
|
+
${$}`:$,S.value=!0}async function Q($=!1){g.value=!0;try{const M=$?`/api/test-run-cases/${h.testRunsCaseId}/diagnose?force=true`:`/api/test-run-cases/${h.testRunsCaseId}/diagnose`,E=w.value.trim()?{additionalContext:w.value.trim()}:void 0;T.value=await $fetch(M,{method:"POST",body:E})}catch(M){const E=M?.statusCode;E===409?(b.add({title:"Diagnosis already running",color:"warning"}),O()):E===503?b.add({title:"AI diagnosis is not configured",color:"warning"}):b.add({title:"Diagnosis failed",description:an(M),color:"error"})}finally{g.value=!1}}function F($){return $.status==="running"&&Date.now()-new Date($.updatedAt).getTime()>300*1e3}const Z=v(()=>T.value&&(T.value.status==="completed"||T.value.status==="failed")),H=v(()=>!T.value||T.value.status==="failed"||T.value.status==="running"&&F(T.value)),ce=v(()=>T.value?.status==="running"&&!F(T.value)&&!g.value);return($,M)=>{const E=Zs,k=le,I=Gs,W=un,J=Re,se=Js,ne=$t,K=Qs,X=Ie,ee=fe;return t(),_(ee,{icon:"i-lucide-sparkles","icon-class":"text-primary",title:"AI diagnosis",help:"case.ai"},{actions:c(()=>[r(E,{"context-endpoint":`/api/test-run-cases/${s.testRunsCaseId}/diagnosis-context`},null,8,["context-endpoint"])]),default:c(()=>[o("div",Ea,[e(x)?.configured?(t(),a("p",Va,[r(k,{name:"i-lucide-triangle-alert",class:"size-3 shrink-0"}),M[6]||(M[6]=p(" AI-generated — verify before applying. ",-1))])):i("",!0),e(x)?.configured?(t(),_(I,{key:1,sections:e(d),"not-applicable":e(C)?.notApplicable,"token-estimate":e(f),loading:e(u),onViewSection:L,onOpen:M[0]||(M[0]=ae=>j.value=!0)},null,8,["sections","not-applicable","token-estimate","loading"])):i("",!0),e(x)?.configured?(t(),a(A,{key:2},[o("div",null,[o("button",{class:"flex items-center gap-1.5 text-xs font-medium text-gray-500 hover:text-gray-700 dark:hover:text-gray-300",onClick:M[1]||(M[1]=ae=>S.value=!e(S))},[r(k,{name:e(S)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3.5"},null,8,["name"]),M[7]||(M[7]=p(" Additional context ",-1)),e(w).trim()?(t(),a("span",Oa,"(1)")):i("",!0)]),e(S)?(t(),_(W,{key:0,modelValue:e(w),"onUpdate:modelValue":M[2]||(M[2]=ae=>ge(w)?w.value=ae:null),placeholder:"e.g. We deployed a new auth middleware yesterday…",rows:3,class:"w-full text-sm mt-1"},null,8,["modelValue"])):i("",!0)]),e(ce)?(t(),a("div",Ha,[o("span",Ka,[r(k,{name:"i-lucide-loader-circle",class:"size-4 animate-spin text-primary shrink-0"}),M[8]||(M[8]=p(" Diagnosis in progress… ",-1))]),r(J,{size:"xs",color:"neutral",variant:"outline",icon:"i-lucide-refresh-cw",loading:e(g),onClick:O},{default:c(()=>[...M[9]||(M[9]=[p(" Refresh ",-1)])]),_:1},8,["loading"])])):(t(),a("div",Wa,[e(H)?(t(),_(J,{key:0,icon:"i-lucide-sparkles",size:"sm",color:"primary",variant:"solid",loading:e(g),onClick:M[3]||(M[3]=ae=>Q(e(T)?.status==="running"))},{default:c(()=>[p(l(e(T)?.status==="running"?"Restart diagnosis":"Diagnose with AI"),1)]),_:1},8,["loading"])):e(T)?.status==="completed"?(t(),_(J,{key:1,icon:"i-lucide-refresh-cw",size:"xs",color:"primary",variant:"soft",loading:e(g),onClick:M[4]||(M[4]=ae=>Q(!0))},{default:c(()=>[...M[10]||(M[10]=[p(" Re-diagnose ",-1)])]),_:1},8,["loading"])):i("",!0)])),e(Z)?(t(),_(se,{key:2,diagnosis:e(T),onViewSection:L,onPrefillContext:q},null,8,["diagnosis"])):i("",!0)],64)):(t(),a("div",qa,[o("p",Ga,[M[11]||(M[11]=p(" AI diagnosis is not configured ",-1)),r(ne,{topic:"cluster.ai-setup"})]),M[13]||(M[13]=o("p",{class:"text-xs mt-2 max-w-xs mx-auto"},[p(" Use "),o("strong",null,"Export → AI context"),p(" in the header to grab the full evidence bundle for your own AI tool, or configure a provider. ")],-1)),r(J,{to:"/settings/ai",size:"xs",color:"neutral",variant:"outline",class:"mt-3"},{default:c(()=>[...M[12]||(M[12]=[p(" Configure in Settings ",-1)])]),_:1})])),r(K,{open:e(j),sections:e(d),"token-estimate":e(f),"image-token-estimate":e(N),loading:e(u),"focus-section":e(U),"cited-sections":e(P),"not-applicable-sections":e(C)?.notApplicable,"onUpdate:open":M[5]||(M[5]=ae=>{j.value=ae,ae||(U.value=null)}),onRefresh:y},null,8,["open","sections","token-estimate","image-token-estimate","loading","focus-section","cited-sections","not-applicable-sections"]),o("div",Ja,[r(X,{to:"/mcp",class:"inline-flex items-center gap-1 text-xs text-gray-400 hover:text-primary transition-colors"},{default:c(()=>[r(k,{name:"i-lucide-bot",class:"size-3"}),M[14]||(M[14]=p(" Query this failure from your AI agent via MCP ",-1))]),_:1})])])]),_:1})}}}),Za=Object.assign(Qa,{__name:"TestCaseAiCard"});function zt(s,h,x){const b=B(null),T=B(!1),g=B(!1);async function n(){const d=s();if(!(!d||!we(h)||T.value)){g.value=!0,T.value=!0;try{b.value=await $fetch(d)}catch{b.value=null}finally{T.value=!1}}}return _t(()=>{ke(()=>we(h),d=>{d&&(x||g.value)&&!b.value&&n()},{immediate:!0})}),{data:b,pending:T,load:n}}function Xa(s,h,x,b={}){return zt(()=>{const T=we(s),g=we(h);return T&&g?`/api/test-run-cases/${g}/trace-stacks`:null},x,b.auto??!0)}function Ya(s,h,x,b={}){return zt(()=>{const T=we(s),g=we(h);return T&&g?`/api/test-run-cases/${g}/trace-network`:null},x,b.auto??!1)}const eo={class:"max-h-[32rem] overflow-y-auto"},to={key:0,class:"mb-2 flex items-center gap-1.5 text-xs text-gray-400 dark:text-gray-500"},so={key:0,class:"mt-3 flex items-center gap-1.5 text-xs text-gray-400 dark:text-gray-500"},no=oe({__name:"TestSourceCard",props:{frames:{},testSource:{},runId:{},testRunsCaseId:{},hasTrace:{type:Boolean},projectKey:{},projectName:{},storageKey:{}},setup(s,{expose:h}){const x=s,{data:b,pending:T}=Xa(()=>x.runId,()=>x.testRunsCaseId,()=>x.hasTrace,{auto:!0}),g=v(()=>b.value?.status==="ok"?b.value.frames??[]:[]),n=v(()=>g.value.length>0),d=v(()=>x.frames?.length??0),f=v(()=>d.value>0||!!x.testSource),N=B(null),C=v({get:()=>N.value??(n.value?"trace":"captured"),set:S=>{N.value=S}}),u=v(()=>[{label:`Full stack (${g.value.length})`,value:"trace"},{label:`Captured (${d.value||1})`,value:"captured"}]),j=v(()=>C.value==="trace"&&n.value?g.value.length:d.value||null),U=B(null);return h({reveal:()=>U.value?.reveal()}),(S,w)=>{const y=Xe,O=le,P=xs,L=vs,q=Tt,Q=Ye,F=Ct,Z=Je;return t(),_(Z,{ref_key:"card",ref:U,"storage-key":s.storageKey,icon:"i-lucide-code",count:e(j),title:"Test source",help:"case.test-source"},ds({folded:c(()=>[e(C)==="trace"&&e(n)?(t(),a(A,{key:0},[p(" Full call stack from the trace"+l(e(b)?.hasSources===!1?" (recorded without sources)":""),1)],64)):e(d)>1?(t(),a(A,{key:1},[p(" The failing line and "+l(e(d)-1)+" caller"+l(e(d)-1===1?"":"s"),1)],64)):(t(),a(A,{key:2},[p("Source around the failing assertion")],64))]),default:c(()=>[o("div",eo,[e(C)==="trace"&&e(n)?(t(),a(A,{key:0},[e(b)?.hasSources===!1?(t(),a("p",to,[r(O,{name:"i-lucide-info",class:"size-3.5 shrink-0"}),w[1]||(w[1]=p(" Trace recorded without sources — frame list only. ",-1))])):i("",!0),r(P,{frames:e(g),"project-key":s.projectKey,"project-name":s.projectName},null,8,["frames","project-key","project-name"])],64)):(t(),a(A,{key:1},[s.frames?.length?(t(),_(L,{key:0,frames:s.frames,"project-key":s.projectKey,"project-name":s.projectName},null,8,["frames","project-key","project-name"])):s.testSource?(t(),_(q,{key:1,text:"```typescript\n"+s.testSource+"\n```"},null,8,["text"])):s.hasTrace&&e(T)?(t(),_(Q,{key:2,text:"Loading call stack from trace…"})):i("",!0)],64))]),s.hasTrace?i("",!0):(t(),a("p",so,[r(O,{name:"i-lucide-info",class:"size-3.5 shrink-0"}),o("span",null,[w[3]||(w[3]=p(" Want to go deeper? Record traces (",-1)),w[4]||(w[4]=o("code",null,"trace: 'retain-on-failure'",-1)),w[5]||(w[5]=p(") to see the full call stack with source here. ",-1)),r(F,{to:"evidence#trace-powered-deep-views","no-icon":"",class:"underline"},{default:c(()=>[...w[2]||(w[2]=[p("Learn more",-1)])]),_:1})])]))]),_:2},[e(n)&&e(f)?{name:"actions",fn:c(()=>[r(y,{modelValue:e(C),"onUpdate:modelValue":w[0]||(w[0]=H=>ge(C)?C.value=H:null),items:e(u),size:"xs",variant:"link",ui:{list:"gap-2",trigger:"px-1.5"}},null,8,["modelValue","items"])]),key:"0"}:void 0]),1032,["storage-key","count"])}}}),ao=Object.assign(no,{__name:"TestSourceCard"}),oo={class:"space-y-3"},ro={class:"divide-y divide-default"},io={class:"flex items-center gap-2 min-w-0"},lo={class:"text-sm truncate"},co={key:0,class:"text-xs text-gray-400 shrink-0"},uo=oe({__name:"TestCaseEvidenceCard",props:{attachments:{},traces:{},storageKey:{}},setup(s,{expose:h}){const x=s,b=Ge(),T=v(()=>Array.isArray(x.attachments)?x.attachments:[]),g=v(()=>Array.isArray(x.traces)?x.traces:[]),n=v(()=>T.value.filter(S=>Se(S.path,S.contentType)).length),d=v(()=>T.value.filter(S=>Ae(S.path,S.contentType)).length),f=v(()=>T.value.filter(S=>!Se(S.path,S.contentType)&&!Ae(S.path,S.contentType))),N=v(()=>n.value+d.value+g.value.length+f.value.length),C=v(()=>{const S=[];return n.value&&S.push(`${n.value} screenshot${n.value===1?"":"s"}`),d.value&&S.push(`${d.value} video${d.value===1?"":"s"}`),g.value.length&&S.push(`${g.value.length} trace${g.value.length===1?"":"s"}`),f.value.length&&S.push(`${f.value.length} file${f.value.length===1?"":"s"}`),S.join(" · ")||"No evidence captured"});function u(S,w){return It(S,w,b.app?.baseURL)}function j(S){return S.split("/").pop()||S}const U=B(null);return h({reveal:()=>U.value?.reveal?.()}),(S,w)=>{const y=_s,O=ks,P=bs,L=le,q=Re,Q=ws,F=Lt,Z=Je;return t(),_(Z,{ref_key:"card",ref:U,"storage-key":s.storageKey,icon:"i-lucide-camera",title:"Failure evidence",count:e(N),help:"case.evidence"},{folded:c(()=>[p(l(e(C)),1)]),default:c(()=>[o("div",oo,[r(y,{attachments:e(T)},null,8,["attachments"]),r(O,{attachments:e(T)},null,8,["attachments"]),r(P,{traces:e(g)},null,8,["traces"]),e(f).length?(t(),_(Q,{key:0,icon:"i-lucide-paperclip",label:"Attachments",count:e(f).length,collapsible:!1},{default:c(()=>[o("div",ro,[(t(!0),a(A,null,Y(e(f),H=>(t(),a("div",{key:H.id,class:"flex items-center justify-between gap-2 px-3 py-2"},[o("div",io,[r(L,{name:"i-lucide-file",class:"size-4 text-gray-400 shrink-0"}),o("span",lo,l(j(H.path)),1),H.size?(t(),a("span",co,l(("formatBytes"in S?S.formatBytes:e(be))(H.size)),1)):i("",!0)]),r(q,{to:u(H.path,H.contentType),target:"_blank",icon:"i-lucide-external-link",size:"xs",color:"neutral",variant:"soft",label:"Open"},null,8,["to"])]))),128))])]),_:1},8,["count"])):i("",!0),e(N)===0?(t(),_(F,{key:1,icon:"i-lucide-camera-off",title:"No screenshots, video or traces captured",text:"Evidence comes from Playwright's own capture settings — set trace, screenshot and video in your config (trace: 'retain-on-failure' is the usual starting point).",doc:"reporter"})):i("",!0)])]),_:1},8,["storage-key","count"])}}}),mo=Object.assign(uo,{__name:"TestCaseEvidenceCard"}),fo={class:"space-y-1 max-h-80 overflow-y-auto"},po={class:"min-w-0 flex-1"},go={class:"flex items-center gap-2"},yo={class:"truncate"},ho={key:0,class:"text-xs text-gray-400 mt-0.5 ml-0"},xo=oe({__name:"TestCaseConsoleCard",props:{entries:{}},setup(s){function h(b){switch(b){case"error":return"error";case"warning":return"warning";case"assert":return"error";default:return"neutral"}}function x(b){switch(b){case"error":return"i-lucide-octagon-x";case"warning":return"i-lucide-alert-triangle";case"assert":return"i-lucide-octagon-x";default:return"i-lucide-message-square"}}return(b,T)=>{const g=le,n=me,d=fe;return s.entries.length>0?(t(),_(d,{key:0,icon:"i-lucide-terminal",title:"Console output",count:s.entries.length,help:"case.console"},{default:c(()=>[o("div",fo,[(t(!0),a(A,null,Y(s.entries,(f,N)=>(t(),a("div",{key:N,class:"flex items-start gap-2 py-1.5 px-2 rounded hover:bg-gray-50 dark:hover:bg-gray-800 text-sm"},[r(g,{name:x(f.type),class:te([f.type==="error"||f.type==="assert"?"text-red-500":f.type==="warning"?"text-amber-500":"text-gray-400","size-4 mt-0.5 shrink-0"])},null,8,["name","class"]),o("div",po,[o("div",go,[r(n,{color:h(f.type),variant:"soft",size:"xs",class:"shrink-0"},{default:c(()=>[p(l(f.type),1)]),_:2},1032,["color"]),o("span",yo,l(f.text),1)]),f.location?(t(),a("div",ho,l(f.location),1)):i("",!0)])]))),128))])]),_:1},8,["count"])):i("",!0)}}}),vo=Object.assign(xo,{__name:"TestCaseConsoleCard"}),_o={key:0,class:"space-y-4 text-sm"},ko={class:"space-y-1.5"},bo={class:"flex items-center gap-2"},wo={key:0,class:"text-xs text-gray-500"},$o={class:"block text-xs break-all text-gray-700 dark:text-gray-300"},Co={key:0,class:"text-xs text-red-600 dark:text-red-400 font-mono"},To={class:"flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-gray-400"},So={key:0,class:"font-mono"},Io={key:1,class:"font-mono"},Ro={key:2},Lo={key:3,title:"Bytes on the wire"},zo={key:0},jo={class:"flex h-2 rounded overflow-hidden bg-gray-100 dark:bg-gray-800"},No=["title"],Do={class:"flex flex-wrap gap-x-3 gap-y-1 mt-1.5 text-xs text-gray-500"},Mo={class:"text-xs font-medium text-gray-500 dark:text-gray-400 mb-1.5 capitalize"},Ao={key:0,class:"rounded border border-default divide-y divide-default max-h-48 overflow-y-auto"},Po={class:"text-gray-500 dark:text-gray-400 shrink-0"},Bo={class:"break-all text-gray-700 dark:text-gray-300"},Uo={key:1,class:"text-xs text-gray-400"},Fo={key:1},Eo={key:0,class:"rounded border border-default p-2"},Vo=["src","alt"],Oo={key:1,class:"max-h-96 overflow-y-auto"},Ho={key:0,class:"mt-1 text-xs text-gray-400"},Ko={key:2,class:"text-xs text-gray-400"},Wo={key:2,class:"text-xs text-gray-400"},qo=oe({__name:"TraceNetworkDrawer",props:{open:{type:Boolean},entry:{},runId:{},testRunsCaseId:{}},emits:["update:open"],setup(s,{emit:h}){const x=s,b=h,T=[{key:"dns",label:"DNS",color:"bg-sky-400"},{key:"connect",label:"Connect",color:"bg-violet-400"},{key:"ssl",label:"TLS",color:"bg-rose-400"},{key:"send",label:"Send",color:"bg-amber-400"},{key:"wait",label:"Wait",color:"bg-blue-400"},{key:"receive",label:"Receive",color:"bg-emerald-400"}],g=v(()=>{const u=x.entry?.timings;return u?T.map(j=>({...j,value:u[j.key]??-1})).filter(j=>typeof j.value=="number"&&j.value>=0):[]}),n=v(()=>g.value.reduce((u,j)=>u+j.value,0)),d=v(()=>{const u=x.entry?.requestPostData??"";return u.startsWith("{")||u.startsWith("[")}),f=B(null),N=B(!1),C=new Map;return ke(()=>[x.open,x.entry?.bodySha1],async([u,j])=>{if(f.value=null,!u||!j||!x.runId)return;const U=C.get(j);if(U){f.value=U;return}N.value=!0;try{const S=await $fetch(`/api/test-run-cases/${x.testRunsCaseId}/trace-network-body`,{query:{sha1:j}});C.set(j,S),f.value=S}catch{f.value={status:"not-found"}}finally{N.value=!1}},{immediate:!0}),(u,j)=>{const U=me,S=Le,w=mn,y=Ye,O=fn;return t(),_(O,{open:s.open,title:"Request detail",ui:{content:"max-w-xl"},"onUpdate:open":j[0]||(j[0]=P=>b("update:open",P))},{body:c(()=>[s.entry?(t(),a("div",_o,[o("div",ko,[o("div",bo,[r(U,{color:("httpMethodColor"in u?u.httpMethodColor:e(Qe))(s.entry.method),variant:"soft",size:"sm",class:"font-mono shrink-0"},{default:c(()=>[p(l(s.entry.method),1)]),_:1},8,["color"]),r(U,{color:("httpStatusColor"in u?u.httpStatusColor:e(Ze))(s.entry.status),variant:"soft",size:"sm",class:"font-mono shrink-0 tabular-nums"},{default:c(()=>[p(l(s.entry.status>0?s.entry.status:"—"),1)]),_:1},8,["color"]),s.entry.statusText?(t(),a("span",wo,l(s.entry.statusText),1)):i("",!0)]),o("code",$o,l(s.entry.url),1),s.entry.failureText?(t(),a("p",Co,l(s.entry.failureText),1)):i("",!0),o("div",To,[s.entry.resourceType?(t(),a("span",So,l(s.entry.resourceType),1)):i("",!0),s.entry.mimeType?(t(),a("span",Io,l(s.entry.mimeType),1)):i("",!0),s.entry.responseBodySize!=null?(t(),a("span",Ro,l(("formatBytes"in u?u.formatBytes:e(be))(s.entry.responseBodySize)),1)):i("",!0),s.entry.transferSize!=null?(t(),a("span",Lo,l(("formatBytes"in u?u.formatBytes:e(be))(s.entry.transferSize))+" transferred",1)):i("",!0),r(S,{ms:s.entry.duration},null,8,["ms"]),s.entry.duringFailure?(t(),_(U,{key:4,color:"error",variant:"subtle",size:"xs"},{default:c(()=>[...j[1]||(j[1]=[p("During failing action",-1)])]),_:1})):i("",!0)])]),e(g).length>0&&e(n)>0?(t(),a("div",zo,[j[2]||(j[2]=o("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 mb-1.5"},"Timing",-1)),o("div",jo,[(t(!0),a(A,null,Y(e(g),P=>(t(),a("div",{key:P.key,class:te(P.color),style:$e({width:`${Math.max(.5,P.value/e(n)*100)}%`}),title:`${P.label}: ${("formatDuration"in u?u.formatDuration:e(on))(P.value)}`},null,14,No))),128))]),o("div",Do,[(t(!0),a(A,null,Y(e(g),P=>(t(),a("span",{key:P.key,class:"inline-flex items-center gap-1"},[o("span",{class:te(["size-2 rounded-full",P.color])},null,2),p(" "+l(P.label)+" ",1),r(S,{ms:P.value,"no-title":""},null,8,["ms"])]))),128))])])):i("",!0),(t(),a(A,null,Y(["request","response"],P=>o("div",{key:P},[o("p",Mo,l(P)+" headers",1),(P==="request"?s.entry.requestHeaders:s.entry.responseHeaders).length>0?(t(),a("div",Ao,[(t(!0),a(A,null,Y(P==="request"?s.entry.requestHeaders:s.entry.responseHeaders,L=>(t(),a("div",{key:`${P}-${L.name}`,class:"px-2 py-1 text-xs font-mono flex gap-2"},[o("span",Po,l(L.name)+":",1),o("span",Bo,l(L.value),1)]))),128))])):(t(),a("p",Uo,"None recorded."))])),64)),s.entry.requestPostData?(t(),a("div",Fo,[j[3]||(j[3]=o("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 mb-1.5"},"Request body",-1)),r(w,{code:s.entry.requestPostData,lang:e(d)?"json":"text"},null,8,["code","lang"])])):i("",!0),o("div",null,[j[4]||(j[4]=o("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 mb-1.5"},"Response body",-1)),e(N)?(t(),_(y,{key:0,text:"Loading body…",padded:!1})):e(f)?(t(),a(A,{key:1},[e(f).status==="ok"&&e(f).kind==="image"?(t(),a("div",Eo,[o("img",{src:e(f).dataUri,alt:s.entry.url,class:"max-w-full max-h-96"},null,8,Vo)])):e(f).status==="ok"?(t(),a("div",Oo,[r(w,{code:e(f).content??"",lang:e(f).kind==="json"?"json":"text"},null,8,["code","lang"]),e(f).truncated?(t(),a("p",Ho,"Preview truncated.")):i("",!0)])):(t(),a("p",Ko,l(e(f).status==="too-large"?`Body too large to preview (${("formatBytes"in u?u.formatBytes:e(be))(e(f).size??0)}) — open the trace viewer to inspect it.`:e(f).status==="unsupported"?`No preview for ${e(f).mimeType||"this content type"} — open the trace viewer to inspect it.`:"Body not stored in the trace."),1))],64)):s.entry.bodySha1?i("",!0):(t(),a("p",Wo,"No body captured for this request."))])])):i("",!0)]),_:1},8,["open"])}}}),Go=Object.assign(qo,{__name:"TraceNetworkDrawer"}),Jo={class:"flex items-center justify-between gap-2 mb-2"},Qo={key:0,class:"hidden sm:flex items-center gap-1.5 text-xs text-gray-400"},Zo={class:"space-y-1 max-h-[28rem] overflow-y-auto"},Xo=["title","onClick"],Yo={class:"flex items-center gap-2 text-sm min-w-0"},er={class:"truncate text-xs flex-1 min-w-0"},tr={key:0,class:"shrink-0 text-xs text-gray-400 font-mono hidden md:inline"},sr={key:1,class:"shrink-0 text-xs text-gray-400 tabular-nums hidden sm:inline"},nr={class:"relative h-1.5 mt-1 rounded bg-gray-100 dark:bg-gray-800 overflow-hidden"},ar={key:0,class:"mt-2 text-xs text-gray-400 dark:text-gray-500"},or=oe({__name:"TraceNetworkList",props:{data:{},runId:{},testRunsCaseId:{}},setup(s){const h=s,x=B("all"),b=v(()=>h.data.requests??[]),T=v(()=>({total:b.value.length,failed:b.value.filter(y=>y.failed).length,duringFailure:b.value.filter(y=>y.duringFailure).length})),g=v(()=>[{label:`All (${T.value.total})`,value:"all"},{label:`Failed (${T.value.failed})`,value:"failed",disabled:T.value.failed===0},{label:`During failure (${T.value.duringFailure})`,value:"duringFailure",disabled:T.value.duringFailure===0}]),n=v(()=>x.value==="failed"?b.value.filter(y=>y.failed):x.value==="duringFailure"?b.value.filter(y=>y.duringFailure):b.value);function d(y){try{return new URL(y).pathname||y}catch{return y}}const f=v(()=>Math.max(1,h.data.timelineDuration??1));function N(y){const O=Math.max(0,Math.min(100,y.start/f.value*100)),P=Math.min(100-O,Math.max(1.5,y.duration/f.value*100));return{left:`${O}%`,width:`${P}%`}}const C=v(()=>{const y=h.data.failingWindow;if(!y||y.end<=y.start)return null;const O=Math.max(0,Math.min(100,y.start/f.value*100)),P=Math.max(.5,Math.min(100-O,(y.end-y.start)/f.value*100));return{left:`${O}%`,width:`${P}%`}});function u(y){return y.failed?"bg-red-500":y.duration>1e3?"bg-orange-400":"bg-gray-400 dark:bg-gray-500"}function j(y){return y.failed?"border-l-2 border-l-red-400 dark:border-l-red-600":y.duringFailure?"border-l-2 border-l-amber-400 dark:border-l-amber-600":"border-l-2 border-l-transparent"}const U=B(null),S=B(!1);function w(y){U.value=y,S.value=!0}return(y,O)=>{const P=Xe,L=me,q=Le,Q=Go;return t(),a("div",null,[o("div",Jo,[r(P,{modelValue:e(x),"onUpdate:modelValue":O[0]||(O[0]=F=>ge(x)?x.value=F:null),items:e(g),size:"xs",variant:"link",ui:{list:"gap-2",trigger:"px-1.5"}},null,8,["modelValue","items"]),s.data.failingWindow?(t(),a("span",Qo,[...O[2]||(O[2]=[o("span",{class:"inline-block w-3 h-2 rounded-sm bg-red-500/10 border border-red-300 dark:border-red-800"},null,-1),p(" failing action ",-1)])])):i("",!0)]),o("div",Zo,[(t(!0),a(A,null,Y(e(n),F=>(t(),a("button",{key:F.index,type:"button",class:te([j(F),"w-full rounded bg-gray-50/60 dark:bg-gray-800/40 py-1.5 px-2 text-left cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-800"]),title:F.url,onClick:Z=>w(F)},[o("div",Yo,[r(L,{color:("httpMethodColor"in y?y.httpMethodColor:e(Qe))(F.method),variant:"soft",size:"xs",class:"font-mono shrink-0"},{default:c(()=>[p(l(F.method),1)]),_:2},1032,["color"]),r(L,{color:("httpStatusColor"in y?y.httpStatusColor:e(Ze))(F.status),variant:"soft",size:"xs",class:"font-mono shrink-0 tabular-nums",title:F.failureText||F.statusText},{default:c(()=>[p(l(F.status>0?F.status:"—"),1)]),_:2},1032,["color","title"]),o("code",er,l(d(F.url)),1),F.resourceType?(t(),a("span",tr,l(F.resourceType),1)):i("",!0),F.responseBodySize!=null?(t(),a("span",sr,l(("formatBytes"in y?y.formatBytes:e(be))(F.responseBodySize)),1)):i("",!0),o("span",{class:te(["ml-1 shrink-0 text-xs tabular-nums",F.duration>1e3?"text-red-600 font-medium":F.duration>500?"text-orange-500":"text-gray-500"])},[r(q,{ms:F.duration,"unit-class":"opacity-60"},null,8,["ms"])],2)]),o("div",nr,[e(C)?(t(),a("div",{key:0,class:"absolute inset-y-0 bg-red-500/10 border-x border-red-300/60 dark:border-red-800/60",style:$e(e(C))},null,4)):i("",!0),o("div",{class:te(["absolute inset-y-0 rounded-full",u(F)]),style:$e(N(F))},null,6)])],10,Xo))),128))]),s.data.truncated?(t(),a("p",ar," Showing the first "+l(e(b).length)+" of "+l(s.data.totalBeforeCap)+" requests recorded in the trace. ",1)):i("",!0),r(Q,{open:e(S),"onUpdate:open":O[1]||(O[1]=F=>ge(S)?S.value=F:null),entry:e(U),"run-id":s.runId,"test-runs-case-id":s.testRunsCaseId},null,8,["open","entry","run-id","test-runs-case-id"])])}}}),rr=Object.assign(or,{__name:"TraceNetworkList"}),ir={class:"flex flex-wrap items-center gap-x-3 gap-y-1"},lr={key:0,class:"flex items-center gap-2 text-xs"},cr={key:0,class:"flex items-center gap-1 text-red-600 dark:text-red-400"},ur={key:1,class:"flex items-center gap-1 text-amber-600 dark:text-amber-400"},dr={key:2,class:"text-xs text-gray-400 py-2"},mr={key:1,class:"space-y-1 max-h-[28rem] overflow-y-auto"},fr=["disabled","onClick"],pr={key:1,class:"size-3.5 shrink-0"},gr=["title"],yr=["title"],hr=["title"],xr=["title"],vr=["title"],_r=["title"],kr={key:0,class:"px-2 pt-1.5 pb-2 pl-7 space-y-1"},br={class:"flex items-center gap-1.5 text-[11px] uppercase tracking-wide text-gray-400"},wr=["title"],$r={key:0,class:"shrink-0 text-[10px] uppercase text-gray-400 font-mono hidden sm:inline"},Cr={class:"relative flex-1 h-3 rounded bg-gray-100 dark:bg-gray-800 min-w-0"},Tr={key:1,class:"px-2 pb-2 pl-7 space-y-1.5"},Sr={class:"flex items-start gap-2"},Ir={key:0,class:"text-gray-400 shrink-0 font-mono"},Rr={class:"font-mono break-all text-gray-700 dark:text-gray-300 flex-1 min-w-0"},Lr=["title"],zr={key:0,class:"mt-1.5"},jr=["onClick"],Nr={key:0,class:"mt-1 whitespace-pre-wrap break-all font-mono text-[11px] leading-relaxed text-gray-500 dark:text-gray-400 max-h-48 overflow-y-auto"},Dr={key:2,class:"mt-3 flex items-center gap-1.5 text-xs text-gray-400 dark:text-gray-500"},Mr={key:3,class:"mt-3 flex items-center gap-1.5 text-xs text-gray-400 dark:text-gray-500"},Ar=oe({__name:"TestCaseNetworkRequests",props:{requests:{},runId:{},testRunsCaseId:{},hasTrace:{type:Boolean}},setup(s,{expose:h}){const x=s,b=B("all"),{data:T,pending:g,load:n}=Ya(()=>x.runId,()=>x.testRunsCaseId,()=>!!x.hasTrace),d=B(null),f=v({get:()=>d.value??(x.requests.length===0&&x.hasTrace?"trace":"captured"),set:k=>{d.value=k}});ke(()=>f.value==="trace",k=>{k&&n()},{immediate:!0});const N=v(()=>T.value?.status==="ok"?T.value.requests?.length??0:null),C=v(()=>[{label:`Captured (${x.requests.length})`,value:"captured",disabled:x.requests.length===0},{label:N.value!=null?`Full trace (${N.value})`:"Full trace",value:"trace"}]);function u(){x.hasTrace&&(d.value="trace")}h({showTraceMode:u});const j=B(new Set);function U(k){const I=new Set(j.value);I.has(k)?I.delete(k):I.add(k),j.value=I}const S=B(new Set);function w(k){const I=new Set(S.value);I.has(k)?I.delete(k):I.add(k),S.value=I}function y(k){if(k.length===0)return[];const I=Math.min(...k.map(K=>K.startMs)),W=Math.max(...k.map(K=>K.startMs+K.durMs)),J=Math.max(1,W-I),se=new Map(k.map(K=>[K.id,K])),ne=K=>{let X=0,ee=K;const ae=new Set;for(;ee?.parentId&&se.has(ee.parentId)&&!ae.has(ee.id)&&(ae.add(ee.id),ee=se.get(ee.parentId),X++,!(X>8)););return X};return[...k].sort((K,X)=>K.startMs-X.startMs||X.durMs-K.durMs).map(K=>({...K,offsetPct:(K.startMs-I)/J*100,widthPct:Math.max(1.5,K.durMs/J*100),depth:ne(K)}))}function O(k){return k.status==="error"?"bg-red-400 dark:bg-red-500":k.kind==="db"?"bg-violet-400 dark:bg-violet-500":k.kind==="client"?"bg-sky-400 dark:bg-sky-500":k.kind==="internal"?"bg-gray-400 dark:bg-gray-500":"bg-emerald-400 dark:bg-emerald-500"}function P(k){const I=k.toLowerCase();return I==="critical"||I==="fatal"?3:I==="error"?2:I==="warning"||I==="warn"?1:0}function L(k){const I=P(k);if(I>=2)return"error";if(I===1)return"warning";const W=k.toLowerCase();return W==="info"||W==="information"?"info":"neutral"}function q(k){try{return new URL(k).pathname||k}catch{return k}}function Q(k){return(k.split("/")[1]??k).replace(/^vnd\.[^+]*\+?/,"").replace(/^x-/,"")||k}function F(k){return k?new Date(k).toLocaleString():""}const Z=v(()=>x.requests.map((k,I)=>{const W=Array.isArray(k.serverLogs)?k.serverLogs:[],J=Array.isArray(k.serverTraces)?k.serverTraces:[];let se=0,ne=0;for(const X of W){const ee=P(X.level);ee>=2?se++:ee===1&&ne++}const K=J.find(X=>!X.parentId)??J[0];return{...k,_index:I,logs:[...W].sort((X,ee)=>X.timestamp-ee.timestamp),spans:J,serverMs:K?K.durMs:null,errorLogCount:se,warnLogCount:ne,failed:k.status>=400,hasDetail:W.length>0||J.length>0,path:q(k.url)}})),H=v(()=>{let k=0,I=0,W=0,J=0,se=0;for(const ne of Z.value)ne.failed&&k++,ne.logs.length>0&&I++,ne.spans.length>0&&W++,J+=ne.errorLogCount,se+=ne.warnLogCount;return{total:Z.value.length,failed:k,withLogs:I,withSpans:W,errorLogs:J,warnLogs:se}}),ce=v(()=>{let k=Z.value;return b.value==="failed"?k=k.filter(I=>I.failed):b.value==="logs"&&(k=k.filter(I=>I.logs.length>0)),[...k].sort((I,W)=>{const J=se=>(se.errorLogCount>0?3:0)+(se.failed?2:0)+(se.logs.length>0?1:0);return J(W)-J(I)||I._index-W._index})}),$=v(()=>[{label:`All (${H.value.total})`,value:"all"},{label:`Failed (${H.value.failed})`,value:"failed",disabled:H.value.failed===0},{label:`With logs (${H.value.withLogs})`,value:"logs",disabled:H.value.withLogs===0}]),M=v(()=>H.value.withLogs>0);function E(k){return k.errorLogCount>0||k.status>=500?"border-l-2 border-l-red-400 dark:border-l-red-600":k.failed||k.warnLogCount>0?"border-l-2 border-l-amber-400 dark:border-l-amber-600":"border-l-2 border-l-transparent"}return(k,I)=>{const W=le,J=Xe,se=Ye,ne=rr,K=me,X=Le,ee=Ct,ae=fe;return t(),_(ae,{icon:"i-lucide-network",title:"Network requests",count:e(f)==="trace"?e(N):e(H).total,help:"case.network"},{actions:c(()=>[o("div",ir,[e(f)==="captured"?(t(),a(A,{key:0},[e(H).errorLogs>0||e(H).warnLogs>0?(t(),a("div",lr,[e(H).errorLogs>0?(t(),a("span",cr,[r(W,{name:"i-lucide-octagon-alert",class:"size-3.5"}),p(l(e(H).errorLogs),1)])):i("",!0),e(H).warnLogs>0?(t(),a("span",ur,[r(W,{name:"i-lucide-triangle-alert",class:"size-3.5"}),p(l(e(H).warnLogs),1)])):i("",!0)])):i("",!0),r(J,{modelValue:e(b),"onUpdate:modelValue":I[0]||(I[0]=D=>ge(b)?b.value=D:null),items:e($),size:"xs",variant:"link",ui:{list:"gap-2",trigger:"px-1.5"}},null,8,["modelValue","items"])],64)):i("",!0),s.hasTrace?(t(),_(J,{key:1,modelValue:e(f),"onUpdate:modelValue":I[1]||(I[1]=D=>ge(f)?f.value=D:null),items:e(C),size:"xs",variant:"pill",ui:{list:"gap-1 p-0.5",trigger:"px-2"}},null,8,["modelValue","items"])):i("",!0)])]),default:c(()=>[e(f)==="trace"?(t(),a(A,{key:0},[e(g)||!e(T)?(t(),_(se,{key:0,text:"Parsing trace network stream…"})):e(T).status==="ok"?(t(),_(ne,{key:1,data:e(T),"run-id":s.runId??null,"test-runs-case-id":s.testRunsCaseId??0},null,8,["data","run-id","test-runs-case-id"])):(t(),a("p",dr,"No network activity recorded in this trace."))],64)):(t(),a("div",mr,[(t(!0),a(A,null,Y(e(ce),D=>(t(),a("div",{key:D._index,class:te([E(D),"rounded bg-gray-50/60 dark:bg-gray-800/40"])},[o("button",{type:"button",class:te(["w-full flex items-center gap-2 py-1.5 px-2 text-sm text-left",D.hasDetail?"cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-800":"cursor-default"]),disabled:!D.hasDetail,onClick:G=>D.hasDetail&&U(D._index)},[D.hasDetail?(t(),_(W,{key:0,name:e(j).has(D._index)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3.5 shrink-0 text-gray-400"},null,8,["name"])):(t(),a("span",pr)),r(K,{color:("httpMethodColor"in k?k.httpMethodColor:e(Qe))(D.method),variant:"soft",size:"xs",class:"font-mono shrink-0"},{default:c(()=>[p(l(D.method),1)]),_:2},1032,["color"]),r(K,{color:("httpStatusColor"in k?k.httpStatusColor:e(Ze))(D.status),variant:"soft",size:"xs",class:"font-mono shrink-0 tabular-nums"},{default:c(()=>[p(l(D.status||"—"),1)]),_:2},1032,["color"]),o("code",{class:"truncate text-xs flex-1 min-w-0",title:D.url},l(D.path),9,gr),D.contentType?(t(),a("span",{key:2,class:"shrink-0 text-xs text-gray-400 font-mono hidden md:inline",title:`Response content type: ${D.contentType}`},l(Q(D.contentType)),9,yr)):i("",!0),D.errorLogCount>0?(t(),a("span",{key:3,class:"shrink-0 inline-flex items-center gap-1 text-xs text-red-600 dark:text-red-400",title:`${D.errorLogCount} backend error log(s)`},[r(W,{name:"i-lucide-octagon-alert",class:"size-3.5"}),p(l(D.errorLogCount),1)],8,hr)):i("",!0),D.warnLogCount>0?(t(),a("span",{key:4,class:"shrink-0 inline-flex items-center gap-1 text-xs text-amber-600 dark:text-amber-400",title:`${D.warnLogCount} backend warning log(s)`},[r(W,{name:"i-lucide-triangle-alert",class:"size-3.5"}),p(l(D.warnLogCount),1)],8,xr)):i("",!0),D.serverMs!=null?(t(),a("span",{key:5,class:"shrink-0 inline-flex items-center gap-1 text-xs text-emerald-600 dark:text-emerald-400 tabular-nums",title:`Server-side processing time (${D.spans.length} span${D.spans.length===1?"":"s"})`},[r(W,{name:"i-lucide-server",class:"size-3.5"}),r(X,{ms:D.serverMs,"no-title":""},null,8,["ms"])],8,vr)):i("",!0),D.startTime?(t(),a("span",{key:6,class:"shrink-0 text-xs text-gray-400 hidden sm:inline",title:F(D.startTime)},l(("formatRelativeTime"in k?k.formatRelativeTime:e(Ce))(D.startTime)),9,_r)):i("",!0),o("span",{class:te(["ml-1 shrink-0 text-xs tabular-nums",(D.duration??0)>1e3?"text-red-600 font-medium":(D.duration??0)>500?"text-orange-500":"text-gray-500"])},[r(X,{ms:D.duration,"unit-class":"opacity-60"},null,8,["ms"])],2)],10,fr),D.spans.length>0&&e(j).has(D._index)?(t(),a("div",kr,[o("div",br,[r(W,{name:"i-lucide-waypoints",class:"size-3.5"}),I[2]||(I[2]=p("Server trace ",-1))]),(t(!0),a(A,null,Y(y(D.spans),G=>(t(),a("div",{key:G.id,class:"flex items-center gap-2 text-xs",title:G.status==="error"?`${G.name} (error)`:G.name},[o("div",{class:"w-40 sm:w-56 shrink-0 flex items-center gap-1 min-w-0",style:$e({paddingLeft:`${G.depth*12}px`})},[G.kind?(t(),a("span",$r,l(G.kind),1)):i("",!0),o("span",{class:te(["truncate font-mono",G.status==="error"?"text-red-600 dark:text-red-400":"text-gray-600 dark:text-gray-300"])},l(G.name),3)],4),o("div",Cr,[o("div",{class:te(["absolute top-0 h-3 rounded",O(G)]),style:$e({left:`${G.offsetPct}%`,width:`${G.widthPct}%`})},null,6)]),r(X,{ms:G.durMs,class:"w-12 shrink-0 text-right text-gray-500"},null,8,["ms"])],8,wr))),128))])):i("",!0),D.logs.length>0&&e(j).has(D._index)?(t(),a("div",Tr,[(t(!0),a(A,null,Y(D.logs,(G,he)=>(t(),a("div",{key:he,class:"rounded border border-default bg-white dark:bg-gray-900/60 p-2 text-xs"},[o("div",Sr,[r(K,{color:L(G.level),variant:"soft",size:"xs",class:"shrink-0 capitalize"},{default:c(()=>[p(l(G.level),1)]),_:2},1032,["color"]),G.category?(t(),a("span",Ir,"["+l(G.category)+"]",1)):i("",!0),o("span",Rr,l(G.message),1),G.timestamp?(t(),a("span",{key:1,class:"shrink-0 text-gray-400 tabular-nums",title:F(G.timestamp)},l(("formatRelativeTime"in k?k.formatRelativeTime:e(Ce))(G.timestamp)),9,Lr)):i("",!0)]),G.stack?(t(),a("div",zr,[o("button",{type:"button",class:"inline-flex items-center gap-1 text-gray-400 hover:text-gray-600 dark:hover:text-gray-200",onClick:et=>w(`${D._index}:${he}`)},[r(W,{name:e(S).has(`${D._index}:${he}`)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3"},null,8,["name"]),I[3]||(I[3]=p(" Stack trace ",-1))],8,jr),e(S).has(`${D._index}:${he}`)?(t(),a("pre",Nr,l(G.stack),1)):i("",!0)])):i("",!0)]))),128))])):i("",!0)],2))),128))])),e(f)==="captured"&&!e(M)?(t(),a("p",Dr,[r(W,{name:"i-lucide-info",class:"size-3.5 shrink-0"}),I[5]||(I[5]=p(" No backend server logs captured — install ",-1)),r(ee,{to:"backend-logs","no-icon":"",class:"underline"},{default:c(()=>[...I[4]||(I[4]=[p("a Piwi backend integration",-1)])]),_:1}),I[6]||(I[6]=p(" to see server-side warnings and errors under each request. ",-1))])):i("",!0),s.hasTrace?i("",!0):(t(),a("p",Mr,[r(W,{name:"i-lucide-info",class:"size-3.5 shrink-0"}),o("span",null,[I[8]||(I[8]=p(" Want to go deeper? Record traces (",-1)),I[9]||(I[9]=o("code",null,"trace: 'retain-on-failure'",-1)),I[10]||(I[10]=p(") to see every request with headers, timing and bodies here. ",-1)),r(ee,{to:"evidence#trace-powered-deep-views","no-icon":"",class:"underline"},{default:c(()=>[...I[7]||(I[7]=[p("Learn more",-1)])]),_:1})])]))]),_:1},8,["count"])}}}),Pr=Object.assign(Ar,{__name:"TestCaseNetworkRequests"}),Br={class:"space-y-2"},Ur=oe({__name:"TestCaseTracesCard",props:{traces:{}},setup(s){return(h,x)=>{const b=$s,T=fe;return s.traces.length>0?(t(),_(T,{key:0,icon:"i-lucide-bug-play",title:"Traces",count:s.traces.length,help:"case.traces"},{default:c(()=>[o("div",Br,[(t(!0),a(A,null,Y(s.traces,g=>(t(),_(b,{key:g.id,trace:g,class:"py-2 px-3 rounded-lg border"},null,8,["trace"]))),128))])]),_:1},8,["count"])):i("",!0)}}}),Fr=Object.assign(Ur,{__name:"TestCaseTracesCard"}),Er={class:"space-y-3"},Vr={class:"flex items-center justify-between px-3 py-2 bg-gray-50 dark:bg-gray-800/50 border-b"},Or={class:"flex items-center gap-2 min-w-0"},Hr={class:"text-sm font-medium truncate"},Kr={key:0,class:"text-xs text-gray-400 shrink-0"},Wr={class:"text-xs text-gray-400"},qr={class:"flex items-center gap-1 shrink-0"},Gr=["href"],Jr={key:0,class:"bg-gray-100 dark:bg-gray-900"},Qr=["src","alt","onClick"],Zr={key:1,class:"bg-black"},Xr={key:2,class:"bg-gray-50 dark:bg-gray-900"},Yr={key:0,class:"flex items-center justify-center py-8"},ei={key:1,class:"p-4 text-red-500 text-sm"},ti={key:2,class:"p-4 overflow-auto max-h-96"},si={class:"text-sm whitespace-pre-wrap font-sans leading-relaxed"},ni=oe({__name:"TestCaseAttachmentsCard",props:{attachments:{}},setup(s){const h=s,x=Ge(),b=B(null),T=v(()=>h.attachments.filter(L=>Se(L.path,L.contentType)).map(L=>({src:C(L.path,L.contentType),name:L.name||u(L.path)})));function g(L){b.value=L}const n=new Set([".md",".mdx",".markdown"]),d=new Set(["text/markdown","text/x-markdown"]);function f(L){return L.toLowerCase().split(".").pop()||""}function N(L,q){return!!(n.has(f(L))||q&&d.has(q.toLowerCase()))}function C(L,q){return It(L,q,x.app?.baseURL)}function u(L){return L.split("/").pop()||L}function j(L){return L==null?"":be(L)}const U=B({}),S=B({}),w=B({}),y=B(new Set);async function O(L){if(U.value[L.id]===void 0&&!w.value[L.id]){w.value[L.id]=!0,S.value[L.id]=null;try{const q=await $fetch(C(L.path,L.contentType),{responseType:"text"});U.value[L.id]=q}catch{S.value[L.id]="Failed to load preview"}finally{w.value[L.id]=!1}}}function P(L,q){const Q=new Set(y.value);Q.has(L)?Q.delete(L):(Q.add(L),O(q)),y.value=Q}return(L,q)=>{const Q=le,F=Re,Z=Cs,H=Ts,ce=fe;return s.attachments.length>0?(t(),_(ce,{key:0,icon:"i-lucide-paperclip",title:"Attachments",count:s.attachments.length},{default:c(()=>[o("div",Er,[(t(!0),a(A,null,Y(s.attachments,$=>(t(),a("div",{key:$.id,class:"rounded-lg border overflow-hidden"},[o("div",Vr,[o("div",Or,[r(Q,{name:e(Se)($.path,$.contentType)?"i-lucide-image":e(Ae)($.path,$.contentType)?"i-lucide-video":N($.path,$.contentType)?"i-lucide-file-text":"i-lucide-file",class:"size-4 text-gray-400 shrink-0"},null,8,["name"]),o("span",Hr,l(u($.path)),1),$.name&&$.name!==u($.path)?(t(),a("span",Kr,l($.name),1)):i("",!0),o("span",Wr,l(j($.size)),1)]),o("div",qr,[N($.path,$.contentType)?(t(),_(F,{key:0,size:"xs",color:"neutral",variant:"soft",onClick:M=>P($.id,$)},{default:c(()=>[p(l(e(y).has($.id)?"Hide preview":"Preview"),1)]),_:2},1032,["onClick"])):i("",!0),o("a",{href:C($.path,$.contentType),target:"_blank",class:"text-primary hover:underline text-xs shrink-0"},"Open",8,Gr)])]),e(Se)($.path,$.contentType)?(t(),a("div",Jr,[o("img",{src:C($.path,$.contentType),alt:$.name||"Screenshot",class:"max-w-full max-h-96 object-contain mx-auto cursor-pointer hover:opacity-90 transition-opacity",loading:"lazy",onClick:M=>g(e(T).findIndex(E=>E.src===C($.path,$.contentType)))},null,8,Qr)])):e(Ae)($.path,$.contentType)?(t(),a("div",Zr,[r(Z,{src:C($.path,$.contentType)},null,8,["src"])])):N($.path,$.contentType)&&e(y).has($.id)?(t(),a("div",Xr,[e(w)[$.id]?(t(),a("div",Yr,[r(Q,{name:"i-lucide-loader-circle",class:"size-5 animate-spin text-gray-400"})])):e(S)[$.id]?(t(),a("div",ei,l(e(S)[$.id]),1)):e(U)[$.id]?(t(),a("div",ti,[o("pre",si,l(e(U)[$.id]),1)])):i("",!0)])):i("",!0)]))),128))]),r(H,{modelValue:e(b),"onUpdate:modelValue":q[0]||(q[0]=$=>ge(b)?b.value=$:null),images:e(T)},null,8,["modelValue","images"])]),_:1},8,["count"])):i("",!0)}}}),ai=Object.assign(ni,{__name:"TestCaseAttachmentsCard"});function oi(s){return Array.isArray(s)?s.some(h=>h&&typeof h.type=="string"&&h.type.toLowerCase()==="slow"):!1}function ri(s){const h=[];if(!s)return h;const x=s.steps||[],T=x.filter(n=>n.category==="navigation").filter(n=>n.duration>3e3);if(T.length>0){const n=T.sort((d,f)=>f.duration-d.duration)[0];h.push({type:"warning",message:"Slow navigation detected",details:`"${n.title}" took ${(n.duration/1e3).toFixed(1)}s. The tested page may have performance issues (slow server response, heavy JS bundles, etc.).`})}x.length>20&&h.push({type:"info",message:"Many sequential actions",details:`This test has ${x.length} steps. Consider splitting it into smaller, focused tests for better isolation and faster feedback.`}),s.status==="passed"&&(s.retries||0)>0&&h.push({type:"warning",message:"Flaky test — passed after retries",details:`This test needed ${s.retries} ${s.retries===1?"retry":"retries"} to pass. Consider reviewing locator strategies, adding explicit waits, or checking for race conditions.`});const g=x.filter(n=>n.category==="assertion"&&n.duration>2e3);if(g.length>0){const n=g.sort((d,f)=>f.duration-d.duration)[0];h.push({type:"info",message:"Slow assertions detected",details:`"${n.title}" took ${(n.duration/1e3).toFixed(1)}s. The UI may be slow to render or the assertion timeout may need tuning.`})}return oi(s.testAnnotations)&&typeof s.duration=="number"&&s.duration<1e4&&h.push({type:"info",message:"test.slow() may be unnecessary",details:`This run finished in ${(s.duration/1e3).toFixed(1)}s, yet the test is marked test.slow(), which triples its timeout budget. If it is consistently this fast, removing test.slow() lets a failure surface sooner.`}),typeof s.timeout=="number"&&s.timeout>0&&typeof s.duration=="number"&&s.duration>0&&s.timeout>=4*s.duration&&s.timeout-s.duration>=3e4&&h.push({type:"info",message:"Oversized timeout",details:`The timeout is ${(s.timeout/1e3).toFixed(0)}s but this run took ${(s.duration/1e3).toFixed(1)}s. A large timeout means a hang or failure waits far longer than necessary — consider lowering it toward the test's real duration.`}),h}function ii(s,h){const x=s.search(/\n at /);if(x===-1)return h!==void 0&&s.length>h?s.slice(0,h)+`
|
|
4
|
+
[truncated]`:s;const b=s.slice(0,x),g=s.slice(x).split(`
|
|
5
|
+
`),n=[];let d=0;const f=()=>{d>0&&(n.push(`… (${d} internal frame${d>1?"s":""})`),d=0)};for(const C of g){const u=C.trimStart();u.startsWith("at ")?C.includes("node_modules")||u.startsWith("at node:")?d++:(f(),n.push(C)):(u===""||f(),n.push(C))}f();let N=b+`
|
|
6
|
+
`+n.join(`
|
|
7
|
+
`);return h!==void 0&&N.length>h&&(N=N.slice(0,h)+`
|
|
8
|
+
[truncated]`),N}const li={class:"flex items-center gap-1 shrink-0 min-w-0"},ci={class:"space-y-4"},ui=["innerHTML"],di={class:"flex flex-wrap gap-1.5"},mi={class:"grid grid-cols-1 xl:grid-cols-[3fr_2fr] gap-4"},fi={class:"space-y-4 lg:order-2"},pi={class:"space-y-4 lg:order-1 min-w-0"},gi={class:"max-h-96 overflow-y-auto"},yi={class:"space-y-3"},hi={key:1},xi={class:"flex flex-wrap items-center gap-x-3 gap-y-1.5 text-xs mb-3"},vi={class:"font-medium text-gray-600 dark:text-gray-300"},_i={class:"tabular-nums text-gray-500 dark:text-gray-400"},ki={class:"text-xs tabular-nums text-gray-400 dark:text-gray-500"},bi={key:0,class:"inline-flex items-center justify-center size-5 rounded-full bg-gray-100 dark:bg-gray-800 text-gray-400 dark:text-gray-500 text-xs leading-none",title:"Not run"},wi={key:1,class:"inline-flex items-center justify-center size-5 rounded-full bg-red-100 dark:bg-red-900/30 text-red-600 dark:text-red-400 text-xs leading-none",title:"Step failed"},$i={key:2,class:"inline-flex items-center justify-center size-5 rounded-full bg-green-100 dark:bg-green-900/30 text-green-600 dark:text-green-400 text-xs leading-none",title:"Step passed"},Ci={class:"flex items-center gap-2"},Ti={key:0,class:"text-xs text-red-500 mt-1 whitespace-pre-wrap break-words font-mono"},Si={class:"min-w-[6rem]"},Ii={class:"flex items-center justify-between gap-2"},Ri={key:0,class:"text-xs tabular-nums text-gray-400 dark:text-gray-500"},Li={class:"relative mt-1 h-1.5 w-full overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800"},zi={class:"space-y-4 pt-4"},ji={class:"space-y-4 pt-1"},Ni={key:0,class:"space-y-2"},Di={class:"flex items-start gap-2"},Mi={class:"space-y-4"},Ai={key:3,class:"text-xs text-gray-400 pt-1"},Pi={class:"bg-gray-100 dark:bg-gray-800 px-1 rounded"},Bi={class:"space-y-4 pt-4","data-shot":"execution-history"},Ui={key:0,class:"space-y-4"},Fi={class:"text-xs whitespace-nowrap"},Ei=["title"],Vi={key:1,class:"text-gray-400"},Oi=["title"],Jl=oe({__name:"[id]",async setup(s){let h,x;const b=ms(),T=fs(),g=b.params.id,{data:n,refresh:d}=([h,x]=We(()=>vt(`/api/test-run-cases/${g}`,"$rX1OuZQOSq")),h=await h,x(),h),{data:f}=([h,x]=We(()=>ys(`test-run-case-history-${g}`,()=>{const m=n.value?.testCaseId;return m?$fetch(`/api/test-cases/${m}/history`).then(z=>z.items):Promise.resolve([])},{default:()=>[],watch:[()=>n.value?.testCaseId]})),h=await h,x(),h),{data:N,refresh:C}=([h,x]=We(()=>vt(`/api/test-run-cases/${g}/traces`,{transform:m=>m.items},"$bq3dlhiM5e")),h=await h,x(),h),u=v(()=>(N.value?.length??0)>0);ps(v(()=>({title:n.value?.title?`${n.value.title} — execution — Piwi Dashboard`:`Execution #${g} — Piwi Dashboard`})));const j=v(()=>{const m=n.value;return m?[m.status,...(m.attempts??[]).map(V=>V.status)].some(V=>ht(V)):!1}),U=v(()=>{const m=n.value?.testRun?.status;return m==="running"||m==="finalizing"}),S=v(()=>n.value?ri(n.value):[]),w=v(()=>n.value?.steps?n.value.steps:[]),y=v(()=>n.value?.webVitals??null),O=v(()=>n.value?.aiUsage?.intents??null),P=v(()=>n.value?.networkRequests??[]),L=v(()=>{if(!f.value||f.value.length<2||!n.value?.duration)return null;const m=f.value.filter(ue=>ue.duration!==null&&ue.id!==n.value?.id);if(m.length===0)return null;const z=m.reduce((ue,pe)=>ue+(pe.duration||0),0)/m.length,V=n.value.duration,re=V-z,ve=z>0?Math.round(re/z*100):0;return{avg:Math.round(z),current:V,diff:Math.round(re),pct:ve}}),q=v(()=>n.value?.testRun?.metadata),Q=v(()=>{const m=q.value;return m?.scm?m.scm:null}),F=v(()=>{const m=q.value;return m?.ci?m.ci:null}),Z=v(()=>n.value?.failureCluster??null),H=v(()=>{const m=[];return j.value?m.push({label:"Diagnosis",icon:"i-lucide-stethoscope",value:"diagnosis",slot:"diagnosis",help:"case.diagnosis-tab"}):U.value&&m.push({label:"Diagnosis",icon:"i-lucide-stethoscope",value:"diagnosis",slot:"diagnosis",disabled:!0,disabledReason:"unavailable until a test fails"}),m.push({label:`Steps (${w.value.length})`,icon:"i-lucide-list-checks",value:"steps",slot:"steps",help:"case.steps"}),m.push({label:"Artifacts",icon:"i-lucide-paperclip",value:"artifacts",slot:"artifacts",help:"case.artifacts"}),m.push({label:"Performance",icon:"i-lucide-gauge",value:"performance",slot:"performance"}),m.push({label:`History${f.value?.length?` (${f.value.length})`:""}`,icon:"i-lucide-trending-up",value:"history",slot:"history"}),m}),ce=v(()=>H.value.filter(m=>!m.disabled).map(m=>m.value));function $(){return j.value?"diagnosis":"steps"}function M(m){let z=typeof m=="string"?m:"";return z==="error"&&(z="diagnosis"),z==="traces"&&(z="artifacts"),ce.value.includes(z)?z:$()}const E=B(M(b.query.tab));ke(ce,m=>{m.includes(E.value)||(E.value=M(b.query.tab))}),ke(E,m=>{b.query.tab!==m&&T.replace({query:{...b.query,tab:m}})},{immediate:!0});const k=[{accessorKey:"startTime",header:"Date"},{accessorKey:"status",header:"Status"},{accessorKey:"duration",header:"Duration"},{accessorKey:"retries",header:"Retries"},{accessorKey:"runId",header:"Run"},{accessorKey:"error",header:"Error"}],I={navigation:"info",assertion:"success",action:"warning",input:"warning",api:"info",wait:"neutral",hook:"neutral",fixture:"neutral"},W=[{id:"index",header:"#",meta:{class:{th:"w-12",td:"w-12"}}},{id:"status",header:"",meta:{class:{th:"w-10",td:"w-10"}}},{accessorKey:"category",header:"Category",meta:{class:{th:"w-28",td:"w-28"}}},{accessorKey:"title",header:"Step"},{accessorKey:"duration",header:"Duration",meta:{class:{th:"w-44",td:"w-44"}}}],J=v(()=>{const m=new Map;for(const z of w.value){const V=m.get(z.category)??{count:0,duration:0};V.count+=1,V.duration+=z.duration||0,m.set(z.category,V)}return Array.from(m,([z,V])=>({category:z,...V})).sort((z,V)=>V.duration-z.duration)}),se=v(()=>{let m=-1,z=-1;return w.value.forEach((V,re)=>{(V.duration||0)>z&&(z=V.duration||0,m=re)}),z>0?m:-1}),ne=v(()=>w.value.reduce((m,z)=>Math.max(m,z.duration||0),0)),K=v(()=>w.value.length>0&&w.value.every(m=>typeof m.startTime=="number")),X=v(()=>n.value?.startedAt??(K.value?Math.min(...w.value.map(m=>m.startTime)):0)),ee=v(()=>{const m=n.value?.duration??0;if(m>0)return m;if(K.value){const z=Math.max(...w.value.map(V=>V.startTime+(V.duration||0)));return Math.max(1,z-X.value)}return 0});function ae(m){if(K.value&&ee.value>0){const V=Math.max(0,Math.min(100,(m.startTime-X.value)/ee.value*100)),re=Math.min(100-V,Math.max(1.5,(m.duration||0)/ee.value*100));return{left:`${V}%`,width:`${re}%`}}return{left:"0%",width:`${ne.value>0?Math.max(2,(m.duration||0)/ne.value*100):0}%`}}function D(m){const z=n.value?.duration??0;if(z<=0)return"";const V=m/z*100;return V>0&&V<1?"<1%":`${Math.round(V)}%`}function G(m){return m>2e3?"text-red-600 font-medium":m>500?"text-orange-500":"text-gray-500"}function he(m){return m>2e3?"bg-red-500":m>500?"bg-orange-400":"bg-gray-400 dark:bg-gray-500"}const et=v(()=>n.value?.testRun?.environment),tt=v(()=>[{filePath:n.value?.filePath??"",title:n.value?.title??"",line:n.value?.line??null,projectName:n.value?.browser?.projectName??null}]),st=v(()=>bn(tt.value)),{copy:jt,copied:Pe}=wn(),Nt=v(()=>[{label:Pe.value?"Copied":"Copy retry command",icon:Pe.value?"i-lucide-check":"i-lucide-clipboard",variant:"outline",title:Pe.value?"Copied!":cn(st.value),onClick:()=>jt(st.value,{toast:"Retry command copied"})},{label:"Refresh",icon:"i-lucide-refresh-cw",onClick:()=>d()}]),Dt=!!Ge().public.demoMode;let ye=null;function Mt(){if(Dt||ye)return;const m=n.value?.testRun?.id;m&&(ye=new EventSource(`/api/test-runs/${m}/stream`),ye.onmessage=z=>{try{const V=JSON.parse(z.data);V.type==="case-files"&&V.data?.executionId===Number(g)?(d(),C()):V.type==="run-finished"&&(d(),C(),Be())}catch{}},ye.onerror=()=>{})}function Be(){ye&&(ye.close(),ye=null)}ke(U,m=>{m?Mt():Be()},{immediate:!0}),gs(Be);const{copyRich:At,copied:nt}=Ss();function Pt(){const m=n.value;if(!m?.error)return;const z=window.location.origin,V=m.title??"Unknown test",re=m.location??"",ve=m.error.replace(/\x1b\[[0-9;]*[a-zA-Z]/g,""),ue=Te=>Te.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"),pe=Z.value?`${z}/failure-clusters/${Z.value.id}`:null,De=`${z}/test-run-cases/${g}?tab=diagnosis`,_e=n.value?.testCaseId?`${z}/test-cases/${n.value.testCaseId}`:null,Ee=[`❌ Test failed: ${V}`,re?`Location: ${re}`:null,"","Error:",ve,"",pe?`Failure cluster: ${pe}`:null,`Execution: ${De}`,_e?`History: ${_e}`:null].filter(Te=>Te!==null).join(`
|
|
9
|
+
`),Ve=[`<p><strong>❌ Test failed: ${ue(V)}</strong>${re?`<br><code>${ue(re)}</code>`:""}</p>`,`<p><strong>Error:</strong></p><pre>${xt(m.error)}</pre>`,`<p>🔗 ${pe?`<a href="${pe}">View failure cluster</a> · `:""}<a href="${De}">Execution details</a>${_e?` · <a href="${_e}">Test history</a>`:""}</p>`].join("");At(Ee,Ve,{toast:"Failure copied"})}const Ue=B(null),at=B(null),ze=B(null),je=B(null),ot=B(null),Ne=B(null),rt=B(null),it=B(null),lt=B(null),ct=B(null);function xe(m){m?.scrollIntoView({behavior:"smooth",block:"start"})}const Fe={sampleError:()=>xe(Ue.value),executionError:()=>xe(Ue.value),testSource:()=>je.value?.reveal(),sourceFiles:()=>je.value?.reveal(),environmentDiff:()=>rt.value?.reveal(),visualDiff:()=>it.value?.reveal(),domSnapshot:()=>lt.value?.reveal(),ariaSnapshot:()=>ct.value?.reveal(),screenshots:()=>Ne.value?.reveal(),tracePointers:()=>Ne.value?.reveal(),artifacts:()=>Ne.value?.reveal(),console:()=>xe(at.value),networkRequests:()=>xe(ze.value),serverTraces:()=>xe(ze.value),traceCallStack:()=>je.value?.reveal(),traceNetwork:()=>{ot.value?.showTraceMode(),xe(ze.value)},steps:()=>{E.value="steps"},failingSteps:()=>{E.value="steps"}},Bt=v(()=>[{id:"testSource",label:"Test source",available:!!(n.value?.testSourceFrames?.length||n.value?.testSource||u.value)},{id:"environmentDiff",label:"Environment diff",available:!!n.value?.testRun?.id},{id:"visualDiff",label:"Visual diff",available:!!n.value?.testRun?.id},{id:"domSnapshot",label:"DOM snapshot",available:!!n.value?.testRun?.id},{id:"ariaSnapshot",label:"ARIA snapshot",available:!!n.value?.ariaSnapshot},{id:"screenshots",label:"Screenshots",available:!0},{id:"console",label:"Console",available:!!n.value?.consoleLogs?.length},{id:"networkRequests",label:"Network",available:P.value.length>0||u.value},{id:"steps",label:"Steps",available:!0}].filter(m=>m.available));return hs(Ys,{canLocate:m=>m in Fe,open:m=>Fe[m]?.()}),(m,z)=>{const V=ls,re=cs,ve=le,ue=Ie,pe=Ns,De=Ds,_e=Ms,Ee=As,Ve=Bs,Te=ca,Ut=_a,Oe=Re,Ft=Rt,ut=fe,Et=Ia,Vt=Fa,Ot=Za,Ht=ao,Kt=mo,Wt=Rs,qt=Ls,Gt=zs,dt=vo,mt=Pr,ft=Is,Jt=Tt,Qt=Je,Zt=js,Xt=pn,Me=me,ie=Le,Yt=kt,pt=gn,gt=yn,He=hn,es=Fr,ts=ai,de=bt,Ke=wt,ss=Lt,ns=xn,as=vn,os=qe,rs=Vs,is=Ps;return t(),_(is,{id:"test-run-case-detail"},{header:c(()=>[r(Ve,{title:e(n)?.title??`Execution #${e(g)}`},{leading:c(()=>[r(V),r(re,{items:[{label:"Home",icon:"i-lucide-house",to:"/"},{label:"Projects",to:"/projects"},...e(n)?.testRun?.project?.id?[{label:e(n).testRun.project.name||"Project",to:`/projects/${e(n).testRun.project.id}`}]:[{label:"Project"}],...e(n)?.testRun?.id?[{label:`Run #${e(n).testRun.id}`+(e(n).testRun.label?` — ${e(n).testRun.label}`:""),to:`/test-runs/${e(n).testRun.id}`}]:[{label:"Test run"}],{label:e(n)?.title||`Execution #${e(g)}`}]},null,8,["items"])]),right:c(()=>[o("div",li,[e(n)?.testCaseId?(t(),_(ue,{key:0,to:`/test-cases/${e(n).testCaseId}`,class:"text-xs text-gray-500 hover:text-primary mr-2 flex items-center gap-1 shrink-0",title:"View test case history"},{default:c(()=>[r(ve,{name:"i-lucide-trending-up",class:"size-3.5"}),z[2]||(z[2]=o("span",{class:"hidden sm:inline"},"Test case",-1))]),_:1},8,["to"])):i("",!0),e(n)?(t(),_(pe,{key:1,endpoint:`/api/test-run-cases/${e(n).id}/share-links`},null,8,["endpoint"])):i("",!0),e(n)?(t(),_(De,{key:2,endpoint:`/api/test-run-cases/${e(n).id}/export`,"base-name":`piwi-execution-${e(n).id}`,class:"mr-2"},null,8,["endpoint","base-name"])):i("",!0),r(_e,{"project-id":e(n)?.testRun?.project?.id,"project-label":e(n)?.testRun?.project?.label??e(n)?.testRun?.project?.name,cases:e(tt),class:"mr-2"},null,8,["project-id","project-label","cases"]),r(Ee,{actions:e(Nt)},null,8,["actions"])])]),_:1},8,["title"])]),body:c(()=>[r(rs,{modelValue:e(E),"onUpdate:modelValue":z[1]||(z[1]=R=>ge(E)?E.value=R:null),"tab-items":e(H)},{summary:c(()=>[r(Te,{"test-case":e(n)??null,"scm-info":e(Q),"ci-info":e(F),browser:e(n)?.browser??null,environment:e(et),"steps-count":e(w).length,"historical-timing":e(L),"stable-links":e(n)?.stableLinks??null,"project-key":e(n)?.testRun?.project?.id,"project-name":e(n)?.testRun?.project?.name,onRefresh:z[0]||(z[0]=R=>e(d)())},null,8,["test-case","scm-info","ci-info","browser","environment","steps-count","historical-timing","stable-links","project-key","project-name"]),r(Ut,{status:e(n)?.status,reason:e(n)?.didNotRunReason??null,"blocked-by-case":e(n)?.blockedByCase??null,"blocked-tests":e(n)?.blockedTests??null,class:"mt-4"},null,8,["status","reason","blocked-by-case","blocked-tests"])]),"tab-diagnosis":c(()=>[o("div",ci,[o("div",{ref_key:"errorEl",ref:Ue,class:"scroll-mt-4"},[e(n)?.error?(t(),_(ut,{key:0,icon:"i-lucide-circle-x","icon-class":"text-red-500",title:"Error"},{actions:c(()=>[r(Ft,{text:e(nt)?"Copied!":"Copy failure"},{default:c(()=>[r(Oe,{size:"xs",variant:"ghost",color:"neutral",icon:e(nt)?"i-lucide-check":"i-lucide-clipboard","aria-label":"Copy failure",onClick:Pt},null,8,["icon"])]),_:1},8,["text"])]),default:c(()=>[o("div",{class:"text-xs font-mono whitespace-pre-wrap break-words max-h-96 overflow-y-auto rounded bg-red-50 dark:bg-red-950/20 p-3",innerHTML:e(xt)(e(ii)(e(n).error))},null,8,ui)]),_:1})):i("",!0)],512),o("div",di,[(t(!0),a(A,null,Y(e(Bt),R=>(t(),_(Oe,{key:R.id,size:"xs",variant:"soft",color:"neutral",label:R.label,onClick:yt=>Fe[R.id]?.()},null,8,["label","onClick"]))),128))]),o("div",mi,[o("div",fi,[r(Et,{"test-case":e(n)??null,history:e(f),"current-id":Number(e(g))},null,8,["test-case","history","current-id"]),e(Z)?(t(),_(Vt,{key:0,cluster:e(Z)},null,8,["cluster"])):i("",!0),r(Ot,{"test-runs-case-id":Number(e(g))},null,8,["test-runs-case-id"])]),o("div",pi,[e(n)?.testSourceFrames?.length||e(n)?.testSource||e(u)?(t(),_(Ht,{key:0,ref_key:"testSourceCard",ref:je,"storage-key":"case-test-source",frames:e(n)?.testSourceFrames??null,"test-source":e(n)?.testSource??null,"run-id":e(n)?.testRun?.id??null,"test-runs-case-id":Number(e(g)),"has-trace":e(u),"project-key":e(n)?.testRun?.project?.id,"project-name":e(n)?.testRun?.project?.name},null,8,["frames","test-source","run-id","test-runs-case-id","has-trace","project-key","project-name"])):i("",!0),r(Kt,{ref_key:"evidenceCard",ref:Ne,"storage-key":"case-evidence",attachments:e(n)?.attachments??[],traces:e(N)??[]},null,8,["attachments","traces"]),e(n)?.testRun?.id?(t(),_(Wt,{key:1,"storage-key":"case-locators","run-id":e(n).testRun.id,"test-runs-case-id":Number(e(g)),"ai-intents":e(O)},null,8,["run-id","test-runs-case-id","ai-intents"])):i("",!0),e(n)?.testRun?.id?(t(),_(qt,{key:2,ref_key:"envDiffCard",ref:rt,"storage-key":"case-env-diff","run-id":e(n).testRun.id,"test-runs-case-id":Number(e(g))},null,8,["run-id","test-runs-case-id"])):i("",!0),e(n)?.testRun?.id?(t(),_(Gt,{key:3,ref_key:"visualDiffCard",ref:it,"storage-key":"case-visual-diff","run-id":e(n).testRun.id,"test-runs-case-id":Number(e(g))},null,8,["run-id","test-runs-case-id"])):i("",!0),e(n)?.consoleLogs?.length?(t(),a("div",{key:4,ref_key:"consoleEl",ref:at,class:"scroll-mt-4"},[r(dt,{entries:e(n)?.consoleLogs??[]},null,8,["entries"])],512)):i("",!0),e(P).length>0||e(u)?(t(),a("div",{key:5,ref_key:"networkEl",ref:ze,class:"scroll-mt-4"},[r(mt,{ref_key:"networkCard",ref:ot,requests:e(P),"run-id":e(n)?.testRun?.id??null,"test-runs-case-id":Number(e(g)),"has-trace":e(u)},null,8,["requests","run-id","test-runs-case-id","has-trace"])],512)):i("",!0),e(n)?.pageState?(t(),_(ft,{key:6,"storage-key":"case-page-state","page-state":e(n).pageState},null,8,["page-state"])):i("",!0),e(n)?.ariaSnapshot?(t(),_(Qt,{key:7,ref_key:"ariaCard",ref:ct,"storage-key":"case-aria",icon:"i-lucide-scan-text",title:"ARIA snapshot",help:"case.aria"},{folded:c(()=>[...z[3]||(z[3]=[p("Accessibility tree captured at the moment of failure",-1)])]),default:c(()=>[o("div",gi,[r(Jt,{text:"```yaml\n"+e(n).ariaSnapshot+"\n```"},null,8,["text"])])]),_:1},512)):i("",!0),e(n)?.testRun?.id?(t(),_(Zt,{key:8,ref_key:"domSnapshotCard",ref:lt,"storage-key":"case-dom-snapshot","run-id":e(n).testRun.id,"test-runs-case-id":Number(e(g))},null,8,["run-id","test-runs-case-id"])):i("",!0)])])])]),"tab-steps":c(()=>[o("div",yi,[("isFailedStatus"in m?m.isFailedStatus:e(ht))(e(n)?.status??"")&&e(w).length>0&&!e(w).some(R=>R.failed)?(t(),_(Xt,{key:0,color:"warning",variant:"subtle",icon:"i-lucide-info",title:"The failure was not captured at step level",description:"The test failed, but none of the recorded steps is marked failed — the error happened outside the step list."})):i("",!0),e(w).length>0?(t(),a("div",hi,[o("div",xi,[o("span",vi,l(e(w).length)+" steps",1),z[4]||(z[4]=o("span",{class:"text-gray-300 dark:text-gray-600"},"·",-1)),(t(!0),a(A,null,Y(e(J),R=>(t(),a("span",{key:R.category,class:"inline-flex items-center gap-1"},[r(Me,{color:I[R.category]||"neutral",variant:"soft",size:"xs"},{default:c(()=>[p(l(R.category),1)]),_:2},1032,["color"]),o("span",_i,[p("×"+l(R.count)+" · ",1),r(ie,{ms:R.duration},null,8,["ms"])])]))),128))]),r(gt,{"min-width":"40rem",bleed:!1},{default:c(()=>[r(pt,{data:e(w),columns:W,ui:{base:"table-fixed w-full border-separate border-spacing-0 min-w-[40rem]",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default align-top"}},{"index-cell":c(({row:R})=>[o("span",ki,l(R.index+1),1)]),"status-cell":c(({row:R})=>[e(n)?.status==="didnotrun"?(t(),a("span",bi,"–")):R.original.failed?(t(),a("span",wi,"✗")):(t(),a("span",$i,"✓"))]),"category-cell":c(({row:R})=>[r(Me,{color:I[R.original.category]||"neutral",variant:"soft",size:"xs"},{default:c(()=>[p(l(R.original.category),1)]),_:2},1032,["color"])]),"title-cell":c(({row:R})=>[o("div",Ci,[o("span",{class:te(R.original.failed?"text-red-600 dark:text-red-400 font-medium":"")},l(R.original.title),3),R.index===e(se)?(t(),_(Me,{key:0,color:"warning",variant:"subtle",size:"xs",class:"shrink-0",title:"Slowest step in this test"},{default:c(()=>[...z[5]||(z[5]=[p(" slowest ",-1)])]),_:1})):i("",!0)]),R.original.failed&&R.original.error?.message?(t(),a("p",Ti,l(R.original.error.message),1)):i("",!0),R.original.location?(t(),_(Yt,{key:1,location:R.original.location,"project-key":e(n)?.testRun?.project?.id,"project-name":e(n)?.testRun?.project?.name,class:"text-xs text-gray-400 dark:text-gray-500 mt-0.5"},null,8,["location","project-key","project-name"])):i("",!0)]),"duration-cell":c(({row:R})=>[o("div",Si,[o("div",Ii,[r(ie,{ms:R.original.duration,class:te(`text-sm ${G(R.original.duration)}`),"unit-class":"opacity-60"},null,8,["ms","class"]),D(R.original.duration)?(t(),a("span",Ri,l(D(R.original.duration)),1)):i("",!0)]),o("div",Li,[o("div",{class:te(["absolute inset-y-0 rounded-full",he(R.original.duration)]),style:$e(ae(R.original))},null,6)])])]),_:1},8,["data"])]),_:1})])):(t(),_(He,{key:2,icon:"i-lucide-list-checks",text:"No steps recorded for this execution"}))])]),"tab-artifacts":c(()=>[o("div",zi,[r(es,{traces:e(N)||[]},null,8,["traces"]),r(ts,{attachments:e(n)?.attachments??[]},null,8,["attachments"]),e(n)?.pageState?(t(),_(ft,{key:0,"storage-key":"case-page-state","page-state":e(n).pageState},null,8,["page-state"])):i("",!0),e(n)?.consoleLogs?.length?(t(),_(dt,{key:1,entries:e(n)?.consoleLogs??[]},null,8,["entries"])):i("",!0),e(P).length>0||e(u)?(t(),_(mt,{key:2,requests:e(P),"run-id":e(n)?.testRun?.id??null,"test-runs-case-id":Number(e(g)),"has-trace":e(u)},null,8,["requests","run-id","test-runs-case-id","has-trace"])):i("",!0),!e(N)?.length&&!e(n)?.attachments?.length&&!e(n)?.consoleLogs?.length&&!e(P).length?(t(),_(He,{key:3,icon:e(U)?"i-lucide-loader-circle":"i-lucide-inbox",text:e(U)?"Run in progress — traces and attachments appear here as soon as they are uploaded.":"No traces, console logs, or network requests captured for this test case."},null,8,["icon","text"])):i("",!0)])]),"tab-performance":c(()=>[o("div",ji,[e(S).length>0?(t(),a("div",Ni,[(t(!0),a(A,null,Y(e(S),(R,yt)=>(t(),a("div",{key:yt,class:te(["p-3 rounded-lg border",R.type==="warning"?"bg-amber-50 dark:bg-amber-900/20 border-amber-200 dark:border-amber-800":"bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800"])},[o("div",Di,[r(ve,{name:R.type==="warning"?"i-lucide-alert-triangle":"i-lucide-lightbulb",class:te([R.type==="warning"?"text-amber-600":"text-blue-600","size-4 mt-0.5 shrink-0"])},null,8,["name","class"]),o("div",null,[o("p",{class:te(R.type==="warning"?"text-amber-800 dark:text-amber-200 font-medium":"text-blue-800 dark:text-blue-200 font-medium")},l(R.message),3),o("p",{class:te([R.type==="warning"?"text-amber-700 dark:text-amber-300":"text-blue-700 dark:text-blue-300","mt-1"])},l(R.details),3)])])],2))),128))])):i("",!0),e(y)?(t(),_(ut,{key:1,icon:"i-lucide-gauge",title:"Browser performance (Web Vitals)",help:"case.web-vitals"},{default:c(()=>[o("div",Mi,[e(y).navigation?(t(),_(Ke,{key:0,"min-tile-width":"10rem"},{default:c(()=>[r(de,{label:"TTFB",hint:"Time to first byte","value-class":e(y).navigation.ttfb>600?"text-red-600":e(y).navigation.ttfb>200?"text-orange-500":"text-green-600"},{default:c(()=>[r(ie,{ms:e(y).navigation.ttfb},null,8,["ms"])]),_:1},8,["value-class"]),r(de,{label:"DOM Interactive",hint:"DOM interactive","value-class":e(y).navigation.domInteractive>3e3?"text-red-600":e(y).navigation.domInteractive>1500?"text-orange-500":"text-green-600"},{default:c(()=>[r(ie,{ms:e(y).navigation.domInteractive},null,8,["ms"])]),_:1},8,["value-class"]),r(de,{label:"DOMContentLoaded",hint:"DOMContentLoaded","value-class":e(y).navigation.domContentLoaded>3e3?"text-red-600":e(y).navigation.domContentLoaded>1500?"text-orange-500":"text-green-600"},{default:c(()=>[r(ie,{ms:e(y).navigation.domContentLoaded},null,8,["ms"])]),_:1},8,["value-class"]),r(de,{label:"Load Complete",hint:"Page fully loaded","value-class":e(y).navigation.loadComplete>5e3?"text-red-600":e(y).navigation.loadComplete>3e3?"text-orange-500":"text-green-600"},{default:c(()=>[r(ie,{ms:e(y).navigation.loadComplete},null,8,["ms"])]),_:1},8,["value-class"])]),_:1})):i("",!0),e(y).paint&&(e(y).paint.firstPaint||e(y).paint.firstContentfulPaint)?(t(),_(Ke,{key:1,"min-tile-width":"10rem",class:"pt-2 border-t"},{default:c(()=>[e(y).paint.firstPaint!==void 0?(t(),_(de,{key:0,label:"First Paint (FP)"},{default:c(()=>[r(ie,{ms:e(y).paint.firstPaint},null,8,["ms"])]),_:1})):i("",!0),e(y).paint.firstContentfulPaint!==void 0?(t(),_(de,{key:1,label:"First Contentful Paint (FCP)","value-class":e(y).paint.firstContentfulPaint>3e3?"text-red-600":e(y).paint.firstContentfulPaint>1800?"text-orange-500":"text-green-600"},{default:c(()=>[r(ie,{ms:e(y).paint.firstContentfulPaint},null,8,["ms"])]),_:1},8,["value-class"])):i("",!0)]),_:1})):i("",!0),e(y).vitals?(t(),_(Ke,{key:2,"min-tile-width":"10rem",class:"pt-2 border-t"},{default:c(()=>[r(de,{label:"Largest Contentful Paint (LCP)","value-class":e(y).vitals.lcp==null?"text-gray-400":e(y).vitals.lcp>4e3?"text-red-600":e(y).vitals.lcp>2500?"text-orange-500":"text-green-600"},{default:c(()=>[r(ie,{ms:e(y).vitals.lcp,fallback:"n/a"},null,8,["ms"])]),_:1},8,["value-class"]),r(de,{label:"Cumulative Layout Shift (CLS)",value:e(y).vitals.cls!=null?String(e(y).vitals.cls):"n/a","value-class":e(y).vitals.cls==null?"text-gray-400":e(y).vitals.cls>.25?"text-red-600":e(y).vitals.cls>.1?"text-orange-500":"text-green-600"},null,8,["value","value-class"]),r(de,{label:"Interaction to Next Paint (INP)","value-class":e(y).vitals.inp==null?"text-gray-400":e(y).vitals.inp>500?"text-red-600":e(y).vitals.inp>200?"text-orange-500":"text-green-600"},{default:c(()=>[r(ie,{ms:e(y).vitals.inp,fallback:"n/a"},null,8,["ms"])]),_:1},8,["value-class"])]),_:1})):i("",!0),e(y).navigation?.url?(t(),a("div",Ai,[z[6]||(z[6]=p(" Page: ",-1)),o("code",Pi,l(e(y).navigation.url),1)])):i("",!0)])]),_:1})):i("",!0),e(S).length===0&&!e(y)?(t(),_(ss,{key:2,icon:"i-lucide-gauge",title:"No performance hints or Web Vitals for this execution",text:"Web Vitals and step timing come from the Piwi capture fixtures — extend your Playwright test with piwiFixtures to collect them.",doc:"capture-fixtures"})):i("",!0)])]),"tab-history":c(()=>[o("div",Bi,[e(f)&&e(f).length>0?(t(),a("div",Ui,[r(as,{title:"Duration trend",icon:"i-lucide-trending-up",legend:e(_n)(e(kn))},{actions:c(()=>[e(n)?.testCaseId?(t(),_(Oe,{key:0,to:`/test-cases/${e(n).testCaseId}`,size:"xs",variant:"outline",color:"neutral","trailing-icon":"i-lucide-arrow-right"},{default:c(()=>[...z[7]||(z[7]=[p(" View full test history ",-1)])]),_:1},8,["to"])):i("",!0)]),default:c(()=>[r(ns,{data:e(f),height:200},null,8,["data"])]),_:1},8,["legend"]),r(gt,{"min-width":"44rem",bleed:!1},{default:c(()=>[r(pt,{data:e(f),columns:k,ui:{base:"table-fixed border-separate border-spacing-0 min-w-[44rem]",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"startTime-cell":c(({row:R})=>[o("span",Fi,[r(os,null,{default:c(()=>[o("span",{title:("prettyDateFormat"in m?m.prettyDateFormat:e(ln))(R.original.startTime)},l(("formatRelativeTime"in m?m.formatRelativeTime:e(Ce))(R.original.startTime)),9,Ei)]),_:2},1024)])]),"status-cell":c(({row:R})=>[r(Me,{color:("getStatusColor"in m?m.getStatusColor:e(rn))(R.original.status),variant:"subtle",class:"capitalize"},{default:c(()=>[p(l(("formatStatusLabel"in m?m.formatStatusLabel:e(St))(R.original.status)),1)]),_:2},1032,["color"])]),"duration-cell":c(({row:R})=>[R.original.duration!==null?(t(),_(ie,{key:0,ms:R.original.duration},null,8,["ms"])):(t(),a("span",Vi,"—"))]),"runId-cell":c(({row:R})=>[r(ue,{to:`/test-runs/${R.original.runId}`,class:"text-primary hover:underline"},{default:c(()=>[p(" #"+l(R.original.runId),1)]),_:2},1032,["to"])]),"error-cell":c(({row:R})=>[R.original.error?(t(),a("span",{key:0,class:"text-red-600 text-xs truncate max-w-xs block",title:R.original.error},l(R.original.error.length>80?`${R.original.error.substring(0,80)}…`:R.original.error),9,Oi)):i("",!0)]),_:1},8,["data"])]),_:1})])):(t(),_(He,{key:1,icon:"i-lucide-trending-up",text:"No prior executions of this test yet."},{default:c(()=>[...z[8]||(z[8]=[o("p",{class:"text-xs text-gray-400"}," This is the first recorded run. Once it runs again, its status and duration trend appear here. ",-1)])]),_:1}))])]),_:1},8,["modelValue","tab-items"])]),_:1})}}});export{Jl as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as l,T as o,o as u,e as p,f as d,U as f,V as n,b as i,W as _}from"./
|
|
1
|
+
import{d as l,T as o,o as u,e as p,f as d,U as f,V as n,b as i,W as _}from"./1QWBzxLM.js";var m=l({__name:"Label",props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"label"}},setup(r){const t=r;return o(),(s,a)=>(u(),p(i(_),n(t,{onMousedown:a[0]||(a[0]=e=>{!e.defaultPrevented&&e.detail>1&&e.preventDefault()})}),{default:d(()=>[f(s.$slots,"default")]),_:3},16))}}),v=m;export{v as L};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as T,T as P,o as u,e as v,f as n,U as q,$ as L,a0 as $,b as e,bD as V,c0 as O,Y as W,a as G,c1 as U,bs as J,v as b,r as N,Z as Y,C as I,aP as A,h as w,bC as Z,V as m,bR as Q,k as X,t as K,D as ee,bB as te,bL as E,bz as ae,c2 as re,bE as oe,ai as se,aA as le,bF as ne,ay as ie,W as ue,bW as de,bv as pe,a2 as fe,a3 as ce,a5 as ge,a6 as ve,a7 as ye,bG as be,l as x,bJ as _e,c as F,i as H,F as me,z as qe,c3 as Ce,b2 as R,a8 as he}from"./BdQ7kfxJ.js";var Te=T({__name:"TooltipArrow",props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"svg"}},setup(i){const d=i;return P(),(t,p)=>(u(),v(e(V),L($(d)),{default:n(()=>[q(t.$slots,"default")]),_:3},16))}}),we=Te;const z="tooltip.open",[S,Pe]=Y("TooltipRoot");var ke=T({__name:"TooltipRoot",props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},delayDuration:{type:Number,required:!1,default:void 0},disableHoverableContent:{type:Boolean,required:!1,default:void 0},disableClosingTrigger:{type:Boolean,required:!1,default:void 0},disabled:{type:Boolean,required:!1,default:void 0},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:void 0}},emits:["update:open"],setup(i,{emit:d}){const t=i,p=d;P();const r=O(),a=b(()=>t.disableHoverableContent??r.disableHoverableContent.value),g=b(()=>t.disableClosingTrigger??r.disableClosingTrigger.value),f=b(()=>t.disabled??r.disabled.value),y=b(()=>t.delayDuration??r.delayDuration.value),_=b(()=>t.ignoreNonKeyboardFocus??r.ignoreNonKeyboardFocus.value),o=W(t,"open",p,{defaultValue:t.defaultOpen,passive:t.open===void 0});G(o,B=>{r.onClose&&(B?(r.onOpen(),document.dispatchEvent(new CustomEvent(z))):r.onClose())});const s=N(!1),l=N(),C=b(()=>o.value?s.value?"delayed-open":"instant-open":"closed"),{start:D,stop:h}=U(()=>{s.value=!0,o.value=!0},y,{immediate:!1});function c(){h(),s.value=!1,o.value=!0}function k(){h(),o.value=!1}function M(){D()}return Pe({contentId:"",open:o,stateAttribute:C,trigger:l,onTriggerChange(B){l.value=B},onTriggerEnter(){r.isOpenDelayed.value?M():c()},onTriggerLeave(){a.value?k():h()},onOpen:c,onClose:k,disableHoverableContent:a,disableClosingTrigger:g,disabled:f,ignoreNonKeyboardFocus:_}),(B,Ae)=>(u(),v(e(J),null,{default:n(()=>[q(B.$slots,"default",{open:e(o)})]),_:3}))}}),Be=ke,Oe=T({__name:"TooltipContentImpl",props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1,default:void 0},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1,default:void 0},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1,default:void 0},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:["escapeKeyDown","pointerDownOutside"],setup(i,{emit:d}){const t=i,p=d,r=S(),a=O(),{forwardRef:g,currentElement:f}=P(),y=b(()=>t.ariaLabel||f.value?.textContent),_=b(()=>{const{ariaLabel:o,...s}=t;return E(s,a.content.value??{},{side:"top",sideOffset:0,align:"center",avoidCollisions:!0,collisionBoundary:[],collisionPadding:0,arrowPadding:0,sticky:"partial",hideWhenDetached:!1})});return I(()=>{A(window,"scroll",o=>{o.target?.contains(r.trigger.value)&&r.onClose()},{capture:!0}),A(window,z,r.onClose)}),(o,s)=>(u(),v(e(te),{"as-child":"","disable-outside-pointer-events":!1,onEscapeKeyDown:s[0]||(s[0]=l=>p("escapeKeyDown",l)),onPointerDownOutside:s[1]||(s[1]=l=>{e(r).disableClosingTrigger.value&&e(r).trigger.value?.contains(l.target)&&l.preventDefault(),p("pointerDownOutside",l)}),onFocusOutside:s[2]||(s[2]=ee(()=>{},["prevent"])),onDismiss:s[3]||(s[3]=l=>e(r).onClose())},{default:n(()=>[w(e(Z),m({ref:e(g),"data-state":e(r).stateAttribute.value},{...o.$attrs,..._.value},{style:{"--reka-tooltip-content-transform-origin":"var(--reka-popper-transform-origin)","--reka-tooltip-content-available-width":"var(--reka-popper-available-width)","--reka-tooltip-content-available-height":"var(--reka-popper-available-height)","--reka-tooltip-trigger-width":"var(--reka-popper-anchor-width)","--reka-tooltip-trigger-height":"var(--reka-popper-anchor-height)"}}),{default:n(()=>[q(o.$slots,"default"),w(e(Q),{id:e(r).contentId,role:"tooltip"},{default:n(()=>[X(K(y.value),1)]),_:1},8,["id"])]),_:3},16,["data-state"])]),_:3}))}}),j=Oe,De=T({__name:"TooltipContentHoverable",props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},setup(i){const t=ae(i),{forwardRef:p,currentElement:r}=P(),{trigger:a,onClose:g}=S(),f=O(),{isPointerInTransit:y,onPointerExit:_}=re(a,r);return f.isPointerInTransitRef=y,_(()=>{g()}),(o,s)=>(u(),v(j,m({ref:e(p)},e(t)),{default:n(()=>[q(o.$slots,"default")]),_:3},16))}}),xe=De,Ne=T({__name:"TooltipContent",props:{forceMount:{type:Boolean,required:!1},ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:["escapeKeyDown","pointerDownOutside"],setup(i,{emit:d}){const t=i,p=d,r=S(),a=oe(t,p),{forwardRef:g}=P();return(f,y)=>(u(),v(e(le),{present:f.forceMount||e(r).open.value},{default:n(()=>[(u(),v(se(e(r).disableHoverableContent.value?j:xe),m({ref:e(g)},e(a)),{default:n(()=>[q(f.$slots,"default")]),_:3},16))]),_:3},8,["present"]))}}),Se=Ne,Fe=T({__name:"TooltipPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(i){const d=i;return(t,p)=>(u(),v(e(ne),L($(d)),{default:n(()=>[q(t.$slots,"default")]),_:3},16))}}),Re=Fe,Ee=T({__name:"TooltipTrigger",props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(i){const d=i,t=S(),p=O();t.contentId||=ie(void 0,"reka-tooltip-content");const{forwardRef:r,currentElement:a}=P(),g=N(!1),f=N(!1),y=b(()=>t.disabled.value?{}:{click:h,focus:C,pointermove:s,pointerleave:l,pointerdown:o,blur:D});I(()=>{t.onTriggerChange(a.value)});function _(){setTimeout(()=>{g.value=!1},1)}function o(){t.open&&!t.disableClosingTrigger.value&&t.onClose(),g.value=!0,document.addEventListener("pointerup",_,{once:!0})}function s(c){c.pointerType!=="touch"&&!f.value&&!p.isPointerInTransitRef.value&&(t.onTriggerEnter(),f.value=!0)}function l(){t.onTriggerLeave(),f.value=!1}function C(c){g.value||t.ignoreNonKeyboardFocus.value&&!c.target.matches?.(":focus-visible")||t.onOpen()}function D(){t.onClose()}function h(){t.disableClosingTrigger.value||t.onClose()}return(c,k)=>(u(),v(e(pe),{"as-child":"",reference:c.reference},{default:n(()=>[w(e(ue),m({ref:e(r),"aria-describedby":e(t).open.value?e(t).contentId:void 0,"data-state":e(t).stateAttribute.value,as:c.as,"as-child":d.asChild,"data-grace-area-trigger":""},de(y.value)),{default:n(()=>[q(c.$slots,"default")]),_:3},16,["aria-describedby","data-state","as","as-child"])]),_:3},8,["reference"]))}}),Le=Ee;const $e={slots:{content:"flex items-center gap-1 bg-default text-highlighted shadow-sm rounded-sm ring ring-default h-6 px-2.5 py-1 text-xs select-none data-[state=delayed-open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-tooltip-content-transform-origin) pointer-events-auto",arrow:"fill-bg stroke-default",text:"truncate",kbds:"hidden lg:inline-flex items-center shrink-0 gap-0.5 not-first-of-type:before:content-['·'] not-first-of-type:before:me-0.5",kbdsSize:"sm"}},Ie={__name:"UTooltip",props:{text:{type:String,required:!1},kbds:{type:Array,required:!1},content:{type:Object,required:!1},arrow:{type:[Boolean,Object],required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},reference:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultOpen:{type:Boolean,required:!1},open:{type:Boolean,required:!1},delayDuration:{type:Number,required:!1},disableHoverableContent:{type:Boolean,required:!1},disableClosingTrigger:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},ignoreNonKeyboardFocus:{type:Boolean,required:!1}},emits:["update:open"],setup(i,{emit:d}){const t=i,p=d,r=fe(),a=ce("tooltip",t),g=ge(),f=O(),y=ve(ye(a,"defaultOpen","open","delayDuration","disableHoverableContent","disableClosingTrigger","ignoreNonKeyboardFocus"),p),_=be(R(()=>a.portal)),o=R(()=>E(a.content,f.content.value,{side:"bottom",sideOffset:8,collisionPadding:8})),s=R(()=>E(a.arrow,{rounded:!0})),l=b(()=>he({extend:$e,...g.ui?.tooltip||{}})({side:o.value.side}));return(C,D)=>(u(),v(e(Be),m(e(y),{disabled:!(e(a).text||e(a).kbds?.length||r.content)||e(a).disabled}),{default:n(({open:h})=>[r.default||e(a).reference?(u(),v(e(Le),m({key:0},C.$attrs,{"as-child":"",reference:e(a).reference,class:e(a).class}),{default:n(()=>[q(C.$slots,"default",{open:h})]),_:2},1040,["reference","class"])):x("",!0),w(e(Re),L($(e(_))),{default:n(()=>[w(e(_e),null,{default:n(()=>[w(e(Se),m(o.value,{"data-slot":"content",class:l.value.content({class:[!r.default&&e(a).class,e(a).ui?.content]})}),{default:n(()=>[q(C.$slots,"content",{ui:l.value},()=>[e(a).text?(u(),F("span",{key:0,"data-slot":"text",class:H(l.value.text({class:e(a).ui?.text}))},K(e(a).text),3)):x("",!0),e(a).kbds?.length?(u(),F("span",{key:1,"data-slot":"kbds",class:H(l.value.kbds({class:e(a).ui?.kbds}))},[(u(!0),F(me,null,qe(e(a).kbds,(c,k)=>(u(),v(Ce,m({key:k,size:e(a).ui?.kbdsSize||l.value.kbdsSize()},{ref_for:!0},typeof c=="string"?{value:c}:c),null,16,["size"]))),128))],2)):x("",!0)]),e(a).arrow?(u(),v(e(we),m({key:0},s.value,{"data-slot":"arrow",class:l.value.arrow({class:e(a).ui?.arrow})}),null,16,["class"])):x("",!0)]),_:3},16,["class"])]),_:3})]),_:3},16)]),_:3},16,["disabled"]))}};export{Ie as _};
|
|
1
|
+
import{d as T,T as P,o as u,e as v,f as n,U as q,$ as L,a0 as $,b as e,bD as V,c0 as O,Y as W,a as G,c1 as U,bs as J,v as b,r as N,Z as Y,C as I,aP as A,h as w,bC as Z,V as m,bR as Q,k as X,t as K,D as ee,bB as te,bL as E,bz as ae,c2 as re,bE as oe,ai as se,aA as le,bF as ne,ay as ie,W as ue,bW as de,bv as pe,a2 as fe,a3 as ce,a5 as ge,a6 as ve,a7 as ye,bG as be,l as x,bJ as _e,c as F,i as H,F as me,z as qe,c3 as Ce,b2 as R,a8 as he}from"./1QWBzxLM.js";var Te=T({__name:"TooltipArrow",props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"svg"}},setup(i){const d=i;return P(),(t,p)=>(u(),v(e(V),L($(d)),{default:n(()=>[q(t.$slots,"default")]),_:3},16))}}),we=Te;const z="tooltip.open",[S,Pe]=Y("TooltipRoot");var ke=T({__name:"TooltipRoot",props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},delayDuration:{type:Number,required:!1,default:void 0},disableHoverableContent:{type:Boolean,required:!1,default:void 0},disableClosingTrigger:{type:Boolean,required:!1,default:void 0},disabled:{type:Boolean,required:!1,default:void 0},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:void 0}},emits:["update:open"],setup(i,{emit:d}){const t=i,p=d;P();const r=O(),a=b(()=>t.disableHoverableContent??r.disableHoverableContent.value),g=b(()=>t.disableClosingTrigger??r.disableClosingTrigger.value),f=b(()=>t.disabled??r.disabled.value),y=b(()=>t.delayDuration??r.delayDuration.value),_=b(()=>t.ignoreNonKeyboardFocus??r.ignoreNonKeyboardFocus.value),o=W(t,"open",p,{defaultValue:t.defaultOpen,passive:t.open===void 0});G(o,B=>{r.onClose&&(B?(r.onOpen(),document.dispatchEvent(new CustomEvent(z))):r.onClose())});const s=N(!1),l=N(),C=b(()=>o.value?s.value?"delayed-open":"instant-open":"closed"),{start:D,stop:h}=U(()=>{s.value=!0,o.value=!0},y,{immediate:!1});function c(){h(),s.value=!1,o.value=!0}function k(){h(),o.value=!1}function M(){D()}return Pe({contentId:"",open:o,stateAttribute:C,trigger:l,onTriggerChange(B){l.value=B},onTriggerEnter(){r.isOpenDelayed.value?M():c()},onTriggerLeave(){a.value?k():h()},onOpen:c,onClose:k,disableHoverableContent:a,disableClosingTrigger:g,disabled:f,ignoreNonKeyboardFocus:_}),(B,Ae)=>(u(),v(e(J),null,{default:n(()=>[q(B.$slots,"default",{open:e(o)})]),_:3}))}}),Be=ke,Oe=T({__name:"TooltipContentImpl",props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1,default:void 0},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1,default:void 0},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1,default:void 0},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:["escapeKeyDown","pointerDownOutside"],setup(i,{emit:d}){const t=i,p=d,r=S(),a=O(),{forwardRef:g,currentElement:f}=P(),y=b(()=>t.ariaLabel||f.value?.textContent),_=b(()=>{const{ariaLabel:o,...s}=t;return E(s,a.content.value??{},{side:"top",sideOffset:0,align:"center",avoidCollisions:!0,collisionBoundary:[],collisionPadding:0,arrowPadding:0,sticky:"partial",hideWhenDetached:!1})});return I(()=>{A(window,"scroll",o=>{o.target?.contains(r.trigger.value)&&r.onClose()},{capture:!0}),A(window,z,r.onClose)}),(o,s)=>(u(),v(e(te),{"as-child":"","disable-outside-pointer-events":!1,onEscapeKeyDown:s[0]||(s[0]=l=>p("escapeKeyDown",l)),onPointerDownOutside:s[1]||(s[1]=l=>{e(r).disableClosingTrigger.value&&e(r).trigger.value?.contains(l.target)&&l.preventDefault(),p("pointerDownOutside",l)}),onFocusOutside:s[2]||(s[2]=ee(()=>{},["prevent"])),onDismiss:s[3]||(s[3]=l=>e(r).onClose())},{default:n(()=>[w(e(Z),m({ref:e(g),"data-state":e(r).stateAttribute.value},{...o.$attrs,..._.value},{style:{"--reka-tooltip-content-transform-origin":"var(--reka-popper-transform-origin)","--reka-tooltip-content-available-width":"var(--reka-popper-available-width)","--reka-tooltip-content-available-height":"var(--reka-popper-available-height)","--reka-tooltip-trigger-width":"var(--reka-popper-anchor-width)","--reka-tooltip-trigger-height":"var(--reka-popper-anchor-height)"}}),{default:n(()=>[q(o.$slots,"default"),w(e(Q),{id:e(r).contentId,role:"tooltip"},{default:n(()=>[X(K(y.value),1)]),_:1},8,["id"])]),_:3},16,["data-state"])]),_:3}))}}),j=Oe,De=T({__name:"TooltipContentHoverable",props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},setup(i){const t=ae(i),{forwardRef:p,currentElement:r}=P(),{trigger:a,onClose:g}=S(),f=O(),{isPointerInTransit:y,onPointerExit:_}=re(a,r);return f.isPointerInTransitRef=y,_(()=>{g()}),(o,s)=>(u(),v(j,m({ref:e(p)},e(t)),{default:n(()=>[q(o.$slots,"default")]),_:3},16))}}),xe=De,Ne=T({__name:"TooltipContent",props:{forceMount:{type:Boolean,required:!1},ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:["escapeKeyDown","pointerDownOutside"],setup(i,{emit:d}){const t=i,p=d,r=S(),a=oe(t,p),{forwardRef:g}=P();return(f,y)=>(u(),v(e(le),{present:f.forceMount||e(r).open.value},{default:n(()=>[(u(),v(se(e(r).disableHoverableContent.value?j:xe),m({ref:e(g)},e(a)),{default:n(()=>[q(f.$slots,"default")]),_:3},16))]),_:3},8,["present"]))}}),Se=Ne,Fe=T({__name:"TooltipPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(i){const d=i;return(t,p)=>(u(),v(e(ne),L($(d)),{default:n(()=>[q(t.$slots,"default")]),_:3},16))}}),Re=Fe,Ee=T({__name:"TooltipTrigger",props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(i){const d=i,t=S(),p=O();t.contentId||=ie(void 0,"reka-tooltip-content");const{forwardRef:r,currentElement:a}=P(),g=N(!1),f=N(!1),y=b(()=>t.disabled.value?{}:{click:h,focus:C,pointermove:s,pointerleave:l,pointerdown:o,blur:D});I(()=>{t.onTriggerChange(a.value)});function _(){setTimeout(()=>{g.value=!1},1)}function o(){t.open&&!t.disableClosingTrigger.value&&t.onClose(),g.value=!0,document.addEventListener("pointerup",_,{once:!0})}function s(c){c.pointerType!=="touch"&&!f.value&&!p.isPointerInTransitRef.value&&(t.onTriggerEnter(),f.value=!0)}function l(){t.onTriggerLeave(),f.value=!1}function C(c){g.value||t.ignoreNonKeyboardFocus.value&&!c.target.matches?.(":focus-visible")||t.onOpen()}function D(){t.onClose()}function h(){t.disableClosingTrigger.value||t.onClose()}return(c,k)=>(u(),v(e(pe),{"as-child":"",reference:c.reference},{default:n(()=>[w(e(ue),m({ref:e(r),"aria-describedby":e(t).open.value?e(t).contentId:void 0,"data-state":e(t).stateAttribute.value,as:c.as,"as-child":d.asChild,"data-grace-area-trigger":""},de(y.value)),{default:n(()=>[q(c.$slots,"default")]),_:3},16,["aria-describedby","data-state","as","as-child"])]),_:3},8,["reference"]))}}),Le=Ee;const $e={slots:{content:"flex items-center gap-1 bg-default text-highlighted shadow-sm rounded-sm ring ring-default h-6 px-2.5 py-1 text-xs select-none data-[state=delayed-open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-tooltip-content-transform-origin) pointer-events-auto",arrow:"fill-bg stroke-default",text:"truncate",kbds:"hidden lg:inline-flex items-center shrink-0 gap-0.5 not-first-of-type:before:content-['·'] not-first-of-type:before:me-0.5",kbdsSize:"sm"}},Ie={__name:"UTooltip",props:{text:{type:String,required:!1},kbds:{type:Array,required:!1},content:{type:Object,required:!1},arrow:{type:[Boolean,Object],required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},reference:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultOpen:{type:Boolean,required:!1},open:{type:Boolean,required:!1},delayDuration:{type:Number,required:!1},disableHoverableContent:{type:Boolean,required:!1},disableClosingTrigger:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},ignoreNonKeyboardFocus:{type:Boolean,required:!1}},emits:["update:open"],setup(i,{emit:d}){const t=i,p=d,r=fe(),a=ce("tooltip",t),g=ge(),f=O(),y=ve(ye(a,"defaultOpen","open","delayDuration","disableHoverableContent","disableClosingTrigger","ignoreNonKeyboardFocus"),p),_=be(R(()=>a.portal)),o=R(()=>E(a.content,f.content.value,{side:"bottom",sideOffset:8,collisionPadding:8})),s=R(()=>E(a.arrow,{rounded:!0})),l=b(()=>he({extend:$e,...g.ui?.tooltip||{}})({side:o.value.side}));return(C,D)=>(u(),v(e(Be),m(e(y),{disabled:!(e(a).text||e(a).kbds?.length||r.content)||e(a).disabled}),{default:n(({open:h})=>[r.default||e(a).reference?(u(),v(e(Le),m({key:0},C.$attrs,{"as-child":"",reference:e(a).reference,class:e(a).class}),{default:n(()=>[q(C.$slots,"default",{open:h})]),_:2},1040,["reference","class"])):x("",!0),w(e(Re),L($(e(_))),{default:n(()=>[w(e(_e),null,{default:n(()=>[w(e(Se),m(o.value,{"data-slot":"content",class:l.value.content({class:[!r.default&&e(a).class,e(a).ui?.content]})}),{default:n(()=>[q(C.$slots,"content",{ui:l.value},()=>[e(a).text?(u(),F("span",{key:0,"data-slot":"text",class:H(l.value.text({class:e(a).ui?.text}))},K(e(a).text),3)):x("",!0),e(a).kbds?.length?(u(),F("span",{key:1,"data-slot":"kbds",class:H(l.value.kbds({class:e(a).ui?.kbds}))},[(u(!0),F(me,null,qe(e(a).kbds,(c,k)=>(u(),v(Ce,m({key:k,size:e(a).ui?.kbdsSize||l.value.kbdsSize()},{ref_for:!0},typeof c=="string"?{value:c}:c),null,16,["size"]))),128))],2)):x("",!0)]),e(a).arrow?(u(),v(e(we),m({key:0},s.value,{"data-slot":"arrow",class:l.value.arrow({class:e(a).ui?.arrow})}),null,16,["class"])):x("",!0)]),_:3},16,["class"])]),_:3})]),_:3},16)]),_:3},16,["disabled"]))}};export{Ie as _};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as m,a as h,o as l,e as o,V as p,bR as g,bf as E,v as d,c as f,l as B,F as c,z as V}from"./
|
|
1
|
+
import{d as m,a as h,o as l,e as o,V as p,bR as g,bf as E,v as d,c as f,l as B,F as c,z as V}from"./1QWBzxLM.js";var k=m({inheritAttrs:!1,__name:"VisuallyHiddenInputBubble",props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:"fully-hidden"}},setup(i){const e=i,{primitiveElement:s,currentElement:n}=E(),t=d(()=>e.checked??e.value);return h(t,(a,r)=>{if(!n.value)return;const u=n.value,b=window.HTMLInputElement.prototype,v=Object.getOwnPropertyDescriptor(b,"value").set;if(v&&a!==r){const _=new Event("input",{bubbles:!0}),q=new Event("change",{bubbles:!0});v.call(u,a),u.dispatchEvent(_),u.dispatchEvent(q)}}),(a,r)=>(l(),o(g,p({ref_key:"primitiveElement",ref:s},{...e,...a.$attrs},{as:"input"}),null,16))}}),y=k,A=m({inheritAttrs:!1,__name:"VisuallyHiddenInput",props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:"fully-hidden"}},setup(i){const e=i,s=d(()=>typeof e.value=="object"&&Array.isArray(e.value)&&e.value.length===0&&e.required),n=d(()=>typeof e.value=="string"||typeof e.value=="number"||typeof e.value=="boolean"||e.value===null||e.value===void 0?[{name:e.name,value:e.value}]:typeof e.value=="object"&&Array.isArray(e.value)?e.value.flatMap((t,a)=>typeof t=="object"?Object.entries(t).map(([r,u])=>({name:`${e.name}[${a}][${r}]`,value:u})):{name:`${e.name}[${a}]`,value:t}):e.value!==null&&typeof e.value=="object"&&!Array.isArray(e.value)?Object.entries(e.value).map(([t,a])=>({name:`${e.name}[${t}]`,value:a})):[]);return(t,a)=>(l(),f(c,null,[B(" We render single input if it's required "),s.value?(l(),o(y,p({key:t.name},{...e,...t.$attrs},{name:t.name,value:t.value}),null,16,["name","value"])):(l(!0),f(c,{key:1},V(n.value,r=>(l(),o(y,p({key:r.name},{ref_for:!0},{...e,...t.$attrs},{name:r.name,value:r.value}),null,16,["name","value"]))),128))],2112))}}),I=A;export{I as V};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{am as o,q as v,C as y,a as _,r as f,ab as u}from"./
|
|
1
|
+
import{am as o,q as v,C as y,a as _,r as f,ab as u}from"./1QWBzxLM.js";import{e as k}from"./D4mPjHHR.js";async function w(){const t=o();return t?await t.invoke("desktop_pick_folder"):null}async function C(t){const e=o();if(!e||!t)return null;try{return await e.invoke("desktop_inspect_folder",{path:t})}catch{return null}}function m(t){return!!t&&t.exists&&t.playwrightConfig!=null&&t.playwrightInstalled&&t.reporterInstalled&&t.reporterConfigured}async function h(t){const e=o();if(!e||t==null||t==="")return null;try{return await e.invoke("desktop_get_project_link",{projectId:String(t)})}catch{return null}}async function D(t,e){const r=o();if(!r)throw new Error("not running inside the desktop shell");await r.invoke("desktop_set_project_link",{projectId:String(t),path:e})}function L(t){const e=v(),r=f(!1),c=f(null),l=f(!1);async function s(){c.value=await h(u(t))}y(()=>{r.value=!!o(),r.value&&s()}),_(()=>u(t),()=>{r.value&&s()});async function d(){const i=o(),n=u(t);if(!i||n==null||n==="")return!1;l.value=!0;try{const a=await w();return a?(await i.invoke("desktop_set_project_link",{projectId:String(n),path:a}),await s(),!0):!1}catch(a){return e.add({title:"Could not link the folder",description:k(a),color:"error"}),!1}finally{l.value=!1}}async function p(){const i=o(),n=u(t);if(!(!i||n==null||n==="")){l.value=!0;try{await i.invoke("desktop_set_project_link",{projectId:String(n),path:null}),c.value=null}catch(a){e.add({title:"Could not unlink the folder",description:k(a),color:"error"})}finally{l.value=!1}}}return{available:r,link:c,busy:l,refresh:s,pickAndLink:d,unlink:p}}export{C as a,h as g,m as i,w as p,D as s,L as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as $,g as B}from"./
|
|
1
|
+
import{_ as $,g as B}from"./Dx41arC8.js";import{d as f,o,c as s,a1 as T,g as i,h as _,t as x,m as z,f as L,k as N,l as p,F as y,z as O,b as t,e as S,aj as V,v as j}from"./1QWBzxLM.js";import{u as D}from"./CkhOMiiO.js";const F={class:"p-2 text-sm text-gray-900 dark:text-gray-100 space-y-1"},A={class:"text-xs text-muted"},H={key:0,class:"text-xs"},U={key:1,class:"text-xs text-muted"},E=f({__name:"ChartMarkerTooltip",props:{marker:{},pos:{}},setup(e){return(g,d)=>{const m=$,u=z;return e.marker?(o(),s("div",{key:0,class:"fixed z-50 pointer-events-none bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 max-w-[260px]",style:T({left:`${e.pos.x}px`,top:`${e.pos.y}px`})},[i("div",F,[_(m,{marker:e.marker},null,8,["marker"]),i("div",A,x(new Date(e.marker.occurredAt).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})),1),e.marker.environment?(o(),s("div",H,[_(u,{color:"neutral",variant:"subtle",size:"xs"},{default:L(()=>[N(x(e.marker.environment),1)]),_:1})])):p("",!0),e.marker.description?(o(),s("p",U,x(e.marker.description),1)):p("",!0)])],4)):p("",!0)}}}),q=Object.assign(E,{__name:"ChartMarkerTooltip"}),G=["x1","x2","y2","stroke","stroke-width","opacity"],I=["cx","r","fill","onClick","onMouseenter"],J=f({__name:"ChartMarkerLines",props:{markers:{},xOf:{type:Function},plotHeight:{}},emits:["marker-click"],setup(e,{emit:g}){const d=e,m=g,u=j(()=>d.markers.map(r=>({marker:r,x:d.xOf(r.occurredAt),color:B(r.category).hex})).filter(r=>r.x!=null)),{data:c,pos:v,show:C,move:M,hide:b}=D();return(r,l)=>{const w=q;return o(),s(y,null,[i("g",null,[(o(!0),s(y,null,O(t(u),({marker:n,x:k,color:h})=>(o(),s("g",{key:n.id},[i("line",{x1:k,x2:k,y1:0,y2:e.plotHeight,stroke:h,"stroke-width":t(c)?.id===n.id?2:1.5,"stroke-dasharray":"4 3",opacity:t(c)?.id===n.id?1:.75,class:"pointer-events-none"},null,8,G),i("circle",{cx:k,cy:0,r:t(c)?.id===n.id?6:4,fill:h,stroke:"#fff","stroke-width":"1.5",class:"cursor-pointer",onClick:a=>m("marker-click",n.id),onMouseenter:a=>t(C)(a,n),onMousemove:l[0]||(l[0]=a=>t(M)(a)),onMouseleave:l[1]||(l[1]=a=>t(b)())},null,40,I)]))),128))]),(o(),S(V,{to:"body"},[_(w,{marker:t(c),pos:t(v)},null,8,["marker","pos"])]))],64)}}}),R=Object.assign(J,{__name:"ChartMarkerLines"});export{R as _};
|