@piwitests/server 0.18.2 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{Dwws9U0D.js → -f7BAm1H.js} +1 -1
- package/.output/public/_nuxt/{BjCHB89N.js → 4gYNA-d4.js} +1 -1
- package/.output/public/_nuxt/5A6ITZXj.js +1 -0
- package/.output/public/_nuxt/8PUUncmO.js +44 -0
- package/.output/public/_nuxt/A1pj0VnG.js +1 -0
- package/.output/public/_nuxt/{DZ3Vfcpz.js → AbmKWFQQ.js} +1 -1
- package/.output/public/_nuxt/B3obW6cw.js +3 -0
- package/.output/public/_nuxt/{QmMoMxLM.js → B7FTvFWq.js} +3 -3
- package/.output/public/_nuxt/{DXbPFI1d.js → B8zkOmwo.js} +1 -1
- package/.output/public/_nuxt/B96M2gdj.js +1 -0
- package/.output/public/_nuxt/{BFP6M-20.js → B99fbi73.js} +1 -1
- package/.output/public/_nuxt/{DD5HpaW9.js → B9OLmp0f.js} +1 -1
- package/.output/public/_nuxt/BKkF4pPD.js +1 -0
- package/.output/public/_nuxt/BT3wGCTI.js +1 -0
- package/.output/public/_nuxt/BUa0V0Ly.js +1 -0
- package/.output/public/_nuxt/BUkim3TM.js +1 -0
- package/.output/public/_nuxt/BVc14Ncz.js +4 -0
- package/.output/public/_nuxt/BY0HxR3t.js +17 -0
- package/.output/public/_nuxt/B_xAMWQS.js +2 -0
- package/.output/public/_nuxt/BdQoBaOv.js +1 -0
- package/.output/public/_nuxt/{Cng9gj7q.js → BdfhYr-u.js} +1 -1
- package/.output/public/_nuxt/BgRu_3tT.js +1 -0
- package/.output/public/_nuxt/{BBK2-Krn.js → BiO7RBWb.js} +2 -2
- package/.output/public/_nuxt/BicAJ6U8.js +1 -0
- package/.output/public/_nuxt/BjaRappk.js +1 -0
- package/.output/public/_nuxt/Bm62iDV5.js +1 -0
- package/.output/public/_nuxt/{C9YzQCiq.js → BmUfSNMV.js} +1 -1
- package/.output/public/_nuxt/Bnxf8nbZ.js +1 -0
- package/.output/public/_nuxt/{CsUoYK75.js → Bow4tTR0.js} +1 -1
- package/.output/public/_nuxt/{B2oUeBbA.js → BrQEE053.js} +1 -1
- package/.output/public/_nuxt/BzRRzmwm.js +1 -0
- package/.output/public/_nuxt/{CN1mJlvD.js → C0_yH0N7.js} +1 -1
- package/.output/public/_nuxt/C1gTN4Q8.js +1 -0
- package/.output/public/_nuxt/{CNMoZYMv.js → C2hkrSey.js} +1 -1
- package/.output/public/_nuxt/{rTvJTef_.js → C8e1EbJI.js} +1 -1
- package/.output/public/_nuxt/CA9B2HE5.js +1 -0
- package/.output/public/_nuxt/{oFM1KLWA.js → CAAwCT7H.js} +1 -1
- package/.output/public/_nuxt/{qpI-_f9Q.js → CAvY22RE.js} +1 -1
- package/.output/public/_nuxt/{BLIRKrbM.js → CEfS4-oS.js} +4 -4
- package/.output/public/_nuxt/CIoSMkpp.js +1 -0
- package/.output/public/_nuxt/{hH1UFE3Z.js → CIrFl3MW.js} +1 -1
- package/.output/public/_nuxt/CJFtzlQ4.js +1 -0
- package/.output/public/_nuxt/{hgHc4teu.js → CNyV9YpI.js} +1 -1
- package/.output/public/_nuxt/CSJ-eOQM.js +1 -0
- package/.output/public/_nuxt/CTU1mrhq.js +1 -0
- package/.output/public/_nuxt/CXEH9OPk.js +1 -0
- package/.output/public/_nuxt/CahpB9Z2.js +5 -0
- package/.output/public/_nuxt/{C8OCrfDP.js → Cbh--1MW.js} +1 -1
- package/.output/public/_nuxt/CeG9pBAD.js +1 -0
- package/.output/public/_nuxt/{DBtBvrYc.js → CeW8v31b.js} +1 -1
- package/.output/public/_nuxt/{DZUgX70W.js → CjPfj7ya.js} +1 -1
- package/.output/public/_nuxt/Cnsmicv2.js +79 -0
- package/.output/public/_nuxt/CsLojMwR.js +1 -0
- package/.output/public/_nuxt/{BXY_PWcx.js → Cus22Ud3.js} +2 -2
- package/.output/public/_nuxt/{4TxgDGVa.js → CwGWJbiy.js} +1 -1
- package/.output/public/_nuxt/Cx6gc2VW.js +1 -0
- package/.output/public/_nuxt/{B1X__ilH.js → CxyAzHr3.js} +1 -1
- package/.output/public/_nuxt/{BJtlcTrb.js → CzAPFPpL.js} +1 -1
- package/.output/public/_nuxt/D--H4jLI.js +1 -0
- package/.output/public/_nuxt/D-c8ZSws.js +1 -0
- package/.output/public/_nuxt/D1POo6S4.js +10 -0
- package/.output/public/_nuxt/D5tke0B5.js +1 -0
- package/.output/public/_nuxt/D8nkF-OO.js +3 -0
- package/.output/public/_nuxt/DA25RkyK.js +1 -0
- package/.output/public/_nuxt/{DZ1zNBVM.js → DIB-5fUJ.js} +1 -1
- package/.output/public/_nuxt/DJmoLeVt.js +1 -0
- package/.output/public/_nuxt/DJxlKFGb.js +1 -0
- package/.output/public/_nuxt/DMec-OLo.js +1 -0
- package/.output/public/_nuxt/DPCxhHri.js +1 -0
- package/.output/public/_nuxt/{By4YL7mx.js → DSqHUrvO.js} +1 -1
- package/.output/public/_nuxt/DabzhQB1.js +1 -0
- package/.output/public/_nuxt/{D5oNv2cB.js → DdwHkKfV.js} +1 -1
- package/.output/public/_nuxt/{CfOLBbW9.js → DeY2JkR2.js} +1 -1
- package/.output/public/_nuxt/{CPLJeOCb.js → DfgOx_ou.js} +1 -1
- package/.output/public/_nuxt/DmkUdSS4.js +1 -0
- package/.output/public/_nuxt/{CUvGJXY3.js → DoIREDVb.js} +1 -1
- package/.output/public/_nuxt/DpZ1r1HA.js +1 -0
- package/.output/public/_nuxt/{BOCwBVnz.js → Dpd16JVI.js} +1 -1
- package/.output/public/_nuxt/DqcKngf3.js +1 -0
- package/.output/public/_nuxt/{xqiPI_FQ.js → DrfE8IY0.js} +1 -1
- package/.output/public/_nuxt/{BeFDVhpA.js → DsesNydr.js} +1 -1
- package/.output/public/_nuxt/{D0cnIs93.js → DtHJgCS8.js} +1 -1
- package/.output/public/_nuxt/Dtd4rC58.js +9 -0
- package/.output/public/_nuxt/Du2W7Jne.js +254 -0
- package/.output/public/_nuxt/DuwtTfO8.js +2 -0
- package/.output/public/_nuxt/Dy-TJ0Mt.js +1 -0
- package/.output/public/_nuxt/{BlnwU1OO.js → Dy86h-7P.js} +1 -1
- package/.output/public/_nuxt/{B-IcwqZ2.js → Dyeqn3aG.js} +1 -1
- package/.output/public/_nuxt/{BlA8mIS-.js → FaFoMVKo.js} +1 -1
- package/.output/public/_nuxt/GPNI1ffD.js +4 -0
- package/.output/public/_nuxt/{DWowvnwc.js → H94BMf3L.js} +1 -1
- package/.output/public/_nuxt/HPNQD6v3.js +1 -0
- package/.output/public/_nuxt/HXadJrHu.js +2 -0
- package/.output/public/_nuxt/KyA_4Ks-.js +1 -0
- package/.output/public/_nuxt/{e7zD3uJ0.js → L3kAWB2a.js} +1 -1
- package/.output/public/_nuxt/McL25vkx.js +34 -0
- package/.output/public/_nuxt/Nn93e_Mz.js +1 -0
- package/.output/public/_nuxt/TagBadge.By1E6r4y.css +1 -0
- package/.output/public/_nuxt/UdR3DBPS.js +1 -0
- package/.output/public/_nuxt/Und3xXFc.js +5 -0
- package/.output/public/_nuxt/_mj6CfPa.js +1 -0
- package/.output/public/_nuxt/b-GYfcrQ.js +1 -0
- package/.output/public/_nuxt/bLcjFslv.js +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/e659b3e1-0e61-4971-940e-10063f9f4763.json +1 -0
- package/.output/public/_nuxt/entry.DmptwB51.css +1 -0
- package/.output/public/_nuxt/{wHnZ9OaL.js → hC_z4G8p.js} +1 -1
- package/.output/public/_nuxt/{DZOS7Fh7.js → hNh4CIL0.js} +1 -1
- package/.output/public/_nuxt/{kjYMoWWx.js → l5WKbU4h.js} +3 -3
- package/.output/public/_nuxt/oAClCn_h.js +1 -0
- package/.output/public/_nuxt/{gnCL8GjZ.js → pQqGiNch.js} +1 -1
- package/.output/public/_nuxt/ryMzSDUj.js +2 -0
- package/.output/public/demo/seed.version.json +2 -2
- package/.output/server/chunks/_/ai-prompt-preview.mjs +38 -0
- package/.output/server/chunks/_/ai-prompt-preview.mjs.map +1 -0
- package/.output/server/chunks/_/collect.mjs +122 -0
- package/.output/server/chunks/_/collect.mjs.map +1 -0
- package/.output/server/chunks/_/markers.mjs +1 -1
- package/.output/server/chunks/_/quarantine.mjs +112 -0
- package/.output/server/chunks/_/quarantine.mjs.map +1 -0
- package/.output/server/chunks/_/users.mjs +1 -1
- package/.output/server/chunks/build/{Alert-Bp1Wz_sq.mjs → Alert-C4xq8lao.mjs} +2 -2
- package/.output/server/chunks/build/Alert-C4xq8lao.mjs.map +1 -0
- package/.output/server/chunks/build/{Breadcrumb-C9ZPTLym.mjs → Breadcrumb-Ak2Lg3oM.mjs} +3 -3
- package/.output/server/chunks/build/Breadcrumb-Ak2Lg3oM.mjs.map +1 -0
- package/.output/server/chunks/build/{BreadcrumbNav-C3y42Vun.mjs → BreadcrumbNav-DO7I_z-n.mjs} +3 -3
- package/.output/server/chunks/build/BreadcrumbNav-DO7I_z-n.mjs.map +1 -0
- package/.output/server/chunks/build/{BrowserBadge-DNCp9pF-.mjs → BrowserBadge-MFvBwxmD.mjs} +67 -7
- package/.output/server/chunks/build/BrowserBadge-MFvBwxmD.mjs.map +1 -0
- package/.output/server/chunks/build/{ChartCard-Fr557IbV.mjs → ChartCard-Y1UKwMsf.mjs} +2 -2
- package/.output/server/chunks/build/ChartCard-Y1UKwMsf.mjs.map +1 -0
- package/.output/server/chunks/build/{Checkbox-cVOSIY93.mjs → Checkbox-4Q5d0fa0.mjs} +8 -8
- package/.output/server/chunks/build/Checkbox-4Q5d0fa0.mjs.map +1 -0
- package/.output/server/chunks/build/CiEnvCard-DB5DvBh1.mjs +1492 -0
- package/.output/server/chunks/build/CiEnvCard-DB5DvBh1.mjs.map +1 -0
- package/.output/server/chunks/build/{CodeBlock-BGwNmJ8J.mjs → CodeBlock-BgE-NSmE.mjs} +7 -22
- package/.output/server/chunks/build/CodeBlock-BgE-NSmE.mjs.map +1 -0
- package/.output/server/chunks/build/{DashboardNavbar-Bdp-OwTN.mjs → DashboardNavbar-BHmMSPX7.mjs} +3 -3
- package/.output/server/chunks/build/DashboardNavbar-BHmMSPX7.mjs.map +1 -0
- package/.output/server/chunks/build/{DashboardSidebarToggle-Ji6ADuqF.mjs → DashboardSidebarToggle-DCTnHiIv.mjs} +3 -3
- package/.output/server/chunks/build/DashboardSidebarToggle-DCTnHiIv.mjs.map +1 -0
- package/.output/server/chunks/build/{DataLocationCard-D6xSOrme.mjs → DataLocationCard-B_YHdzSz.mjs} +3 -3
- package/.output/server/chunks/build/DataLocationCard-B_YHdzSz.mjs.map +1 -0
- package/.output/server/chunks/build/{DiagnosisPanel-DV1xwGu4.mjs → DiagnosisPanel-CALyEmcJ.mjs} +17 -528
- package/.output/server/chunks/build/DiagnosisPanel-CALyEmcJ.mjs.map +1 -0
- package/.output/server/chunks/build/DurationValue-D20oGbnc.mjs +43 -0
- package/.output/server/chunks/build/DurationValue-D20oGbnc.mjs.map +1 -0
- package/.output/server/chunks/build/{EmptyState-DV3oT_xz.mjs → EmptyState-DC2q_7TD.mjs} +3 -3
- package/.output/server/chunks/build/EmptyState-DC2q_7TD.mjs.map +1 -0
- package/.output/server/chunks/build/{EntityLinks-DeOP13Kr.mjs → EntityLinks-BBHWssHH.mjs} +6 -6
- package/.output/server/chunks/build/EntityLinks-BBHWssHH.mjs.map +1 -0
- package/.output/server/chunks/build/{EnvManagedBadge-Qpn58Nmr.mjs → EnvManagedBadge-UwD2b9v2.mjs} +3 -3
- package/.output/server/chunks/build/EnvManagedBadge-UwD2b9v2.mjs.map +1 -0
- package/.output/server/chunks/build/{FormField-B-GSn_VR.mjs → FormField-B0HKsdMd.mjs} +3 -3
- package/.output/server/chunks/build/FormField-B0HKsdMd.mjs.map +1 -0
- package/.output/server/chunks/build/{HelpHint-YEMWtKu1.mjs → HelpHint-DrcIv-Oj.mjs} +53 -6
- package/.output/server/chunks/build/HelpHint-DrcIv-Oj.mjs.map +1 -0
- package/.output/server/chunks/build/{Label-DBvbHd3A.mjs → Label-DYDR1Oeh.mjs} +2 -2
- package/.output/server/chunks/build/Label-DYDR1Oeh.mjs.map +1 -0
- package/.output/server/chunks/build/{MiniRunBars-C3HG-EYm.mjs → MiniRunBars-CZMugDrh.mjs} +2 -2
- package/.output/server/chunks/build/MiniRunBars-CZMugDrh.mjs.map +1 -0
- package/.output/server/chunks/build/{Modal-CfA78Hm1.mjs → Modal-pSDlXzT3.mjs} +2 -2
- package/.output/server/chunks/build/Modal-pSDlXzT3.mjs.map +1 -0
- package/.output/server/chunks/build/{OpenInIdeLink-B92wosXu.mjs → OpenInIdeLink-CQWKKChd.mjs} +6 -6
- package/.output/server/chunks/build/{OpenInIdeLink-B92wosXu.mjs.map → OpenInIdeLink-CQWKKChd.mjs.map} +1 -1
- package/.output/server/chunks/build/{ProjectTestCasesTable-9Ia825h8.mjs → ProjectTestCasesTable-Bo61P5K1.mjs} +120 -45
- package/.output/server/chunks/build/ProjectTestCasesTable-Bo61P5K1.mjs.map +1 -0
- package/.output/server/chunks/build/{RovingFocusItem-CxhHdNGo.mjs → RovingFocusItem--OEHI2P3.mjs} +2 -2
- package/.output/server/chunks/build/RovingFocusItem--OEHI2P3.mjs.map +1 -0
- package/.output/server/chunks/build/{RunReports-BpJqLHY9.mjs → RunReports-DFLv51TX.mjs} +8 -6
- package/.output/server/chunks/build/RunReports-DFLv51TX.mjs.map +1 -0
- package/.output/server/chunks/build/{RunStatusBadge-BhmJ_RKM.mjs → RunStatusBadge-FfGb6bkW.mjs} +3 -2
- package/.output/server/chunks/build/RunStatusBadge-FfGb6bkW.mjs.map +1 -0
- package/.output/server/chunks/build/{SectionCard-COd9TuDq.mjs → SectionCard-CN-v0FZ_.mjs} +2 -2
- package/.output/server/chunks/build/SectionCard-CN-v0FZ_.mjs.map +1 -0
- package/.output/server/chunks/build/{Select-ppPz926C.mjs → Select-5DK9frQ7.mjs} +4 -4
- package/.output/server/chunks/build/Select-5DK9frQ7.mjs.map +1 -0
- package/.output/server/chunks/build/{SelectMenu-799c_Ils.mjs → SelectMenu-D-2FSqBU.mjs} +939 -7
- package/.output/server/chunks/build/{SelectMenu-799c_Ils.mjs.map → SelectMenu-D-2FSqBU.mjs.map} +1 -1
- package/.output/server/chunks/build/{Separator-CxZdx8kw.mjs → Separator-CR4WcEKD.mjs} +2 -2
- package/.output/server/chunks/build/Separator-CR4WcEKD.mjs.map +1 -0
- package/.output/server/chunks/build/{SettingsField-DDD4oqys.mjs → SettingsField-BZfx4ma1.mjs} +6 -6
- package/.output/server/chunks/build/SettingsField-BZfx4ma1.mjs.map +1 -0
- package/.output/server/chunks/build/{Slideover-B95Rj237.mjs → Slideover-D270EZZD.mjs} +3 -3
- package/.output/server/chunks/build/Slideover-D270EZZD.mjs.map +1 -0
- package/.output/server/chunks/build/{Switch-xQQ3_ME1.mjs → Switch-B5Fp8ULt.mjs} +5 -5
- package/.output/server/chunks/build/Switch-B5Fp8ULt.mjs.map +1 -0
- package/.output/server/chunks/build/{Table-CPhhVzDv.mjs → Table-BRk04Hd2.mjs} +3 -3
- package/.output/server/chunks/build/Table-BRk04Hd2.mjs.map +1 -0
- package/.output/server/chunks/build/{Tabs-BV9XqjoO.mjs → Tabs-BkSOnbaB.mjs} +3 -3
- package/.output/server/chunks/build/Tabs-BkSOnbaB.mjs.map +1 -0
- package/.output/server/chunks/build/TagBadge-DwzoFCBb.mjs +31 -0
- package/.output/server/chunks/build/TagBadge-DwzoFCBb.mjs.map +1 -0
- package/.output/server/chunks/build/TagBadge-styles.jhuZ4NjP.mjs +8 -0
- package/.output/server/chunks/build/TagBadge-styles.jhuZ4NjP.mjs.map +1 -0
- package/.output/server/chunks/build/{TestCaseHistoryChart-DMb-xSJa.mjs → TestCaseHistoryChart-CSi64vVA.mjs} +6 -6
- package/.output/server/chunks/build/TestCaseHistoryChart-CSi64vVA.mjs.map +1 -0
- package/.output/server/chunks/build/TestMetaBadges-D5_yUtIP.mjs +200 -0
- package/.output/server/chunks/build/TestMetaBadges-D5_yUtIP.mjs.map +1 -0
- package/.output/server/chunks/build/{TestStatusBar-CEzt76wk.mjs → TestStatusBar-DX3EhlyP.mjs} +15 -15
- package/.output/server/chunks/build/TestStatusBar-DX3EhlyP.mjs.map +1 -0
- package/.output/server/chunks/build/{Textarea-DrrqQUVG.mjs → Textarea-Dv2-lOvW.mjs} +2 -2
- package/.output/server/chunks/build/Textarea-Dv2-lOvW.mjs.map +1 -0
- package/.output/server/chunks/build/{Tooltip-7vwuDPrZ.mjs → Tooltip-Dv4htNP6.mjs} +3 -3
- package/.output/server/chunks/build/Tooltip-Dv4htNP6.mjs.map +1 -0
- package/.output/server/chunks/build/{VisuallyHiddenInput-C9eJVpPW.mjs → VisuallyHiddenInput-BHvzNumK.mjs} +2 -2
- package/.output/server/chunks/build/VisuallyHiddenInput-BHvzNumK.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-CE0Gso6i.mjs → _id_-BdG37K7s.mjs} +91 -42
- package/.output/server/chunks/build/_id_-BdG37K7s.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-bWcP2xFl.mjs → _id_-BdJs7BJZ.mjs} +719 -448
- package/.output/server/chunks/build/_id_-BdJs7BJZ.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-B2yirIuA.mjs → _id_-BxA6IgWr.mjs} +831 -368
- package/.output/server/chunks/build/_id_-BxA6IgWr.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-B4V5fop6.mjs → _id_-C_uSBiyU.mjs} +296 -60
- package/.output/server/chunks/build/{_id_-B4V5fop6.mjs.map → _id_-C_uSBiyU.mjs.map} +1 -1
- package/.output/server/chunks/build/{about-CoJjvUwM.mjs → about-BE0UV-8-.mjs} +456 -61
- package/.output/server/chunks/build/about-BE0UV-8-.mjs.map +1 -0
- package/.output/server/chunks/build/{account-Cn-eZqXM.mjs → account-DAfvaD-F.mjs} +21 -9
- package/.output/server/chunks/build/account-DAfvaD-F.mjs.map +1 -0
- package/.output/server/chunks/build/{ai-7jdaPOmj.mjs → ai-Cn05ch0u.mjs} +45 -23
- package/.output/server/chunks/build/{ai-7jdaPOmj.mjs.map → ai-Cn05ch0u.mjs.map} +1 -1
- package/.output/server/chunks/build/{analytics-B276WPeU.mjs → analytics-Bo_B_jko.mjs} +66 -41
- package/.output/server/chunks/build/analytics-Bo_B_jko.mjs.map +1 -0
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/compare-RxHSOdsO.mjs +12 -0
- package/.output/server/chunks/build/{db.client-aHcD0wyX.mjs → db.client-CQoVTYB9.mjs} +83 -5
- package/.output/server/chunks/build/db.client-CQoVTYB9.mjs.map +1 -0
- package/.output/server/chunks/build/{default-BSzdkM_L.mjs → default-CbNHaFsy.mjs} +622 -78
- package/.output/server/chunks/build/default-CbNHaFsy.mjs.map +1 -0
- package/.output/server/chunks/build/{docs-BN_x1OW3.mjs → docs-B_llWMxx.mjs} +30 -49
- package/.output/server/chunks/build/{docs-BN_x1OW3.mjs.map → docs-B_llWMxx.mjs.map} +1 -1
- package/.output/server/chunks/build/{edit-C9Z7oZeu.mjs → edit-J0asTFg8.mjs} +29 -18
- package/.output/server/chunks/build/edit-J0asTFg8.mjs.map +1 -0
- package/.output/server/chunks/build/{fetch-8kznMtBM.mjs → fetch-B4FwBOzu.mjs} +3 -3
- package/.output/server/chunks/build/fetch-B4FwBOzu.mjs.map +1 -0
- package/.output/server/chunks/build/{forgot-password-BqPF4Rxs.mjs → forgot-password-CC__1OnV.mjs} +17 -5
- package/.output/server/chunks/build/forgot-password-CC__1OnV.mjs.map +1 -0
- package/.output/server/chunks/build/{help-content-DmFnuhNu.mjs → help-content-C876a9WD.mjs} +37 -8
- package/.output/server/chunks/build/help-content-C876a9WD.mjs.map +1 -0
- package/.output/server/chunks/build/import-CS9oylTN.mjs +1021 -0
- package/.output/server/chunks/build/import-CS9oylTN.mjs.map +1 -0
- package/.output/server/chunks/build/{index-CULN3-en.mjs → index-CU2nZhAa.mjs} +113 -42
- package/.output/server/chunks/build/index-CU2nZhAa.mjs.map +1 -0
- package/.output/server/chunks/build/{index-BR9hw6qk.mjs → index-DE45ycdZ.mjs} +51 -31
- package/.output/server/chunks/build/index-DE45ycdZ.mjs.map +1 -0
- package/.output/server/chunks/build/{index-BK9PTRpd.mjs → index-e9skCi-V.mjs} +85 -69
- package/.output/server/chunks/build/{index-BK9PTRpd.mjs.map → index-e9skCi-V.mjs.map} +1 -1
- package/.output/server/chunks/build/{index-DVUtBexc.mjs → index-hGHlmyxj.mjs} +1520 -288
- package/.output/server/chunks/build/index-hGHlmyxj.mjs.map +1 -0
- package/.output/server/chunks/build/{index-Ba-Fifra.mjs → index-tR6owKzj.mjs} +18 -6
- package/.output/server/chunks/build/index-tR6owKzj.mjs.map +1 -0
- package/.output/server/chunks/build/{isValueEqualOrExist-DBZjbD_3.mjs → isValueEqualOrExist-D2qw9YEr.mjs} +3 -3
- package/.output/server/chunks/build/isValueEqualOrExist-D2qw9YEr.mjs.map +1 -0
- package/.output/server/chunks/build/{login-D2XZDuek.mjs → login-Da4u1IlW.mjs} +19 -7
- package/.output/server/chunks/build/login-Da4u1IlW.mjs.map +1 -0
- package/.output/server/chunks/build/{mcp-_o6cMS6m.mjs → mcp-uhVCCwQM.mjs} +359 -24
- package/.output/server/chunks/build/mcp-uhVCCwQM.mjs.map +1 -0
- package/.output/server/chunks/build/{notifications-Dzm9c0u_.mjs → notifications-fx_qnKGA.mjs} +27 -21
- package/.output/server/chunks/build/notifications-fx_qnKGA.mjs.map +1 -0
- package/.output/server/chunks/build/pr-feedback-X6-70iF0.mjs +368 -0
- package/.output/server/chunks/build/pr-feedback-X6-70iF0.mjs.map +1 -0
- package/.output/server/chunks/build/{reset-password-gpFzIEDj.mjs → reset-password-BmrUS4ZD.mjs} +17 -5
- package/.output/server/chunks/build/reset-password-BmrUS4ZD.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +238 -36
- package/.output/server/chunks/build/{settings-pNyPBXVa.mjs → settings-CCYe7rsc.mjs} +23 -10
- package/.output/server/chunks/build/settings-CCYe7rsc.mjs.map +1 -0
- package/.output/server/chunks/build/{settings-metadata-B0wo5R-W.mjs → settings-metadata-DrEqWcW-.mjs} +11 -2
- package/.output/server/chunks/build/settings-metadata-DrEqWcW-.mjs.map +1 -0
- package/.output/server/chunks/build/{storage-XelzuyPy.mjs → storage-CJEmviCD.mjs} +41 -31
- package/.output/server/chunks/build/storage-CJEmviCD.mjs.map +1 -0
- package/.output/server/chunks/build/styles.mjs +1 -0
- package/.output/server/chunks/build/{tags-DrCQ7QSw.mjs → tags-DauTe_F-.mjs} +22 -10
- package/.output/server/chunks/build/tags-DauTe_F-.mjs.map +1 -0
- package/.output/server/chunks/build/{test-cases-pmOxi-AN.mjs → test-cases-thBbAykw.mjs} +38 -24
- package/.output/server/chunks/build/test-cases-thBbAykw.mjs.map +1 -0
- package/.output/server/chunks/build/{timeout-hygiene-CNs71Iah.mjs → timeout-hygiene-CbnSaVbK.mjs} +20 -8
- package/.output/server/chunks/build/timeout-hygiene-CbnSaVbK.mjs.map +1 -0
- package/.output/server/chunks/build/{useAiStatus-ZO987RY7.mjs → useAiStatus-CxjMmDDY.mjs} +89 -89
- package/.output/server/chunks/build/useAiStatus-CxjMmDDY.mjs.map +1 -0
- package/.output/server/chunks/build/{useCopy-BQQKcwlq.mjs → useCopy-CeKWgHyT.mjs} +2 -2
- package/.output/server/chunks/build/useCopy-CeKWgHyT.mjs.map +1 -0
- package/.output/server/chunks/build/{PageStateCard-Bwee6JTk.mjs → useCopyRich-RJKhWoyj.mjs} +472 -63
- package/.output/server/chunks/build/useCopyRich-RJKhWoyj.mjs.map +1 -0
- package/.output/server/chunks/build/useDesktopDownload-BepjqxOt.mjs +46 -0
- package/.output/server/chunks/build/useDesktopDownload-BepjqxOt.mjs.map +1 -0
- package/.output/server/chunks/build/{useFormControl-BLpq1s4O.mjs → useFormControl-CZ9So7iX.mjs} +2 -2
- package/.output/server/chunks/build/useFormControl-CZ9So7iX.mjs.map +1 -0
- package/.output/server/chunks/build/{useOpenInIde-kMZ7Jw5c.mjs → useOpenInIde-BbTnPhFA.mjs} +3 -3
- package/.output/server/chunks/build/useOpenInIde-BbTnPhFA.mjs.map +1 -0
- package/.output/server/chunks/build/{useSettingsNav-NjI2seBy.mjs → useSettingsNav-DnQKacz8.mjs} +6 -6
- package/.output/server/chunks/build/useSettingsNav-DnQKacz8.mjs.map +1 -0
- package/.output/server/chunks/build/useTauri-Kf3HE_42.mjs +11 -0
- package/.output/server/chunks/build/useTauri-Kf3HE_42.mjs.map +1 -0
- package/.output/server/chunks/build/{useTreeViewCookie-DVYpxW-p.mjs → useTreeViewCookie-CQjQdTkH.mjs} +2 -2
- package/.output/server/chunks/build/useTreeViewCookie-CQjQdTkH.mjs.map +1 -0
- package/.output/server/chunks/build/{users-NmAUZs3i.mjs → users-CTUqXyGh.mjs} +22 -10
- package/.output/server/chunks/build/users-CTUqXyGh.mjs.map +1 -0
- package/.output/server/chunks/build/{wasted-time-CguAF9zc.mjs → wasted-time-BNTPIyrC.mjs} +26 -14
- package/.output/server/chunks/build/wasted-time-BNTPIyrC.mjs.map +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +6438 -1964
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
- package/.output/server/chunks/routes/__piwi/session.get.mjs +13 -1
- package/.output/server/chunks/routes/__piwi/session.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/admin/cleanup.delete.mjs +12 -0
- package/.output/server/chunks/routes/api/admin/cleanup.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/admin/stats.get.mjs +12 -0
- package/.output/server/chunks/routes/api/admin/stats.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/ai/status.get.mjs +12 -0
- package/.output/server/chunks/routes/api/ai/status.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs +12 -0
- package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/change-password.post.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/change-password.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/forgot-password.post.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/forgot-password.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/login.post.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/login.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/logout.post.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/logout.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/me.get.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/me.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/reset-password.post.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/reset-password.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/setup.get.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/setup.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/setup.post.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/setup.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/verify-email.get.mjs +12 -0
- package/.output/server/chunks/routes/api/auth/verify-email.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/channels/_id/test.post.mjs +12 -0
- package/.output/server/chunks/routes/api/channels/_id/test.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/channels/_id_.delete.mjs +12 -0
- package/.output/server/chunks/routes/api/channels/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs +12 -0
- package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs +12 -0
- package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/desktop/import-local.post.mjs +88 -0
- package/.output/server/chunks/routes/api/desktop/import-local.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs +12 -0
- package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs +13 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs +13 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs +13 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs +13 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs +24 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs +13 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs +13 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs +13 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs +13 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs +64 -0
- package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs +13 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs +56 -0
- package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs +13 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs +13 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs +13 -1
- package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/files/_...path_.get.mjs +13 -32
- package/.output/server/chunks/routes/api/files/_...path_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/health.get.mjs +13 -1
- package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get.mjs +12 -0
- package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get2.mjs +13 -1
- package/.output/server/chunks/routes/api/index.get2.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get3.mjs +13 -1
- package/.output/server/chunks/routes/api/index.get3.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get4.mjs +13 -1
- package/.output/server/chunks/routes/api/index.get4.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get5.mjs +12 -0
- package/.output/server/chunks/routes/api/index.get5.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post.mjs +12 -0
- package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post2.mjs +13 -1
- package/.output/server/chunks/routes/api/index.post2.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post3.mjs +13 -1
- package/.output/server/chunks/routes/api/index.post3.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post4.mjs +13 -1
- package/.output/server/chunks/routes/api/index.post4.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post5.mjs +13 -1
- package/.output/server/chunks/routes/api/index.post5.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post6.mjs +12 -0
- package/.output/server/chunks/routes/api/index.post6.mjs.map +1 -1
- package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs +13 -1
- package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/links/_id_.delete.mjs +13 -1
- package/.output/server/chunks/routes/api/links/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/links/_id_.patch.mjs +13 -1
- package/.output/server/chunks/routes/api/links/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/markers/_id_.delete.mjs +13 -1
- package/.output/server/chunks/routes/api/markers/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/markers/_id_.put.mjs +13 -1
- package/.output/server/chunks/routes/api/markers/_id_.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/notifications/stream.get.mjs +13 -1
- package/.output/server/chunks/routes/api/notifications/stream.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs +22 -2
- package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/markers.post.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/markers.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/members.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/members.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/members.put.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/members.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs +58 -0
- package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs.map +1 -0
- package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs +57 -0
- package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs +72 -0
- package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id_.delete.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id_.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id_.put.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/_id_.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/menu.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/menu.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/overview.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects/overview.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects.get.mjs +13 -1
- package/.output/server/chunks/routes/api/projects.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/search.get.mjs +13 -1
- package/.output/server/chunks/routes/api/search.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai/models.post.mjs +12 -0
- package/.output/server/chunks/routes/api/settings/ai/models.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai/test.post.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/ai/test.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai.get.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/ai.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai.put.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/ai.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs +57 -0
- package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs +63 -0
- package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs.map +1 -0
- package/.output/server/chunks/routes/api/settings/smtp/test.post.mjs +12 -0
- package/.output/server/chunks/routes/api/settings/smtp/test.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/smtp.get.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/smtp.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs +13 -1
- package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/stream.get.mjs +13 -1
- package/.output/server/chunks/routes/api/stream.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs +13 -1
- package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs +13 -1
- package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tags/_id_.delete.mjs +13 -1
- package/.output/server/chunks/routes/api/tags/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tags/_id_.put.mjs +13 -1
- package/.output/server/chunks/routes/api/tags/_id_.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs +13 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs +25 -3
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs +60 -0
- package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs +13 -1
- 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/cases/_caseId/dom-snapshot.get.mjs +17 -3
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs +15 -1
- 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 +196 -0
- package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs +77 -0
- package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/test-runs/import.post.mjs +77 -0
- package/.output/server/chunks/routes/api/test-runs/import.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/test-runs/recent.get.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/recent.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/setup.post.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/setup.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/start.post.mjs +13 -1
- package/.output/server/chunks/routes/api/test-runs/start.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/submit.post.mjs +32 -15
- package/.output/server/chunks/routes/api/test-runs/submit.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/upload.post.mjs +21 -6
- package/.output/server/chunks/routes/api/test-runs/upload.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs +156 -3
- package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/traces/check.post.mjs +13 -1
- package/.output/server/chunks/routes/api/traces/check.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs +12 -0
- package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id/index.get.mjs +12 -0
- package/.output/server/chunks/routes/api/users/_id/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id/index.post.mjs +13 -1
- package/.output/server/chunks/routes/api/users/_id/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id/invite.post.mjs +13 -1
- package/.output/server/chunks/routes/api/users/_id/invite.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id/projects.get.mjs +13 -1
- package/.output/server/chunks/routes/api/users/_id/projects.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id/projects.put.mjs +13 -1
- package/.output/server/chunks/routes/api/users/_id/projects.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs +12 -0
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id_.patch.mjs +12 -0
- package/.output/server/chunks/routes/api/users/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/version.get.mjs +13 -1
- package/.output/server/chunks/routes/api/version.get.mjs.map +1 -1
- package/.output/server/chunks/routes/mcp.post.mjs +13 -1
- package/.output/server/chunks/routes/mcp.post.mjs.map +1 -1
- package/.output/server/chunks/routes/renderer.mjs +1 -1
- package/.output/server/chunks/tasks/sweep.mjs +12 -0
- package/.output/server/chunks/tasks/sweep.mjs.map +1 -1
- package/.output/server/chunks/tasks/sweep2.mjs +12 -0
- package/.output/server/chunks/tasks/sweep2.mjs.map +1 -1
- package/.output/server/database/migrations/0039_remarkable_jean_grey.sql +2 -0
- package/.output/server/database/migrations/0040_organic_phalanx.sql +8 -0
- package/.output/server/database/migrations/0041_tense_gravity.sql +5 -0
- package/.output/server/database/migrations/0042_burly_hemingway.sql +19 -0
- package/.output/server/database/migrations/meta/0039_snapshot.json +3403 -0
- package/.output/server/database/migrations/meta/0040_snapshot.json +3457 -0
- package/.output/server/database/migrations/meta/0041_snapshot.json +3492 -0
- package/.output/server/database/migrations/meta/0042_snapshot.json +3618 -0
- package/.output/server/database/migrations/meta/_journal.json +28 -0
- package/.output/server/database/migrations-pg/0040_lazy_layla_miller.sql +2 -0
- package/.output/server/database/migrations-pg/0041_light_screwball.sql +8 -0
- package/.output/server/database/migrations-pg/0042_serious_layla_miller.sql +5 -0
- package/.output/server/database/migrations-pg/0043_wonderful_mordo.sql +19 -0
- package/.output/server/database/migrations-pg/meta/0040_snapshot.json +4060 -0
- package/.output/server/database/migrations-pg/meta/0041_snapshot.json +4123 -0
- package/.output/server/database/migrations-pg/meta/0042_snapshot.json +4153 -0
- package/.output/server/database/migrations-pg/meta/0043_snapshot.json +4308 -0
- package/.output/server/database/migrations-pg/meta/_journal.json +28 -0
- package/.output/server/index.mjs +13 -1
- package/.output/server/index.mjs.map +1 -1
- package/.output/server/node_modules/fflate/esm/index.mjs +2710 -0
- package/.output/server/node_modules/fflate/package.json +128 -0
- package/.output/server/node_modules/highlight.js/es/languages/yaml.js +213 -0
- package/.output/server/node_modules/marked/lib/marked.esm.js +72 -0
- package/.output/server/node_modules/marked/package.json +103 -0
- package/.output/server/package.json +3 -1
- package/package.json +2 -2
- package/.output/public/_nuxt/9-wVZMur.js +0 -4
- package/.output/public/_nuxt/B-5GukRk.js +0 -1
- package/.output/public/_nuxt/B1G3GGhQ.js +0 -1
- package/.output/public/_nuxt/B1zMFx24.js +0 -1
- package/.output/public/_nuxt/B4jvLMfS.js +0 -1
- package/.output/public/_nuxt/BBnX5xw4.js +0 -2
- package/.output/public/_nuxt/BHpUiv6j.js +0 -3
- package/.output/public/_nuxt/BLOUs6AE.js +0 -5
- package/.output/public/_nuxt/BT6p4Pgt.js +0 -2
- package/.output/public/_nuxt/BUXSUkJ_.js +0 -1
- package/.output/public/_nuxt/BVf6Yx9V.js +0 -26
- package/.output/public/_nuxt/BbS6Bwby.js +0 -1
- package/.output/public/_nuxt/Bd3HqPMF.js +0 -1
- package/.output/public/_nuxt/BeKvLsja.js +0 -2
- package/.output/public/_nuxt/BeUm5UNV.js +0 -1
- package/.output/public/_nuxt/BfV444H3.js +0 -3
- package/.output/public/_nuxt/BjKamgHq.js +0 -1
- package/.output/public/_nuxt/BoJdjCVl.js +0 -4
- package/.output/public/_nuxt/BreO2PiA.js +0 -1
- package/.output/public/_nuxt/BvIDC_R-.js +0 -1
- package/.output/public/_nuxt/ByuJWADR.js +0 -34
- package/.output/public/_nuxt/C1dyLp_j.js +0 -1
- package/.output/public/_nuxt/CAUgpKsF.js +0 -2
- package/.output/public/_nuxt/CL9-VLTJ.js +0 -1
- package/.output/public/_nuxt/CazDIG_m.js +0 -1
- package/.output/public/_nuxt/CcXaak_K.js +0 -1
- package/.output/public/_nuxt/CdMuck_X.js +0 -1
- package/.output/public/_nuxt/CfPSts5n.js +0 -1
- package/.output/public/_nuxt/CfROFPse.js +0 -1
- package/.output/public/_nuxt/Cnapl7lZ.js +0 -1
- package/.output/public/_nuxt/CscWZxCi.js +0 -1
- package/.output/public/_nuxt/CuicKV-B.js +0 -34
- package/.output/public/_nuxt/Cyiu1VQD.js +0 -1
- package/.output/public/_nuxt/D6PUPmRC.js +0 -1
- package/.output/public/_nuxt/DCl2yo4g.js +0 -8
- package/.output/public/_nuxt/DHXWp5yD.js +0 -1
- package/.output/public/_nuxt/DHltYerF.js +0 -114
- package/.output/public/_nuxt/DLXydYJb.js +0 -47
- package/.output/public/_nuxt/DRPSi76A.js +0 -1
- package/.output/public/_nuxt/DS53kyHJ.js +0 -1
- package/.output/public/_nuxt/DWhBqv_7.js +0 -1
- package/.output/public/_nuxt/Dd0kK5WH.js +0 -1
- package/.output/public/_nuxt/Df7kUO0m.js +0 -1
- package/.output/public/_nuxt/Dga3Av-m.js +0 -1
- package/.output/public/_nuxt/DgwTpwfB.js +0 -1
- package/.output/public/_nuxt/DkI145a5.js +0 -1
- package/.output/public/_nuxt/DoFBTaDR.js +0 -1
- package/.output/public/_nuxt/Dr_dI5hB.js +0 -1
- package/.output/public/_nuxt/EPZOxdgq.js +0 -1
- package/.output/public/_nuxt/R1nNqTru.js +0 -1
- package/.output/public/_nuxt/S5DLdEpg.js +0 -4
- package/.output/public/_nuxt/builds/meta/7caf3cb3-d272-4dbd-bb3f-1eeb64fab5d1.json +0 -1
- package/.output/public/_nuxt/entry.ChQMshd4.css +0 -1
- package/.output/public/_nuxt/gCELhaU9.js +0 -1
- package/.output/public/_nuxt/ipDzNHcs.js +0 -5
- package/.output/public/_nuxt/kS3boz40.js +0 -1
- package/.output/public/_nuxt/qH_j2A3a.js +0 -1
- package/.output/public/_nuxt/r3SBLxtE.js +0 -1
- package/.output/public/_nuxt/rsiRgrVM.js +0 -1
- package/.output/public/_nuxt/swrbBdtB.js +0 -1
- package/.output/public/sw.js +0 -1
- package/.output/public/workbox-2fbc6a65.js +0 -1
- package/.output/server/chunks/build/Alert-Bp1Wz_sq.mjs.map +0 -1
- package/.output/server/chunks/build/Breadcrumb-C9ZPTLym.mjs.map +0 -1
- package/.output/server/chunks/build/BreadcrumbNav-C3y42Vun.mjs.map +0 -1
- package/.output/server/chunks/build/BrowserBadge-DNCp9pF-.mjs.map +0 -1
- package/.output/server/chunks/build/ChartCard-Fr557IbV.mjs.map +0 -1
- package/.output/server/chunks/build/Checkbox-cVOSIY93.mjs.map +0 -1
- package/.output/server/chunks/build/CiEnvCard-DXPOhdSG.mjs +0 -640
- package/.output/server/chunks/build/CiEnvCard-DXPOhdSG.mjs.map +0 -1
- package/.output/server/chunks/build/CodeBlock-BGwNmJ8J.mjs.map +0 -1
- package/.output/server/chunks/build/DashboardNavbar-Bdp-OwTN.mjs.map +0 -1
- package/.output/server/chunks/build/DashboardSidebarToggle-Ji6ADuqF.mjs.map +0 -1
- package/.output/server/chunks/build/DataLocationCard-D6xSOrme.mjs.map +0 -1
- package/.output/server/chunks/build/DiagnosisPanel-DV1xwGu4.mjs.map +0 -1
- package/.output/server/chunks/build/EmptyState-DV3oT_xz.mjs.map +0 -1
- package/.output/server/chunks/build/EntityLinks-DeOP13Kr.mjs.map +0 -1
- package/.output/server/chunks/build/EnvManagedBadge-Qpn58Nmr.mjs.map +0 -1
- package/.output/server/chunks/build/FormField-B-GSn_VR.mjs.map +0 -1
- package/.output/server/chunks/build/HelpHint-YEMWtKu1.mjs.map +0 -1
- package/.output/server/chunks/build/Label-DBvbHd3A.mjs.map +0 -1
- package/.output/server/chunks/build/MiniRunBars-C3HG-EYm.mjs.map +0 -1
- package/.output/server/chunks/build/Modal-CfA78Hm1.mjs.map +0 -1
- package/.output/server/chunks/build/PageStateCard-Bwee6JTk.mjs.map +0 -1
- package/.output/server/chunks/build/ProjectTestCasesTable-9Ia825h8.mjs.map +0 -1
- package/.output/server/chunks/build/RovingFocusItem-CxhHdNGo.mjs.map +0 -1
- package/.output/server/chunks/build/RunReports-BpJqLHY9.mjs.map +0 -1
- package/.output/server/chunks/build/RunStatusBadge-BhmJ_RKM.mjs.map +0 -1
- package/.output/server/chunks/build/SectionCard-COd9TuDq.mjs.map +0 -1
- package/.output/server/chunks/build/Select-ppPz926C.mjs.map +0 -1
- package/.output/server/chunks/build/Separator-CxZdx8kw.mjs.map +0 -1
- package/.output/server/chunks/build/SettingsField-DDD4oqys.mjs.map +0 -1
- package/.output/server/chunks/build/Slideover-B95Rj237.mjs.map +0 -1
- package/.output/server/chunks/build/Switch-xQQ3_ME1.mjs.map +0 -1
- package/.output/server/chunks/build/Table-CPhhVzDv.mjs.map +0 -1
- package/.output/server/chunks/build/Tabs-BV9XqjoO.mjs.map +0 -1
- package/.output/server/chunks/build/TagBadge-BDcvvGxw.mjs +0 -47
- package/.output/server/chunks/build/TagBadge-BDcvvGxw.mjs.map +0 -1
- package/.output/server/chunks/build/TestCaseHistoryChart-DMb-xSJa.mjs.map +0 -1
- package/.output/server/chunks/build/TestStatusBar-CEzt76wk.mjs.map +0 -1
- package/.output/server/chunks/build/Textarea-DrrqQUVG.mjs.map +0 -1
- package/.output/server/chunks/build/Tooltip-7vwuDPrZ.mjs.map +0 -1
- package/.output/server/chunks/build/VisuallyHiddenInput-C9eJVpPW.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-B2yirIuA.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-CE0Gso6i.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-bWcP2xFl.mjs.map +0 -1
- package/.output/server/chunks/build/about-CoJjvUwM.mjs.map +0 -1
- package/.output/server/chunks/build/account-Cn-eZqXM.mjs.map +0 -1
- package/.output/server/chunks/build/analytics-B276WPeU.mjs.map +0 -1
- package/.output/server/chunks/build/db.client-aHcD0wyX.mjs.map +0 -1
- package/.output/server/chunks/build/default-BSzdkM_L.mjs.map +0 -1
- package/.output/server/chunks/build/edit-C9Z7oZeu.mjs.map +0 -1
- package/.output/server/chunks/build/fetch-8kznMtBM.mjs.map +0 -1
- package/.output/server/chunks/build/forgot-password-BqPF4Rxs.mjs.map +0 -1
- package/.output/server/chunks/build/help-content-DmFnuhNu.mjs.map +0 -1
- package/.output/server/chunks/build/index-BR9hw6qk.mjs.map +0 -1
- package/.output/server/chunks/build/index-Ba-Fifra.mjs.map +0 -1
- package/.output/server/chunks/build/index-CULN3-en.mjs.map +0 -1
- package/.output/server/chunks/build/index-DVUtBexc.mjs.map +0 -1
- package/.output/server/chunks/build/isValueEqualOrExist-DBZjbD_3.mjs.map +0 -1
- package/.output/server/chunks/build/login-D2XZDuek.mjs.map +0 -1
- package/.output/server/chunks/build/mcp-_o6cMS6m.mjs.map +0 -1
- package/.output/server/chunks/build/notifications-Dzm9c0u_.mjs.map +0 -1
- package/.output/server/chunks/build/reset-password-gpFzIEDj.mjs.map +0 -1
- package/.output/server/chunks/build/settings-metadata-B0wo5R-W.mjs.map +0 -1
- package/.output/server/chunks/build/settings-pNyPBXVa.mjs.map +0 -1
- package/.output/server/chunks/build/storage-XelzuyPy.mjs.map +0 -1
- package/.output/server/chunks/build/tags-DrCQ7QSw.mjs.map +0 -1
- package/.output/server/chunks/build/test-cases-pmOxi-AN.mjs.map +0 -1
- package/.output/server/chunks/build/timeout-hygiene-CNs71Iah.mjs.map +0 -1
- package/.output/server/chunks/build/useAiStatus-ZO987RY7.mjs.map +0 -1
- package/.output/server/chunks/build/useCopy-BQQKcwlq.mjs.map +0 -1
- package/.output/server/chunks/build/useFormControl-BLpq1s4O.mjs.map +0 -1
- package/.output/server/chunks/build/useOpenInIde-kMZ7Jw5c.mjs.map +0 -1
- package/.output/server/chunks/build/useSettingsNav-NjI2seBy.mjs.map +0 -1
- package/.output/server/chunks/build/useTauri-lRT8zkLv.mjs +0 -7
- package/.output/server/chunks/build/useTauri-lRT8zkLv.mjs.map +0 -1
- package/.output/server/chunks/build/useTreeViewCookie-DVYpxW-p.mjs.map +0 -1
- package/.output/server/chunks/build/users-NmAUZs3i.mjs.map +0 -1
- package/.output/server/chunks/build/virtualizer-ZaqK4guJ.mjs +0 -940
- package/.output/server/chunks/build/virtualizer-ZaqK4guJ.mjs.map +0 -1
- package/.output/server/chunks/build/wasted-time-CguAF9zc.mjs.map +0 -1
- /package/.output/public/_nuxt/{PageStateCard.BrM5HWjY.css → useCopyRich.BrM5HWjY.css} +0 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import{_ as Qt}from"./CXEH9OPk.js";import{_ as Zt}from"./DabzhQB1.js";import{d as re,o as t,f as k,g as d,i as n,q,k as e,j as i,t as c,c as o,F as B,y as te,s as fe,m as p,v as l,R as yt,p as ce,h as C,D as Ae,_ as Ie,b as Xt,B as xt,l as ge,r as A,ab as $e,H as ve,ac as Yt,A as Oe,Q as Ce,u as es,a as ts,w as pt,e as ss,ad as ns,M as as}from"./Du2W7Jne.js";import{d as os,e as rs,h as He,a as is,b as ls,c as cs,_ as us,n as ds,o as ms,p as ps,u as gs,f as fs,i as ys,j as xs,k as hs,l as vs,m as _s}from"./CahpB9Z2.js";import{_ as ks,a as bs,b as ws,c as $s,d as Cs,e as Ts}from"./ryMzSDUj.js";import{_ as Ss}from"./CjPfj7ya.js";import{_ as Is,a as Rs}from"./5A6ITZXj.js";import{_ as Re}from"./BzRRzmwm.js";import{_ as Ls}from"./b-GYfcrQ.js";import{_ as zs}from"./CA9B2HE5.js";import{_ as ht,a as Ke}from"./Bm62iDV5.js";import{_ as Ms}from"./-f7BAm1H.js";import{_ as js}from"./hC_z4G8p.js";import{u as Ds,_ as Ns,d as As,e as Ps,f as Us,g as Bs,h as Fs,j as Vs,a as vt,i as Te,b as Ne,c as Es}from"./Cnsmicv2.js";import{f as Se,m as Os,c as Hs,g as Ks,n as _t,o as We,q as Ge,a as Ws,j as Gs,r as gt}from"./DuwtTfO8.js";import{_ as kt}from"./BT3wGCTI.js";import{_ as ye}from"./C0_yH0N7.js";import{_ as Js}from"./DsesNydr.js";import{_ as Je}from"./CxyAzHr3.js";import{_ as qe}from"./CzAPFPpL.js";import{_ as bt}from"./C1gTN4Q8.js";import{f as we}from"./D-c8ZSws.js";import{_ as qs}from"./B3obW6cw.js";import{_ as Qs}from"./DJxlKFGb.js";import{_ as Zs}from"./DJmoLeVt.js";import{_ as Xs}from"./Cus22Ud3.js";import{_ as Ys}from"./CJFtzlQ4.js";import{_ as en,a as tn}from"./DoIREDVb.js";import{_ as sn}from"./CeW8v31b.js";import{b as nn}from"./BicAJ6U8.js";import{u as ft}from"./B8zkOmwo.js";import{u as an}from"./DSqHUrvO.js";import"./KyA_4Ks-.js";import"./Dy-TJ0Mt.js";import"./BgRu_3tT.js";import"./_mj6CfPa.js";import"./BrQEE053.js";import"./BUkim3TM.js";import"./A1pj0VnG.js";import"./UdR3DBPS.js";import"./AbmKWFQQ.js";import"./L3kAWB2a.js";import"./Dpd16JVI.js";import"./Nn93e_Mz.js";import"./DmkUdSS4.js";import"./BjaRappk.js";import"./pQqGiNch.js";import"./B99fbi73.js";import"./C8e1EbJI.js";import"./FaFoMVKo.js";import"./D7W_4Sqc.js";import"./CwGWJbiy.js";const on={class:"text-sm font-semibold truncate min-w-0"},rn={class:"flex items-center gap-3 ml-auto max-sm:hidden"},ln={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},cn={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},un={class:"text-gray-700 dark:text-gray-300"},dn={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},mn={class:"text-gray-700 dark:text-gray-300"},pn={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},gn={class:"text-gray-700 dark:text-gray-300"},fn={key:0,class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},yn={class:"text-gray-700 dark:text-gray-300"},xn={class:"grid grid-cols-1 lg:grid-cols-12 gap-4"},hn={class:"space-y-3"},vn={class:"flex items-start gap-3"},_n={class:"min-w-0 flex-1"},kn={class:"flex items-center gap-2 flex-wrap"},bn={class:"text-base font-bold truncate"},wn={class:"text-xs text-gray-500 mt-0.5"},$n={key:0},Cn=["title"],Tn={key:1,class:"ml-2"},Sn={class:"grid grid-cols-2 sm:grid-cols-4 gap-2"},In={class:"rounded-lg bg-gray-50 dark:bg-gray-900 p-3"},Rn={class:"text-xl font-bold mt-0.5"},Ln={class:"rounded-lg bg-gray-50 dark:bg-gray-900 p-3"},zn={class:"text-xl font-bold mt-0.5"},Mn={class:"rounded-lg bg-gray-50 dark:bg-gray-900 p-3"},jn={class:"text-xl font-bold mt-0.5"},Dn={class:"rounded-lg bg-gray-50 dark:bg-gray-900 p-3"},Nn={class:"text-xl font-bold mt-0.5"},An={key:0,class:"flex items-center gap-2 text-sm"},Pn={class:"text-gray-700 dark:text-gray-300 truncate"},Un={key:0,class:"text-gray-500 shrink-0"},Bn={key:1,class:"flex items-center gap-1.5 text-sm"},Fn=re({__name:"TestCaseSummary",props:{testCase:{},scmInfo:{},ciInfo:{},browser:{},environment:{},stepsCount:{},historicalTiming:{},stableLinks:{}},emits:["refresh"],setup(s){const _=s,x=C(()=>{const u=_.testCase;if(!u)return[];const r=[];return u.isNewRegression&&r.push({label:"New regression",color:"error",title:"Passed in the baseline run, failing here"}),u.isNewFlaky&&r.push({label:"New flaky",color:"warning",title:"Newly started passing only on retry"}),u.status==="passed"&&(u.retries??0)>0&&r.push({label:"Passed on retry",color:"warning",title:"This test failed then passed on a retry"}),r}),b=C(()=>(_.testCase?.testAnnotations??[]).filter(u=>!Os(u.type))),w=C(()=>_.testCase?.startedAt??null),{summaryColSpanClass:g,blockColSpanClass:a}=Ds(()=>{let u=0;return _.scmInfo&&u++,(_.ciInfo||_.environment||_.browser)&&u++,u++,u});return(u,r)=>{const P=ks,z=Re,$=Ls,h=fe,F=zs,M=yt,m=ce,I=ht,E=Ms,U=bs,R=ws,W=js,G=$s,D=Ns;return t(),k(D,{"storage-key":"test-case"},{folded:d(()=>[i(P,{status:s.testCase?.status??"",size:"sm"},null,8,["status"]),n("span",on,c(s.testCase?.title),1),n("div",rn,[n("span",ln,[r[0]||(r[0]=p(" Dur: ",-1)),i(z,{ms:s.testCase?.duration,class:"font-bold text-gray-700 dark:text-gray-300"},null,8,["ms"])]),n("span",cn,[r[1]||(r[1]=p(" Retries: ",-1)),n("strong",un,c(s.testCase?.retries??0),1)]),n("span",dn,[r[2]||(r[2]=p(" Steps: ",-1)),n("strong",mn,c(s.stepsCount),1)]),n("span",pn,[r[3]||(r[3]=p(" Worker: ",-1)),n("strong",gn,c(s.testCase?.workerIndex??"—"),1)]),s.testCase?.shardIndex!=null?(t(),o("span",fn,[r[4]||(r[4]=p(" Shard: ",-1)),n("strong",yn,c(s.testCase.shardIndex),1)])):l("",!0)]),s.browser?(t(),k($,{key:0,browser:s.browser,size:"sm",class:"shrink-0 max-sm:hidden"},null,8,["browser"])):l("",!0)]),default:d(()=>[n("div",xn,[n("div",{class:q(e(g))},[i(E,{class:"shadow-xs h-full"},{default:d(()=>[n("div",hn,[n("div",vn,[i(P,{status:s.testCase?.status??"",size:"md"},null,8,["status"]),n("div",_n,[n("div",kn,[n("h2",bn,c(s.testCase?.title),1),(t(!0),o(B,null,te(e(x),Z=>(t(),k(h,{key:Z.label,color:Z.color,variant:"subtle",size:"xs",title:Z.title},{default:d(()=>[p(c(Z.label),1)]),_:2},1032,["color","title"]))),128)),(t(!0),o(B,null,te(e(b),(Z,Q)=>(t(),k(h,{key:`ann-${Q}`,color:"neutral",variant:"soft",size:"xs",class:"font-mono",title:Z.description||Z.type},{default:d(()=>[p(" @"+c(Z.type),1)]),_:2},1032,["title"]))),128)),i(F,{tags:s.testCase?.tags,meta:s.testCase?.testMeta},null,8,["tags","meta"])]),n("p",wn,[s.testCase?.location?(t(),o("span",$n,c(s.testCase.location),1)):l("",!0),i(M,null,{default:d(()=>[e(w)?(t(),o("span",{key:0,class:"ml-2 text-gray-400",title:new Date(e(w)).toLocaleString()}," started "+c(("formatRelativeTime"in u?u.formatRelativeTime:e(Se))(e(w))),9,Cn)):l("",!0)]),_:1}),s.historicalTiming?(t(),o("span",Tn,[r[5]||(r[5]=p(" Avg ",-1)),i(z,{ms:s.historicalTiming.avg},null,8,["ms"]),r[6]||(r[6]=p(" · ",-1)),n("span",{class:q(s.historicalTiming.diff>0?"text-red-600":"text-green-600")},c(s.historicalTiming.diff>0?"+":"")+c(s.historicalTiming.pct)+"% ",3)])):l("",!0)])])]),n("div",Sn,[n("div",In,[r[7]||(r[7]=n("p",{class:"text-xs font-medium text-gray-500 uppercase tracking-wider"},"Duration",-1)),n("p",Rn,[i(z,{ms:s.testCase?.duration},null,8,["ms"])])]),n("div",Ln,[r[8]||(r[8]=n("p",{class:"text-xs font-medium text-gray-500 uppercase tracking-wider"},"Retries",-1)),n("p",zn,c(s.testCase?.retries??0),1)]),n("div",Mn,[r[9]||(r[9]=n("p",{class:"text-xs font-medium text-gray-500 uppercase tracking-wider"},"Steps",-1)),n("p",jn,c(s.stepsCount),1)]),n("div",Dn,[r[10]||(r[10]=n("p",{class:"text-xs font-medium text-gray-500 uppercase tracking-wider"},"Worker",-1)),n("p",Nn,c(s.testCase?.workerIndex??"—"),1)])]),s.testCase?.slowestStep?(t(),o("div",An,[i(m,{name:"i-lucide-zap",class:"size-4 text-amber-500 shrink-0"}),r[13]||(r[13]=n("span",{class:"font-medium text-amber-700 dark:text-amber-300"},"Slowest step:",-1)),n("span",Pn,c(s.testCase.slowestStep),1),s.testCase.slowestStepDuration?(t(),o("span",Un,[r[11]||(r[11]=p("(",-1)),i(z,{ms:s.testCase.slowestStepDuration},null,8,["ms"]),r[12]||(r[12]=p(")",-1))])):l("",!0)])):l("",!0),(s.testCase?.wastedTimeMs??0)>0?(t(),o("div",Bn,[i(m,{name:"i-lucide-hourglass",class:"size-4 text-amber-500 shrink-0"}),r[14]||(r[14]=n("span",{class:"font-medium text-amber-700 dark:text-amber-300"},"Wasted in fixed waits:",-1)),i(z,{ms:s.testCase?.wastedTimeMs,class:"text-gray-700 dark:text-gray-300"},null,8,["ms"]),i(I,{topic:"case.wasted-time"})])):l("",!0)])]),_:1})],2),s.scmInfo?(t(),k(U,{key:0,scm:s.scmInfo,class:q(e(a))},null,8,["scm","class"])):l("",!0),s.ciInfo||s.environment||s.browser?(t(),k(R,{key:1,ci:s.ciInfo,environment:s.environment,browser:s.browser,class:q(e(a))},null,8,["ci","environment","browser","class"])):l("",!0),i(G,{class:q(e(a)),title:"Links",icon:"i-lucide-link"},{default:d(()=>[s.testCase?.id?(t(),k(W,{key:0,"entity-type":"test_case","entity-id":s.testCase.id,links:s.stableLinks??null},null,8,["entity-id","links"])):l("",!0)]),_:1},8,["class"])])]),_:1})}}}),Vn=Object.assign(Fn,{__name:"TestCaseSummary"}),En={class:"space-y-3"},On={key:0,class:"flex flex-wrap gap-1.5"},Hn={key:0,class:"text-sm text-gray-600 dark:text-gray-400"},Kn={class:"text-gray-800 dark:text-gray-200"},Wn={key:1},Gn={class:"flex items-center gap-1 flex-wrap"},Jn=re({__name:"TestCaseVerdictCard",props:{testCase:{},history:{},currentId:{}},setup(s){const _=s,x=u=>u==="failed"||u==="timedOut"||u==="timedout",b=C(()=>{const u=_.testCase;if(!u)return[];const r=[];return u.isNewRegression&&r.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"}),u.isNewFlaky&&r.push({label:"New flaky",color:"warning",icon:"i-lucide-shuffle",title:"Newly started passing only on retry — intermittent failure"}),u.status==="timedOut"&&r.push({label:"Timed out",color:"warning",icon:"i-lucide-timer-off",title:"The test exceeded its timeout"}),(u.retries??0)>0&&r.push({label:u.status==="passed"?`Passed on retry ${u.retries}`:`Retried ${u.retries}×`,color:u.status==="passed"?"warning":"neutral",icon:"i-lucide-refresh-cw",title:`This execution retried ${u.retries} time${u.retries===1?"":"s"}`}),r}),w=C(()=>_.history.slice(0,24).slice().reverse()),g=C(()=>{const u=_.history;if(!u.length)return null;const r=Math.max(0,u.findIndex($=>$.id===_.currentId));let P=0;for(let $=r;$<u.length&&x(u[$].status);$++)P++;let z=null;for(let $=r+1;$<u.length;$++)if(u[$].status==="passed"){z=u[$];break}return{streak:P,lastPass:z,total:u.length,anchorFailing:x(u[r]?.status)}}),a=u=>({"bg-red-500 hover:bg-red-600":x(u),"bg-green-500 hover:bg-green-600":u==="passed","bg-yellow-500 hover:bg-yellow-600":u==="skipped","bg-gray-400 hover:bg-gray-500":!x(u)&&!["passed","skipped"].includes(u)});return(u,r)=>{const P=ce,z=fe,$=Ae,h=kt,F=yt,M=ye;return t(),k(M,{icon:"i-lucide-clipboard-check","icon-class":"text-amber-500",title:"Verdict",help:"case.verdict"},{default:d(()=>[n("div",En,[e(b).length?(t(),o("div",On,[(t(!0),o(B,null,te(e(b),m=>(t(),k(z,{key:m.label,color:m.color,variant:"subtle",size:"sm",title:m.title,class:"inline-flex items-center gap-1"},{default:d(()=>[i(P,{name:m.icon,class:"size-3 shrink-0"},null,8,["name"]),p(" "+c(m.label),1)]),_:2},1032,["color","title"]))),128))])):l("",!0),i(F,null,{default:d(()=>[e(g)?(t(),o("p",Hn,[e(g).streak>=1?(t(),o(B,{key:0},[r[1]||(r[1]=p(" Failing for ",-1)),n("strong",Kn,c(e(g).streak),1),p(" consecutive run"+c(e(g).streak===1?"":"s")+". ",1),e(g).lastPass?(t(),o(B,{key:0},[r[0]||(r[0]=p(" Last passed in ",-1)),i($,{to:`/test-run-cases/${e(g).lastPass.id}`,class:"text-primary hover:underline"},{default:d(()=>[p(" run #"+c(e(g).lastPass.runId),1)]),_:1},8,["to"]),p(" ("+c(("formatRelativeTime"in u?u.formatRelativeTime:e(Se))(e(g).lastPass.startTime))+"). ",1)],64)):e(g).total>1?(t(),o(B,{key:1},[p(" No passing run in the last "+c(e(g).total)+" recorded. ",1)],64)):(t(),o(B,{key:2},[p(" First recorded run of this test. ")],64))],64)):s.testCase?.status==="passed"?(t(),o(B,{key:1},[p(" This execution passed. ")],64)):l("",!0)])):l("",!0),e(w).length>1?(t(),o("div",Wn,[r[2]||(r[2]=n("p",{class:"text-xs text-gray-400 mb-1"},"Recent runs (oldest → newest)",-1)),n("div",Gn,[(t(!0),o(B,null,te(e(w),m=>(t(),k(h,{key:m.id,text:`Run #${m.runId}: ${m.status}`},{default:d(()=>[i($,{to:`/test-run-cases/${m.id}`,class:q(["size-3.5 rounded-sm inline-block transition-colors",[a(m.status),m.id===s.currentId?"ring-2 ring-offset-1 ring-primary":""]])},null,8,["to","class"])]),_:2},1032,["text"]))),128))])])):l("",!0)]),_:1})])]),_:1})}}}),qn=Object.assign(Jn,{__name:"TestCaseVerdictCard"}),Qn={class:"space-y-3"},Zn={class:"space-y-1.5"},Xn={class:"flex items-center gap-2 flex-wrap"},Yn={class:"text-xs text-gray-500"},ea=["title"],ta={class:"text-xs text-gray-500 dark:text-gray-400"},sa={key:0,class:"rounded-lg border border-default bg-elevated/40 p-2.5 space-y-1"},na={class:"flex items-center gap-1.5 flex-wrap"},aa={class:"text-xs text-gray-600 dark:text-gray-400 line-clamp-3"},oa=["title"],ra=re({__name:"FailureClusterCard",props:{cluster:{}},setup(s){const _=s,x=C(()=>Math.max(0,_.cluster.sameRunCaseCount-1)),b=C(()=>{const g=_.cluster.diagnosis;return g&&g.status==="completed"&&g.summary?g:null}),w=g=>g==="high"?"success":g==="medium"?"warning":"neutral";return(g,a)=>{const u=fe,r=Ae,P=ce,z=Ie,$=ye;return t(),k($,{icon:"i-lucide-layers","icon-class":"text-primary",title:"Failure cluster",help:"cluster.concept"},{actions:d(()=>[s.cluster.isNew?(t(),k(u,{key:0,color:"warning",variant:"subtle",size:"sm"},{default:d(()=>[...a[0]||(a[0]=[p("New",-1)])]),_:1})):l("",!0),s.cluster.status&&s.cluster.status!=="open"?(t(),k(u,{key:1,color:s.cluster.status==="resolved"?"success":"neutral",variant:"subtle",size:"sm",class:"capitalize"},{default:d(()=>[p(c(s.cluster.status),1)]),_:1},8,["color"])):l("",!0)]),default:d(()=>[n("div",Qn,[n("div",Zn,[n("div",Xn,[s.cluster.errorType?(t(),k(u,{key:0,color:e(Hs)(s.cluster.errorType),variant:"soft",size:"sm"},{default:d(()=>[p(c(s.cluster.errorType),1)]),_:1},8,["color"])):l("",!0),n("span",Yn,c(s.cluster.occurrences??0)+" occurrence"+c((s.cluster.occurrences??0)===1?"":"s"),1)]),n("p",{class:"font-mono text-xs text-gray-600 dark:text-gray-400 break-all line-clamp-2",title:s.cluster.signature},c(s.cluster.signature),9,ea)]),n("p",ta,[e(x)>0?(t(),o(B,{key:0},[p(" Matches "+c(e(x))+" other failing "+c(e(x)===1?"test":"tests")+" in this run. ",1)],64)):l("",!0),s.cluster.isNew?(t(),o(B,{key:2},[p("Opened a new cluster in this run.")],64)):(t(),o(B,{key:1},[a[1]||(a[1]=p(" Known failure — first seen in ",-1)),i(r,{to:`/test-runs/${s.cluster.firstSeenRunId}`,class:"text-primary hover:underline"},{default:d(()=>[p(" run #"+c(s.cluster.firstSeenRunId),1)]),_:1},8,["to"]),s.cluster.firstSeenAt?(t(),o(B,{key:0},[p(" ("+c(("formatRelativeTime"in g?g.formatRelativeTime:e(Se))(s.cluster.firstSeenAt))+")",1)],64)):l("",!0),a[2]||(a[2]=p(". ",-1))],64))]),e(b)?(t(),o("div",sa,[n("div",na,[i(P,{name:"i-lucide-sparkles",class:"size-3.5 text-primary shrink-0"}),a[3]||(a[3]=n("span",{class:"text-xs font-medium"},"AI verdict",-1)),e(b).category?(t(),k(u,{key:0,color:"neutral",variant:"soft",size:"xs"},{default:d(()=>[p(c(e(b).category),1)]),_:1})):l("",!0),e(b).confidence?(t(),k(u,{key:1,color:w(e(b).confidence),variant:"soft",size:"xs"},{default:d(()=>[p(c(e(b).confidence)+" confidence ",1)]),_:1},8,["color"])):l("",!0)]),n("p",aa,c(e(b).summary),1)])):l("",!0),s.cluster.triageNote?(t(),o("p",{key:1,class:"text-xs italic text-gray-500 dark:text-gray-400",title:s.cluster.triageNote}," “"+c(s.cluster.triageNote)+"” ",9,oa)):l("",!0),i(z,{to:`/failure-clusters/${s.cluster.id}`,size:"sm",color:"primary",variant:"solid",block:"","trailing-icon":"i-lucide-arrow-right"},{default:d(()=>[...a[4]||(a[4]=[p(" Open cluster investigation ",-1)])]),_:1},8,["to"])])]),_:1})}}}),ia=Object.assign(ra,{__name:"FailureClusterCard"}),la={class:"space-y-3"},ca={class:"text-xs text-gray-400 inline-flex items-center gap-1"},ua={key:0,class:"text-primary"},da={key:0,class:"flex items-center justify-between gap-2 rounded-lg border border-default bg-elevated/40 p-2.5"},ma={class:"inline-flex items-center gap-2 text-sm text-gray-500"},pa={key:1,class:"flex items-center gap-2"},ga={key:2,class:"rounded-lg border border-dashed border-default p-4 text-center text-gray-400"},fa={class:"text-sm inline-flex items-center gap-1 justify-center"},ya={class:"pt-1 text-center"},xa=re({__name:"TestCaseAiCard",props:{testRunsCaseId:{}},setup(s){const _=s,{aiStatus:x}=As(),b=Xt(),w=A(null),g=A(!1),a=A(null),u=A([]),r=A(0),P=A(0),z=A(null),$=A(!1),h=A(!1),F=A(null),M=A(!1),m=A("");async function I(){$.value=!0;try{const y=await $fetch(`/api/test-run-cases/${_.testRunsCaseId}/diagnosis-context`,{query:{format:"json"}});a.value=y.text,u.value=y.sections,r.value=y.tokenEstimate,P.value=y.imageTokenEstimate??0,z.value=y.coverage}catch{a.value=null,u.value=[],r.value=0,z.value=null}finally{$.value=!1}}async function E(){try{const y=await $fetch(`/api/test-run-cases/${_.testRunsCaseId}/diagnosis`);w.value=y.diagnosis}catch{}}xt(()=>{E(),I()});const U=C(()=>{const y=w.value?.details;if(!y)return[];const N=[];if(Array.isArray(y.evidence)&&N.push(...y.evidence),Array.isArray(y.hypotheses))for(const ne of y.hypotheses)Array.isArray(ne?.evidence)&&N.push(...ne.evidence);return Vs(N)});function R(y){F.value=y,h.value=!0}function W(y){m.value=m.value?`${m.value}
|
|
2
|
+
|
|
3
|
+
${y}`:y,M.value=!0}async function G(y=!1){g.value=!0;try{const N=y?`/api/test-run-cases/${_.testRunsCaseId}/diagnose?force=true`:`/api/test-run-cases/${_.testRunsCaseId}/diagnose`,ne=m.value.trim()?{additionalContext:m.value.trim()}:void 0;w.value=await $fetch(N,{method:"POST",body:ne})}catch(N){const ne=N?.statusCode;ne===409?(b.add({title:"Diagnosis already running",color:"warning"}),E()):ne===503?b.add({title:"AI diagnosis is not configured",color:"warning"}):b.add({title:"Diagnosis failed",description:Ks(N),color:"error"})}finally{g.value=!1}}function D(y){return y.status==="running"&&Date.now()-new Date(y.updatedAt).getTime()>300*1e3}const Z=C(()=>w.value&&(w.value.status==="completed"||w.value.status==="failed")),Q=C(()=>!w.value||w.value.status==="failed"||w.value.status==="running"&&D(w.value)),de=C(()=>w.value?.status==="running"&&!D(w.value)&&!g.value);return(y,N)=>{const ne=Fs,v=ce,S=Ps,H=Js,J=Ie,X=Us,se=ht,O=Bs,Y=Ae,ee=ye;return t(),k(ee,{icon:"i-lucide-sparkles","icon-class":"text-primary",title:"AI diagnosis",help:"case.ai"},{actions:d(()=>[i(ne,{"context-endpoint":`/api/test-run-cases/${s.testRunsCaseId}/diagnosis-context`},null,8,["context-endpoint"])]),default:d(()=>[n("div",la,[n("p",ca,[i(v,{name:"i-lucide-triangle-alert",class:"size-3 shrink-0"}),N[6]||(N[6]=p(" AI-generated — verify before applying. ",-1))]),e(x)?.configured?(t(),k(S,{key:0,sections:e(u),"not-applicable":e(z)?.notApplicable,"token-estimate":e(r),loading:e($),onViewSection:R,onOpen:N[0]||(N[0]=ae=>h.value=!0)},null,8,["sections","not-applicable","token-estimate","loading"])):l("",!0),e(x)?.configured?(t(),o(B,{key:1},[n("div",null,[n("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:N[1]||(N[1]=ae=>M.value=!e(M))},[i(v,{name:e(M)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3.5"},null,8,["name"]),N[7]||(N[7]=p(" Additional context ",-1)),e(m).trim()?(t(),o("span",ua,"(1)")):l("",!0)]),e(M)?(t(),k(H,{key:0,modelValue:e(m),"onUpdate:modelValue":N[2]||(N[2]=ae=>ge(m)?m.value=ae:null),placeholder:"e.g. We deployed a new auth middleware yesterday…",rows:3,class:"w-full text-sm mt-1"},null,8,["modelValue"])):l("",!0)]),e(de)?(t(),o("div",da,[n("span",ma,[i(v,{name:"i-lucide-loader-circle",class:"size-4 animate-spin text-primary shrink-0"}),N[8]||(N[8]=p(" Diagnosis in progress… ",-1))]),i(J,{size:"xs",color:"neutral",variant:"outline",icon:"i-lucide-refresh-cw",loading:e(g),onClick:E},{default:d(()=>[...N[9]||(N[9]=[p(" Refresh ",-1)])]),_:1},8,["loading"])])):(t(),o("div",pa,[e(Q)?(t(),k(J,{key:0,icon:"i-lucide-sparkles",size:"sm",color:"primary",variant:"solid",loading:e(g),onClick:N[3]||(N[3]=ae=>G(e(w)?.status==="running"))},{default:d(()=>[p(c(e(w)?.status==="running"?"Restart diagnosis":"Diagnose with AI"),1)]),_:1},8,["loading"])):e(w)?.status==="completed"?(t(),k(J,{key:1,icon:"i-lucide-refresh-cw",size:"xs",color:"primary",variant:"soft",loading:e(g),onClick:N[4]||(N[4]=ae=>G(!0))},{default:d(()=>[...N[10]||(N[10]=[p(" Re-diagnose ",-1)])]),_:1},8,["loading"])):l("",!0)])),e(Z)?(t(),k(X,{key:2,diagnosis:e(w),onViewSection:R,onPrefillContext:W},null,8,["diagnosis"])):l("",!0)],64)):(t(),o("div",ga,[n("p",fa,[N[11]||(N[11]=p(" AI diagnosis is not configured ",-1)),i(se,{topic:"cluster.ai-setup"})]),N[13]||(N[13]=n("p",{class:"text-xs mt-2 max-w-xs mx-auto"},[p(" Use "),n("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)),i(J,{to:"/settings/ai",size:"xs",color:"neutral",variant:"outline",class:"mt-3"},{default:d(()=>[...N[12]||(N[12]=[p(" Configure in Settings ",-1)])]),_:1})])),i(O,{open:e(h),sections:e(u),"token-estimate":e(r),"image-token-estimate":e(P),loading:e($),"focus-section":e(F),"cited-sections":e(U),"not-applicable-sections":e(z)?.notApplicable,"onUpdate:open":N[5]||(N[5]=ae=>{h.value=ae,ae||(F.value=null)}),onRefresh:I},null,8,["open","sections","token-estimate","image-token-estimate","loading","focus-section","cited-sections","not-applicable-sections"]),n("div",ya,[i(Y,{to:"/mcp",class:"inline-flex items-center gap-1 text-xs text-gray-400 hover:text-primary transition-colors"},{default:d(()=>[i(v,{name:"i-lucide-bot",class:"size-3"}),N[14]||(N[14]=p(" Query this failure from your AI agent via MCP ",-1))]),_:1})])])]),_:1})}}}),ha=Object.assign(xa,{__name:"TestCaseAiCard"});function wt(s,_,x){const b=A(null),w=A(!1),g=A(!1);async function a(){const u=s();if(!(!u||!$e(_)||w.value)){g.value=!0,w.value=!0;try{b.value=await $fetch(u)}catch{b.value=null}finally{w.value=!1}}}return xt(()=>{ve(()=>$e(_),u=>{u&&(x||g.value)&&!b.value&&a()},{immediate:!0})}),{data:b,pending:w,load:a}}function va(s,_,x,b={}){return wt(()=>{const w=$e(s),g=$e(_);return w&&g?`/api/test-runs/${w}/cases/${g}/trace-stacks`:null},x,b.auto??!0)}function _a(s,_,x,b={}){return wt(()=>{const w=$e(s),g=$e(_);return w&&g?`/api/test-runs/${w}/cases/${g}/trace-network`:null},x,b.auto??!1)}const ka={class:"max-h-[32rem] overflow-y-auto"},ba={key:0,class:"mb-2 flex items-center gap-1.5 text-xs text-gray-400 dark:text-gray-500"},wa={key:0,class:"mt-3 flex items-center gap-1.5 text-xs text-gray-400 dark:text-gray-500"},$a=re({__name:"TestSourceCard",props:{frames:{},testSource:{},runId:{},testRunsCaseId:{},hasTrace:{type:Boolean},projectKey:{},projectName:{},storageKey:{}},setup(s,{expose:_}){const x=s,{data:b,pending:w}=va(()=>x.runId,()=>x.testRunsCaseId,()=>x.hasTrace,{auto:!0}),g=C(()=>b.value?.status==="ok"?b.value.frames??[]:[]),a=C(()=>g.value.length>0),u=C(()=>x.frames?.length??0),r=C(()=>u.value>0||!!x.testSource),P=A(null),z=C({get:()=>P.value??(a.value?"trace":"captured"),set:M=>{P.value=M}}),$=C(()=>[{label:`Full stack (${g.value.length})`,value:"trace"},{label:`Captured (${u.value||1})`,value:"captured"}]),h=C(()=>z.value==="trace"&&a.value?g.value.length:u.value||null),F=A(null);return _({reveal:()=>F.value?.reveal()}),(M,m)=>{const I=Je,E=ce,U=os,R=rs,W=vt,G=qe,D=Ke,Z=He;return t(),k(Z,{ref_key:"card",ref:F,"storage-key":s.storageKey,icon:"i-lucide-code",count:e(h),title:"Test source",help:"case.test-source"},Yt({folded:d(()=>[e(z)==="trace"&&e(a)?(t(),o(B,{key:0},[p(" Full call stack from the trace"+c(e(b)?.hasSources===!1?" (recorded without sources)":""),1)],64)):e(u)>1?(t(),o(B,{key:1},[p(" The failing line and "+c(e(u)-1)+" caller"+c(e(u)-1===1?"":"s"),1)],64)):(t(),o(B,{key:2},[p("Source around the failing assertion")],64))]),default:d(()=>[n("div",ka,[e(z)==="trace"&&e(a)?(t(),o(B,{key:0},[e(b)?.hasSources===!1?(t(),o("p",ba,[i(E,{name:"i-lucide-info",class:"size-3.5 shrink-0"}),m[1]||(m[1]=p(" Trace recorded without sources — frame list only. ",-1))])):l("",!0),i(U,{frames:e(g),"project-key":s.projectKey,"project-name":s.projectName},null,8,["frames","project-key","project-name"])],64)):(t(),o(B,{key:1},[s.frames?.length?(t(),k(R,{key:0,frames:s.frames,"project-key":s.projectKey,"project-name":s.projectName},null,8,["frames","project-key","project-name"])):s.testSource?(t(),k(W,{key:1,text:"```typescript\n"+s.testSource+"\n```"},null,8,["text"])):s.hasTrace&&e(w)?(t(),k(G,{key:2,text:"Loading call stack from trace…"})):l("",!0)],64))]),s.hasTrace?l("",!0):(t(),o("p",wa,[i(E,{name:"i-lucide-info",class:"size-3.5 shrink-0"}),n("span",null,[m[3]||(m[3]=p(" Want to go deeper? Record traces (",-1)),m[4]||(m[4]=n("code",null,"trace: 'retain-on-failure'",-1)),m[5]||(m[5]=p(") to see the full call stack with source here. ",-1)),i(D,{to:"ui-overview#trace-powered-deep-views","no-icon":"",class:"underline"},{default:d(()=>[...m[2]||(m[2]=[p("Learn more",-1)])]),_:1})])]))]),_:2},[e(a)&&e(r)?{name:"actions",fn:d(()=>[i(I,{modelValue:e(z),"onUpdate:modelValue":m[0]||(m[0]=Q=>ge(z)?z.value=Q:null),items:e($),size:"xs",variant:"link",ui:{list:"gap-2",trigger:"px-1.5"}},null,8,["modelValue","items"])]),key:"0"}:void 0]),1032,["storage-key","count"])}}}),Ca=Object.assign($a,{__name:"TestSourceCard"}),Ta={class:"space-y-3"},Sa={class:"divide-y divide-default"},Ia={class:"flex items-center gap-2 min-w-0"},Ra={class:"text-sm truncate"},La={key:0,class:"text-xs text-gray-400 shrink-0"},za=re({__name:"TestCaseEvidenceCard",props:{attachments:{},traces:{},storageKey:{}},setup(s,{expose:_}){const x=s,b=Oe(),w=C(()=>x.attachments.filter(h=>Te(h.path,h.contentType)).length),g=C(()=>x.attachments.filter(h=>Ne(h.path,h.contentType)).length),a=C(()=>x.attachments.filter(h=>!Te(h.path,h.contentType)&&!Ne(h.path,h.contentType))),u=C(()=>w.value+g.value+x.traces.length+a.value.length),r=C(()=>{const h=[];return w.value&&h.push(`${w.value} screenshot${w.value===1?"":"s"}`),g.value&&h.push(`${g.value} video${g.value===1?"":"s"}`),x.traces.length&&h.push(`${x.traces.length} trace${x.traces.length===1?"":"s"}`),a.value.length&&h.push(`${a.value.length} file${a.value.length===1?"":"s"}`),h.join(" · ")||"No evidence captured"});function P(h,F){return _t(h,F,b.app?.baseURL)}function z(h){return h.split("/").pop()||h}const $=A(null);return _({reveal:()=>$.value?.reveal?.()}),(h,F)=>{const M=is,m=ls,I=cs,E=ce,U=Ie,R=us,W=bt,G=He;return t(),k(G,{ref_key:"card",ref:$,"storage-key":s.storageKey,icon:"i-lucide-camera",title:"Failure evidence",count:e(u),help:"case.evidence"},{folded:d(()=>[p(c(e(r)),1)]),default:d(()=>[n("div",Ta,[i(M,{attachments:s.attachments},null,8,["attachments"]),i(m,{attachments:s.attachments},null,8,["attachments"]),i(I,{traces:s.traces},null,8,["traces"]),e(a).length?(t(),k(R,{key:0,icon:"i-lucide-paperclip",label:"Attachments",count:e(a).length,collapsible:!1},{default:d(()=>[n("div",Sa,[(t(!0),o(B,null,te(e(a),D=>(t(),o("div",{key:D.id,class:"flex items-center justify-between gap-2 px-3 py-2"},[n("div",Ia,[i(E,{name:"i-lucide-file",class:"size-4 text-gray-400 shrink-0"}),n("span",Ra,c(z(D.path)),1),D.size?(t(),o("span",La,c(("formatBytes"in h?h.formatBytes:e(we))(D.size)),1)):l("",!0)]),i(U,{to:P(D.path,D.contentType),target:"_blank",icon:"i-lucide-external-link",size:"xs",color:"neutral",variant:"soft",label:"Open"},null,8,["to"])]))),128))])]),_:1},8,["count"])):l("",!0),e(u)===0?(t(),k(W,{key:1,icon:"i-lucide-camera-off",text:"No screenshots, video or traces captured"})):l("",!0)])]),_:1},8,["storage-key","count"])}}}),Ma=Object.assign(za,{__name:"TestCaseEvidenceCard"}),ja={class:"space-y-1 max-h-80 overflow-y-auto"},Da={class:"min-w-0 flex-1"},Na={class:"flex items-center gap-2"},Aa={class:"truncate"},Pa={key:0,class:"text-xs text-gray-400 mt-0.5 ml-0"},Ua=re({__name:"TestCaseConsoleCard",props:{entries:{}},setup(s){function _(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,w)=>{const g=ce,a=fe,u=ye;return s.entries.length>0?(t(),k(u,{key:0,icon:"i-lucide-terminal",title:"Console output",count:s.entries.length,help:"case.console"},{default:d(()=>[n("div",ja,[(t(!0),o(B,null,te(s.entries,(r,P)=>(t(),o("div",{key:P,class:"flex items-start gap-2 py-1.5 px-2 rounded hover:bg-gray-50 dark:hover:bg-gray-800 text-sm"},[i(g,{name:x(r.type),class:q([r.type==="error"||r.type==="assert"?"text-red-500":r.type==="warning"?"text-amber-500":"text-gray-400","size-4 mt-0.5 shrink-0"])},null,8,["name","class"]),n("div",Da,[n("div",Na,[i(a,{color:_(r.type),variant:"soft",size:"xs",class:"shrink-0"},{default:d(()=>[p(c(r.type),1)]),_:2},1032,["color"]),n("span",Aa,c(r.text),1)]),r.location?(t(),o("div",Pa,c(r.location),1)):l("",!0)])]))),128))])]),_:1},8,["count"])):l("",!0)}}}),Ba=Object.assign(Ua,{__name:"TestCaseConsoleCard"}),Fa={key:0,class:"space-y-4 text-sm"},Va={class:"space-y-1.5"},Ea={class:"flex items-center gap-2"},Oa={key:0,class:"text-xs text-gray-500"},Ha={class:"block text-xs break-all text-gray-700 dark:text-gray-300"},Ka={key:0,class:"text-xs text-red-600 dark:text-red-400 font-mono"},Wa={class:"flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-gray-400"},Ga={key:0,class:"font-mono"},Ja={key:1,class:"font-mono"},qa={key:2},Qa={key:3,title:"Bytes on the wire"},Za={key:0},Xa={class:"flex h-2 rounded overflow-hidden bg-gray-100 dark:bg-gray-800"},Ya=["title"],eo={class:"flex flex-wrap gap-x-3 gap-y-1 mt-1.5 text-xs text-gray-500"},to={class:"text-xs font-medium text-gray-500 dark:text-gray-400 mb-1.5 capitalize"},so={key:0,class:"rounded border border-default divide-y divide-default max-h-48 overflow-y-auto"},no={class:"text-gray-500 dark:text-gray-400 shrink-0"},ao={class:"break-all text-gray-700 dark:text-gray-300"},oo={key:1,class:"text-xs text-gray-400"},ro={key:1},io={key:0,class:"rounded border border-default p-2"},lo=["src","alt"],co={key:1,class:"max-h-96 overflow-y-auto"},uo={key:0,class:"mt-1 text-xs text-gray-400"},mo={key:2,class:"text-xs text-gray-400"},po={key:2,class:"text-xs text-gray-400"},go=re({__name:"TraceNetworkDrawer",props:{open:{type:Boolean},entry:{},runId:{},testRunsCaseId:{}},emits:["update:open"],setup(s,{emit:_}){const x=s,b=_,w=[{key:"dns",label:"DNS",color:"bg-sky-400"},{key:"connect",label:"Connect",color:"bg-violet-400"},{key:"ssl",label:"TLS",color:"bg-rose-400"},{key:"send",label:"Send",color:"bg-amber-400"},{key:"wait",label:"Wait",color:"bg-blue-400"},{key:"receive",label:"Receive",color:"bg-emerald-400"}],g=C(()=>{const $=x.entry?.timings;return $?w.map(h=>({...h,value:$[h.key]??-1})).filter(h=>typeof h.value=="number"&&h.value>=0):[]}),a=C(()=>g.value.reduce(($,h)=>$+h.value,0)),u=C(()=>{const $=x.entry?.requestPostData??"";return $.startsWith("{")||$.startsWith("[")}),r=A(null),P=A(!1),z=new Map;return ve(()=>[x.open,x.entry?.bodySha1],async([$,h])=>{if(r.value=null,!$||!h||!x.runId)return;const F=z.get(h);if(F){r.value=F;return}P.value=!0;try{const M=await $fetch(`/api/test-runs/${x.runId}/cases/${x.testRunsCaseId}/trace-network-body`,{query:{sha1:h}});z.set(h,M),r.value=M}catch{r.value={status:"not-found"}}finally{P.value=!1}},{immediate:!0}),($,h)=>{const F=fe,M=Re,m=qs,I=qe,E=Qs;return t(),k(E,{open:s.open,title:"Request detail",ui:{content:"max-w-xl"},"onUpdate:open":h[0]||(h[0]=U=>b("update:open",U))},{body:d(()=>[s.entry?(t(),o("div",Fa,[n("div",Va,[n("div",Ea,[i(F,{color:("httpMethodColor"in $?$.httpMethodColor:e(We))(s.entry.method),variant:"soft",size:"sm",class:"font-mono shrink-0"},{default:d(()=>[p(c(s.entry.method),1)]),_:1},8,["color"]),i(F,{color:("httpStatusColor"in $?$.httpStatusColor:e(Ge))(s.entry.status),variant:"soft",size:"sm",class:"font-mono shrink-0 tabular-nums"},{default:d(()=>[p(c(s.entry.status>0?s.entry.status:"—"),1)]),_:1},8,["color"]),s.entry.statusText?(t(),o("span",Oa,c(s.entry.statusText),1)):l("",!0)]),n("code",Ha,c(s.entry.url),1),s.entry.failureText?(t(),o("p",Ka,c(s.entry.failureText),1)):l("",!0),n("div",Wa,[s.entry.resourceType?(t(),o("span",Ga,c(s.entry.resourceType),1)):l("",!0),s.entry.mimeType?(t(),o("span",Ja,c(s.entry.mimeType),1)):l("",!0),s.entry.responseBodySize!=null?(t(),o("span",qa,c(("formatBytes"in $?$.formatBytes:e(we))(s.entry.responseBodySize)),1)):l("",!0),s.entry.transferSize!=null?(t(),o("span",Qa,c(("formatBytes"in $?$.formatBytes:e(we))(s.entry.transferSize))+" transferred",1)):l("",!0),i(M,{ms:s.entry.duration},null,8,["ms"]),s.entry.duringFailure?(t(),k(F,{key:4,color:"error",variant:"subtle",size:"xs"},{default:d(()=>[...h[1]||(h[1]=[p("During failing action",-1)])]),_:1})):l("",!0)])]),e(g).length>0&&e(a)>0?(t(),o("div",Za,[h[2]||(h[2]=n("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 mb-1.5"},"Timing",-1)),n("div",Xa,[(t(!0),o(B,null,te(e(g),U=>(t(),o("div",{key:U.key,class:q(U.color),style:Ce({width:`${Math.max(.5,U.value/e(a)*100)}%`}),title:`${U.label}: ${("formatDuration"in $?$.formatDuration:e(Ws))(U.value)}`},null,14,Ya))),128))]),n("div",eo,[(t(!0),o(B,null,te(e(g),U=>(t(),o("span",{key:U.key,class:"inline-flex items-center gap-1"},[n("span",{class:q(["size-2 rounded-full",U.color])},null,2),p(" "+c(U.label)+" ",1),i(M,{ms:U.value,"no-title":""},null,8,["ms"])]))),128))])])):l("",!0),(t(),o(B,null,te(["request","response"],U=>n("div",{key:U},[n("p",to,c(U)+" headers",1),(U==="request"?s.entry.requestHeaders:s.entry.responseHeaders).length>0?(t(),o("div",so,[(t(!0),o(B,null,te(U==="request"?s.entry.requestHeaders:s.entry.responseHeaders,R=>(t(),o("div",{key:`${U}-${R.name}`,class:"px-2 py-1 text-xs font-mono flex gap-2"},[n("span",no,c(R.name)+":",1),n("span",ao,c(R.value),1)]))),128))])):(t(),o("p",oo,"None recorded."))])),64)),s.entry.requestPostData?(t(),o("div",ro,[h[3]||(h[3]=n("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 mb-1.5"},"Request body",-1)),i(m,{code:s.entry.requestPostData,lang:e(u)?"json":"text"},null,8,["code","lang"])])):l("",!0),n("div",null,[h[4]||(h[4]=n("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 mb-1.5"},"Response body",-1)),e(P)?(t(),k(I,{key:0,text:"Loading body…",padded:!1})):e(r)?(t(),o(B,{key:1},[e(r).status==="ok"&&e(r).kind==="image"?(t(),o("div",io,[n("img",{src:e(r).dataUri,alt:s.entry.url,class:"max-w-full max-h-96"},null,8,lo)])):e(r).status==="ok"?(t(),o("div",co,[i(m,{code:e(r).content??"",lang:e(r).kind==="json"?"json":"text"},null,8,["code","lang"]),e(r).truncated?(t(),o("p",uo,"Preview truncated.")):l("",!0)])):(t(),o("p",mo,c(e(r).status==="too-large"?`Body too large to preview (${("formatBytes"in $?$.formatBytes:e(we))(e(r).size??0)}) — open the trace viewer to inspect it.`:e(r).status==="unsupported"?`No preview for ${e(r).mimeType||"this content type"} — open the trace viewer to inspect it.`:"Body not stored in the trace."),1))],64)):s.entry.bodySha1?l("",!0):(t(),o("p",po,"No body captured for this request."))])])):l("",!0)]),_:1},8,["open"])}}}),fo=Object.assign(go,{__name:"TraceNetworkDrawer"}),yo={class:"flex items-center justify-between gap-2 mb-2"},xo={key:0,class:"hidden sm:flex items-center gap-1.5 text-xs text-gray-400"},ho={class:"space-y-1 max-h-[28rem] overflow-y-auto"},vo=["title","onClick"],_o={class:"flex items-center gap-2 text-sm min-w-0"},ko={class:"truncate text-xs flex-1 min-w-0"},bo={key:0,class:"shrink-0 text-xs text-gray-400 font-mono hidden md:inline"},wo={key:1,class:"shrink-0 text-xs text-gray-400 tabular-nums hidden sm:inline"},$o={class:"relative h-1.5 mt-1 rounded bg-gray-100 dark:bg-gray-800 overflow-hidden"},Co={key:0,class:"mt-2 text-xs text-gray-400 dark:text-gray-500"},To=re({__name:"TraceNetworkList",props:{data:{},runId:{},testRunsCaseId:{}},setup(s){const _=s,x=A("all"),b=C(()=>_.data.requests??[]),w=C(()=>({total:b.value.length,failed:b.value.filter(I=>I.failed).length,duringFailure:b.value.filter(I=>I.duringFailure).length})),g=C(()=>[{label:`All (${w.value.total})`,value:"all"},{label:`Failed (${w.value.failed})`,value:"failed",disabled:w.value.failed===0},{label:`During failure (${w.value.duringFailure})`,value:"duringFailure",disabled:w.value.duringFailure===0}]),a=C(()=>x.value==="failed"?b.value.filter(I=>I.failed):x.value==="duringFailure"?b.value.filter(I=>I.duringFailure):b.value);function u(I){try{return new URL(I).pathname||I}catch{return I}}const r=C(()=>Math.max(1,_.data.timelineDuration??1));function P(I){const E=Math.max(0,Math.min(100,I.start/r.value*100)),U=Math.min(100-E,Math.max(1.5,I.duration/r.value*100));return{left:`${E}%`,width:`${U}%`}}const z=C(()=>{const I=_.data.failingWindow;if(!I||I.end<=I.start)return null;const E=Math.max(0,Math.min(100,I.start/r.value*100)),U=Math.max(.5,Math.min(100-E,(I.end-I.start)/r.value*100));return{left:`${E}%`,width:`${U}%`}});function $(I){return I.failed?"bg-red-500":I.duration>1e3?"bg-orange-400":"bg-gray-400 dark:bg-gray-500"}function h(I){return I.failed?"border-l-2 border-l-red-400 dark:border-l-red-600":I.duringFailure?"border-l-2 border-l-amber-400 dark:border-l-amber-600":"border-l-2 border-l-transparent"}const F=A(null),M=A(!1);function m(I){F.value=I,M.value=!0}return(I,E)=>{const U=Je,R=fe,W=Re,G=fo;return t(),o("div",null,[n("div",yo,[i(U,{modelValue:e(x),"onUpdate:modelValue":E[0]||(E[0]=D=>ge(x)?x.value=D:null),items:e(g),size:"xs",variant:"link",ui:{list:"gap-2",trigger:"px-1.5"}},null,8,["modelValue","items"]),s.data.failingWindow?(t(),o("span",xo,[...E[2]||(E[2]=[n("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)])])):l("",!0)]),n("div",ho,[(t(!0),o(B,null,te(e(a),D=>(t(),o("button",{key:D.index,type:"button",class:q([h(D),"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:D.url,onClick:Z=>m(D)},[n("div",_o,[i(R,{color:("httpMethodColor"in I?I.httpMethodColor:e(We))(D.method),variant:"soft",size:"xs",class:"font-mono shrink-0"},{default:d(()=>[p(c(D.method),1)]),_:2},1032,["color"]),i(R,{color:("httpStatusColor"in I?I.httpStatusColor:e(Ge))(D.status),variant:"soft",size:"xs",class:"font-mono shrink-0 tabular-nums",title:D.failureText||D.statusText},{default:d(()=>[p(c(D.status>0?D.status:"—"),1)]),_:2},1032,["color","title"]),n("code",ko,c(u(D.url)),1),D.resourceType?(t(),o("span",bo,c(D.resourceType),1)):l("",!0),D.responseBodySize!=null?(t(),o("span",wo,c(("formatBytes"in I?I.formatBytes:e(we))(D.responseBodySize)),1)):l("",!0),n("span",{class:q(["ml-1 shrink-0 text-xs tabular-nums",D.duration>1e3?"text-red-600 font-medium":D.duration>500?"text-orange-500":"text-gray-500"])},[i(W,{ms:D.duration,"unit-class":"opacity-60"},null,8,["ms"])],2)]),n("div",$o,[e(z)?(t(),o("div",{key:0,class:"absolute inset-y-0 bg-red-500/10 border-x border-red-300/60 dark:border-red-800/60",style:Ce(e(z))},null,4)):l("",!0),n("div",{class:q(["absolute inset-y-0 rounded-full",$(D)]),style:Ce(P(D))},null,6)])],10,vo))),128))]),s.data.truncated?(t(),o("p",Co," Showing the first "+c(e(b).length)+" of "+c(s.data.totalBeforeCap)+" requests recorded in the trace. ",1)):l("",!0),i(G,{open:e(M),"onUpdate:open":E[1]||(E[1]=D=>ge(M)?M.value=D:null),entry:e(F),"run-id":s.runId,"test-runs-case-id":s.testRunsCaseId},null,8,["open","entry","run-id","test-runs-case-id"])])}}}),So=Object.assign(To,{__name:"TraceNetworkList"}),Io={class:"flex flex-wrap items-center gap-x-3 gap-y-1"},Ro={key:0,class:"flex items-center gap-2 text-xs"},Lo={key:0,class:"flex items-center gap-1 text-red-600 dark:text-red-400"},zo={key:1,class:"flex items-center gap-1 text-amber-600 dark:text-amber-400"},Mo={key:2,class:"text-xs text-gray-400 py-2"},jo={key:1,class:"space-y-1 max-h-[28rem] overflow-y-auto"},Do=["disabled","onClick"],No={key:1,class:"size-3.5 shrink-0"},Ao=["title"],Po=["title"],Uo=["title"],Bo=["title"],Fo=["title"],Vo=["title"],Eo={key:0,class:"px-2 pt-1.5 pb-2 pl-7 space-y-1"},Oo={class:"flex items-center gap-1.5 text-[11px] uppercase tracking-wide text-gray-400"},Ho=["title"],Ko={key:0,class:"shrink-0 text-[10px] uppercase text-gray-400 font-mono hidden sm:inline"},Wo={class:"relative flex-1 h-3 rounded bg-gray-100 dark:bg-gray-800 min-w-0"},Go={key:1,class:"px-2 pb-2 pl-7 space-y-1.5"},Jo={class:"flex items-start gap-2"},qo={key:0,class:"text-gray-400 shrink-0 font-mono"},Qo={class:"font-mono break-all text-gray-700 dark:text-gray-300 flex-1 min-w-0"},Zo=["title"],Xo={key:0,class:"mt-1.5"},Yo=["onClick"],er={key:0,class:"mt-1 whitespace-pre-wrap break-all font-mono text-[11px] leading-relaxed text-gray-500 dark:text-gray-400 max-h-48 overflow-y-auto"},tr={key:2,class:"mt-3 flex items-center gap-1.5 text-xs text-gray-400 dark:text-gray-500"},sr={key:3,class:"mt-3 flex items-center gap-1.5 text-xs text-gray-400 dark:text-gray-500"},nr=re({__name:"TestCaseNetworkRequests",props:{requests:{},runId:{},testRunsCaseId:{},hasTrace:{type:Boolean}},setup(s,{expose:_}){const x=s,b=A("all"),{data:w,pending:g,load:a}=_a(()=>x.runId,()=>x.testRunsCaseId,()=>!!x.hasTrace),u=A(null),r=C({get:()=>u.value??(x.requests.length===0&&x.hasTrace?"trace":"captured"),set:v=>{u.value=v}});ve(()=>r.value==="trace",v=>{v&&a()},{immediate:!0});const P=C(()=>w.value?.status==="ok"?w.value.requests?.length??0:null),z=C(()=>[{label:`Captured (${x.requests.length})`,value:"captured",disabled:x.requests.length===0},{label:P.value!=null?`Full trace (${P.value})`:"Full trace",value:"trace"}]);function $(){x.hasTrace&&(u.value="trace")}_({showTraceMode:$});const h=A(new Set);function F(v){const S=new Set(h.value);S.has(v)?S.delete(v):S.add(v),h.value=S}const M=A(new Set);function m(v){const S=new Set(M.value);S.has(v)?S.delete(v):S.add(v),M.value=S}function I(v){if(v.length===0)return[];const S=Math.min(...v.map(O=>O.startMs)),H=Math.max(...v.map(O=>O.startMs+O.durMs)),J=Math.max(1,H-S),X=new Map(v.map(O=>[O.id,O])),se=O=>{let Y=0,ee=O;const ae=new Set;for(;ee?.parentId&&X.has(ee.parentId)&&!ae.has(ee.id)&&(ae.add(ee.id),ee=X.get(ee.parentId),Y++,!(Y>8)););return Y};return[...v].sort((O,Y)=>O.startMs-Y.startMs||Y.durMs-O.durMs).map(O=>({...O,offsetPct:(O.startMs-S)/J*100,widthPct:Math.max(1.5,O.durMs/J*100),depth:se(O)}))}function E(v){return v.status==="error"?"bg-red-400 dark:bg-red-500":v.kind==="db"?"bg-violet-400 dark:bg-violet-500":v.kind==="client"?"bg-sky-400 dark:bg-sky-500":v.kind==="internal"?"bg-gray-400 dark:bg-gray-500":"bg-emerald-400 dark:bg-emerald-500"}function U(v){const S=v.toLowerCase();return S==="critical"||S==="fatal"?3:S==="error"?2:S==="warning"||S==="warn"?1:0}function R(v){const S=U(v);if(S>=2)return"error";if(S===1)return"warning";const H=v.toLowerCase();return H==="info"||H==="information"?"info":"neutral"}function W(v){try{return new URL(v).pathname||v}catch{return v}}function G(v){return(v.split("/")[1]??v).replace(/^vnd\.[^+]*\+?/,"").replace(/^x-/,"")||v}function D(v){return v?new Date(v).toLocaleString():""}const Z=C(()=>x.requests.map((v,S)=>{const H=Array.isArray(v.serverLogs)?v.serverLogs:[],J=Array.isArray(v.serverTraces)?v.serverTraces:[];let X=0,se=0;for(const Y of H){const ee=U(Y.level);ee>=2?X++:ee===1&&se++}const O=J.find(Y=>!Y.parentId)??J[0];return{...v,_index:S,logs:[...H].sort((Y,ee)=>Y.timestamp-ee.timestamp),spans:J,serverMs:O?O.durMs:null,errorLogCount:X,warnLogCount:se,failed:v.status>=400,hasDetail:H.length>0||J.length>0,path:W(v.url)}})),Q=C(()=>{let v=0,S=0,H=0,J=0,X=0;for(const se of Z.value)se.failed&&v++,se.logs.length>0&&S++,se.spans.length>0&&H++,J+=se.errorLogCount,X+=se.warnLogCount;return{total:Z.value.length,failed:v,withLogs:S,withSpans:H,errorLogs:J,warnLogs:X}}),de=C(()=>{let v=Z.value;return b.value==="failed"?v=v.filter(S=>S.failed):b.value==="logs"&&(v=v.filter(S=>S.logs.length>0)),[...v].sort((S,H)=>{const J=X=>(X.errorLogCount>0?3:0)+(X.failed?2:0)+(X.logs.length>0?1:0);return J(H)-J(S)||S._index-H._index})}),y=C(()=>[{label:`All (${Q.value.total})`,value:"all"},{label:`Failed (${Q.value.failed})`,value:"failed",disabled:Q.value.failed===0},{label:`With logs (${Q.value.withLogs})`,value:"logs",disabled:Q.value.withLogs===0}]),N=C(()=>Q.value.withLogs>0);function ne(v){return v.errorLogCount>0||v.status>=500?"border-l-2 border-l-red-400 dark:border-l-red-600":v.failed||v.warnLogCount>0?"border-l-2 border-l-amber-400 dark:border-l-amber-600":"border-l-2 border-l-transparent"}return(v,S)=>{const H=ce,J=Je,X=qe,se=So,O=fe,Y=Re,ee=Ke,ae=ye;return t(),k(ae,{icon:"i-lucide-network",title:"Network & backend logs",count:e(r)==="trace"?e(P):e(Q).total,help:"case.network"},{actions:d(()=>[n("div",Io,[e(r)==="captured"?(t(),o(B,{key:0},[e(Q).errorLogs>0||e(Q).warnLogs>0?(t(),o("div",Ro,[e(Q).errorLogs>0?(t(),o("span",Lo,[i(H,{name:"i-lucide-octagon-alert",class:"size-3.5"}),p(c(e(Q).errorLogs),1)])):l("",!0),e(Q).warnLogs>0?(t(),o("span",zo,[i(H,{name:"i-lucide-triangle-alert",class:"size-3.5"}),p(c(e(Q).warnLogs),1)])):l("",!0)])):l("",!0),i(J,{modelValue:e(b),"onUpdate:modelValue":S[0]||(S[0]=j=>ge(b)?b.value=j:null),items:e(y),size:"xs",variant:"link",ui:{list:"gap-2",trigger:"px-1.5"}},null,8,["modelValue","items"])],64)):l("",!0),s.hasTrace?(t(),k(J,{key:1,modelValue:e(r),"onUpdate:modelValue":S[1]||(S[1]=j=>ge(r)?r.value=j:null),items:e(z),size:"xs",variant:"pill",ui:{list:"gap-1 p-0.5",trigger:"px-2"}},null,8,["modelValue","items"])):l("",!0)])]),default:d(()=>[e(r)==="trace"?(t(),o(B,{key:0},[e(g)||!e(w)?(t(),k(X,{key:0,text:"Parsing trace network stream…"})):e(w).status==="ok"?(t(),k(se,{key:1,data:e(w),"run-id":s.runId??null,"test-runs-case-id":s.testRunsCaseId??0},null,8,["data","run-id","test-runs-case-id"])):(t(),o("p",Mo,"No network activity recorded in this trace."))],64)):(t(),o("div",jo,[(t(!0),o(B,null,te(e(de),j=>(t(),o("div",{key:j._index,class:q([ne(j),"rounded bg-gray-50/60 dark:bg-gray-800/40"])},[n("button",{type:"button",class:q(["w-full flex items-center gap-2 py-1.5 px-2 text-sm text-left",j.hasDetail?"cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-800":"cursor-default"]),disabled:!j.hasDetail,onClick:K=>j.hasDetail&&F(j._index)},[j.hasDetail?(t(),k(H,{key:0,name:e(h).has(j._index)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3.5 shrink-0 text-gray-400"},null,8,["name"])):(t(),o("span",No)),i(O,{color:("httpMethodColor"in v?v.httpMethodColor:e(We))(j.method),variant:"soft",size:"xs",class:"font-mono shrink-0"},{default:d(()=>[p(c(j.method),1)]),_:2},1032,["color"]),i(O,{color:("httpStatusColor"in v?v.httpStatusColor:e(Ge))(j.status),variant:"soft",size:"xs",class:"font-mono shrink-0 tabular-nums"},{default:d(()=>[p(c(j.status||"—"),1)]),_:2},1032,["color"]),n("code",{class:"truncate text-xs flex-1 min-w-0",title:j.url},c(j.path),9,Ao),j.contentType?(t(),o("span",{key:2,class:"shrink-0 text-xs text-gray-400 font-mono hidden md:inline",title:`Response content type: ${j.contentType}`},c(G(j.contentType)),9,Po)):l("",!0),j.errorLogCount>0?(t(),o("span",{key:3,class:"shrink-0 inline-flex items-center gap-1 text-xs text-red-600 dark:text-red-400",title:`${j.errorLogCount} backend error log(s)`},[i(H,{name:"i-lucide-octagon-alert",class:"size-3.5"}),p(c(j.errorLogCount),1)],8,Uo)):l("",!0),j.warnLogCount>0?(t(),o("span",{key:4,class:"shrink-0 inline-flex items-center gap-1 text-xs text-amber-600 dark:text-amber-400",title:`${j.warnLogCount} backend warning log(s)`},[i(H,{name:"i-lucide-triangle-alert",class:"size-3.5"}),p(c(j.warnLogCount),1)],8,Bo)):l("",!0),j.serverMs!=null?(t(),o("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 (${j.spans.length} span${j.spans.length===1?"":"s"})`},[i(H,{name:"i-lucide-server",class:"size-3.5"}),i(Y,{ms:j.serverMs,"no-title":""},null,8,["ms"])],8,Fo)):l("",!0),j.startTime?(t(),o("span",{key:6,class:"shrink-0 text-xs text-gray-400 hidden sm:inline",title:D(j.startTime)},c(("formatRelativeTime"in v?v.formatRelativeTime:e(Se))(j.startTime)),9,Vo)):l("",!0),n("span",{class:q(["ml-1 shrink-0 text-xs tabular-nums",(j.duration??0)>1e3?"text-red-600 font-medium":(j.duration??0)>500?"text-orange-500":"text-gray-500"])},[i(Y,{ms:j.duration,"unit-class":"opacity-60"},null,8,["ms"])],2)],10,Do),j.spans.length>0&&e(h).has(j._index)?(t(),o("div",Eo,[n("div",Oo,[i(H,{name:"i-lucide-waypoints",class:"size-3.5"}),S[2]||(S[2]=p("Server trace ",-1))]),(t(!0),o(B,null,te(I(j.spans),K=>(t(),o("div",{key:K.id,class:"flex items-center gap-2 text-xs",title:K.status==="error"?`${K.name} (error)`:K.name},[n("div",{class:"w-40 sm:w-56 shrink-0 flex items-center gap-1 min-w-0",style:Ce({paddingLeft:`${K.depth*12}px`})},[K.kind?(t(),o("span",Ko,c(K.kind),1)):l("",!0),n("span",{class:q(["truncate font-mono",K.status==="error"?"text-red-600 dark:text-red-400":"text-gray-600 dark:text-gray-300"])},c(K.name),3)],4),n("div",Wo,[n("div",{class:q(["absolute top-0 h-3 rounded",E(K)]),style:Ce({left:`${K.offsetPct}%`,width:`${K.widthPct}%`})},null,6)]),i(Y,{ms:K.durMs,class:"w-12 shrink-0 text-right text-gray-500"},null,8,["ms"])],8,Ho))),128))])):l("",!0),j.logs.length>0&&e(h).has(j._index)?(t(),o("div",Go,[(t(!0),o(B,null,te(j.logs,(K,xe)=>(t(),o("div",{key:xe,class:"rounded border border-default bg-white dark:bg-gray-900/60 p-2 text-xs"},[n("div",Jo,[i(O,{color:R(K.level),variant:"soft",size:"xs",class:"shrink-0 capitalize"},{default:d(()=>[p(c(K.level),1)]),_:2},1032,["color"]),K.category?(t(),o("span",qo,"["+c(K.category)+"]",1)):l("",!0),n("span",Qo,c(K.message),1),K.timestamp?(t(),o("span",{key:1,class:"shrink-0 text-gray-400 tabular-nums",title:D(K.timestamp)},c(("formatRelativeTime"in v?v.formatRelativeTime:e(Se))(K.timestamp)),9,Zo)):l("",!0)]),K.stack?(t(),o("div",Xo,[n("button",{type:"button",class:"inline-flex items-center gap-1 text-gray-400 hover:text-gray-600 dark:hover:text-gray-200",onClick:Qe=>m(`${j._index}:${xe}`)},[i(H,{name:e(M).has(`${j._index}:${xe}`)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3"},null,8,["name"]),S[3]||(S[3]=p(" Stack trace ",-1))],8,Yo),e(M).has(`${j._index}:${xe}`)?(t(),o("pre",er,c(K.stack),1)):l("",!0)])):l("",!0)]))),128))])):l("",!0)],2))),128))])),e(r)==="captured"&&!e(N)?(t(),o("p",tr,[i(H,{name:"i-lucide-info",class:"size-3.5 shrink-0"}),S[5]||(S[5]=p(" No backend server logs captured — install ",-1)),i(ee,{to:"backend-logs","no-icon":"",class:"underline"},{default:d(()=>[...S[4]||(S[4]=[p("a Piwi backend integration",-1)])]),_:1}),S[6]||(S[6]=p(" to see server-side warnings and errors under each request. ",-1))])):l("",!0),s.hasTrace?l("",!0):(t(),o("p",sr,[i(H,{name:"i-lucide-info",class:"size-3.5 shrink-0"}),n("span",null,[S[8]||(S[8]=p(" Want to go deeper? Record traces (",-1)),S[9]||(S[9]=n("code",null,"trace: 'retain-on-failure'",-1)),S[10]||(S[10]=p(") to see every request with headers, timing and bodies here. ",-1)),i(ee,{to:"ui-overview#trace-powered-deep-views","no-icon":"",class:"underline"},{default:d(()=>[...S[7]||(S[7]=[p("Learn more",-1)])]),_:1})])]))]),_:1},8,["count"])}}}),ar=Object.assign(nr,{__name:"TestCaseNetworkRequests"}),or={class:"space-y-2"},rr=re({__name:"TestCaseTracesCard",props:{traces:{}},setup(s){return(_,x)=>{const b=ds,w=ye;return s.traces.length>0?(t(),k(w,{key:0,icon:"i-lucide-bug-play",title:"Traces",count:s.traces.length,help:"case.traces"},{default:d(()=>[n("div",or,[(t(!0),o(B,null,te(s.traces,g=>(t(),k(b,{key:g.id,trace:g,class:"py-2 px-3 rounded-lg border"},null,8,["trace"]))),128))])]),_:1},8,["count"])):l("",!0)}}}),ir=Object.assign(rr,{__name:"TestCaseTracesCard"}),lr={class:"space-y-3"},cr={class:"flex items-center justify-between px-3 py-2 bg-gray-50 dark:bg-gray-800/50 border-b"},ur={class:"flex items-center gap-2 min-w-0"},dr={class:"text-sm font-medium truncate"},mr={key:0,class:"text-xs text-gray-400 shrink-0"},pr={class:"text-xs text-gray-400"},gr={class:"flex items-center gap-1 shrink-0"},fr=["href"],yr={key:0,class:"bg-gray-100 dark:bg-gray-900"},xr=["src","alt","onClick"],hr={key:1,class:"bg-black"},vr={key:2,class:"bg-gray-50 dark:bg-gray-900"},_r={key:0,class:"flex items-center justify-center py-8"},kr={key:1,class:"p-4 text-red-500 text-sm"},br={key:2,class:"p-4 overflow-auto max-h-96"},wr={class:"text-sm whitespace-pre-wrap font-sans leading-relaxed"},$r=re({__name:"TestCaseAttachmentsCard",props:{attachments:{}},setup(s){const _=s,x=Oe(),b=A(null),w=C(()=>_.attachments.filter(R=>Te(R.path,R.contentType)).map(R=>({src:z(R.path,R.contentType),name:R.name||$(R.path)})));function g(R){b.value=R}const a=new Set([".md",".mdx",".markdown"]),u=new Set(["text/markdown","text/x-markdown"]);function r(R){return R.toLowerCase().split(".").pop()||""}function P(R,W){return!!(a.has(r(R))||W&&u.has(W.toLowerCase()))}function z(R,W){return _t(R,W,x.app?.baseURL)}function $(R){return R.split("/").pop()||R}function h(R){return R==null?"":we(R)}const F=A({}),M=A({}),m=A({}),I=A(new Set);async function E(R){if(F.value[R.id]===void 0&&!m.value[R.id]){m.value[R.id]=!0,M.value[R.id]=null;try{const W=await $fetch(z(R.path,R.contentType),{responseType:"text"});F.value[R.id]=W}catch{M.value[R.id]="Failed to load preview"}finally{m.value[R.id]=!1}}}function U(R,W){const G=new Set(I.value);G.has(R)?G.delete(R):(G.add(R),E(W)),I.value=G}return(R,W)=>{const G=ce,D=Ie,Z=ms,Q=ps,de=ye;return s.attachments.length>0?(t(),k(de,{key:0,icon:"i-lucide-paperclip",title:"Attachments",count:s.attachments.length},{default:d(()=>[n("div",lr,[(t(!0),o(B,null,te(s.attachments,y=>(t(),o("div",{key:y.id,class:"rounded-lg border overflow-hidden"},[n("div",cr,[n("div",ur,[i(G,{name:e(Te)(y.path,y.contentType)?"i-lucide-image":e(Ne)(y.path,y.contentType)?"i-lucide-video":P(y.path,y.contentType)?"i-lucide-file-text":"i-lucide-file",class:"size-4 text-gray-400 shrink-0"},null,8,["name"]),n("span",dr,c($(y.path)),1),y.name&&y.name!==$(y.path)?(t(),o("span",mr,c(y.name),1)):l("",!0),n("span",pr,c(h(y.size)),1)]),n("div",gr,[P(y.path,y.contentType)?(t(),k(D,{key:0,size:"xs",color:"neutral",variant:"soft",onClick:N=>U(y.id,y)},{default:d(()=>[p(c(e(I).has(y.id)?"Hide preview":"Preview"),1)]),_:2},1032,["onClick"])):l("",!0),n("a",{href:z(y.path,y.contentType),target:"_blank",class:"text-primary hover:underline text-xs shrink-0"},"Open",8,fr)])]),e(Te)(y.path,y.contentType)?(t(),o("div",yr,[n("img",{src:z(y.path,y.contentType),alt:y.name||"Screenshot",class:"max-w-full max-h-96 object-contain mx-auto cursor-pointer hover:opacity-90 transition-opacity",loading:"lazy",onClick:N=>g(e(w).findIndex(ne=>ne.src===z(y.path,y.contentType)))},null,8,xr)])):e(Ne)(y.path,y.contentType)?(t(),o("div",hr,[i(Z,{src:z(y.path,y.contentType)},null,8,["src"])])):P(y.path,y.contentType)&&e(I).has(y.id)?(t(),o("div",vr,[e(m)[y.id]?(t(),o("div",_r,[i(G,{name:"i-lucide-loader-circle",class:"size-5 animate-spin text-gray-400"})])):e(M)[y.id]?(t(),o("div",kr,c(e(M)[y.id]),1)):e(F)[y.id]?(t(),o("div",br,[n("pre",wr,c(e(F)[y.id]),1)])):l("",!0)])):l("",!0)]))),128))]),i(Q,{modelValue:e(b),"onUpdate:modelValue":W[0]||(W[0]=y=>ge(b)?b.value=y:null),images:e(w)},null,8,["modelValue","images"])]),_:1},8,["count"])):l("",!0)}}}),Cr=Object.assign($r,{__name:"TestCaseAttachmentsCard"});function Tr(s){return Array.isArray(s)?s.some(_=>_&&typeof _.type=="string"&&_.type.toLowerCase()==="slow"):!1}function Sr(s){const _=[];if(!s)return _;const x=s.steps||[],w=x.filter(a=>a.category==="navigation").filter(a=>a.duration>3e3);if(w.length>0){const a=w.sort((u,r)=>r.duration-u.duration)[0];_.push({type:"warning",message:"Slow navigation detected",details:`"${a.title}" took ${(a.duration/1e3).toFixed(1)}s. The tested page may have performance issues (slow server response, heavy JS bundles, etc.).`})}x.length>20&&_.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&&_.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(a=>a.category==="assertion"&&a.duration>2e3);if(g.length>0){const a=g.sort((u,r)=>r.duration-u.duration)[0];_.push({type:"info",message:"Slow assertions detected",details:`"${a.title}" took ${(a.duration/1e3).toFixed(1)}s. The UI may be slow to render or the assertion timeout may need tuning.`})}return Tr(s.testAnnotations)&&typeof s.duration=="number"&&s.duration<1e4&&_.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&&_.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.`}),_}function Ir(s,_){const x=s.search(/\n at /);if(x===-1)return _!==void 0&&s.length>_?s.slice(0,_)+`
|
|
4
|
+
[truncated]`:s;const b=s.slice(0,x),g=s.slice(x).split(`
|
|
5
|
+
`),a=[];let u=0;const r=()=>{u>0&&(a.push(`… (${u} internal frame${u>1?"s":""})`),u=0)};for(const z of g){const $=z.trimStart();$.startsWith("at ")?z.includes("node_modules")||$.startsWith("at node:")?u++:(r(),a.push(z)):($===""||r(),a.push(z))}r();let P=b+`
|
|
6
|
+
`+a.join(`
|
|
7
|
+
`);return _!==void 0&&P.length>_&&(P=P.slice(0,_)+`
|
|
8
|
+
[truncated]`),P}const Rr={class:"space-y-4"},Lr=["innerHTML"],zr={class:"grid grid-cols-1 xl:grid-cols-[3fr_2fr] gap-4"},Mr={class:"space-y-4 xl:order-2"},jr={class:"space-y-4 xl:order-1 min-w-0"},Dr={class:"max-h-96 overflow-y-auto"},Nr={class:"space-y-3"},Ar={key:0},Pr={class:"flex flex-wrap items-center gap-x-3 gap-y-1.5 text-xs mb-3"},Ur={class:"font-medium text-gray-600 dark:text-gray-300"},Br={class:"tabular-nums text-gray-500 dark:text-gray-400"},Fr={class:"text-xs tabular-nums text-gray-400 dark:text-gray-500"},Vr={key:0,class:"inline-flex items-center justify-center size-5 rounded-full bg-red-100 dark:bg-red-900/30 text-red-600 dark:text-red-400 text-xs leading-none",title:"Step failed"},Er={key:1,class:"inline-flex items-center justify-center size-5 rounded-full bg-green-100 dark:bg-green-900/30 text-green-600 dark:text-green-400 text-xs leading-none",title:"Step passed"},Or={class:"flex items-center gap-2"},Hr={key:0,class:"text-xs text-red-500 mt-1 whitespace-pre-wrap break-words font-mono"},Kr={class:"min-w-[6rem]"},Wr={class:"flex items-center justify-between gap-2"},Gr={key:0,class:"text-xs tabular-nums text-gray-400 dark:text-gray-500"},Jr={class:"relative mt-1 h-1.5 w-full overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800"},qr={class:"space-y-4 pt-4"},Qr={key:3,class:"flex flex-col items-center justify-center py-12 text-gray-400"},Zr={class:"space-y-4 pt-1"},Xr={key:0,class:"space-y-2"},Yr={class:"flex items-start gap-2"},ei={class:"space-y-4"},ti={key:3,class:"text-xs text-gray-400 pt-1"},si={class:"bg-gray-100 dark:bg-gray-800 px-1 rounded"},ni={class:"text-xs text-gray-400"},ai={class:"space-y-4 pt-4"},oi={key:0,class:"space-y-4"},ri={class:"flex items-center justify-end"},ii={class:"text-xs whitespace-nowrap"},li={class:"text-gray-500"},ci={class:"text-gray-400 ml-1"},ui={key:1,class:"text-gray-400"},di=["title"],ul=re({__name:"[id]",async setup(s){let _,x;const b=es(),w=ts(),g=b.params.id,{data:a,refresh:u}=([_,x]=pt(()=>ft(`/api/test-run-cases/${g}`,"$cViH4nbiGI")),_=await _,x(),_),r=A([]);ve(()=>a.value?.testCaseId,async f=>{if(f)try{r.value=await $fetch(`/api/test-cases/${f}/history`)}catch{r.value=[]}else r.value=[]},{immediate:!0});const{data:P,refresh:z}=([_,x]=pt(()=>ft(`/api/test-run-cases/${g}/traces`,"$GsSNbTq_Ec")),_=await _,x(),_),$=C(()=>(P.value?.length??0)>0);ss(C(()=>({title:`${a.value?.title||`Test run case #${g}`} — Piwi Dashboard`})));const h=C(()=>!!a.value?.error),F=C(()=>a.value?Sr(a.value):[]),M=C(()=>a.value?.steps?a.value.steps:[]),m=C(()=>a.value?.webVitals??null),I=C(()=>a.value?.networkRequests??[]),E=C(()=>{if(!r.value||r.value.length<2||!a.value?.duration)return null;const f=r.value.filter(le=>le.duration!==null&&le.id!==a.value?.id);if(f.length===0)return null;const T=f.reduce((le,pe)=>le+(pe.duration||0),0)/f.length,V=a.value.duration,oe=V-T,me=T>0?Math.round(oe/T*100):0;return{avg:Math.round(T),current:V,diff:Math.round(oe),pct:me}}),U=C(()=>a.value?.testRun?.metadata),R=C(()=>{const f=U.value;return f?.scm?f.scm:null}),W=C(()=>{const f=U.value;return f?.ci?f.ci:null}),G=C(()=>a.value?.failureCluster??null),D=C(()=>{const f=[];return h.value&&f.push({label:"Diagnosis",icon:"i-lucide-stethoscope",value:"diagnosis",slot:"diagnosis"}),f.push({label:`Steps (${M.value.length})`,icon:"i-lucide-list-checks",value:"steps",slot:"steps"}),h.value||f.push({label:"Artifacts",icon:"i-lucide-paperclip",value:"artifacts",slot:"artifacts"}),f.push({label:"Performance",icon:"i-lucide-gauge",value:"performance",slot:"performance"}),f.push({label:`History${r.value?.length?` (${r.value.length})`:""}`,icon:"i-lucide-trending-up",value:"history",slot:"history"}),f}),Z=C(()=>D.value.map(f=>f.value));function Q(){return h.value?"diagnosis":"steps"}function de(f){let T=typeof f=="string"?f:"";return T==="error"&&(T="diagnosis"),T==="traces"&&(T=h.value?"diagnosis":"artifacts"),Z.value.includes(T)?T:Q()}const y=A(de(b.query.tab));ve(Z,f=>{f.includes(y.value)||(y.value=de(b.query.tab))}),ve(y,f=>{b.query.tab!==f&&w.replace({query:{...b.query,tab:f}})},{immediate:!0});const N=[{accessorKey:"startTime",header:"Date"},{accessorKey:"status",header:"Status"},{accessorKey:"duration",header:"Duration"},{accessorKey:"retries",header:"Retries"},{accessorKey:"runId",header:"Run"},{accessorKey:"error",header:"Error"}],ne={navigation:"info",assertion:"success",action:"warning",input:"warning",api:"info",wait:"neutral",hook:"neutral",fixture:"neutral"},v=[{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"}}}],S=C(()=>{const f=new Map;for(const T of M.value){const V=f.get(T.category)??{count:0,duration:0};V.count+=1,V.duration+=T.duration||0,f.set(T.category,V)}return Array.from(f,([T,V])=>({category:T,...V})).sort((T,V)=>V.duration-T.duration)}),H=C(()=>{let f=-1,T=-1;return M.value.forEach((V,oe)=>{(V.duration||0)>T&&(T=V.duration||0,f=oe)}),f}),J=C(()=>M.value.reduce((f,T)=>Math.max(f,T.duration||0),0)),X=C(()=>M.value.length>0&&M.value.every(f=>typeof f.startTime=="number")),se=C(()=>a.value?.startedAt??(X.value?Math.min(...M.value.map(f=>f.startTime)):0)),O=C(()=>{const f=a.value?.duration??0;if(f>0)return f;if(X.value){const T=Math.max(...M.value.map(V=>V.startTime+(V.duration||0)));return Math.max(1,T-se.value)}return 0});function Y(f){if(X.value&&O.value>0){const V=Math.max(0,Math.min(100,(f.startTime-se.value)/O.value*100)),oe=Math.min(100-V,Math.max(1.5,(f.duration||0)/O.value*100));return{left:`${V}%`,width:`${oe}%`}}return{left:"0%",width:`${J.value>0?Math.max(2,(f.duration||0)/J.value*100):0}%`}}function ee(f){const T=a.value?.duration??0;if(T<=0)return"";const V=f/T*100;return V>0&&V<1?"<1%":`${Math.round(V)}%`}function ae(f){return f>2e3?"text-red-600 font-medium":f>500?"text-orange-500":"text-gray-500"}function j(f){return f>2e3?"bg-red-500":f>500?"bg-orange-400":"bg-gray-400 dark:bg-gray-500"}const K=C(()=>a.value?.testRun?.environment),xe=C(()=>[{filePath:a.value?.filePath??"",title:a.value?.title??"",line:a.value?.line??null,projectName:a.value?.browser?.projectName??null}]),Qe=C(()=>nn(xe.value)),{copy:$t,copied:Ze}=an(),Ct=C(()=>[{label:Ze.value?"Copied":"Retry command",icon:Ze.value?"i-lucide-check":"i-lucide-play",onClick:()=>$t(Qe.value,{toast:"Retry command copied"})},{label:"Refresh",icon:"i-lucide-refresh-cw",onClick:()=>u()}]),Tt=!!Oe().public.demoMode;let he=null;const Xe=C(()=>{const f=a.value?.testRun?.status;return f==="running"||f==="finalizing"});function St(){if(Tt||he)return;const f=a.value?.testRun?.id;f&&(he=new EventSource(`/api/test-runs/${f}/stream`),he.onmessage=T=>{try{const V=JSON.parse(T.data);V.type==="case-files"&&V.data?.testRunsCaseId===Number(g)?(u(),z()):V.type==="run-finished"&&(u(),z(),Pe())}catch{}},he.onerror=()=>{})}function Pe(){he&&(he.close(),he=null)}ve(Xe,f=>{f?St():Pe()},{immediate:!0}),ns(Pe);const{copyRich:It,copied:Ye}=gs();function Rt(){const f=a.value;if(!f?.error)return;const T=window.location.origin,V=f.title??"Unknown test",oe=f.location??"",me=f.error.replace(/\x1b\[[0-9;]*[a-zA-Z]/g,""),le=be=>be.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"),pe=G.value?`${T}/failure-clusters/${G.value.id}`:null,je=`${T}/test-run-cases/${g}?tab=diagnosis`,ke=a.value?.testCaseId?`${T}/test-cases/${a.value.testCaseId}`:null,Be=[`❌ Test failed: ${V}`,oe?`Location: ${oe}`:null,"","Error:",me,"",pe?`Failure cluster: ${pe}`:null,`Execution: ${je}`,ke?`History: ${ke}`:null].filter(be=>be!==null).join(`
|
|
9
|
+
`),Fe=[`<p><strong>❌ Test failed: ${le(V)}</strong>${oe?`<br><code>${le(oe)}</code>`:""}</p>`,`<p><strong>Error:</strong></p><pre>${gt(f.error)}</pre>`,`<p>🔗 ${pe?`<a href="${pe}">View failure cluster</a> · `:""}<a href="${je}">Execution details</a>${ke?` · <a href="${ke}">Test history</a>`:""}</p>`].join("");It(Be,Fe,{toast:"Failure copied"})}const Ue=A(null),et=A(null),Le=A(null),ze=A(null),tt=A(null),Me=A(null),st=A(null),nt=A(null),at=A(null),ot=A(null);function _e(f){f?.scrollIntoView({behavior:"smooth",block:"start"})}const rt={sampleError:()=>_e(Ue.value),executionError:()=>_e(Ue.value),testSource:()=>ze.value?.reveal(),sourceFiles:()=>ze.value?.reveal(),environmentDiff:()=>st.value?.reveal(),visualDiff:()=>nt.value?.reveal(),domSnapshot:()=>at.value?.reveal(),ariaSnapshot:()=>ot.value?.reveal(),screenshots:()=>Me.value?.reveal(),tracePointers:()=>Me.value?.reveal(),artifacts:()=>Me.value?.reveal(),console:()=>_e(et.value),networkRequests:()=>_e(Le.value),serverTraces:()=>_e(Le.value),traceCallStack:()=>ze.value?.reveal(),traceNetwork:()=>{tt.value?.showTraceMode(),_e(Le.value)},steps:()=>{y.value="steps"},failingSteps:()=>{y.value="steps"}};return as(Es,{canLocate:f=>f in rt,open:f=>rt[f]?.()}),(f,T)=>{const V=Qt,oe=Zt,me=ce,le=Ae,pe=_s,je=Ts,ke=Ss,Be=Rs,Fe=Vn,be=Ie,Lt=kt,it=ye,zt=qn,Mt=ia,jt=ha,Dt=Ca,Nt=Ma,At=ys,Pt=xs,Ut=hs,lt=Ba,ct=ar,ut=fs,Bt=vt,Ft=He,Vt=vs,De=fe,ie=Re,Et=Zs,dt=Xs,mt=Ys,Ve=bt,Ot=ir,Ht=Cr,ue=tn,Ee=en,Kt=Ke,Wt=sn,Gt=Cs,Jt=Is;return t(),k(Jt,{id:"test-run-case-detail"},{header:d(()=>[i(Be,null,{leading:d(()=>[i(V),i(oe,{items:[{label:"Home",icon:"i-lucide-house",to:"/"},{label:"Projects",to:"/projects"},...e(a)?.testRun?.project?.id?[{label:e(a).testRun.project.name||"Project",to:`/projects/${e(a).testRun.project.id}`}]:[{label:"Project"}],...e(a)?.testRun?.id?[{label:`Run #${e(a).testRun.id}`+(e(a).testRun.label?` — ${e(a).testRun.label}`:""),to:`/test-runs/${e(a).testRun.id}`}]:[{label:"Test run"}],{label:e(a)?.title||`Test run case #${e(g)}`}]},null,8,["items"])]),right:d(()=>[e(a)?.testCaseId?(t(),k(le,{key:0,to:`/test-cases/${e(a).testCaseId}`,class:"text-xs text-gray-500 hover:text-primary mr-2 flex items-center gap-1",title:"View test case evolution and history"},{default:d(()=>[i(me,{name:"i-lucide-trending-up",class:"size-3.5"}),T[2]||(T[2]=n("span",{class:"hidden sm:inline"},"Evolution",-1))]),_:1},8,["to"])):l("",!0),e(a)?(t(),k(pe,{key:1,endpoint:`/api/test-run-cases/${e(a).id}/export`,"base-name":`piwi-execution-${e(a).id}`,class:"mr-2"},null,8,["endpoint","base-name"])):l("",!0),i(je,{"project-id":e(a)?.testRun?.project?.id,"project-label":e(a)?.testRun?.project?.label??e(a)?.testRun?.project?.name,cases:e(xe),class:"mr-2"},null,8,["project-id","project-label","cases"]),i(ke,{actions:e(Ct)},null,8,["actions"])]),_:1})]),body:d(()=>[i(Gt,{modelValue:e(y),"onUpdate:modelValue":T[1]||(T[1]=L=>ge(y)?y.value=L:null),"tab-items":e(D)},{summary:d(()=>[i(Fe,{"test-case":e(a)??null,"scm-info":e(R),"ci-info":e(W),browser:e(a)?.browser??null,environment:e(K),"steps-count":e(M).length,"historical-timing":e(E),"stable-links":e(a)?.stableLinks??null,onRefresh:T[0]||(T[0]=L=>e(u)())},null,8,["test-case","scm-info","ci-info","browser","environment","steps-count","historical-timing","stable-links"])]),"tab-diagnosis":d(()=>[n("div",Rr,[n("div",{ref_key:"errorEl",ref:Ue,class:"scroll-mt-4"},[e(a)?.error?(t(),k(it,{key:0,icon:"i-lucide-circle-x","icon-class":"text-red-500",title:"Error"},{actions:d(()=>[i(Lt,{text:e(Ye)?"Copied!":"Copy failure"},{default:d(()=>[i(be,{size:"xs",variant:"ghost",color:"neutral",icon:e(Ye)?"i-lucide-check":"i-lucide-clipboard",onClick:Rt},null,8,["icon"])]),_:1},8,["text"])]),default:d(()=>[n("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(gt)(e(Ir)(e(a).error))},null,8,Lr)]),_:1})):l("",!0)],512),n("div",zr,[n("div",Mr,[i(zt,{"test-case":e(a)??null,history:e(r),"current-id":Number(e(g))},null,8,["test-case","history","current-id"]),e(G)?(t(),k(Mt,{key:0,cluster:e(G)},null,8,["cluster"])):l("",!0),i(jt,{"test-runs-case-id":Number(e(g))},null,8,["test-runs-case-id"])]),n("div",jr,[e(a)?.testSourceFrames?.length||e(a)?.testSource||e($)?(t(),k(Dt,{key:0,ref_key:"testSourceCard",ref:ze,"storage-key":"case-test-source",frames:e(a)?.testSourceFrames??null,"test-source":e(a)?.testSource??null,"run-id":e(a)?.testRun?.id??null,"test-runs-case-id":Number(e(g)),"has-trace":e($),"project-key":e(a)?.testRun?.project?.id,"project-name":e(a)?.testRun?.project?.name},null,8,["frames","test-source","run-id","test-runs-case-id","has-trace","project-key","project-name"])):l("",!0),i(Nt,{ref_key:"evidenceCard",ref:Me,"storage-key":"case-evidence",attachments:e(a)?.attachments??[],traces:e(P)??[]},null,8,["attachments","traces"]),e(a)?.testRun?.id?(t(),k(At,{key:1,"storage-key":"case-locators","run-id":e(a).testRun.id,"test-runs-case-id":Number(e(g))},null,8,["run-id","test-runs-case-id"])):l("",!0),e(a)?.testRun?.id?(t(),k(Pt,{key:2,ref_key:"envDiffCard",ref:st,"storage-key":"case-env-diff","run-id":e(a).testRun.id,"test-runs-case-id":Number(e(g))},null,8,["run-id","test-runs-case-id"])):l("",!0),e(a)?.testRun?.id?(t(),k(Ut,{key:3,ref_key:"visualDiffCard",ref:nt,"storage-key":"case-visual-diff","run-id":e(a).testRun.id,"test-runs-case-id":Number(e(g))},null,8,["run-id","test-runs-case-id"])):l("",!0),e(a)?.consoleLogs?.length?(t(),o("div",{key:4,ref_key:"consoleEl",ref:et,class:"scroll-mt-4"},[i(lt,{entries:e(a)?.consoleLogs??[]},null,8,["entries"])],512)):l("",!0),e(I).length>0||e($)?(t(),o("div",{key:5,ref_key:"networkEl",ref:Le,class:"scroll-mt-4"},[i(ct,{ref_key:"networkCard",ref:tt,requests:e(I),"run-id":e(a)?.testRun?.id??null,"test-runs-case-id":Number(e(g)),"has-trace":e($)},null,8,["requests","run-id","test-runs-case-id","has-trace"])],512)):l("",!0),e(a)?.pageState?(t(),k(ut,{key:6,"storage-key":"case-page-state","page-state":e(a).pageState},null,8,["page-state"])):l("",!0),e(a)?.ariaSnapshot?(t(),k(Ft,{key:7,ref_key:"ariaCard",ref:ot,"storage-key":"case-aria",icon:"i-lucide-scan-text",title:"ARIA snapshot",help:"case.aria"},{folded:d(()=>[...T[3]||(T[3]=[p("Accessibility tree captured at the moment of failure",-1)])]),default:d(()=>[n("div",Dr,[i(Bt,{text:"```yaml\n"+e(a).ariaSnapshot+"\n```"},null,8,["text"])])]),_:1},512)):l("",!0),e(a)?.testRun?.id?(t(),k(Vt,{key:8,ref_key:"domSnapshotCard",ref:at,"storage-key":"case-dom-snapshot","run-id":e(a).testRun.id,"test-runs-case-id":Number(e(g))},null,8,["run-id","test-runs-case-id"])):l("",!0)])])])]),"tab-steps":d(()=>[n("div",Nr,[e(M).length>0?(t(),o("div",Ar,[n("div",Pr,[n("span",Ur,c(e(M).length)+" steps",1),T[4]||(T[4]=n("span",{class:"text-gray-300 dark:text-gray-600"},"·",-1)),(t(!0),o(B,null,te(e(S),L=>(t(),o("span",{key:L.category,class:"inline-flex items-center gap-1"},[i(De,{color:ne[L.category]||"neutral",variant:"soft",size:"xs"},{default:d(()=>[p(c(L.category),1)]),_:2},1032,["color"]),n("span",Br,[p("×"+c(L.count)+" · ",1),i(ie,{ms:L.duration},null,8,["ms"])])]))),128))]),i(mt,{"min-width":"40rem",bleed:!1},{default:d(()=>[i(dt,{data:e(M),columns:v,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":d(({row:L})=>[n("span",Fr,c(L.index+1),1)]),"status-cell":d(({row:L})=>[L.original.failed?(t(),o("span",Vr,"✗")):(t(),o("span",Er,"✓"))]),"category-cell":d(({row:L})=>[i(De,{color:ne[L.original.category]||"neutral",variant:"soft",size:"xs"},{default:d(()=>[p(c(L.original.category),1)]),_:2},1032,["color"])]),"title-cell":d(({row:L})=>[n("div",Or,[n("span",{class:q(L.original.failed?"text-red-600 dark:text-red-400 font-medium":"")},c(L.original.title),3),L.index===e(H)?(t(),k(De,{key:0,color:"warning",variant:"subtle",size:"xs",class:"shrink-0",title:"Slowest step in this test"},{default:d(()=>[...T[5]||(T[5]=[p(" slowest ",-1)])]),_:1})):l("",!0)]),L.original.failed&&L.original.error?.message?(t(),o("p",Hr,c(L.original.error.message),1)):l("",!0),L.original.location?(t(),k(Et,{key:1,location:L.original.location,"project-key":e(a)?.testRun?.project?.id,"project-name":e(a)?.testRun?.project?.name,class:"text-xs text-gray-400 dark:text-gray-500 mt-0.5"},null,8,["location","project-key","project-name"])):l("",!0)]),"duration-cell":d(({row:L})=>[n("div",Kr,[n("div",Wr,[i(ie,{ms:L.original.duration,class:q(`text-sm ${ae(L.original.duration)}`),"unit-class":"opacity-60"},null,8,["ms","class"]),ee(L.original.duration)?(t(),o("span",Gr,c(ee(L.original.duration)),1)):l("",!0)]),n("div",Jr,[n("div",{class:q(["absolute inset-y-0 rounded-full",j(L.original.duration)]),style:Ce(Y(L.original))},null,6)])])]),_:1},8,["data"])]),_:1})])):(t(),k(Ve,{key:1,icon:"i-lucide-list-checks",text:"No steps recorded for this execution"}))])]),"tab-artifacts":d(()=>[n("div",qr,[i(Ot,{traces:e(P)||[]},null,8,["traces"]),i(Ht,{attachments:e(a)?.attachments??[]},null,8,["attachments"]),e(a)?.pageState?(t(),k(ut,{key:0,"storage-key":"case-page-state","page-state":e(a).pageState},null,8,["page-state"])):l("",!0),e(a)?.consoleLogs?.length?(t(),k(lt,{key:1,entries:e(a)?.consoleLogs??[]},null,8,["entries"])):l("",!0),e(I).length>0||e($)?(t(),k(ct,{key:2,requests:e(I),"run-id":e(a)?.testRun?.id??null,"test-runs-case-id":Number(e(g)),"has-trace":e($)},null,8,["requests","run-id","test-runs-case-id","has-trace"])):l("",!0),!e(P)?.length&&!e(a)?.attachments?.length&&!e(a)?.consoleLogs?.length&&!e(I).length?(t(),o("div",Qr,[e(Xe)?(t(),o(B,{key:0},[i(me,{name:"i-lucide-loader-circle",class:"size-8 mb-2 animate-spin"}),T[6]||(T[6]=n("p",{class:"text-sm"}," Run in progress — traces and attachments appear here as soon as they are uploaded. ",-1))],64)):(t(),o(B,{key:1},[i(me,{name:"i-lucide-inbox",class:"size-8 mb-2"}),T[7]||(T[7]=n("p",{class:"text-sm"},"No traces, console logs, or network requests captured for this test case.",-1))],64))])):l("",!0)])]),"tab-performance":d(()=>[n("div",Zr,[e(F).length>0?(t(),o("div",Xr,[(t(!0),o(B,null,te(e(F),(L,qt)=>(t(),o("div",{key:qt,class:q(["p-3 rounded-lg border",L.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"])},[n("div",Yr,[i(me,{name:L.type==="warning"?"i-lucide-alert-triangle":"i-lucide-lightbulb",class:q([L.type==="warning"?"text-amber-600":"text-blue-600","size-4 mt-0.5 shrink-0"])},null,8,["name","class"]),n("div",null,[n("p",{class:q(L.type==="warning"?"text-amber-800 dark:text-amber-200 font-medium":"text-blue-800 dark:text-blue-200 font-medium")},c(L.message),3),n("p",{class:q([L.type==="warning"?"text-amber-700 dark:text-amber-300":"text-blue-700 dark:text-blue-300","mt-1"])},c(L.details),3)])])],2))),128))])):l("",!0),e(m)?(t(),k(it,{key:1,icon:"i-lucide-gauge",title:"Browser performance (Web Vitals)",help:"case.web-vitals"},{default:d(()=>[n("div",ei,[e(m).navigation?(t(),k(Ee,{key:0,"min-tile-width":"10rem"},{default:d(()=>[i(ue,{label:"TTFB",hint:"Time to first byte","value-class":e(m).navigation.ttfb>600?"text-red-600":e(m).navigation.ttfb>200?"text-orange-500":"text-green-600"},{default:d(()=>[i(ie,{ms:e(m).navigation.ttfb},null,8,["ms"])]),_:1},8,["value-class"]),i(ue,{label:"DOM Interactive",hint:"DOM interactive","value-class":e(m).navigation.domInteractive>3e3?"text-red-600":e(m).navigation.domInteractive>1500?"text-orange-500":"text-green-600"},{default:d(()=>[i(ie,{ms:e(m).navigation.domInteractive},null,8,["ms"])]),_:1},8,["value-class"]),i(ue,{label:"DOMContentLoaded",hint:"DOMContentLoaded","value-class":e(m).navigation.domContentLoaded>3e3?"text-red-600":e(m).navigation.domContentLoaded>1500?"text-orange-500":"text-green-600"},{default:d(()=>[i(ie,{ms:e(m).navigation.domContentLoaded},null,8,["ms"])]),_:1},8,["value-class"]),i(ue,{label:"Load Complete",hint:"Page fully loaded","value-class":e(m).navigation.loadComplete>5e3?"text-red-600":e(m).navigation.loadComplete>3e3?"text-orange-500":"text-green-600"},{default:d(()=>[i(ie,{ms:e(m).navigation.loadComplete},null,8,["ms"])]),_:1},8,["value-class"])]),_:1})):l("",!0),e(m).paint&&(e(m).paint.firstPaint||e(m).paint.firstContentfulPaint)?(t(),k(Ee,{key:1,"min-tile-width":"10rem",class:"pt-2 border-t"},{default:d(()=>[e(m).paint.firstPaint!==void 0?(t(),k(ue,{key:0,label:"First Paint (FP)"},{default:d(()=>[i(ie,{ms:e(m).paint.firstPaint},null,8,["ms"])]),_:1})):l("",!0),e(m).paint.firstContentfulPaint!==void 0?(t(),k(ue,{key:1,label:"First Contentful Paint (FCP)","value-class":e(m).paint.firstContentfulPaint>3e3?"text-red-600":e(m).paint.firstContentfulPaint>1800?"text-orange-500":"text-green-600"},{default:d(()=>[i(ie,{ms:e(m).paint.firstContentfulPaint},null,8,["ms"])]),_:1},8,["value-class"])):l("",!0)]),_:1})):l("",!0),e(m).vitals?(t(),k(Ee,{key:2,"min-tile-width":"10rem",class:"pt-2 border-t"},{default:d(()=>[i(ue,{label:"Largest Contentful Paint (LCP)","value-class":e(m).vitals.lcp==null?"text-gray-400":e(m).vitals.lcp>4e3?"text-red-600":e(m).vitals.lcp>2500?"text-orange-500":"text-green-600"},{default:d(()=>[i(ie,{ms:e(m).vitals.lcp,fallback:"n/a"},null,8,["ms"])]),_:1},8,["value-class"]),i(ue,{label:"Cumulative Layout Shift (CLS)",value:e(m).vitals.cls!=null?String(e(m).vitals.cls):"n/a","value-class":e(m).vitals.cls==null?"text-gray-400":e(m).vitals.cls>.25?"text-red-600":e(m).vitals.cls>.1?"text-orange-500":"text-green-600"},null,8,["value","value-class"]),i(ue,{label:"Interaction to Next Paint (INP)","value-class":e(m).vitals.inp==null?"text-gray-400":e(m).vitals.inp>500?"text-red-600":e(m).vitals.inp>200?"text-orange-500":"text-green-600"},{default:d(()=>[i(ie,{ms:e(m).vitals.inp,fallback:"n/a"},null,8,["ms"])]),_:1},8,["value-class"])]),_:1})):l("",!0),e(m).navigation?.url?(t(),o("div",ti,[T[8]||(T[8]=p(" Page: ",-1)),n("code",si,c(e(m).navigation.url),1)])):l("",!0)])]),_:1})):l("",!0),e(F).length===0&&!e(m)?(t(),k(Ve,{key:2,icon:"i-lucide-gauge",text:"No performance hints or Web Vitals were captured for this execution."},{default:d(()=>[n("p",ni,[T[10]||(T[10]=p(" Web Vitals and timing come from the ",-1)),i(Kt,{to:"capture-fixtures"},{default:d(()=>[...T[9]||(T[9]=[p("capture fixtures",-1)])]),_:1}),T[11]||(T[11]=p(". ",-1))])]),_:1})):l("",!0)])]),"tab-history":d(()=>[n("div",ai,[e(r)&&e(r).length>0?(t(),o("div",oi,[n("div",ri,[e(a)?.testCaseId?(t(),k(be,{key:0,to:`/test-cases/${e(a).testCaseId}`,size:"xs",variant:"outline",color:"neutral","trailing-icon":"i-lucide-arrow-right"},{default:d(()=>[...T[12]||(T[12]=[p(" View full test history ",-1)])]),_:1},8,["to"])):l("",!0)]),i(Wt,{data:e(r),height:200},null,8,["data"]),i(mt,{"min-width":"44rem",bleed:!1},{default:d(()=>[i(dt,{data:e(r),columns:N,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":d(({row:L})=>[n("span",ii,[n("span",li,c(new Date(L.original.startTime).toLocaleDateString("en-US",{month:"short",day:"numeric"})),1),n("span",ci,c(new Date(L.original.startTime).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"})),1)])]),"status-cell":d(({row:L})=>[i(De,{color:("getStatusColor"in f?f.getStatusColor:e(Gs))(L.original.status),variant:"subtle",class:"capitalize"},{default:d(()=>[p(c(L.original.status),1)]),_:2},1032,["color"])]),"duration-cell":d(({row:L})=>[L.original.duration!==null?(t(),k(ie,{key:0,ms:L.original.duration},null,8,["ms"])):(t(),o("span",ui,"—"))]),"runId-cell":d(({row:L})=>[i(le,{to:`/test-runs/${L.original.runId}`,class:"text-primary hover:underline"},{default:d(()=>[p(" #"+c(L.original.runId),1)]),_:2},1032,["to"])]),"error-cell":d(({row:L})=>[L.original.error?(t(),o("span",{key:0,class:"text-red-600 text-xs truncate max-w-xs block",title:L.original.error},c(L.original.error.length>80?`${L.original.error.substring(0,80)}…`:L.original.error),9,di)):l("",!0)]),_:1},8,["data"])]),_:1})])):(t(),k(Ve,{key:1,icon:"i-lucide-trending-up",text:"No prior executions of this test yet."},{default:d(()=>[...T[13]||(T[13]=[n("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{ul as default};
|