@piwitests/server 0.19.0 → 0.21.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/{279D2RYp.js → 9ti9eNH9.js} +1 -1
- package/.output/public/_nuxt/{DcmZRa_F.js → B-zdP-D4.js} +1 -1
- package/.output/public/_nuxt/{eaVkJRSa.js → B1RmmOsM.js} +1 -1
- package/.output/public/_nuxt/{DprVVyUQ.js → B3Fsod9X.js} +1 -1
- package/.output/public/_nuxt/{HXerICAi.js → B3rirOqU.js} +34 -34
- package/.output/public/_nuxt/B3zmIJYb.js +1 -0
- package/.output/public/_nuxt/{CDk0q2hV.js → BAKUqW95.js} +2 -2
- package/.output/public/_nuxt/BG0KKQiT.js +7 -0
- package/.output/public/_nuxt/BGL_V7Y4.js +1 -0
- package/.output/public/_nuxt/{Jo8kRmHz.js → BGusFAvZ.js} +1 -1
- package/.output/public/_nuxt/{CGNkHojN.js → BNurUTla.js} +3 -3
- package/.output/public/_nuxt/BR5cR2Ot.js +1 -0
- package/.output/public/_nuxt/BTCh_0zN.js +1 -0
- package/.output/public/_nuxt/{ZFiQCMUB.js → BTVqMsA3.js} +1 -1
- package/.output/public/_nuxt/{BqV0l12c.js → B_13C0GF.js} +1 -1
- package/.output/public/_nuxt/BeDIjhoR.js +44 -0
- package/.output/public/_nuxt/{BDicZ1gQ.js → BerCW7Ug.js} +1 -1
- package/.output/public/_nuxt/BfTNbVc_.js +1 -0
- package/.output/public/_nuxt/BnbSEpXX.js +1 -0
- package/.output/public/_nuxt/Bo_dxehb.js +1 -0
- package/.output/public/_nuxt/{ClOqkAcc.js → BpBHls4-.js} +1 -1
- package/.output/public/_nuxt/{C7P1UCO2.js → BpM6ZPIG.js} +1 -1
- package/.output/public/_nuxt/BqGumsDo.js +4 -0
- package/.output/public/_nuxt/{DS636elg.js → BrxtP_cN.js} +1 -1
- package/.output/public/_nuxt/{YVN7WG7q.js → C2hNxjjz.js} +1 -1
- package/.output/public/_nuxt/C5PSqfKi.js +2 -0
- package/.output/public/_nuxt/C5vsaU4G.js +1 -0
- package/.output/public/_nuxt/C9sdHaXd.js +1 -0
- package/.output/public/_nuxt/{SfMRXW25.js → CAxgBYIt.js} +2 -2
- package/.output/public/_nuxt/{CZfMdzfk.js → CES2i5Pl.js} +1 -1
- package/.output/public/_nuxt/{BX9ZXe98.js → CFEdRqaj.js} +1 -1
- package/.output/public/_nuxt/{B44A4LSJ.js → CFTZwazK.js} +1 -1
- package/.output/public/_nuxt/CIBS7ye6.js +1 -0
- package/.output/public/_nuxt/CIEceDOw.js +1 -0
- package/.output/public/_nuxt/{DHDtnj7p.js → CJBhojV6.js} +1 -1
- package/.output/public/_nuxt/{BPQoBGg5.js → CKYddHa6.js} +1 -1
- package/.output/public/_nuxt/{BccXfBfI.js → CLVWiCds.js} +1 -1
- package/.output/public/_nuxt/{DX-MDGb3.js → CMYAryzi.js} +1 -1
- package/.output/public/_nuxt/{BuMC3WjZ.js → COhdybDy.js} +1 -1
- package/.output/public/_nuxt/{Bu2aaVIY.js → CRBXM2d6.js} +2 -2
- package/.output/public/_nuxt/{BYDaY0Z7.js → CTD_pJ_v.js} +1 -1
- package/.output/public/_nuxt/{C9_jrmk9.js → CTP8Pw0-.js} +2 -2
- package/.output/public/_nuxt/{D55D4EYo.js → CV8iF2kG.js} +1 -1
- package/.output/public/_nuxt/{BCMuIgP5.js → CWKmbYlT.js} +1 -1
- package/.output/public/_nuxt/C_NfGMTd.js +9 -0
- package/.output/public/_nuxt/Cejoebel.js +6 -0
- package/.output/public/_nuxt/{Dnpkl-1q.js → Chpah_7l.js} +1 -1
- package/.output/public/_nuxt/Ci9d8YVV.js +1 -0
- package/.output/public/_nuxt/{C95YAaJq.js → CifRHVaR.js} +1 -1
- package/.output/public/_nuxt/{BMvCSA6h.js → Ckgsh9AT.js} +1 -1
- package/.output/public/_nuxt/{eptP4pGv.js → Cpsq-kYE.js} +1 -1
- package/.output/public/_nuxt/Cqc-DSTF.js +1 -0
- package/.output/public/_nuxt/{KnfsST6Y.js → CsHulb12.js} +1 -1
- package/.output/public/_nuxt/Ctb2CqUf.js +5 -0
- package/.output/public/_nuxt/CtstIQSh.js +1 -0
- package/.output/public/_nuxt/{DGfAxLHV.js → CvMzDKvu.js} +1 -1
- package/.output/public/_nuxt/{fVcG504p.js → D2pBhsH8.js} +1 -1
- package/.output/public/_nuxt/{rWNTSFD6.js → D8gX1Jde.js} +3 -3
- package/.output/public/_nuxt/D9knOn6D.js +1 -0
- package/.output/public/_nuxt/DAPTVdvA.js +1 -0
- package/.output/public/_nuxt/{NQikbhmK.js → DCFbQvIN.js} +44 -43
- package/.output/public/_nuxt/DCoJlz_q.js +1 -0
- package/.output/public/_nuxt/DGnQ69wW.js +64 -0
- package/.output/public/_nuxt/{CTxDO9fB.js → DHzij16p.js} +1 -1
- package/.output/public/_nuxt/DJMCXRuW.js +5 -0
- package/.output/public/_nuxt/DJXcGkJP.js +2 -0
- package/.output/public/_nuxt/{CK_2LZBS.js → DKFXZdWZ.js} +1 -1
- package/.output/public/_nuxt/{tvgqrYDd.js → DL24AjfW.js} +1 -1
- package/.output/public/_nuxt/DON74Yh6.js +1 -0
- package/.output/public/_nuxt/{CHEFCN8Q.js → DQM62mxB.js} +1 -1
- package/.output/public/_nuxt/DSe8DxMl.js +1 -0
- package/.output/public/_nuxt/DWwiVTZX.js +24 -0
- package/.output/public/_nuxt/DX4tAP78.js +1 -0
- package/.output/public/_nuxt/{DLSrtpsA.js → D_eDAIsT.js} +1 -1
- package/.output/public/_nuxt/Da8A92cF.js +1 -0
- package/.output/public/_nuxt/{BxCKKeYs.js → DdH3op4b.js} +1 -1
- package/.output/public/_nuxt/DepFDZO3.js +1 -0
- package/.output/public/_nuxt/{CV9-fTmY.js → DfSBKzrC.js} +1 -1
- package/.output/public/_nuxt/{DT53RWbC.js → DfnKh3dZ.js} +1 -1
- package/.output/public/_nuxt/{ndShiWE8.js → DhpTfeip.js} +1 -1
- package/.output/public/_nuxt/{ybDYeNxd.js → Dk9nD32g.js} +1 -1
- package/.output/public/_nuxt/{D0HNloZ9.js → DkT2nCqn.js} +1 -1
- package/.output/public/_nuxt/DlW85lQq.js +4 -0
- package/.output/public/_nuxt/DnNio-ut.js +1 -0
- package/.output/public/_nuxt/{BfTuX0wq.js → DnQv_hst.js} +1 -1
- package/.output/public/_nuxt/{FUXhyidq.js → DqEOMteW.js} +1 -1
- package/.output/public/_nuxt/{Bti38m-M.js → Dsvu7YJT.js} +1 -1
- package/.output/public/_nuxt/DvhCDBrR.js +2 -0
- package/.output/public/_nuxt/DwQaVMZR.js +1 -0
- package/.output/public/_nuxt/E-_n_6vi.js +1 -0
- package/.output/public/_nuxt/{DP8hfJ9h.js → Ebw5l7n8.js} +1 -1
- package/.output/public/_nuxt/{nv9-6vBK.js → IPePdbzl.js} +1 -1
- package/.output/public/_nuxt/{BPRffDuo.js → LHoUGrfi.js} +1 -1
- package/.output/public/_nuxt/{CYsTqbBS.js → NERLHpOL.js} +1 -1
- package/.output/public/_nuxt/RAdNGxcF.js +1 -0
- package/.output/public/_nuxt/Vxyo_mU9.js +1 -0
- package/.output/public/_nuxt/{IvQlbZk6.js → YE1kAkU9.js} +1 -1
- package/.output/public/_nuxt/{DgE2YE3R.js → YmT5WiN5.js} +1 -1
- package/.output/public/_nuxt/ZcAfCxWE.js +17 -0
- package/.output/public/_nuxt/{cHAnlQbv.js → _rglcvXN.js} +1 -1
- package/.output/public/_nuxt/bFU9Y1Vw.js +10 -0
- package/.output/public/_nuxt/bfecIH89.js +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/31ca2be4-a949-4df6-9818-773fc085557a.json +1 -0
- package/.output/public/_nuxt/entry.BAvBQY-h.css +1 -0
- package/.output/public/_nuxt/four-S1Y.js +1 -0
- package/.output/public/_nuxt/{DiOLdHBC.js → gV2U_Gqd.js} +1 -1
- package/.output/public/_nuxt/{C-elpgyr.js → lGC893pn.js} +1 -1
- package/.output/public/_nuxt/nOfj-ar8.js +1 -0
- package/.output/public/_nuxt/oKrbs1XK.js +1 -0
- package/.output/public/_nuxt/oSJFAC38.js +1 -0
- package/.output/public/_nuxt/rL4C0HV5.js +1 -0
- package/.output/public/_nuxt/{Cdff9XNh.js → tQoyVPCE.js} +1 -1
- package/.output/public/_nuxt/{DEFEpYzn.js → uSPCvASp.js} +1 -1
- package/.output/public/_nuxt/{y17lMTFy.js → wkz5-1SO.js} +1 -1
- package/.output/public/_nuxt/yYlVYKCz.js +34 -0
- package/.output/public/_nuxt/{B9WhzpKO.js → zv8WdMx0.js} +1 -1
- package/.output/server/chunks/_/collect.mjs +1 -1
- package/.output/server/chunks/_/markers.mjs +1 -1
- package/.output/server/chunks/_/quarantine.mjs +1 -1
- package/.output/server/chunks/_/scope.mjs +43 -27
- package/.output/server/chunks/_/scope.mjs.map +1 -1
- package/.output/server/chunks/_/users.mjs +1 -1
- package/.output/server/chunks/build/{Breadcrumb-Ak2Lg3oM.mjs → Breadcrumb-3itRZ1uz.mjs} +2 -2
- package/.output/server/chunks/build/Breadcrumb-3itRZ1uz.mjs.map +1 -0
- package/.output/server/chunks/build/{BreadcrumbNav-DO7I_z-n.mjs → BreadcrumbNav-GnjBvXuT.mjs} +2 -2
- package/.output/server/chunks/build/BreadcrumbNav-GnjBvXuT.mjs.map +1 -0
- package/.output/server/chunks/build/{BrowserBadge-D33lqUcj.mjs → BrowserBadge-DQqJS9CV.mjs} +66 -6
- package/.output/server/chunks/build/BrowserBadge-DQqJS9CV.mjs.map +1 -0
- package/.output/server/chunks/build/{ChartCard-Y1UKwMsf.mjs → ChartCard-D0rzMf-N.mjs} +2 -2
- package/.output/server/chunks/build/ChartCard-D0rzMf-N.mjs.map +1 -0
- package/.output/server/chunks/build/{Checkbox-DvUBGagc.mjs → Checkbox-DmRKG-0s.mjs} +5 -5
- package/.output/server/chunks/build/Checkbox-DmRKG-0s.mjs.map +1 -0
- package/.output/server/chunks/build/{CodeBlock-BgE-NSmE.mjs → CodeBlock-DGhKVFad.mjs} +4 -4
- package/.output/server/chunks/build/CodeBlock-DGhKVFad.mjs.map +1 -0
- package/.output/server/chunks/build/{DashboardNavbar-BHmMSPX7.mjs → DashboardNavbar-DCr10nxL.mjs} +2 -2
- package/.output/server/chunks/build/DashboardNavbar-DCr10nxL.mjs.map +1 -0
- package/.output/server/chunks/build/{DashboardSidebarToggle-DCTnHiIv.mjs → DashboardSidebarToggle-8EpBhX0R.mjs} +3 -3
- package/.output/server/chunks/build/DashboardSidebarToggle-8EpBhX0R.mjs.map +1 -0
- package/.output/server/chunks/build/{DataLocationCard-B_YHdzSz.mjs → DataLocationCard-rzS-pgCP.mjs} +5 -5
- package/.output/server/chunks/build/DataLocationCard-rzS-pgCP.mjs.map +1 -0
- package/.output/server/chunks/build/{DiagnosisPanel-B646dK4p.mjs → DiagnosisPanel-BWTpoCKy.mjs} +8 -7
- package/.output/server/chunks/build/DiagnosisPanel-BWTpoCKy.mjs.map +1 -0
- package/.output/server/chunks/build/{useAiStatus-CWvIo32Q.mjs → DiagnosisResult-Br3qBLXe.mjs} +14 -36
- package/.output/server/chunks/build/DiagnosisResult-Br3qBLXe.mjs.map +1 -0
- package/.output/server/chunks/build/{DurationValue-D20oGbnc.mjs → DurationValue-CWKfjIF2.mjs} +2 -2
- package/.output/server/chunks/build/DurationValue-CWKfjIF2.mjs.map +1 -0
- package/.output/server/chunks/build/{EmptyState-Dtlab7S9.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-D3fp57pR.mjs → EntityLinks-CF0xG3Y8.mjs} +6 -6
- package/.output/server/chunks/build/EntityLinks-CF0xG3Y8.mjs.map +1 -0
- package/.output/server/chunks/build/{EnvManagedBadge-Bg3FSiU1.mjs → EnvManagedBadge-UwD2b9v2.mjs} +3 -3
- package/.output/server/chunks/build/EnvManagedBadge-UwD2b9v2.mjs.map +1 -0
- package/.output/server/chunks/build/FeatureUnavailable-CwPms6X_.mjs +83 -0
- package/.output/server/chunks/build/FeatureUnavailable-CwPms6X_.mjs.map +1 -0
- package/.output/server/chunks/build/{FormField-B0HKsdMd.mjs → FormField-e7OnSKPM.mjs} +2 -2
- package/.output/server/chunks/build/FormField-e7OnSKPM.mjs.map +1 -0
- package/.output/server/chunks/build/GetStartedWizard-CB5v1Xzu.mjs +510 -0
- package/.output/server/chunks/build/GetStartedWizard-CB5v1Xzu.mjs.map +1 -0
- package/.output/server/chunks/build/{HelpHint-DrcIv-Oj.mjs → HelpHint-DjGrGFA7.mjs} +3 -3
- package/.output/server/chunks/build/HelpHint-DjGrGFA7.mjs.map +1 -0
- package/.output/server/chunks/build/{LoadingState-C3pBSuOO.mjs → LoadingState-B8v1nWJt.mjs} +3 -3
- package/.output/server/chunks/build/LoadingState-B8v1nWJt.mjs.map +1 -0
- package/.output/server/chunks/build/MetaStripGroup-dXXa_MzF.mjs +1205 -0
- package/.output/server/chunks/build/MetaStripGroup-dXXa_MzF.mjs.map +1 -0
- package/.output/server/chunks/build/{MiniRunBars-CZMugDrh.mjs → MiniRunBars-fgLMgRUp.mjs} +2 -2
- package/.output/server/chunks/build/MiniRunBars-fgLMgRUp.mjs.map +1 -0
- package/.output/server/chunks/build/{Modal-Ck2XLt8d.mjs → Modal-pSDlXzT3.mjs} +2 -2
- package/.output/server/chunks/build/Modal-pSDlXzT3.mjs.map +1 -0
- package/.output/server/chunks/build/{useSettingsNav-C3O866KC.mjs → NavigationMenu-cqpt11Ce.mjs} +6 -29
- package/.output/server/chunks/build/NavigationMenu-cqpt11Ce.mjs.map +1 -0
- package/.output/server/chunks/build/{OpenInIdeLink-C4MXA8ya.mjs → OpenInIdeLink-B9wvQkhy.mjs} +5 -5
- package/.output/server/chunks/build/{OpenInIdeLink-C4MXA8ya.mjs.map → OpenInIdeLink-B9wvQkhy.mjs.map} +1 -1
- package/.output/server/chunks/build/{ProjectTestCasesTable-CxfQ5wtN.mjs → ProjectTestCasesTable-BwHEtZTz.mjs} +19 -19
- package/.output/server/chunks/build/ProjectTestCasesTable-BwHEtZTz.mjs.map +1 -0
- package/.output/server/chunks/build/{RovingFocusItem-BJSzTBjy.mjs → RovingFocusItem--OEHI2P3.mjs} +2 -2
- package/.output/server/chunks/build/RovingFocusItem--OEHI2P3.mjs.map +1 -0
- package/.output/server/chunks/build/{RunReports-DFLv51TX.mjs → RunReports-BDRIWn3o.mjs} +3 -3
- package/.output/server/chunks/build/RunReports-BDRIWn3o.mjs.map +1 -0
- package/.output/server/chunks/build/{RunStatusBadge-FfGb6bkW.mjs → RunStatusBadge-CuTDknRJ.mjs} +2 -2
- package/.output/server/chunks/build/RunStatusBadge-CuTDknRJ.mjs.map +1 -0
- package/.output/server/chunks/build/{SectionCard-CN-v0FZ_.mjs → SectionCard-BW5Lynrr.mjs} +2 -2
- package/.output/server/chunks/build/SectionCard-BW5Lynrr.mjs.map +1 -0
- package/.output/server/chunks/build/{Select-CUqj50wi.mjs → Select-CVctwpib.mjs} +3 -3
- package/.output/server/chunks/build/Select-CVctwpib.mjs.map +1 -0
- package/.output/server/chunks/build/{SelectMenu-Db7osY7J.mjs → SelectMenu-XLVBEa11.mjs} +939 -7
- package/.output/server/chunks/build/{SelectMenu-Db7osY7J.mjs.map → SelectMenu-XLVBEa11.mjs.map} +1 -1
- package/.output/server/chunks/build/{SettingsField-D6iEYbEc.mjs → SettingsField-DvtRvI6O.mjs} +4 -4
- package/.output/server/chunks/build/SettingsField-DvtRvI6O.mjs.map +1 -0
- package/.output/server/chunks/build/{Slideover-DgCa80mf.mjs → Slideover-D270EZZD.mjs} +3 -3
- package/.output/server/chunks/build/Slideover-D270EZZD.mjs.map +1 -0
- package/.output/server/chunks/build/{StatTile-D61Vzo6e.mjs → StatTile-DpcVQFVI.mjs} +2 -26
- package/.output/server/chunks/build/StatTile-DpcVQFVI.mjs.map +1 -0
- package/.output/server/chunks/build/StatTileGrid-7zOFUQ6j.mjs +30 -0
- package/.output/server/chunks/build/StatTileGrid-7zOFUQ6j.mjs.map +1 -0
- package/.output/server/chunks/build/{Switch-CgUioOYB.mjs → Switch-8zWfwI5B.mjs} +3 -3
- package/.output/server/chunks/build/Switch-8zWfwI5B.mjs.map +1 -0
- package/.output/server/chunks/build/Table-BRk04Hd2.mjs +1 -1
- package/.output/server/chunks/build/{Tabs-Bbsg9wag.mjs → Tabs-BkSOnbaB.mjs} +2 -2
- package/.output/server/chunks/build/Tabs-BkSOnbaB.mjs.map +1 -0
- package/.output/server/chunks/build/{TestCaseHistoryChart-nMLPhdvD.mjs → TestCaseHistoryChart-C6t5RrCG.mjs} +6 -6
- package/.output/server/chunks/build/TestCaseHistoryChart-C6t5RrCG.mjs.map +1 -0
- package/.output/server/chunks/build/{TestMetaBadges-D5_yUtIP.mjs → TestMetaBadges-BlyKmfeP.mjs} +1 -1
- package/.output/server/chunks/build/TestMetaBadges-BlyKmfeP.mjs.map +1 -0
- package/.output/server/chunks/build/{TestStatusBar-j6h2Jp6A.mjs → TestStatusBar-DhbrM_rQ.mjs} +4 -4
- package/.output/server/chunks/build/TestStatusBar-DhbrM_rQ.mjs.map +1 -0
- package/.output/server/chunks/build/{Textarea-Dv2-lOvW.mjs → Textarea-vkMKVQTJ.mjs} +2 -2
- package/.output/server/chunks/build/Textarea-vkMKVQTJ.mjs.map +1 -0
- package/.output/server/chunks/build/{Tooltip-BOazooWP.mjs → Tooltip-Dv4htNP6.mjs} +3 -3
- package/.output/server/chunks/build/Tooltip-Dv4htNP6.mjs.map +1 -0
- package/.output/server/chunks/build/{VisuallyHiddenInput-D6kBJxVd.mjs → VisuallyHiddenInput-BHvzNumK.mjs} +2 -2
- package/.output/server/chunks/build/VisuallyHiddenInput-BHvzNumK.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-z5N6HPyC.mjs → _id_-2PMH6rl8.mjs} +26 -25
- package/.output/server/chunks/build/_id_-2PMH6rl8.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-BHh65pfg.mjs → _id_-8cGIgeg6.mjs} +1912 -1098
- package/.output/server/chunks/build/_id_-8cGIgeg6.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-Rzkqx55x.mjs → _id_-CUZ5S6y5.mjs} +43 -44
- package/.output/server/chunks/build/_id_-CUZ5S6y5.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-B78ky13D.mjs → _id_-DMkgWSLZ.mjs} +956 -429
- package/.output/server/chunks/build/_id_-DMkgWSLZ.mjs.map +1 -0
- package/.output/server/chunks/build/about-D3WXTDro.mjs +696 -0
- package/.output/server/chunks/build/about-D3WXTDro.mjs.map +1 -0
- package/.output/server/chunks/build/{account-DAfvaD-F.mjs → account-BslDNCoo.mjs} +6 -6
- package/.output/server/chunks/build/account-BslDNCoo.mjs.map +1 -0
- package/.output/server/chunks/build/{ai-B4VJ9K1K.mjs → ai-C23R9l94.mjs} +18 -18
- package/.output/server/chunks/build/{ai-B4VJ9K1K.mjs.map → ai-C23R9l94.mjs.map} +1 -1
- package/.output/server/chunks/build/{analytics-CJPC6t4L.mjs → analytics-DQHeToK0.mjs} +106 -80
- package/.output/server/chunks/build/analytics-DQHeToK0.mjs.map +1 -0
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/compare-RxHSOdsO.mjs +1 -0
- package/.output/server/chunks/build/{db.client-CQoVTYB9.mjs → db.client-D74DghqX.mjs} +38 -2
- package/.output/server/chunks/build/db.client-D74DghqX.mjs.map +1 -0
- package/.output/server/chunks/build/{default-zvbFgDJG.mjs → default-CeyePZ5I.mjs} +624 -79
- package/.output/server/chunks/build/default-CeyePZ5I.mjs.map +1 -0
- package/.output/server/chunks/build/{docs-DyuVEgtB.mjs → docs-f_bnC75q.mjs} +17 -17
- package/.output/server/chunks/build/{docs-DyuVEgtB.mjs.map → docs-f_bnC75q.mjs.map} +1 -1
- package/.output/server/chunks/build/{edit-CFR5g2Qf.mjs → edit-BOC4zWuH.mjs} +13 -15
- package/.output/server/chunks/build/edit-BOC4zWuH.mjs.map +1 -0
- package/.output/server/chunks/build/{fetch-B4FwBOzu.mjs → fetch-BQg_fhX0.mjs} +32 -4
- package/.output/server/chunks/build/fetch-BQg_fhX0.mjs.map +1 -0
- package/.output/server/chunks/build/{forgot-password-CC__1OnV.mjs → forgot-password-CxuVbGWy.mjs} +4 -3
- package/.output/server/chunks/build/forgot-password-CxuVbGWy.mjs.map +1 -0
- package/.output/server/chunks/build/{import-CZo3djDi.mjs → import-CC27wEIu.mjs} +14 -14
- package/.output/server/chunks/build/import-CC27wEIu.mjs.map +1 -0
- package/.output/server/chunks/build/{index-gCw_y4ZJ.mjs → index-B6PjfyTY.mjs} +44 -543
- package/.output/server/chunks/build/index-B6PjfyTY.mjs.map +1 -0
- package/.output/server/chunks/build/{index-CU2nZhAa.mjs → index-BOK1aJk9.mjs} +2 -1
- package/.output/server/chunks/build/index-BOK1aJk9.mjs.map +1 -0
- package/.output/server/chunks/build/{index-D7fe97l3.mjs → index-BhS1DuCr.mjs} +400 -151
- package/.output/server/chunks/build/index-BhS1DuCr.mjs.map +1 -0
- package/.output/server/chunks/build/{index-Stqw0dEI.mjs → index-DUmjP3Gr.mjs} +18 -19
- package/.output/server/chunks/build/index-DUmjP3Gr.mjs.map +1 -0
- package/.output/server/chunks/build/index-jvF53f7_.mjs +91 -0
- package/.output/server/chunks/build/index-jvF53f7_.mjs.map +1 -0
- package/.output/server/chunks/build/isValueEqualOrExist-D2qw9YEr.mjs +1 -1
- package/.output/server/chunks/build/{login-Da4u1IlW.mjs → login-CdpOhiP8.mjs} +8 -7
- package/.output/server/chunks/build/login-CdpOhiP8.mjs.map +1 -0
- package/.output/server/chunks/build/{mcp-B3IUvRgD.mjs → mcp-WTeO5WRo.mjs} +528 -16
- package/.output/server/chunks/build/mcp-WTeO5WRo.mjs.map +1 -0
- package/.output/server/chunks/build/{notifications-abDv0id8.mjs → notifications-yY6ik-fi.mjs} +11 -11
- package/.output/server/chunks/build/notifications-yY6ik-fi.mjs.map +1 -0
- package/.output/server/chunks/build/{pr-feedback-DjZID6q-.mjs → pr-feedback-Hv2Ydh_6.mjs} +8 -8
- package/.output/server/chunks/build/pr-feedback-Hv2Ydh_6.mjs.map +1 -0
- package/.output/server/chunks/build/{reset-password-BmrUS4ZD.mjs → reset-password-CFtO8A6n.mjs} +4 -3
- package/.output/server/chunks/build/reset-password-CFtO8A6n.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +51 -34
- package/.output/server/chunks/build/{settings-Du7YqF8i.mjs → settings-DIpvnY8_.mjs} +11 -9
- package/.output/server/chunks/build/settings-DIpvnY8_.mjs.map +1 -0
- package/.output/server/chunks/build/{settings-metadata-DrEqWcW-.mjs → settings-metadata-DRv9VveS.mjs} +32 -2
- package/.output/server/chunks/build/settings-metadata-DRv9VveS.mjs.map +1 -0
- package/.output/server/chunks/build/setup-Di0UMyWx.mjs +1116 -0
- package/.output/server/chunks/build/setup-Di0UMyWx.mjs.map +1 -0
- package/.output/server/chunks/build/{storage-B4vzxd8G.mjs → storage-gAbY1KbQ.mjs} +13 -13
- package/.output/server/chunks/build/storage-gAbY1KbQ.mjs.map +1 -0
- package/.output/server/chunks/build/{tags-DauTe_F-.mjs → tags-DJ80wCqt.mjs} +6 -7
- package/.output/server/chunks/build/tags-DJ80wCqt.mjs.map +1 -0
- package/.output/server/chunks/build/{test-cases-DUvaO1He.mjs → test-cases-YP83YlnL.mjs} +21 -21
- package/.output/server/chunks/build/test-cases-YP83YlnL.mjs.map +1 -0
- package/.output/server/chunks/build/test-functions-BwLTxGmM.mjs +550 -0
- package/.output/server/chunks/build/test-functions-BwLTxGmM.mjs.map +1 -0
- package/.output/server/chunks/build/{timeout-hygiene-CbnSaVbK.mjs → timeout-hygiene-RpXDjXTX.mjs} +6 -6
- package/.output/server/chunks/build/timeout-hygiene-RpXDjXTX.mjs.map +1 -0
- package/.output/server/chunks/build/useAiStatus-UR8x-feE.mjs +9 -0
- package/.output/server/chunks/build/useAiStatus-UR8x-feE.mjs.map +1 -0
- package/.output/server/chunks/build/{useCopyRich-BemRsKgv.mjs → useCopyRich-Cd5Yj_Wy.mjs} +721 -239
- package/.output/server/chunks/build/useCopyRich-Cd5Yj_Wy.mjs.map +1 -0
- package/.output/server/chunks/build/{useDesktopDownload-D49JRQSw.mjs → useDesktopDownload-BmR6ouz2.mjs} +3 -3
- package/.output/server/chunks/build/useDesktopDownload-BmR6ouz2.mjs.map +1 -0
- package/.output/server/chunks/build/{useOpenInIde-4GFf-kdi.mjs → useOpenInIde-DolN3bZ5.mjs} +2 -2
- package/.output/server/chunks/build/useOpenInIde-DolN3bZ5.mjs.map +1 -0
- package/.output/server/chunks/build/useSettingsNav-DfnOFlR_.mjs +19 -0
- package/.output/server/chunks/build/useSettingsNav-DfnOFlR_.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/{users-CTUqXyGh.mjs → users-I2K7HXS2.mjs} +6 -7
- package/.output/server/chunks/build/users-I2K7HXS2.mjs.map +1 -0
- package/.output/server/chunks/build/{wasted-time-lYkx5YO4.mjs → wasted-time-DyIk0olc.mjs} +11 -11
- package/.output/server/chunks/build/wasted-time-DyIk0olc.mjs.map +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +3124 -1782
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
- package/.output/server/chunks/routes/__piwi/session.get.mjs +2 -1
- package/.output/server/chunks/routes/__piwi/session.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/admin/cleanup.delete.mjs +1 -0
- package/.output/server/chunks/routes/api/admin/cleanup.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/admin/stats.get.mjs +1 -0
- package/.output/server/chunks/routes/api/admin/stats.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/ai/status.get.mjs +1 -0
- package/.output/server/chunks/routes/api/ai/status.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs +1 -0
- package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/logout.post.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/logout.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/me.get.mjs +1 -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 +1 -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 +1 -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 +1 -0
- package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs +1 -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 +1 -0
- package/.output/server/chunks/routes/api/auth/setup.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/verify-email.get.mjs +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +89 -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 +1 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs +2 -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 +2 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs +2 -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 +2 -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 +2 -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 +2 -1
- package/.output/server/chunks/routes/api/files/_...path_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/health.get.mjs +2 -1
- package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get.mjs +1 -0
- package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get2.mjs +2 -1
- package/.output/server/chunks/routes/api/index.get2.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get3.mjs +2 -1
- package/.output/server/chunks/routes/api/index.get3.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get4.mjs +2 -1
- package/.output/server/chunks/routes/api/index.get4.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get5.mjs +1 -0
- package/.output/server/chunks/routes/api/index.get5.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post2.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post3.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post4.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post5.mjs +1 -1
- package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs +2 -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 +2 -1
- package/.output/server/chunks/routes/api/links/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/links/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/markers/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/markers/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/markers/_id_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/notifications/stream.get.mjs +2 -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 +2 -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 +2 -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 +2 -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 +2 -1
- 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 +2 -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 +2 -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 +1 -1
- package/.output/server/chunks/routes/api/projects/_id/members.get.mjs +2 -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 +1 -1
- package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs +2 -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 +2 -1
- package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs +2 -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 +2 -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 +2 -1
- package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/test-functions/extract.post.mjs +76 -0
- package/.output/server/chunks/routes/api/projects/_id/test-functions/extract.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/projects/_id/test-functions/validate-proposal.post.mjs +66 -0
- package/.output/server/chunks/routes/api/projects/_id/test-functions/validate-proposal.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/projects/_id/test-functions.get.mjs +53 -0
- package/.output/server/chunks/routes/api/projects/_id/test-functions.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/projects/_id/test-functions.post.mjs +67 -0
- package/.output/server/chunks/routes/api/projects/_id/test-functions.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs +2 -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 +2 -1
- package/.output/server/chunks/routes/api/projects/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id_.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/menu.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/menu.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/overview.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/overview.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/search.get.mjs +2 -1
- package/.output/server/chunks/routes/api/search.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs +2 -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 +2 -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 +1 -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 +2 -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 +2 -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 +2 -1
- package/.output/server/chunks/routes/api/settings/ai.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai.put.mjs +2 -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 +2 -1
- package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs +2 -1
- package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/smtp.get.mjs +2 -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 +2 -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 +2 -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 +2 -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 +2 -1
- package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/setup-status.get.mjs +99 -0
- package/.output/server/chunks/routes/api/setup-status.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/stream.get.mjs +2 -1
- package/.output/server/chunks/routes/api/stream.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/tags/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/tags/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tags/_id_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs +2 -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 +2 -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 +2 -1
- package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-functions/_id_.delete.mjs +60 -0
- package/.output/server/chunks/routes/api/test-functions/_id_.delete.mjs.map +1 -0
- package/.output/server/chunks/routes/api/test-functions/_id_.put.mjs +69 -0
- package/.output/server/chunks/routes/api/test-functions/_id_.put.mjs.map +1 -0
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs +2 -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 +2 -1
- 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 +2 -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 +2 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs +2 -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 +2 -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 +2 -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 +2 -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 +6 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs +2 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -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 +2 -2
- package/.output/server/chunks/routes/api/test-runs/import.post.mjs +5 -128
- package/.output/server/chunks/routes/api/test-runs/import.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/recent.get.mjs +2 -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 +2 -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 +2 -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 +2 -1
- 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 +2 -1
- package/.output/server/chunks/routes/api/test-runs/upload.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs +4 -1
- package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/traces/check.post.mjs +2 -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 +1 -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 +1 -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 +1 -1
- package/.output/server/chunks/routes/api/users/_id/invite.post.mjs +2 -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 +2 -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 +1 -1
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs +1 -0
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/version.get.mjs +2 -1
- package/.output/server/chunks/routes/api/version.get.mjs.map +1 -1
- package/.output/server/chunks/routes/mcp.post.mjs +41 -11
- 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 +1 -0
- package/.output/server/chunks/tasks/sweep.mjs.map +1 -1
- package/.output/server/chunks/tasks/sweep2.mjs +1 -0
- package/.output/server/chunks/tasks/sweep2.mjs.map +1 -1
- package/.output/server/database/migrations/0043_watery_dragon_lord.sql +22 -0
- package/.output/server/database/migrations/meta/0043_snapshot.json +3764 -0
- package/.output/server/database/migrations/meta/_journal.json +7 -0
- package/.output/server/database/migrations-pg/0044_dark_triathlon.sql +22 -0
- package/.output/server/database/migrations-pg/meta/0044_snapshot.json +4473 -0
- package/.output/server/database/migrations-pg/meta/_journal.json +7 -0
- package/.output/server/index.mjs +2 -1
- package/.output/server/index.mjs.map +1 -1
- package/.output/server/package.json +1 -1
- package/package.json +1 -1
- package/.output/public/_nuxt/-09h6CA9.js +0 -1
- package/.output/public/_nuxt/81InBX9v.js +0 -1
- package/.output/public/_nuxt/Ar3IelOY.js +0 -1
- package/.output/public/_nuxt/B33iXw77.js +0 -1
- package/.output/public/_nuxt/B3B9Ii2A.js +0 -1
- package/.output/public/_nuxt/B3HO8kuh.js +0 -1
- package/.output/public/_nuxt/B7NBP1C-.js +0 -1
- package/.output/public/_nuxt/BJ0XQElc.js +0 -1
- package/.output/public/_nuxt/BSIxhGsh.js +0 -1
- package/.output/public/_nuxt/BVaxh6Nl.js +0 -4
- package/.output/public/_nuxt/Bc8mOoz9.js +0 -4
- package/.output/public/_nuxt/BeLWlVK0.js +0 -1
- package/.output/public/_nuxt/Bn0YQDyy.js +0 -1
- package/.output/public/_nuxt/Bp5ELvx9.js +0 -1
- package/.output/public/_nuxt/BpUaY9nH.js +0 -2
- package/.output/public/_nuxt/C2_3mdPC.js +0 -1
- package/.output/public/_nuxt/C5iG7O4O.js +0 -64
- package/.output/public/_nuxt/CHNwfU1y.js +0 -1
- package/.output/public/_nuxt/CNFYDQmj.js +0 -1
- package/.output/public/_nuxt/CU5S9GCh.js +0 -1
- package/.output/public/_nuxt/CUtJobDm.js +0 -1
- package/.output/public/_nuxt/CpjgB2aY.js +0 -1
- package/.output/public/_nuxt/CrwJAwhk.js +0 -1
- package/.output/public/_nuxt/CtQBsNUb.js +0 -1
- package/.output/public/_nuxt/CuSVQEkS.js +0 -3
- package/.output/public/_nuxt/CylWPruw.js +0 -1
- package/.output/public/_nuxt/CzGyac8q.js +0 -1
- package/.output/public/_nuxt/DDDpCFpF.js +0 -1
- package/.output/public/_nuxt/DVDXJYq2.js +0 -2
- package/.output/public/_nuxt/DW0xl3I6.js +0 -17
- package/.output/public/_nuxt/Dgf5N4Ng.js +0 -1
- package/.output/public/_nuxt/DiZyJYez.js +0 -1
- package/.output/public/_nuxt/Dk9fwOCm.js +0 -34
- package/.output/public/_nuxt/DoUy4UHi.js +0 -44
- package/.output/public/_nuxt/DslPMqfa.js +0 -1
- package/.output/public/_nuxt/OSduWzyz.js +0 -1
- package/.output/public/_nuxt/SlIRLREZ.js +0 -6
- package/.output/public/_nuxt/WsxFTEFq.js +0 -10
- package/.output/public/_nuxt/aQgs_c6e.js +0 -9
- package/.output/public/_nuxt/builds/meta/ab473028-4b37-4884-b243-b8f6e5046e5e.json +0 -1
- package/.output/public/_nuxt/dYCKgE-3.js +0 -5
- package/.output/public/_nuxt/entry.CPhW41mh.css +0 -1
- package/.output/public/_nuxt/g26aVPxc.js +0 -1
- package/.output/public/_nuxt/zQyPuvV1.js +0 -1
- package/.output/server/chunks/_/import-runs.mjs +0 -351
- package/.output/server/chunks/_/import-runs.mjs.map +0 -1
- package/.output/server/chunks/build/Breadcrumb-Ak2Lg3oM.mjs.map +0 -1
- package/.output/server/chunks/build/BreadcrumbNav-DO7I_z-n.mjs.map +0 -1
- package/.output/server/chunks/build/BrowserBadge-D33lqUcj.mjs.map +0 -1
- package/.output/server/chunks/build/ChartCard-Y1UKwMsf.mjs.map +0 -1
- package/.output/server/chunks/build/Checkbox-DvUBGagc.mjs.map +0 -1
- package/.output/server/chunks/build/CiEnvCard-CrjOM17n.mjs +0 -631
- package/.output/server/chunks/build/CiEnvCard-CrjOM17n.mjs.map +0 -1
- package/.output/server/chunks/build/CodeBlock-BgE-NSmE.mjs.map +0 -1
- package/.output/server/chunks/build/DashboardNavbar-BHmMSPX7.mjs.map +0 -1
- package/.output/server/chunks/build/DashboardSidebarToggle-DCTnHiIv.mjs.map +0 -1
- package/.output/server/chunks/build/DataLocationCard-B_YHdzSz.mjs.map +0 -1
- package/.output/server/chunks/build/DiagnosisPanel-B646dK4p.mjs.map +0 -1
- package/.output/server/chunks/build/DurationValue-D20oGbnc.mjs.map +0 -1
- package/.output/server/chunks/build/EmptyState-Dtlab7S9.mjs.map +0 -1
- package/.output/server/chunks/build/EntityLinks-D3fp57pR.mjs.map +0 -1
- package/.output/server/chunks/build/EnvManagedBadge-Bg3FSiU1.mjs.map +0 -1
- package/.output/server/chunks/build/FormField-B0HKsdMd.mjs.map +0 -1
- package/.output/server/chunks/build/HelpHint-DrcIv-Oj.mjs.map +0 -1
- package/.output/server/chunks/build/LoadingState-C3pBSuOO.mjs.map +0 -1
- package/.output/server/chunks/build/MiniRunBars-CZMugDrh.mjs.map +0 -1
- package/.output/server/chunks/build/Modal-Ck2XLt8d.mjs.map +0 -1
- package/.output/server/chunks/build/ProjectTestCasesTable-CxfQ5wtN.mjs.map +0 -1
- package/.output/server/chunks/build/RovingFocusItem-BJSzTBjy.mjs.map +0 -1
- package/.output/server/chunks/build/RunReports-DFLv51TX.mjs.map +0 -1
- package/.output/server/chunks/build/RunStatusBadge-FfGb6bkW.mjs.map +0 -1
- package/.output/server/chunks/build/SectionCard-CN-v0FZ_.mjs.map +0 -1
- package/.output/server/chunks/build/Select-CUqj50wi.mjs.map +0 -1
- package/.output/server/chunks/build/SettingsField-D6iEYbEc.mjs.map +0 -1
- package/.output/server/chunks/build/Slideover-DgCa80mf.mjs.map +0 -1
- package/.output/server/chunks/build/StatTile-D61Vzo6e.mjs.map +0 -1
- package/.output/server/chunks/build/Switch-CgUioOYB.mjs.map +0 -1
- package/.output/server/chunks/build/Tabs-Bbsg9wag.mjs.map +0 -1
- package/.output/server/chunks/build/TestCaseHistoryChart-nMLPhdvD.mjs.map +0 -1
- package/.output/server/chunks/build/TestMetaBadges-D5_yUtIP.mjs.map +0 -1
- package/.output/server/chunks/build/TestStatusBar-j6h2Jp6A.mjs.map +0 -1
- package/.output/server/chunks/build/Textarea-Dv2-lOvW.mjs.map +0 -1
- package/.output/server/chunks/build/Tooltip-BOazooWP.mjs.map +0 -1
- package/.output/server/chunks/build/VisuallyHiddenInput-D6kBJxVd.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-B78ky13D.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-BHh65pfg.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-Rzkqx55x.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-z5N6HPyC.mjs.map +0 -1
- package/.output/server/chunks/build/about-CvSP73Ug.mjs +0 -781
- package/.output/server/chunks/build/about-CvSP73Ug.mjs.map +0 -1
- package/.output/server/chunks/build/account-DAfvaD-F.mjs.map +0 -1
- package/.output/server/chunks/build/analytics-CJPC6t4L.mjs.map +0 -1
- package/.output/server/chunks/build/db.client-CQoVTYB9.mjs.map +0 -1
- package/.output/server/chunks/build/default-zvbFgDJG.mjs.map +0 -1
- package/.output/server/chunks/build/edit-CFR5g2Qf.mjs.map +0 -1
- package/.output/server/chunks/build/fetch-B4FwBOzu.mjs.map +0 -1
- package/.output/server/chunks/build/forgot-password-CC__1OnV.mjs.map +0 -1
- package/.output/server/chunks/build/import-CZo3djDi.mjs.map +0 -1
- package/.output/server/chunks/build/index-CU2nZhAa.mjs.map +0 -1
- package/.output/server/chunks/build/index-D7fe97l3.mjs.map +0 -1
- package/.output/server/chunks/build/index-Stqw0dEI.mjs.map +0 -1
- package/.output/server/chunks/build/index-gCw_y4ZJ.mjs.map +0 -1
- package/.output/server/chunks/build/index-tR6owKzj.mjs +0 -167
- package/.output/server/chunks/build/index-tR6owKzj.mjs.map +0 -1
- package/.output/server/chunks/build/login-Da4u1IlW.mjs.map +0 -1
- package/.output/server/chunks/build/mcp-B3IUvRgD.mjs.map +0 -1
- package/.output/server/chunks/build/notifications-abDv0id8.mjs.map +0 -1
- package/.output/server/chunks/build/pr-feedback-DjZID6q-.mjs.map +0 -1
- package/.output/server/chunks/build/reset-password-BmrUS4ZD.mjs.map +0 -1
- package/.output/server/chunks/build/settings-Du7YqF8i.mjs.map +0 -1
- package/.output/server/chunks/build/settings-metadata-DrEqWcW-.mjs.map +0 -1
- package/.output/server/chunks/build/storage-B4vzxd8G.mjs.map +0 -1
- package/.output/server/chunks/build/tags-DauTe_F-.mjs.map +0 -1
- package/.output/server/chunks/build/test-cases-DUvaO1He.mjs.map +0 -1
- package/.output/server/chunks/build/timeout-hygiene-CbnSaVbK.mjs.map +0 -1
- package/.output/server/chunks/build/useAiStatus-CWvIo32Q.mjs.map +0 -1
- package/.output/server/chunks/build/useCopy-CeKWgHyT.mjs +0 -33
- package/.output/server/chunks/build/useCopy-CeKWgHyT.mjs.map +0 -1
- package/.output/server/chunks/build/useCopyRich-BemRsKgv.mjs.map +0 -1
- package/.output/server/chunks/build/useDesktopDownload-D49JRQSw.mjs.map +0 -1
- package/.output/server/chunks/build/useOpenInIde-4GFf-kdi.mjs.map +0 -1
- package/.output/server/chunks/build/useSettingsNav-C3O866KC.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/users-CTUqXyGh.mjs.map +0 -1
- package/.output/server/chunks/build/virtualizer-Cd1hhlxC.mjs +0 -940
- package/.output/server/chunks/build/virtualizer-Cd1hhlxC.mjs.map +0 -1
- package/.output/server/chunks/build/wasted-time-lYkx5YO4.mjs.map +0 -1
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{d as ue,b as We,o,f as q,g as A,j as _,_ as Ie,m as E,i as p,k as t,l as Le,r as G,K as vt,h as I,A as ze,c as u,P as xt,V as Oe,ae as bt,S as ke,C as _e,p as $e,q as pe,v as T,t as $,F as ee,L as kt,y as fe,s as Pe,H as at,J as Ee,af as Ae,B as rt,E as _t,R as et,I as Je,ac as Re,G as $t,W as Ne,ag as Se,T as wt,ad as Ct,ah as Tt,ai as St,aj as At,a0 as Lt,a1 as Rt}from"./DCFbQvIN.js";import{_ as it,a as It}from"./BpM6ZPIG.js";import{_ as zt}from"./CFTZwazK.js";import{u as Pt}from"./BnbSEpXX.js";import{a as He,u as Ue}from"./E-_n_6vi.js";import{e as lt,u as Bt,v as Et,f as Ge,w as ct,n as Me,x as Ot}from"./BAKUqW95.js";import{_ as Ye}from"./DkT2nCqn.js";import{_ as je}from"./B3Fsod9X.js";import{_ as Mt}from"./oKrbs1XK.js";import{_ as Nt}from"./_rglcvXN.js";import{_ as Ut}from"./Ebw5l7n8.js";import{_ as jt}from"./D8gX1Jde.js";import{u as Dt,i as Kt,b as Vt}from"./B3rirOqU.js";import{f as Ht}from"./D-c8ZSws.js";import{_ as ut}from"./LHoUGrfi.js";import{_ as Ft}from"./Cpsq-kYE.js";const qt={class:"w-64 p-1 space-y-0.5"},Zt={class:"flex items-center justify-between px-2 pt-1 pb-1"},Jt=ue({__name:"ExportMenu",props:{endpoint:{},baseName:{}},setup(e){const r=e,{download:a}=Pt(),{copy:c}=He(),n=We(),s=G(!1),l=G(""),f=I(()=>(ze().app?.baseURL??"/").replace(/\/$/,""));function i(C){return`${f.value}${C}`}async function h(C){s.value=!1,await a(i(`${r.endpoint}?format=${C}`),`${r.baseName}.${C}`,{binary:C==="zip"})}function v(){s.value=!1,window.open(i(`${r.endpoint}?format=html&print=1`),"_blank")}async function L(C,w,S){l.value=w;try{const D=await fetch(i(C));if(!D.ok)throw new Error(`Request failed (${D.status})`);const U=await D.text();c(S?S(U):U,{toast:`${w} copied`}),s.value=!1}catch(D){n.add({title:`Could not copy ${w.toLowerCase()}`,description:lt(D),color:"error"})}finally{l.value=""}}function y(){return L(`${r.endpoint}?format=md`,"Report")}return(C,w)=>{const S=Ie,D=it,U=zt,V=vt;return o(),q(V,{open:t(s),"onUpdate:open":w[4]||(w[4]=B=>Le(s)?s.value=B:null)},{content:A(()=>[p("div",qt,[p("div",Zt,[w[6]||(w[6]=p("p",{class:"text-xs font-medium text-gray-500"},"Download",-1)),_(D,{topic:"export.offline"})]),_(S,{block:"",size:"sm",color:"neutral",variant:"ghost",class:"justify-start",icon:"i-lucide-file-code",title:"One self-contained HTML file with screenshots and video embedded",onClick:w[0]||(w[0]=B=>h("html"))},{default:A(()=>[...w[7]||(w[7]=[E(" HTML — single file ",-1)])]),_:1}),_(S,{block:"",size:"sm",color:"neutral",variant:"ghost",class:"justify-start",icon:"i-lucide-file-archive",title:"Report plus the raw artifacts, including trace archives and data.json",onClick:w[1]||(w[1]=B=>h("zip"))},{default:A(()=>[...w[8]||(w[8]=[E(" ZIP — with all evidence ",-1)])]),_:1}),_(S,{block:"",size:"sm",color:"neutral",variant:"ghost",class:"justify-start",icon:"i-lucide-printer",title:"Opens the report with your browser's print dialog, for Save as PDF",onClick:v},{default:A(()=>[...w[9]||(w[9]=[E(" PDF — via print ",-1)])]),_:1}),_(S,{block:"",size:"sm",color:"neutral",variant:"ghost",class:"justify-start",icon:"i-lucide-file-text",title:"The Markdown report as a file",onClick:w[2]||(w[2]=B=>h("md"))},{default:A(()=>[...w[10]||(w[10]=[E(" Markdown ",-1)])]),_:1}),_(S,{block:"",size:"sm",color:"neutral",variant:"ghost",class:"justify-start",icon:"i-lucide-file-json",title:"Everything the report contains, machine-readable",onClick:w[3]||(w[3]=B=>h("json"))},{default:A(()=>[...w[11]||(w[11]=[E(" JSON ",-1)])]),_:1}),_(U,{class:"my-1"}),w[13]||(w[13]=p("p",{class:"text-xs font-medium text-gray-500 px-2 pt-1 pb-1"},"Copy to clipboard",-1)),_(S,{block:"",size:"sm",color:"neutral",variant:"ghost",class:"justify-start",icon:"i-lucide-clipboard-list",loading:t(l)==="Report",title:"The whole investigation as Markdown, for an issue or a chat",onClick:y},{default:A(()=>[...w[12]||(w[12]=[E(" Report (Markdown) ",-1)])]),_:1},8,["loading"])])]),default:A(()=>[_(S,{icon:"i-lucide-share",size:"xs",color:"neutral",variant:"outline",title:"Take this investigation away"},{default:A(()=>[...w[5]||(w[5]=[E(" Export ",-1)])]),_:1})]),_:1},8,["open"])}}}),Oa=Object.assign(Jt,{__name:"ExportMenu"}),Wt={class:"flex items-center justify-between gap-2"},Gt=["aria-expanded","title"],Yt={class:"text-lg font-medium inline-flex items-center gap-1 shrink-0"},Xt={key:2,class:"min-w-0 flex-1 truncate text-sm text-gray-500 dark:text-gray-400"},Qt={key:0,class:"flex items-center gap-1 shrink-0"},en={key:0,class:"text-sm text-gray-500 mt-1 ml-11"},tn=ue({__name:"CollapsibleSectionCard",props:{title:{},icon:{},subtitle:{},count:{},iconClass:{default:"text-primary"},help:{},storageKey:{},defaultFolded:{type:Boolean,default:!0}},setup(e,{expose:r}){const a=e,{folded:c,toggle:n,setFolded:s}=Dt(`piwi-section-fold-${a.storageKey}`,a.defaultFolded),l=G(null);function f(){s(!1),kt(()=>l.value?.scrollIntoView({behavior:"smooth",block:"start"}))}return r({setFolded:s,reveal:f}),(i,h)=>{const v=$e,L=it,y=Ft;return o(),u("div",{ref_key:"rootEl",ref:l,class:"scroll-mt-4"},[_(y,{ui:{header:"p-3 sm:px-4 sm:py-3",body:t(c)?"p-0 sm:p-0":""},class:pe(t(c)&&"divide-y-0")},{header:A(()=>[p("div",Wt,[p("div",{class:"flex items-center gap-2 min-w-0 flex-1 cursor-pointer select-none rounded-sm outline-none focus-visible:outline-2 focus-visible:outline-primary",role:"button",tabindex:"0","aria-expanded":!t(c),title:t(c)?"Expand section":"Collapse section",onClick:h[1]||(h[1]=(...C)=>t(n)&&t(n)(...C)),onKeydown:[h[2]||(h[2]=ke((...C)=>t(n)&&t(n)(...C),["enter"])),h[3]||(h[3]=ke(_e((...C)=>t(n)&&t(n)(...C),["prevent"]),["space"]))]},[_(v,{name:t(c)?"i-lucide-chevron-right":"i-lucide-chevron-down",class:"size-4 shrink-0 text-gray-400"},null,8,["name"]),e.icon?(o(),q(v,{key:0,name:e.icon,class:pe(["size-5 shrink-0",e.iconClass])},null,8,["name","class"])):T("",!0),p("h3",Yt,[E($(e.title),1),e.count!=null?(o(),u(ee,{key:0},[E(" ("+$(e.count)+")",1)],64)):T("",!0)]),e.help?(o(),u("span",{key:1,onClick:h[0]||(h[0]=_e(()=>{},["stop"]))},[_(L,{topic:e.help},null,8,["topic"])])):T("",!0),t(c)&&i.$slots.folded?(o(),u("span",Xt,[Oe(i.$slots,"folded")])):T("",!0)],40,Gt),i.$slots.actions?(o(),u("div",Qt,[Oe(i.$slots,"actions")])):T("",!0)]),!t(c)&&(e.subtitle||i.$slots.subtitle)?(o(),u("p",en,[Oe(i.$slots,"subtitle",{},()=>[E($(e.subtitle),1)])])):T("",!0)]),default:A(()=>[xt(p("div",null,[Oe(i.$slots,"default")],512),[[bt,!t(c)]])]),_:3},8,["ui","class"])],512)}}}),De=Object.assign(tn,{__name:"CollapsibleSectionCard"}),nn=/('(?:\\.|[^'])*'|"(?:\\.|[^"])*")|([A-Za-z_$][\w$]*)(?=\s*\()|([A-Za-z_$][\w$]*)(?=\s*:)|(true|false|null|\d+)|([{}(),.])/g;function on(e){const r=[],a=new RegExp(nn.source,"g");let c=0,n;for(;(n=a.exec(e))!==null;){n.index>c&&r.push({kind:"plain",text:e.slice(c,n.index)});const s=n[1]?"string":n[2]?"method":n[3]?"option":n[4]?"literal":"punctuation";r.push({kind:s,text:n[0]}),c=a.lastIndex}return c<e.length&&r.push({kind:"plain",text:e.slice(c)}),r}const sn=["title"],an=ue({__name:"LocatorCode",props:{locator:{},truncate:{type:Boolean,default:!1}},setup(e){const r=e,a={method:"text-violet-700 dark:text-violet-300",string:"text-green-700 dark:text-green-300",option:"text-blue-700 dark:text-blue-300",literal:"text-amber-700 dark:text-amber-300",punctuation:"text-gray-500 dark:text-gray-400",plain:""},c=I(()=>on(r.locator));return(n,s)=>(o(),u("code",{class:pe(["font-mono",e.truncate?"block truncate":"break-words"]),title:e.locator},[(o(!0),u(ee,null,fe(t(c),(l,f)=>(o(),u("span",{key:f,class:pe(a[l.kind])},$(l.text),3))),128))],10,sn))}}),Xe=Object.assign(an,{__name:"LocatorCode"}),rn={class:"overflow-x-auto text-xs font-mono"},ln=ue({__name:"DiffPatch",props:{patch:{}},setup(e){return(r,a)=>(o(),u("div",rn,[(o(!0),u(ee,null,fe(("parsePatchLines"in r?r.parsePatchLines:t(Et))(e.patch),(c,n)=>(o(),u("div",{key:n,class:pe(["px-3 py-px whitespace-pre leading-5 min-w-0",("patchLineClass"in r?r.patchLineClass:t(Bt))[c.type]])},$(c.text||" "),3))),128))]))}}),cn=Object.assign(ln,{__name:"DiffPatch"}),un=["role","aria-checked","tabindex"],dn={class:"flex-1 min-w-0"},pn={key:0,class:"text-[11px] leading-4 text-gray-500 truncate"},fn=ue({__name:"LocatorAlternativeRow",props:{alt:{},note:{default:void 0},copied:{type:Boolean,default:!1},dense:{type:Boolean,default:!1},selectable:{type:Boolean,default:!1},selected:{type:Boolean,default:!1}},emits:["copy","select"],setup(e){const r=e;function a(s){return s>=80?"success":s>=50?"warning":"error"}function c(s){const{method:l,score:f,args:i}=s;return i&&(i.anchorTestId||i.anchorSelector||i.anchorRole)?"scoped to a stable ancestor — survives renames":f>=100?"most stable — purpose-built for testing":l==="getByRole"&&i&&!("name"in i)?"name-free role — survives renames":l==="getByRole"?"browser ARIA tree — semantic and stable":l==="getByLabel"?"associated <label> element":l==="getByPlaceholder"?"input placeholder":l==="getByText"?"visible text":l==="getByAltText"?"image alt text":l==="getByTitle"?"title attribute":l==="locator"&&f>=50?"stable selector":l==="locator"?"CSS class — may be fragile":""}const n=I(()=>r.note??c(r.alt));return(s,l)=>{const f=Pe,i=Xe,h=$e,v=Ie;return o(),u("div",{class:pe(["flex items-center gap-2 rounded border",[e.dense?"py-1 px-2":"py-1.5 px-2.5",e.selectable?"cursor-pointer hover:bg-elevated transition-colors focus-visible:outline-2 focus-visible:outline-primary":"",e.selectable&&e.selected?"border-primary/60 ring-1 ring-primary/50":"border-default/50"]]),role:e.selectable?"radio":void 0,"aria-checked":e.selectable?e.selected:void 0,tabindex:e.selectable?0:void 0,onClick:l[1]||(l[1]=L=>e.selectable&&s.$emit("select")),onKeydown:[l[2]||(l[2]=ke(_e(L=>e.selectable&&s.$emit("select"),["prevent"]),["enter"])),l[3]||(l[3]=ke(_e(L=>e.selectable&&s.$emit("select"),["prevent"]),["space"]))]},[_(f,{size:"xs",color:a(e.alt.score),variant:"subtle",class:pe(["shrink-0 font-mono tabular-nums cursor-default text-center",e.dense?"min-w-[2.25rem]":"min-w-[2.5rem]"]),title:`Stability score: ${e.alt.score}/100`},{default:A(()=>[E($(e.alt.score),1)]),_:1},8,["color","class","title"]),p("div",dn,[_(i,{locator:e.alt.locator,truncate:"",class:"text-xs"},null,8,["locator"]),t(n)?(o(),u("p",pn,$(t(n)),1)):T("",!0)]),e.alt.pickedByUser&&e.dense?(o(),q(h,{key:0,name:"i-lucide-user-check",class:"size-3.5 text-primary shrink-0",title:"Confirmed with the locator picker"})):e.alt.pickedByUser?(o(),q(f,{key:1,size:"xs",color:"primary",variant:"subtle",icon:"i-lucide-user-check",class:"shrink-0",title:"Confirmed with the locator picker on the failing page"})):T("",!0),_(v,{size:"xs",variant:"ghost",color:"neutral",icon:e.copied?"i-lucide-check":"i-lucide-copy",title:e.copied?"Copied!":"Copy",class:"shrink-0",onClick:l[0]||(l[0]=_e(L=>s.$emit("copy"),["stop"]))},null,8,["icon","title"])],42,un)}}}),dt=Object.assign(fn,{__name:"LocatorAlternativeRow"}),tt={getByTestId:"testid",getByRole:"semantic",getByLabel:"label",getByPlaceholder:"label",getByText:"text",getByAltText:"text",getByTitle:"text",locator:"css","page.locator":"css"},mn=50;function pt(e,r,a=mn){const c=r[0]??null;if(!c)return{recommended:null,durable:null,preservesConvention:!1,hasDurableAlternative:!1,suggestAddTestId:!1};const n=e?tt[e]:void 0,s=(e?r.find(i=>i.method===e&&i.score>=a):void 0)??(n?r.find(i=>tt[i.method]===n&&i.score>=a):void 0),f=r.find(i=>i.pickedByUser)??s??c;return{recommended:f,durable:c,preservesConvention:!!s&&f===s,hasDurableAlternative:f.locator!==c.locator,suggestAddTestId:c.score<a}}const ft={a:"link",button:"button",nav:"navigation",main:"main",article:"article",section:"region",form:"form",img:"img",figure:"figure",figcaption:"caption",blockquote:"blockquote",table:"table",caption:"caption",thead:"rowgroup",tbody:"rowgroup",tfoot:"rowgroup",tr:"row",td:"cell",ul:"list",ol:"list",li:"listitem",dialog:"dialog",output:"status",progress:"progressbar",meter:"meter",textarea:"textbox",h1:"heading",h2:"heading",h3:"heading",h4:"heading",h5:"heading",h6:"heading",details:"group",summary:"button",search:"search"},gn={button:"button",submit:"button",reset:"button",image:"button",checkbox:"checkbox",radio:"radio",range:"slider",search:"searchbox",number:"spinbutton",text:"textbox",email:"textbox",tel:"textbox",url:"textbox",password:"textbox"},hn=["id","class","name","data-testid","placeholder","alt","title","aria-label","aria-level","role","type","href","multiple"];function yn(e){const r=e.attributes.role;if(r)return r;const a=e.tagName;if(!a)return null;if(a==="input"){const c=(e.attributes.type??"text").toLowerCase();return gn[c]??"textbox"}return a==="select"?e.attributes.multiple!=null?"listbox":"combobox":a==="a"?e.attributes.href!=null?"link":null:ft[a]??null}function vn(e,r){if(r!=="heading")return null;const a=e.tagName.match(/^h([1-6])$/);if(a)return Number(a[1]);const c=e.attributes["aria-level"];return c&&/^\d+$/.test(c)?Number(c):null}const Ce=(e,r)=>e.attributes[r]||null,ve=e=>e.replace(/\\/g,"\\\\").replace(/'/g,"\\'"),Ve=e=>e.replace(/\\/g,"\\\\").replace(/"/g,'\\"'),nt=e=>/^[A-Za-z][A-Za-z0-9_-]*$/.test(e);function xn(e){return/[a-f0-9]{8,}/i.test(e)?10:/^(?:css|sc|emotion|styled)-/i.test(e)?15:/^(bg|text|border|shadow|opacity|font|w-|h-|m[tblrxy]?-|p[tblrxy]?-|flex|grid|gap|rounded|absolute|relative|fixed|sticky|block|inline|hidden|overflow|z-|top-|right-|bottom-|left-|inset-|justify-|items-|self-|content-|order-|col-|row-)/.test(e)?25:/__/.test(e)||/--/.test(e)?35:/^[a-z]+(-[a-z]+)+$/.test(e)||/^[a-z]+[A-Z][a-zA-Z]+$/.test(e)?40:(e.includes("_")||/^[a-z]+-[a-z0-9]{5,}$/.test(e)&&/[0-9]/.test(e),15)}function ot(e){return!!(/^[a-f0-9]{8}-([a-f0-9]{4}-){3}[a-f0-9]{12}$/i.test(e)||/^[a-f0-9]{8,}$/i.test(e)||/^[a-z]+-\d{4,}$/.test(e)||/^(tab|panel|input|select|option|dialog|modal|popup|tooltip|menu|listbox|combobox|checkbox|radio|textarea|button|field|label|accordion|collapse|step|slider|toggle|switch|dropdown|overlay|portal|layer)-\d+$/i.test(e)||/^(emotion-|styled-|css-|sc-)/.test(e)||e.startsWith("ng-")||/^(radix-|headlessui-|mui-|mantine-|chakra-)/i.test(e)||/^:r[0-9a-z]+:$/i.test(e)||/^«r[0-9a-z]+»$/i.test(e))}const bn=new Set(["data-test","data-test-id","data-qa","data-qa-id","data-cy","data-e2e"]);function kn(e){const r=[],a=new Set,c=x=>{a.has(x.locator)||(a.add(x.locator),r.push(x))},{accessibleName:n}=e,s=e.tagName,l=yn(e),f=e.selectorCounts,i=x=>x==null||x<=1,h=x=>x!=null&&x>1?45:0,v=e.textContent?e.textContent.replace(/\s+/g," ").trim():null,L=Ce(e,"data-testid");L&&i(f?.testId)&&c({locator:`getByTestId('${ve(L)}')`,method:"getByTestId",args:{testId:L},score:100});const y=vn(e,l),C=y!=null?`, level: ${y}`:"",w=x=>y!=null?{...x,level:y}:x;l&&n&&c({locator:`getByRole('${l}', { name: '${ve(n)}'${C} })`,method:"getByRole",args:w({role:l,name:n}),score:90-h(f?.roleName)});const S=Ce(e,"aria-label");if(l&&S&&S!==n&&c({locator:`getByRole('${l}', { name: '${ve(S)}'${C} })`,method:"getByRole",args:w({role:l,name:S}),score:85-h(f?.roleName)}),n&&["input","select","textarea"].includes(s)){const x=Ce(e,"aria-label");(e.hasLabel===void 0||e.hasLabel===!0||x===n)&&c({locator:`getByLabel('${ve(n)}')`,method:"getByLabel",args:{label:n},score:85})}const D=Ce(e,"placeholder");D&&c({locator:`getByPlaceholder('${ve(D)}')`,method:"getByPlaceholder",args:{placeholder:D},score:80-h(f?.placeholder)}),v&&v.length<80&&c({locator:`getByText('${ve(v)}')`,method:"getByText",args:{text:v},score:75-h(f?.text)});const U=Ce(e,"id");if(U&&!ot(U)&&i(f?.id)){const x=nt(U)?`#${U}`:`[id="${Ve(U)}"]`;c({locator:`locator('${ve(x)}')`,method:"locator",args:{selector:x},score:65})}const V=Ce(e,"name");if(V&&i(f?.name)){const x=`[name="${Ve(V)}"]`;c({locator:`locator('${ve(x)}')`,method:"locator",args:{selector:x},score:60})}const B=Ce(e,"alt");B&&c({locator:`getByAltText('${ve(B)}')`,method:"getByAltText",args:{text:B},score:60-h(f?.alt)});const X=Ce(e,"title");X&&c({locator:`getByTitle('${ve(X)}')`,method:"getByTitle",args:{title:X},score:50-h(f?.title)});const Q=!!(L&&i(f?.testId)),m=(x,K,P)=>{let j=!1,ne=!1,me=!1,ge=!1,he=!1;for(const Z of e.ancestors??[]){if(K(Z)!==1)continue;if(!j&&Z.testId&&Z.testIdCount===1&&(j=!0,c({locator:`getByTestId('${ve(Z.testId)}').${x.expr}`,method:x.method,args:{...x.args,anchorTestId:Z.testId},score:P.testId})),!ne&&Z.id&&!ot(Z.id)&&Z.idCount===1){ne=!0;const k=nt(Z.id)?`#${Z.id}`:`[id="${Ve(Z.id)}"]`;c({locator:`locator('${ve(k)}').${x.expr}`,method:x.method,args:{...x.args,anchorSelector:k},score:P.id})}if(!ge&&Z.dataAttr&&Z.dataAttrCount===1){ge=!0;const{name:k,value:d}=Z.dataAttr,O=`[${k}="${Ve(d)}"]`;c({locator:`locator('${ve(O)}').${x.expr}`,method:x.method,args:{...x.args,anchorSelector:O},score:bn.has(k)?P.testData:P.data})}const ce=Z.role||ft[Z.tag]||null;!me&&ce&&ce!==x.role&&Z.roleCount===1&&(me=!0,c({locator:`getByRole('${ve(ce)}').${x.expr}`,method:x.method,args:{...x.args,anchorRole:ce},score:P.role})),!he&&ce&&Z.filterText&&Z.filterRoleCount===1&&(he=!0,c({locator:`getByRole('${ve(ce)}').filter({ hasText: '${ve(Z.filterText)}' }).${x.expr}`,method:x.method,args:{...x.args,anchorRole:ce,anchorHasText:Z.filterText},score:P.filter}))}};if(l&&!Q){const x=y!=null?`'${l}', { level: ${y} }`:`'${l}'`,K=w({role:l});m({expr:`getByRole(${x})`,method:"getByRole",args:K,role:l},j=>j.scopedRoleCount,{testId:72,testData:70,id:64,data:60,role:55,filter:53});const P=e.rolePosition;P&&P.role===l&&(P.count===1||y!=null&&P.levelCount===1)&&c({locator:`getByRole(${x})`,method:"getByRole",args:K,score:58})}else!l&&v&&v.length<80&&!Q&&m({expr:`getByText('${ve(v)}')`,method:"getByText",args:{text:v},role:null},x=>x.scopedTextCount,{testId:68,testData:66,id:60,data:56,role:51,filter:49});const M=Ce(e,"class");if(M){const x=f?.classes,K=M.split(/\s+/).filter(P=>P.length>1&&/^[A-Za-z_-][A-Za-z0-9_-]*$/.test(P)&&i(x?.[P])).map(P=>({cls:P,score:xn(P)})).sort((P,j)=>j.score-P.score).slice(0,3);for(const{cls:P,score:j}of K)c({locator:`locator('.${ve(P)}')`,method:"locator",args:{selector:`.${P}`},score:j})}return r.sort((x,K)=>K.score-x.score)}function _n(e){const r=e.attributes,a=r["aria-label"];if(a)return a;if(e.textContent)return e.textContent;const c=r.title;if(c)return c;const n=r.placeholder;return n||null}function $n(e,r){const{keep:a,tagRoles:c,inputRoles:n,roleSources:s,includeStructural:l,includeLabelText:f}=r,i={};for(const S of a){const D=e.getAttribute(S)??e[S];i[S]=typeof D=="string"?D.slice(0,200):D?String(D).slice(0,200):null}const h=e.getBoundingClientRect(),v={};try{const S=e.ownerDocument,D=B=>S.defaultView.CSS.escape(B),U=B=>{try{return S.querySelectorAll(B).length}catch{return}};i["data-testid"]&&(v.testId=U(`[data-testid=${JSON.stringify(i["data-testid"])}]`)),i.id&&(v.id=U(`#${D(i.id)}`)),i.name&&(v.name=U(`[name=${JSON.stringify(i.name)}]`)),i.placeholder&&(v.placeholder=U(`[placeholder=${JSON.stringify(i.placeholder)}]`)),i.alt&&(v.alt=U(`[alt=${JSON.stringify(i.alt)}]`)),i.title&&(v.title=U(`[title=${JSON.stringify(i.title)}]`));const V=(i.class||"").split(/\s+/).filter(B=>B.length>1).slice(0,10);if(V.length>0){const B={};for(const X of V){const Q=U(`.${D(X)}`);Q!==void 0&&(B[X]=Q)}v.classes=B}}catch{}let L=null;const y=[];if(l&&c&&n&&s)try{const S=e.ownerDocument,D=k=>S.defaultView.CSS.escape(k),U=k=>{try{return S.querySelectorAll(k).length}catch{return}},V=new Map,B=new Map,X=k=>{const d=V.get(k);if(d!==void 0)return d;let O;const Y=k.getAttribute("role");if(Y)O=Y;else{const se=(k.tagName||"").toLowerCase();se==="input"?O=n[(k.getAttribute("type")||"text").toLowerCase()]??"textbox":se==="select"?O=k.getAttribute("multiple")!=null?"listbox":"combobox":se==="a"?O=k.getAttribute("href")!=null?"link":null:O=c[se]??null}return V.set(k,O),O},Q=k=>{const d=/^h([1-6])$/.exec((k.tagName||"").toLowerCase());if(d)return Number(d[1]);const O=k.getAttribute("aria-level");return O&&/^\d+$/.test(O)?Number(O):null},m=X(e),M=m==="heading"?Q(e):null,x=k=>{const d=k.getAttribute("aria-label");if(d)return d;const O=(k.textContent||"").replace(/\s+/g," ").trim();return O||k.getAttribute("title")||k.getAttribute("placeholder")||null},K=x(e),P=(e.textContent||"").replace(/\s+/g," ").trim(),j=P?P.toLowerCase():null,ne=k=>{const d=B.get(k);if(d!==void 0)return d;const O=(k.textContent||"").replace(/\s+/g," ").trim().toLowerCase();return B.set(k,O),O},me=2,ge=(k,d)=>{if(!j)return-1;const O=k.querySelectorAll("*");if(O.length>d)return-1;let Y=0;for(let se=0;se<O.length;se++){const re=O[se];if(ne(re).indexOf(j)===-1)continue;let g=!1;const z=re.children;for(let H=0;H<z.length;H++)if(ne(z[H]).indexOf(j)!==-1){g=!0;break}if(g||Y++,Y>=me)return Y}return Y},he=S.querySelectorAll(s),Z=he.length<=4e3,ce=!!m&&Z;if(ce){let k=0,d=-1,O=0,Y=0;for(let se=0;se<he.length;se++){const re=he[se];X(re)===m&&(re===e&&(d=k),k++,M!=null&&Q(re)===M&&O++,K!=null&&x(re)===K&&Y++)}K!=null&&(v.roleName=Y),d!==-1&&(L={role:m,count:k,index:d,...M!=null?{levelCount:O}:{}})}if(j){const k=ge(S.body||S.documentElement,4e3);k>=0&&(v.text=k)}if(ce||j){const k=["form","nav","main","article","section","dialog","table","li","tr"],d=/^data-(v-[0-9a-f]+|reactid|react-checksum|svelte-\w+|ng-\w+|ember\w*)$/i,O=/^data-(index|idx|i|key|row|rownum|col|column|position|pos|order|sort|offset|page)$/i,Y=["data-test","data-test-id","data-qa","data-qa-id","data-cy","data-e2e"],se=(J,oe)=>!J||J.slice(0,5)!=="data-"||J==="data-testid"||d.test(J)||O.test(J)?!1:!!oe&&oe.length<=120,re=J=>{const oe=J.attributes;if(!oe)return null;let ie=null;for(let de=0;de<oe.length;de++){const le=oe[de].name,ye=oe[de].value;if(se(le,ye)){if(Y.indexOf(le.toLowerCase())!==-1)return{name:le,value:ye};ie||(ie={name:le,value:ye})}}return ie},g=J=>{let oe=0;for(let ie=0;ie<he.length;ie++)X(he[ie])===J&&oe++;return oe},z=J=>(J.textContent||"").replace(/\s+/g," ").trim(),H=J=>{const oe=J.replace(/[^A-Za-z]/g,"").length;return oe<2?!1:J.replace(/[^0-9]/g,"").length<=oe},F=J=>!!J&&J.length<=60&&J!==P&&H(J),te=J=>{const oe=J.querySelector('h1,h2,h3,h4,h5,h6,[role="heading"]');if(oe){const de=z(oe);if(F(de))return de}const ie=J.querySelectorAll("*");if(ie.length>200)return null;for(let de=0;de<ie.length;de++){const le=ie[de];if(le===e||le.children.length>0)continue;const ye=z(le);if(F(ye))return ye}return null},N=(J,oe)=>{const ie=oe.toLowerCase();let de=0;for(let le=0;le<he.length;le++)X(he[le])===J&&ne(he[le]).indexOf(ie)!==-1&&de++;return de};let W=e.parentElement,we=0;for(;W&&we<12&&y.length<4;){we++;const J=(W.tagName||"").toLowerCase();if(J==="body"||J==="html")break;const oe=W.getAttribute("data-testid"),ie=W.getAttribute("id"),de=W.getAttribute("role"),le=W.getAttribute("aria-label"),ye=de||(k.includes(J)?c[J]:null)||null,Te=re(W);if(oe||ie||ye||le||Te){let R=-1;if(ce){const xe=W.querySelectorAll(s);if(xe.length<=2e3){R=0;for(let Be=0;Be<xe.length;Be++){const Ke=xe[Be];X(Ke)===m&&(M!=null&&Q(Ke)!==M||R++)}}}const b=ge(W,2e3);let ae=null;try{ye&&Z&&(ae=te(W))}catch{ae=null}y.push({tag:J,depth:we,testId:oe||null,id:ie||null,role:de||null,ariaLabel:le||null,...R>=0?{scopedRoleCount:R}:{},...b>=0?{scopedTextCount:b}:{},...oe?{testIdCount:U(`[data-testid=${JSON.stringify(oe)}]`)}:{},...ie?{idCount:U(`#${D(ie)}`)}:{},...ye&&Z?{roleCount:g(ye)}:{},...ae?{filterText:ae,filterRoleCount:N(ye,ae)}:{},...Te?{dataAttr:Te,dataAttrCount:U(`[${Te.name}=${JSON.stringify(Te.value)}]`)}:{}})}W=W.parentElement}}}catch{}const C=!!(e.labels&&e.labels.length>0),w=f?C&&(e.labels[0].textContent||"").replace(/\s+/g," ").trim().slice(0,120)||null:void 0;return{tagName:e.tagName?.toLowerCase?.()??"unknown",attributes:i,textContent:(e.textContent||"").replace(/\s+/g," ").trim().slice(0,80),center:{x:Math.round(h.x+h.width/2),y:Math.round(h.y+h.height/2)},hasLabel:C,...f?{labelText:w}:{},selectorCounts:v,...l?{rolePosition:L,ancestors:y}:{}}}function wn(e){const r=globalThis,a=r.document;if(!a||!a.body){e.transport==="postMessage"?r.parent.postMessage({type:"pickerClosed"},"*"):r.__piwiPickState="skipped";return}const c=2147483600,n=a.createElement("div");n.id="__piwi_picker_highlight",n.style.cssText=`position:fixed;pointer-events:none;z-index:${c};display:none;box-sizing:border-box;border:2px solid #a855f7;background:rgba(168,85,247,.14);border-radius:4px;box-shadow:0 0 0 1px rgba(255,255,255,.9),0 0 0 3px rgba(59,7,100,.55),inset 0 0 0 1px rgba(255,255,255,.5);`;const s=a.createElement("div");s.id="__piwi_picker_banner",s.style.cssText=`position:fixed;top:12px;left:50%;transform:translateX(-50%);z-index:${c+2};background:#111827;color:#f9fafb;font:13px/1.5 system-ui,sans-serif;border:1px solid #312e81;padding:10px 16px;border-radius:10px;box-shadow:0 4px 24px rgba(0,0,0,.5);max-width:min(680px,86vw);`;const l=g=>{const z=W=>W.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"),H=/('(?:\\.|[^'])*'|"(?:\\.|[^"])*")|([A-Za-z_$][\w$]*)(?=\s*\()|([A-Za-z_$][\w$]*)(?=\s*:)|(true|false|null|\d+)|([{}(),.])/g;let F="",te=0,N;for(;(N=H.exec(g))!==null;){N.index>te&&(F+=z(g.slice(te,N.index)));const W=N[1]?"#86efac":N[2]?"#d8b4fe":N[3]?"#93c5fd":N[4]?"#fcd34d":"#9ca3af";F+=`<span style="color:${W}">${z(N[0])}</span>`,te=H.lastIndex}return te<g.length&&(F+=z(g.slice(te))),F},f="ui-monospace,SFMono-Regular,Menlo,Consolas,monospace",i=g=>`<code style="font-family:${f}">${l(g)}</code>`,h=a.createElement("div");h.innerHTML=e.transport==="postMessage"?"Click an element to generate locators":e.failing?`Piwi locator picker — click the element that should replace ${i(e.failing)}`:"Piwi inspector — click any element to generate locators for it";const v=a.createElement("div");v.id="__piwi_picker_locator",v.style.cssText=`display:none;margin-top:7px;padding:5px 9px;border-radius:7px;background:#0b1120;border:1px solid #4c1d95;font:13.5px/1.55 ${f};word-break:break-word;overflow-wrap:anywhere;`;const L=a.createElement("div");L.id="__piwi_picker_foot",L.style.cssText="color:#9ca3af;margin-top:6px;font-size:12px;",L.textContent="↑ parent · ↓ child · Esc skip",s.appendChild(h),s.appendChild(v),s.appendChild(L);const y=a.createElement("div");y.id="__piwi_picker_label",y.style.cssText=`position:fixed;pointer-events:none;z-index:${c+1};display:none;box-sizing:border-box;max-width:min(620px,92vw);background:#0b1120;color:#f9fafb;border:1px solid #7c3aed;border-radius:7px;padding:4px 8px;font:12.5px/1.45 ${f};white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 4px 18px rgba(0,0,0,.5);`,a.body.appendChild(n),a.body.appendChild(y),a.body.appendChild(s);const C=g=>g.replace(/\\/g,"\\\\").replace(/'/g,"\\'"),w=g=>{const z=(g.tagName||"?").toLowerCase(),H=g.getAttribute&&g.getAttribute("data-testid");if(H)return`getByTestId('${C(H)}')`;if(g.labels&&g.labels.length>0){const J=(g.labels[0].textContent||"").replace(/\s+/g," ").trim().slice(0,80);if(J)return`getByLabel('${C(J)}')`}const F=g.getAttribute&&g.getAttribute("aria-label");if(F)return`getByLabel('${C(F)}')`;const te=g.getAttribute&&g.getAttribute("placeholder");if(te)return`getByPlaceholder('${C(te)}')`;const N=g.getAttribute&&g.getAttribute("alt");if(N)return`getByAltText('${C(N)}')`;const W=g.getAttribute&&g.getAttribute("title");if(W)return`getByTitle('${C(W)}')`;if(g.id)return`locator('#${C(g.id)}')`;const we=(g.getAttribute&&g.getAttribute("class")||"").split(/\s+/).find(J=>J.length>1);return we?`locator('.${C(we)}')`:z},S=g=>{const z=[];let H=g;for(;H&&z.length<15;){const F=(H.tagName||"").toLowerCase();if(F==="body"||F==="html")break;z.push(H),H=H.parentElement}return z.length?z:[g]},D=["button","a","input","select","textarea","summary","option"],U=g=>{for(let z=0;z<Math.min(g.length,4);z++){const H=g[z],F=(H.tagName||"").toLowerCase();if(D.includes(F)||H.getAttribute&&(H.getAttribute("role")||H.getAttribute("data-testid")))return z}return 0},V=g=>{const z=r.__piwiDescribeElement;if(typeof z=="function")try{const H=z(g);if(typeof H=="string"&&H)return H}catch{}return w(g)};let B=[],X=0,Q=null,m=null;const M=g=>{y.style.display="block";const z=y.getBoundingClientRect(),H=r.innerWidth||a.documentElement.clientWidth||0,F=r.innerHeight||a.documentElement.clientHeight||0;let te=g.top-z.height-6;te<4&&(te=g.bottom+6),te+z.height>F-4&&(te=Math.max(4,F-z.height-4));let N=g.left;N+z.width>H-6&&(N=H-z.width-6),N<6&&(N=6),y.style.left=N+"px",y.style.top=te+"px"},x=()=>B[X]??null,K=()=>{const g=x();if(!g){n.style.display="none",y.style.display="none";return}const z=g.getBoundingClientRect();if(n.style.display="block",n.style.left=z.left+"px",n.style.top=z.top+"px",n.style.width=z.width+"px",n.style.height=z.height+"px",g!==m){m=g;const H=(g.tagName||"?").toLowerCase(),F=l(V(g));y.innerHTML=`<span style="color:#c4b5fd"><${H}></span> ${F}`,v.innerHTML=F,v.style.display="block"}M(z),L.textContent="click to pick · ↑ parent · ↓ child · Esc skip"},P=g=>{g.preventDefault(),g.stopImmediatePropagation()},j=g=>g===s||g===n||g===y||s.contains&&s.contains(g)||!!(g&&g.__piwiHint);let ne="top";const me=g=>{ne!==g&&(ne=g,g==="bottom"?(s.style.top="auto",s.style.bottom="12px"):(s.style.top="12px",s.style.bottom="auto"))},ge=g=>{const z=g.target;if(!z||j(z)){n.style.display="none",y.style.display="none";return}z!==Q&&(Q=z,B=S(z),X=U(B)),K();const H=x();if(H){const F=H.getBoundingClientRect(),te=s.getBoundingClientRect(),N=8;F.left<te.right+N&&F.right>te.left-N&&F.top<te.bottom+N&&F.bottom>te.top-N&&me(ne==="top"?"bottom":"top")}},he=["mousedown","mouseup","pointerdown","pointerup","auxclick","dblclick"],Z=()=>{a.removeEventListener("mousemove",ge,!0),a.removeEventListener("click",Y,!0),a.removeEventListener("keydown",se,!0),e.transport==="postMessage"&&r.removeEventListener("message",re,!1)},ce=()=>{for(const g of he)a.removeEventListener(g,P,!0)},k=()=>{n.remove(),y.remove(),s.remove()},d=g=>{if(Z(),n.style.display="none",y.style.display="none",e.transport==="postMessage"){const z=r.__piwiProbe,H=typeof z=="function"?z(g,e.probeArg):null;r.__piwiSnapshotExtras?.onPick?.(),a.addEventListener("click",P,!0),a.addEventListener("keydown",P,!0),L.textContent="Analyzing element…",r.parent.postMessage({type:"elementPicked",attrs:H},"*")}else ce(),r.__piwiPickedElement=g,r.__piwiPickState="picked",L.textContent="Analyzing element…"},O=()=>{Z(),e.transport==="postMessage"?(a.removeEventListener("click",P,!0),a.removeEventListener("keydown",P,!0),ce(),r.__piwiSnapshotExtras?.onClose?.(),k(),r.parent.postMessage({type:"pickerClosed"},"*")):(ce(),r.__piwiPickState="skipped",k())},Y=g=>{P(g);const z=x();!z||j(g.target)||d(z)},se=g=>{if(g.key==="Escape"){P(g),O();return}(g.key==="ArrowUp"||g.key==="ArrowDown")&&(P(g),g.key==="ArrowUp"?X=Math.min(X+1,B.length-1):X=Math.max(X-1,0),K())},re=g=>{const z=g.data;!z||typeof z.type!="string"||z.type!=="piwiPickerKey"||typeof z.key!="string"||se({key:z.key,preventDefault(){},stopImmediatePropagation(){}})};r.__piwiPickCleanup=k,a.addEventListener("mousemove",ge,!0),a.addEventListener("click",Y,!0),a.addEventListener("keydown",se,!0);for(const g of he)a.addEventListener(g,P,!0);e.transport==="postMessage"&&(r.addEventListener("message",re,!1),r.parent.postMessage({type:"pickerReady"},"*"))}function Cn(){var e=document,r=window,a=2147483600,c=[];function n(){for(var m=0;m<c.length;m++)c[m].parentNode&&c[m].parentNode.removeChild(c[m]);c=[]}function s(m){return(m||"").replace(/\s+/g," ").trim().toLowerCase()}function l(m){var M=s(m);if(M.length<2)return[];for(var x=e.querySelectorAll("button,a,[role],h1,h2,h3,h4,h5,h6,label,summary,input,textarea,select,option,span,li,td,th,p"),K=[],P=[],j=0;j<x.length;j++){var ne=x[j],me=s(ne.textContent);if(!me){var ge=s(ne.getAttribute&&(ne.getAttribute("placeholder")||ne.getAttribute("aria-label"))||"");ge&&(ge===M||ge.indexOf(M)!==-1)&&K.push(ne);continue}me.length>120||(me===M?K.push(ne):me.indexOf(M)!==-1&&me.length<M.length+30&&P.push(ne))}return K.concat(P)}function f(m,M){var x=m.getBoundingClientRect();if(x.width===0&&x.height===0)return null;var K=e.createElement("div");return K.__piwiHint=!0,K.style.cssText="position:fixed;pointer-events:none;z-index:"+(a+1)+";box-sizing:border-box;border-radius:3px;transition:opacity .3s;border:2px solid "+M+";box-shadow:0 0 0 3px "+M+"55;left:"+x.left+"px;top:"+x.top+"px;width:"+x.width+"px;height:"+x.height+"px;",e.body.appendChild(K),c.push(K),K}function i(m){var M=m.getBoundingClientRect();r.parent.postMessage({type:"piwiScrollTo",y:M.top},"*")}function h(m){if(n(),!(!m||!m.length)){for(var M=null,x=0;x<m.length;x++)for(var K=m[x],P=l(K&&K.text),j=0;j<Math.min(P.length,3);j++)f(P[j],"#f59e0b"),M||(M=P[j]);M&&i(M),setTimeout(function(){for(var ne=0;ne<c.length;ne++)c[ne].style.opacity="0"},2600),setTimeout(n,3e3)}}var v=[],L=0;function y(){r.parent.postMessage({type:"piwiSearchResult",count:v.length,index:v.length?L:-1},"*")}function C(){n();var m=v[L];m&&(f(m,"#7c3aed"),i(m),y())}function w(m){if(v=l(m),L=0,!v.length){n(),y();return}C()}function S(){v.length&&(L=(L+1)%v.length,C())}function D(m){var M=m.data;if(!(!M||typeof M.type!="string")){if(M.type==="piwiHighlight")try{h(M.hints)}catch{}else if(M.type==="piwiSearch")try{w(M.q)}catch{}else if(M.type==="piwiSearchNext")try{S()}catch{}else if(M.type==="piwiClearHints")try{n()}catch{}}}r.addEventListener("message",D,!1);function U(m){m.preventDefault(),m.stopImmediatePropagation()}for(var V=["mousedown","mouseup","pointerdown","pointerup","auxclick","dblclick","contextmenu","submit","beforeinput","input","change","paste","cut","drop","dragstart","keypress","keyup","touchstart","touchend"],B=0;B<V.length;B++)e.addEventListener(V[B],U,!0);r.__piwiSnapshotExtras={onPick:function(){n()},onClose:function(){n(),r.removeEventListener("message",D,!1);for(var m=0;m<V.length;m++)e.removeEventListener(V[m],U,!0)}};function X(){var m=Math.max(e.documentElement?e.documentElement.scrollHeight:0,e.body?e.body.scrollHeight:0);m>0&&r.parent.postMessage({type:"piwiContentHeight",height:m},"*")}X();try{if(r.ResizeObserver){var Q=new r.ResizeObserver(X);e.documentElement&&Q.observe(e.documentElement),e.body&&Q.observe(e.body)}}catch{}}function Tn(e){const r=[],a=new Set,c=s=>{if(typeof s!="string")return;const l=s.trim();if(l.length<2||l.length>80)return;const f=l.toLowerCase();a.has(f)||(a.add(f),r.push({text:l}))},n=s=>s&&(s.name??s.text??s.label??s.placeholder??s.alt??s.title);c(n(e.failingLocator?.args));for(const s of e.fromElementMatch??[])c(n(s.args));for(const s of e.fromAriaSnapshot??[])c(n(s.args));return r.slice(0,6)}const qe=e=>e.replace(/<\/(script)/gi,"<\\/$1");function Sn(e){const a={transport:"postMessage",probeArg:{keep:e.probedAttrs,includeStructural:!1,includeLabelText:!0}},c=qe(String($n)),n=qe(String(Cn)),s=qe(String(wn));return`<script>globalThis.__piwiProbe = (${c});(${n})();(${s})(${JSON.stringify(a)});<\/script>`}function An(e){return e.replace(/<base\b[^>]*>/gi,"")}function Ln(e,r){return An(e)+Sn(r)}const Rn={key:0,class:"flex items-center justify-center py-20"},In={key:1,class:"py-8 text-center"},zn={class:"text-xs text-gray-400 mt-1"},Pn={key:2,class:"py-8 text-center"},Bn={class:"mb-2 flex items-center gap-2 flex-wrap"},En={key:1,class:"ml-auto inline-flex rounded-md border border-default overflow-hidden text-xs"},On={key:0,class:"flex items-center gap-1 mb-1.5 text-xs text-gray-500"},Mn={class:"tabular-nums w-11 text-center select-none"},Nn={class:"ml-auto text-gray-400 tabular-nums"},Un={key:1,class:"flex items-center gap-2 mb-1.5"},jn={key:0,class:"text-xs text-gray-500 tabular-nums"},Dn={key:1,class:"text-xs text-gray-400"},Kn={key:0,class:"absolute inset-0 flex items-center justify-center bg-white dark:bg-gray-900 z-10"},Vn=["src"],Hn={key:2,class:"mt-4 space-y-3"},Fn={class:"flex items-center gap-3 bg-elevated rounded-lg p-3"},qn={class:"flex-1 min-w-0"},Zn={class:"text-sm font-medium"},Jn={class:"text-xs"},Wn={key:0,class:"text-xs text-gray-400 ml-1"},Gn={key:0,class:"text-xs text-gray-500 mt-0.5 truncate"},Yn={class:"space-y-1",role:"radiogroup","aria-label":"Alternative locators"},Xn={class:"flex-1 min-w-0"},Qn={class:"text-xs font-medium text-primary"},eo={class:"flex justify-between w-full"},to={key:1},no={class:"flex gap-2"},oo=ue({__name:"SnapshotLocatorPicker",props:Je({runId:{},testRunsCaseId:{},failingLocator:{},healing:{}},{open:{type:Boolean,required:!0},openModifiers:{}}),emits:Je(["close","confirmed"],["update:open"]),setup(e,{emit:r}){const a=e,c=r,n=at(e,"open"),s=G(!1),l=G(null),f=G(null),i=G(void 0);async function h(){s.value=!0,f.value=null;try{const R=new URLSearchParams({inlineStyles:"1"});i.value&&R.set("source",i.value);const b=`?${R.toString()}`;l.value=await $fetch(`/api/test-runs/${a.runId}/cases/${a.testRunsCaseId}/dom-snapshot${b}`),l.value?.source&&(i.value=l.value.source)}catch(R){f.value=R instanceof Error?R.message:"Unknown error"}finally{s.value=!1}}const v=I(()=>l.value?.availableSources??[]);function L(R){R===i.value||s.value||(i.value=R,w.value=!1,y.value="pick-element",Q.value=0,M.value=!1,S.value=null,D.value=[],F.value=null,O.value="",Y.value=0,se.value=-1,h())}Ee(n,R=>{R&&(l.value=null,w.value=!1,y.value="pick-element",Q.value=0,M.value=!1,i.value=void 0,S.value=null,D.value=[],F.value=null,O.value="",Y.value=0,se.value=-1,h())});const y=G("pick-element"),C=G(null),w=G(!1),S=G(null),D=G([]),U=G(void 0);function V(R){return URL.createObjectURL(new Blob([Ln(R,{probedAttrs:hn})],{type:"text/html"}))}Ee(()=>l.value?.html,R=>{U.value&&(URL.revokeObjectURL(U.value),U.value=void 0),R&&(U.value=V(R))},{immediate:!0});const B=G(null),X=G(0),Q=G(0),m=G(1),M=G(!1),x=I(()=>l.value?.viewport??null),K=I(()=>{const R=x.value;return!R?.width||!X.value?1:Math.min(X.value/R.width,1)}),P=I(()=>{const R=x.value;if(!R)return{width:"100%",height:Q.value?`${Q.value}px`:"100%"};const b=Q.value||R.height;return{width:`${Math.round(R.width*m.value)}px`,height:`${Math.round(b*m.value)}px`}}),j=I(()=>{const R=x.value;if(!R)return{width:"100%",height:Q.value?`${Q.value}px`:"100%",border:"0"};const b=Q.value||R.height;return{width:`${R.width}px`,height:`${b}px`,transform:`scale(${m.value})`,transformOrigin:"top left",border:"0"}}),ne=I(()=>Math.round(m.value*100)),me=R=>Math.min(4,Math.max(.1,R));function ge(R){M.value=!0,m.value=me(m.value*R)}function he(){M.value=!1,m.value=K.value}Ee([K,x],()=>{M.value||(m.value=K.value)});let Z=null;Ee(B,R=>{Z?.disconnect(),R&&(X.value=R.clientWidth,Z=new ResizeObserver(b=>{for(const ae of b)X.value=ae.contentRect.width}),Z.observe(R))}),Ae(()=>{Z?.disconnect()}),Ae(()=>{U.value&&URL.revokeObjectURL(U.value)});function ce(R){if(!C.value||R.source!==C.value.contentWindow)return;const b=R.data;if(b?.type==="pickerReady"){w.value=!0,d();return}if(b?.type==="piwiContentHeight"&&typeof b.height=="number"){Q.value=Math.max(b.height,x.value?.height??0);return}if(b?.type==="piwiScrollTo"&&typeof b.y=="number"){const ae=B.value;ae&&ae.scrollTo({top:Math.max(0,b.y*m.value-80),behavior:"smooth"});return}if(b?.type==="piwiSearchResult"){Y.value=typeof b.count=="number"?b.count:0,se.value=typeof b.index=="number"?b.index:-1;return}if(b?.type==="elementPicked"&&b.attrs){const{labelText:ae,...xe}=b.attrs;S.value={...xe,accessibleName:ae??_n(xe)},D.value=kn(S.value),F.value=null,y.value="review"}b?.type==="pickerClosed"&&oe()}function k(R){C.value?.contentWindow?.postMessage(R,"*")}function d(){const R=Tn({failingLocator:a.failingLocator,fromElementMatch:a.healing?.fromElementMatch??null,fromAriaSnapshot:a.healing?.fromAriaSnapshot??null});R.length&&k({type:"piwiHighlight",hints:R})}const O=G(""),Y=G(0),se=G(-1);let re=null;Ee(O,R=>{re&&clearTimeout(re),re=setTimeout(()=>k({type:"piwiSearch",q:R}),180)});function g(){k({type:"piwiSearchNext"})}Ae(()=>{re&&clearTimeout(re)});function z(R){if(!n.value||y.value!=="pick-element"||!w.value||R.key!=="ArrowUp"&&R.key!=="ArrowDown")return;const b=(document.activeElement?.tagName??"").toLowerCase();if(b==="input"||b==="textarea")return;const ae=C.value?.contentWindow;ae&&(R.preventDefault(),ae.postMessage({type:"piwiPickerKey",key:R.key},"*"))}function H(){C.value&&(C.value.src="about:blank")}rt(()=>{window.addEventListener("message",ce),window.addEventListener("keydown",z,!0)}),Ae(()=>{window.removeEventListener("message",ce),window.removeEventListener("keydown",z,!0)});const F=G(null),te=G(!1);function N(R){F.value=R}const W=I(()=>pt(a.failingLocator.method,D.value)),we=We();async function J(){if(F.value){te.value=!0;try{(await $fetch(`/api/test-runs/${a.runId}/cases/${a.testRunsCaseId}/locator-pick`,{method:"POST",body:{failingLocator:a.failingLocator,pickedLocator:F.value,element:S.value}})).status==="ok"?c("confirmed",F.value):we.add({title:"Pick not saved",description:"This failure has no call-site or locator signature to attach the pick to.",color:"warning",icon:"i-lucide-alert-triangle"}),n.value=!1}catch(R){we.add({title:"Could not save the pick",description:lt(R),color:"error",icon:"i-lucide-alert-triangle"})}finally{te.value=!1}}}function oe(){H(),n.value=!1}function ie(){S.value=null,D.value=[],F.value=null,y.value="pick-element",w.value=!1,O.value="",Y.value=0,se.value=-1;const R=l.value?.html;R&&(U.value&&URL.revokeObjectURL(U.value),U.value=V(R))}const{copy:de}=He(),le=G(null);let ye=null;function Te(R,b){de(R,{toast:"Locator copied"}),le.value=b,ye&&clearTimeout(ye),ye=setTimeout(()=>{le.value=null},2e3)}return Ae(()=>{ye&&clearTimeout(ye)}),(R,b)=>{const ae=$e,xe=Ie,Be=_t,Ke=Pe,gt=Xe,ht=Mt;return o(),q(ht,{open:n.value,"onUpdate:open":b[8]||(b[8]=be=>n.value=be),ui:{content:"max-w-6xl w-[95vw]"},onAfterLeave:oe},{header:A(()=>[...b[9]||(b[9]=[p("div",null,[p("h3",{class:"text-lg font-medium"},"Pick a locator from the DOM snapshot"),p("p",{class:"text-sm text-gray-500 mt-0.5"}," Click the element the failing locator should target. Use ↑↓ to walk the DOM tree. ")],-1)])]),body:A(()=>[t(s)?(o(),u("div",Rn,[_(ae,{name:"i-lucide-loader",class:"size-6 animate-spin text-gray-400"}),b[10]||(b[10]=p("span",{class:"ml-2 text-sm text-gray-500"},"Loading DOM snapshot...",-1))])):t(f)?(o(),u("div",In,[_(ae,{name:"i-lucide-alert-triangle",class:"size-8 text-red-300 mx-auto mb-2"}),b[12]||(b[12]=p("p",{class:"text-sm text-red-500"},"Failed to load snapshot",-1)),p("p",zn,$(t(f)),1),_(xe,{size:"xs",variant:"outline",color:"neutral",class:"mt-3",onClick:h},{default:A(()=>[...b[11]||(b[11]=[E("Retry",-1)])]),_:1})])):t(l)?.status!=="ok"||!t(l).html?(o(),u("div",Pn,[_(ae,{name:"i-lucide-file-x",class:"size-8 text-gray-300 mx-auto mb-2"}),b[13]||(b[13]=p("p",{class:"text-sm text-gray-500"},"No DOM snapshot or ARIA data available for this execution",-1)),b[14]||(b[14]=p("p",{class:"text-xs text-gray-400 mt-1"},"This test run has no stored trace or ARIA snapshot to pick from.",-1))])):(o(),u(ee,{key:3},[p("div",Bn,[t(l).source?(o(),u("div",{key:0,class:pe(["text-xs flex items-center gap-1",t(l).source==="aria"?"text-amber-600 dark:text-amber-400":"text-green-600 dark:text-green-400"])},[_(ae,{name:t(l).source==="aria"?"i-lucide-accessibility":"i-lucide-check",class:"size-3.5 shrink-0"},null,8,["name"]),t(l).source==="aria"?(o(),u(ee,{key:0},[E(" Accessibility tree from the failure-time ARIA snapshot — element styles are approximate ")],64)):(o(),u(ee,{key:1},[E(" Rendered from the failure-time DOM snapshot ")],64))],2)):T("",!0),t(v).length>1?(o(),u("div",En,[p("button",{type:"button",class:pe(["px-2 py-1 flex items-center gap-1 transition-colors",t(i)==="dom"?"bg-primary/10 text-primary font-medium":"text-gray-500 hover:bg-elevated"]),title:"Rendered page from the trace",onClick:b[0]||(b[0]=be=>L("dom"))},[_(ae,{name:"i-lucide-layout-panel-top",class:"size-3.5"}),b[15]||(b[15]=E(" DOM ",-1))],2),p("button",{type:"button",class:pe(["px-2 py-1 flex items-center gap-1 border-l border-default transition-colors",t(i)==="aria"?"bg-primary/10 text-primary font-medium":"text-gray-500 hover:bg-elevated"]),title:"Accessibility tree from the ARIA snapshot",onClick:b[1]||(b[1]=be=>L("aria"))},[_(ae,{name:"i-lucide-accessibility",class:"size-3.5"}),b[16]||(b[16]=E(" Tree ",-1))],2)])):T("",!0)]),t(x)?(o(),u("div",On,[_(xe,{size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-zoom-out",title:"Zoom out",onClick:b[2]||(b[2]=be=>ge(1/1.25))}),p("span",Mn,$(t(ne))+"%",1),_(xe,{size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-zoom-in",title:"Zoom in",onClick:b[3]||(b[3]=be=>ge(1.25))}),_(xe,{size:"xs",variant:"outline",color:"neutral",class:"ml-1",onClick:he},{default:A(()=>[...b[17]||(b[17]=[E("Fit",-1)])]),_:1}),p("span",Nn,$(t(x).width)+"×"+$(t(x).height),1)])):T("",!0),t(y)==="pick-element"?(o(),u("div",Un,[_(Be,{modelValue:t(O),"onUpdate:modelValue":b[4]||(b[4]=be=>Le(O)?O.value=be:null),size:"xs",icon:"i-lucide-search",placeholder:"Find an element by its text…",class:"max-w-xs",onKeydown:ke(_e(g,["prevent"]),["enter"])},null,8,["modelValue","onKeydown"]),t(O)&&t(Y)>0?(o(),u("span",jn,$(t(se)+1)+"/"+$(t(Y)),1)):t(O)?(o(),u("span",Dn,"no matches")):T("",!0),t(Y)>1?(o(),q(xe,{key:2,size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-chevron-down",title:"Next match (Enter)",onClick:g})):T("",!0)])):T("",!0),p("div",{ref_key:"stageRef",ref:B,class:pe(["relative border border-default rounded-lg overflow-auto",[t(y)==="pick-element"?"h-[75vh]":"h-80",t(x)?"bg-gray-100 dark:bg-gray-800":""]])},[t(w)?T("",!0):(o(),u("div",Kn,[_(ae,{name:"i-lucide-loader",class:"size-5 animate-spin text-gray-400"}),b[18]||(b[18]=p("span",{class:"ml-2 text-sm text-gray-500"},"Initializing picker...",-1))])),p("div",{style:et(t(P))},[p("iframe",{ref_key:"iframeRef",ref:C,src:t(U),style:et(t(j)),class:"bg-white",sandbox:"allow-scripts",title:"DOM snapshot"},null,12,Vn)],4)],2),t(y)==="review"&&t(S)?(o(),u("div",Hn,[p("div",Fn,[_(ae,{name:"i-lucide-crosshair",class:"size-5 text-primary shrink-0"}),p("div",qn,[p("p",Zn,[b[19]||(b[19]=E(" Picked: ",-1)),p("code",Jn,$(t(S).tagName),1),t(S).attributes.id?(o(),u("code",Wn,"#"+$(t(S).attributes.id),1)):T("",!0),t(S).attributes["data-testid"]?(o(),q(Ke,{key:1,size:"xs",color:"primary",variant:"subtle",class:"ml-1"},{default:A(()=>[E($(t(S).attributes["data-testid"]),1)]),_:1})):T("",!0)]),t(S).textContent?(o(),u("p",Gn,' "'+$(t(S).textContent)+'" ',1)):T("",!0)]),_(xe,{size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-rotate-ccw",title:"Pick a different element",onClick:ie})]),p("div",Yn,[(o(!0),u(ee,null,fe(t(D),(be,Fe)=>(o(),q(dt,{key:Fe,alt:be,copied:t(le)===`picked-${Fe}`,dense:!0,selectable:!0,selected:t(F)?.locator===be.locator,onCopy:yt=>Te(be.locator,`picked-${Fe}`),onSelect:yt=>N(be)},null,8,["alt","copied","selected","onCopy","onSelect"]))),128))]),t(W).recommended?(o(),u("div",{key:0,class:"rounded-lg border border-primary/40 bg-primary/5 p-3 flex items-center gap-3 cursor-pointer",role:"button",tabindex:"0",title:"Select this locator for Confirm",onClick:b[6]||(b[6]=be=>N(t(W).recommended)),onKeydown:b[7]||(b[7]=ke(_e(be=>N(t(W).recommended),["prevent"]),["enter"]))},[_(ae,{name:"i-lucide-star",class:"size-5 text-primary shrink-0"}),p("div",Xn,[p("p",Qn," Recommended (score: "+$(t(W).recommended.score)+") ",1),_(gt,{locator:t(W).recommended.locator,truncate:"",class:"text-sm mt-0.5"},null,8,["locator"])]),_(xe,{size:"sm",color:"primary",variant:"solid","trailing-icon":t(le)==="rec"?"i-lucide-check":"i-lucide-copy",onClick:b[5]||(b[5]=_e(be=>Te(t(W).recommended.locator,"rec"),["stop"]))},{default:A(()=>[...b[20]||(b[20]=[E(" Copy ",-1)])]),_:1},8,["trailing-icon"])],32)):T("",!0)])):T("",!0)],64))]),footer:A(()=>[p("div",eo,[t(y)==="review"?(o(),q(xe,{key:0,size:"sm",variant:"outline",color:"neutral",icon:"i-lucide-rotate-ccw",onClick:ie},{default:A(()=>[...b[21]||(b[21]=[E(" Pick a different element ",-1)])]),_:1})):(o(),u("div",to)),p("div",no,[_(xe,{size:"sm",variant:"outline",color:"neutral",onClick:oe},{default:A(()=>[...b[22]||(b[22]=[E("Cancel",-1)])]),_:1}),t(y)==="review"?(o(),q(xe,{key:0,size:"sm",color:"primary",loading:t(te),disabled:!t(F),onClick:J},{default:A(()=>[...b[23]||(b[23]=[E(" Confirm pick ",-1)])]),_:1},8,["loading","disabled"])):T("",!0)])])]),_:1},8,["open"])}}}),so=Object.assign(oo,{__name:"SnapshotLocatorPicker"});function ao(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ro(e,r){let a=0,c=null;for(let n=r;n<e.length;n++){const s=e[n];if(c){if(s==="\\"){n++;continue}s===c&&(c=null);continue}if(s==="'"||s==='"'||s==="`"){c=s;continue}if(s==="(")a++;else if(s===")"&&(a--,a===0))return n}return-1}function io(e,r,a){if(!e||!r||!a)return null;const c=new RegExp(`${ao(r)}\\s*\\(`,"g");let n;for(;(n=c.exec(e))!==null;){const s=n.index,l=s>0?e[s-1]:"";if(l&&/[A-Za-z0-9_$]/.test(l))continue;const f=s+n[0].lastIndexOf("("),i=ro(e,f);if(i===-1)return null;const h=e.slice(0,s)+a+e.slice(i+1);return h===e?null:{old:e,new:h}}return null}function lo(e,r){return`${r?`@@ ${r} @@
|
|
2
|
+
`:""}-${e.old.trimEnd()}
|
|
3
|
+
+${e.new.trimEnd()}`}function co(e,r){const a=e??{},c=r??{},n=l=>l==null?null:typeof l=="string"?l:JSON.stringify(l),s=[];for(const l of new Set([...Object.keys(a),...Object.keys(c)])){const f=n(a[l]),i=n(c[l]);f!==i&&s.push({key:l,from:f,to:i})}return s}function uo(e){const a=[`In ${e.location??(e.sourceLine?`line ${e.sourceLine.line}`:"the failing test")}, the Playwright locator \`${e.failing}\` no longer matches its element.`,`Replace it with \`${e.recommended}\`.`];return e.sourceLine&&a.push("","Current line:",e.sourceLine.text.trim()),a.join(`
|
|
4
|
+
`)}const po={key:1},fo={class:"flex items-center gap-1"},mo={key:1,class:"rounded-lg border border-primary/50 bg-primary/10 p-3 mb-3 flex items-center gap-3"},go={class:"flex-1 min-w-0"},ho={class:"text-xs font-medium text-primary flex items-center gap-1.5"},yo={key:2,class:"flex items-center gap-2 bg-elevated rounded p-2 mb-3 border border-red-200 dark:border-red-800"},vo={class:"text-xs font-mono text-red-600 dark:text-red-400 flex-1 truncate"},xo={key:4,class:"rounded-lg border border-primary/40 bg-primary/5 p-3 mb-3 space-y-2"},bo={class:"flex items-center gap-2 min-w-0"},ko={key:0,class:"text-[11px] text-gray-500 truncate min-w-0"},_o={key:0,class:"rounded border border-default overflow-hidden bg-default"},$o={key:0,class:"text-xs flex flex-wrap items-center gap-x-1.5 gap-y-0.5"},wo={class:"font-mono text-gray-500"},Co={key:0,class:"font-mono text-red-500 line-through"},To={key:1,class:"text-gray-400"},So={key:2,class:"font-mono text-green-600 dark:text-green-400"},Ao={key:3,class:"text-gray-400"},Lo={key:2,class:"text-xs text-gray-500"},Ro={key:3,class:"text-xs text-primary/90 flex items-center gap-1"},Io={class:"flex items-center gap-2"},zo={key:5,class:"rounded-lg border border-default bg-elevated p-3 mb-3 flex items-center gap-3"},Po={class:"flex-1 min-w-0"},Bo={class:"text-xs font-medium text-success-600 dark:text-success-400"},Eo={class:"space-y-2"},Oo={key:6,class:"mt-3"},Mo={class:"space-y-2"},No={class:"flex items-center gap-1"},st=3,Uo=ue({__name:"LocatorHealingPanel",props:{runId:{},testRunsCaseId:{},storageKey:{},affectedCount:{}},setup(e){const r=e,a=I(()=>r.storageKey?De:je),c=I(()=>r.storageKey?{storageKey:r.storageKey}:{}),{data:n,pending:s,error:l}=Ue(()=>`/api/test-runs/${r.runId}/cases/${r.testRunsCaseId}/locator-healing`,{lazy:!0},"$z1C7vU2CXe"),f=I(()=>!!n.value&&n.value.source!=="none"&&!!(n.value.fromElementMatch?.length||n.value.fromPriorSuccess?.length||n.value.fromAriaSnapshot?.length)),i=I(()=>n.value?n.value.fromElementMatch??n.value.fromPriorSuccess??n.value.fromAriaSnapshot??[]:[]),h=I(()=>i.value.find(k=>k.pickedByUser)??null),v=I(()=>n.value?.recommendation?n.value.recommendation:n.value?.priorNameMayBeStale||!i.value.length?null:pt(n.value?.failingLocator?.method,i.value)),L=I(()=>n.value?.priorNameMayBeStale&&n.value.fromPriorSuccess?.length?n.value.fromAriaSnapshot??[]:[]),y=I(()=>{const k=v.value;return k?.recommended?k.recommended.pickedByUser?"Confirmed with the locator picker on the failing page":k.preservesConvention?"Keeps your original locator style — minimal, idiomatic edit":k.suggestAddTestId?"Most stable available, but still fragile":"Most stable available — a sturdier style than the original":""}),C=I(()=>{const k=n.value?.priorNameMayBeStale,d=(()=>{switch(n.value?.source){case"prior-run":return k?"Pre-captured from the last passing run — the element looks changed since":"Pre-captured from the last passing run — highest confidence";case"element-match":return"The element looks renamed or moved — these are fresh locators for its current identity on the failing page";case"fingerprint":return"Matched by locator signature (line numbers shifted)";case"cross-test":return"Captured by another test in this project that uses the same locator";case"aria-snapshot":return"Generated from the failure-time ARIA snapshot — limited, no HTML attributes";default:return""}})(),O=n.value?.capturedAt;return O?`${d} · captured ${Ge(O)}`:d}),w=I(()=>{if(n.value?.priorNameMayBeStale)return"text-warning-600 dark:text-warning-400";switch(n.value?.source){case"prior-run":case"fingerprint":case"cross-test":return"text-success-600 dark:text-success-400";case"element-match":return"text-primary-600 dark:text-primary-400";default:return"text-warning-600 dark:text-warning-400"}}),S=I(()=>{const k=n.value?.failingLocator;return k?`${k.method}(${JSON.stringify(k.args)})`:""}),D=ze(),{data:U}=Ue(()=>`/api/test-run-cases/${r.testRunsCaseId}/traces`,{lazy:!0},"$vsBboELop9"),V=I(()=>{const k=U.value?.[0];if(!k)return null;const d=!!D.public.demoMode&&k.filePath.startsWith("demo/");return ct(k.filePath,D.app?.baseURL,d)}),B=G(!1);async function X(){await wt(`/api/test-runs/${r.runId}/cases/${r.testRunsCaseId}/locator-healing`)}const{copy:Q}=He(),m=G(null);let M=null;function x(k,d,O){Q(k,{toast:O}),m.value=d,M&&clearTimeout(M),M=setTimeout(()=>{m.value=null},2e3)}function K(k,d){x(k,d,"Locator copied")}Ae(()=>{M&&clearTimeout(M)});const P=I(()=>v.value?.recommended??null),j=I(()=>r.affectedCount&&r.affectedCount>1&&P.value?`Same break affects ${r.affectedCount} tests in this cluster — one fix`:""),ne=I(()=>{if(P.value?.pickedByUser)return"your confirmed pick";switch(n.value?.source){case"prior-run":return"from the last passing run";case"fingerprint":return"from a prior run (line shifted)";case"cross-test":return"from another test in this project";case"element-match":return"from the current failing page";case"aria-snapshot":return"from the ARIA snapshot";default:return""}}),me=I(()=>{const k=n.value?.sourceLine,d=P.value;if(!k||!d)return null;const O=io(k.text,n.value?.failingLocator?.method,d.locator);return O?{edit:O,patch:lo(O,n.value?.location??null)}:null}),ge=I(()=>{if(me.value)return[];const k=n.value?.failingLocator,d=P.value;return!k||!d||d.method!==k.method?[]:co(k.args,d.args)});function he(){const k=P.value;!k||!n.value||x(uo({location:n.value.location??null,sourceLine:n.value.sourceLine??null,failing:S.value,recommended:k.locator}),"fix-prompt","Fix prompt copied")}const Z=G(!1),ce=I(()=>Z.value?i.value:i.value.slice(0,st));return(k,d)=>{const O=Xe,Y=Ie,se=$t,re=Ye,g=$e,z=Pe,H=cn,F=dt,te=It;return o(),u(ee,null,[!t(s)&&!t(l)&&t(f)?(o(),q(Se(t(a)),Ne({key:0},t(c),{icon:"i-lucide-bandage",title:"Alternative locators",count:t(i).length,help:"locator-healing"}),Re({subtitle:A(()=>[p("span",{class:pe(t(w))},$(t(C)),3)]),default:A(()=>[t(n)?.healedInRunId?(o(),q(re,{key:0,class:"mb-3",color:"success",icon:"i-lucide-circle-check",variant:"subtle",title:"Locator healed"},{description:A(()=>[d[11]||(d[11]=E(" The recommended locator now passes at this call site — ",-1)),_(se,{to:`/test-runs/${t(n).healedInRunId}`,class:"underline font-medium"},{default:A(()=>[E(" see run #"+$(t(n).healedInRunId),1)]),_:1},8,["to"]),d[12]||(d[12]=E(". ",-1))]),_:1})):T("",!0),t(h)?(o(),u("div",mo,[_(g,{name:"i-lucide-user-check",class:"size-5 text-primary shrink-0"}),p("div",go,[p("p",ho,[d[14]||(d[14]=E(" Your pick ",-1)),_(z,{size:"sm",color:"primary",variant:"subtle"},{default:A(()=>[...d[13]||(d[13]=[E("confirmed on the failing page",-1)])]),_:1})]),_(O,{locator:t(h).locator,truncate:"",class:"text-sm mt-0.5"},null,8,["locator"])]),_(Y,{size:"sm",color:"primary",variant:"solid","trailing-icon":t(m)==="user-pick"?"i-lucide-check":"i-lucide-copy",onClick:d[1]||(d[1]=N=>K(t(h).locator,"user-pick"))},{default:A(()=>[...d[15]||(d[15]=[E(" Copy ",-1)])]),_:1},8,["trailing-icon"])])):T("",!0),t(n)?.failingLocator?(o(),u("div",yo,[_(g,{name:"i-lucide-x-circle",class:"size-4 text-red-500 shrink-0"}),p("code",vo,$(t(S)),1),_(Y,{size:"xs",variant:"ghost",color:"neutral",icon:t(m)==="failing"?"i-lucide-check":"i-lucide-copy",title:t(m)==="failing"?"Copied!":"Copy",onClick:d[2]||(d[2]=N=>K(t(S),"failing"))},null,8,["icon","title"])])):T("",!0),t(n)?.priorNameMayBeStale?(o(),q(re,{key:3,class:"mb-3",color:"warning",icon:"i-lucide-alert-triangle",variant:"subtle",title:"The element's name looks changed",description:"The captured accessible name no longer appears on the failing page, so name-based alternatives (and the failing locator itself) probably no longer match. Prefer the structural options, or the failing-page candidates below."})):T("",!0),t(P)?(o(),u("div",xo,[p("div",bo,[_(g,{name:"i-lucide-star",class:"size-4 text-primary shrink-0"}),d[16]||(d[16]=p("p",{class:"text-xs font-medium text-primary shrink-0"},"Recommended fix",-1)),t(ne)?(o(),u("span",ko," · "+$(t(ne)),1)):T("",!0),d[17]||(d[17]=p("span",{class:"flex-1"},null,-1)),_(z,{size:"xs",color:"primary",variant:"subtle",class:"font-mono tabular-nums shrink-0"},{default:A(()=>[E($(t(P).score),1)]),_:1})]),t(me)?(o(),u("div",_o,[_(H,{patch:t(me).patch},null,8,["patch"])])):(o(),u(ee,{key:1},[_(O,{locator:t(P).locator,truncate:"",class:"text-sm"},null,8,["locator"]),t(ge).length?(o(),u("p",$o,[(o(!0),u(ee,null,fe(t(ge),(N,W)=>(o(),u(ee,{key:W},[p("span",wo,$(N.key)+":",1),N.from?(o(),u("span",Co,$(N.from),1)):(o(),u("span",To,"—")),_(g,{name:"i-lucide-arrow-right",class:"size-3 text-gray-400"}),N.to?(o(),u("span",So,$(N.to),1)):(o(),u("span",Ao,"removed"))],64))),128))])):T("",!0)],64)),t(y)?(o(),u("p",Lo,$(t(y)),1)):T("",!0),t(j)?(o(),u("p",Ro,[_(g,{name:"i-lucide-layers",class:"size-3 shrink-0"}),E($(t(j)),1)])):T("",!0),p("div",Io,[_(Y,{size:"xs",color:"primary",variant:"solid","trailing-icon":t(m)==="top"?"i-lucide-check":"i-lucide-copy",onClick:d[3]||(d[3]=N=>K(t(P).locator,"top"))},{default:A(()=>[...d[18]||(d[18]=[E(" Copy locator ",-1)])]),_:1},8,["trailing-icon"]),_(Y,{size:"xs",color:"neutral",variant:"outline",icon:t(m)==="fix-prompt"?"i-lucide-check":"i-lucide-sparkles",title:"Copy an instruction an AI coding agent can apply directly to the test",onClick:he},{default:A(()=>[...d[19]||(d[19]=[E(" Copy fix prompt ",-1)])]),_:1},8,["icon"])])])):T("",!0),t(v)?.hasDurableAlternative&&t(v).durable?(o(),u("div",zo,[_(g,{name:"i-lucide-shield-check",class:"size-5 text-success shrink-0"}),p("div",Po,[p("p",Bo," Most stable option (score: "+$(t(v).durable.score)+") ",1),_(O,{locator:t(v).durable.locator,truncate:"",class:"text-sm mt-0.5"},null,8,["locator"]),d[20]||(d[20]=p("p",{class:"text-xs text-gray-500 mt-0.5"},"Sturdier, but changes the locator style",-1))]),_(Y,{size:"sm",color:"neutral",variant:"outline","trailing-icon":t(m)==="durable"?"i-lucide-check":"i-lucide-copy",onClick:d[4]||(d[4]=N=>K(t(v).durable.locator,"durable"))},{default:A(()=>[...d[21]||(d[21]=[E(" Copy ",-1)])]),_:1},8,["trailing-icon"])])):T("",!0),p("div",Eo,[d[22]||(d[22]=p("p",{class:"text-xs font-medium text-gray-500"},"All alternatives",-1)),(o(!0),u(ee,null,fe(t(ce),(N,W)=>(o(),q(F,{key:W,alt:N,copied:t(m)===`alt-${W}`,onCopy:we=>K(N.locator,`alt-${W}`)},null,8,["alt","copied","onCopy"]))),128)),t(i).length>st?(o(),q(Y,{key:0,size:"xs",variant:"ghost",color:"neutral",block:"",icon:t(Z)?"i-lucide-chevron-up":"i-lucide-chevron-down",onClick:d[5]||(d[5]=N=>Z.value=!t(Z))},{default:A(()=>[E($(t(Z)?"Show fewer":`Show all ${t(i).length} alternatives`),1)]),_:1},8,["icon"])):T("",!0)]),t(L).length?(o(),u("div",Oo,[d[23]||(d[23]=p("p",{class:"text-xs font-medium text-gray-500 mb-2"},"From the failing page",-1)),p("div",Mo,[(o(!0),u(ee,null,fe(t(L),(N,W)=>(o(),q(F,{key:W,alt:N,note:"candidate from the failure-time ARIA snapshot",copied:t(m)===`supp-${W}`,onCopy:we=>K(N.locator,`supp-${W}`)},null,8,["alt","copied","onCopy"]))),128))])])):T("",!0),t(v)?.suggestAddTestId?(o(),q(re,{key:7,class:"mt-3",color:"warning",icon:"i-lucide-info",variant:"subtle",title:"All alternatives are fragile",description:"Every captured locator scores below 50. Add a stable data-testid attribute to this element in the app for a durable fix."})):T("",!0),t(n)?.source==="aria-snapshot"?(o(),q(re,{key:8,class:"mt-3",color:"info",icon:"i-lucide-info",variant:"subtle"},{description:A(()=>[d[25]||(d[25]=E(" No HTML attributes were available. ",-1)),_(te,{to:"capture-fixtures","no-icon":"",class:"text-primary hover:underline"},{default:A(()=>[...d[24]||(d[24]=[E("Enable Piwi fixture capture",-1)])]),_:1}),d[26]||(d[26]=E(" for full alternatives including data-testid and CSS selectors. ",-1))]),_:1})):T("",!0)]),_:2},[e.storageKey?{name:"folded",fn:A(()=>[t(v)?.recommended?(o(),q(O,{key:0,locator:t(v).recommended.locator,class:"text-xs"},null,8,["locator"])):(o(),u("span",po,$(t(i).length)+" alternative"+$(t(i).length===1?"":"s"),1))]),key:"0"}:void 0,t(V)||t(n)?.failingLocator?{name:"actions",fn:A(()=>[p("div",fo,[t(n)?.failingLocator?(o(),q(Y,{key:0,size:"xs",color:"neutral",variant:"outline",icon:"i-lucide-mouse-pointer",title:"Open the failure-time DOM snapshot and click the element to pick a locator",onClick:d[0]||(d[0]=N=>B.value=!0)},{default:A(()=>[...d[9]||(d[9]=[E(" Pick from snapshot ",-1)])]),_:1})):T("",!0),t(V)?(o(),q(Y,{key:1,to:t(V),target:"_blank",size:"xs",color:"neutral",variant:"outline",icon:"i-lucide-crosshair",title:"Open the failure trace in the trace viewer — its Pick locator tool works on the recorded page snapshots"},{default:A(()=>[...d[10]||(d[10]=[E(" Pick from trace ",-1)])]),_:1},8,["to"])):T("",!0)])]),key:"1"}:void 0]),1040,["count"])):!t(s)&&!t(l)&&!t(f)?(o(),q(Se(t(a)),Ne({key:1},t(c),{icon:"i-lucide-bandage",title:"Alternative locators",subtitle:"No alternatives available",help:"locator-healing"}),Re({default:A(()=>[_(re,{color:"neutral",icon:"i-lucide-info",variant:"subtle"},{description:A(()=>[d[31]||(d[31]=E(" No pre-captured alternatives — this locator has never passed in a previous run. ",-1)),_(te,{to:"capture-fixtures","no-icon":"",class:"text-primary hover:underline"},{default:A(()=>[...d[30]||(d[30]=[E("Enable Piwi dashboard fixtures",-1)])]),_:1}),d[32]||(d[32]=E(" to capture element attributes at test time, or use “Pick from snapshot” above to choose a locator by hand on the failure-time page. ",-1))]),_:1})]),_:2},[e.storageKey?{name:"folded",fn:A(()=>[d[27]||(d[27]=p("span",null,"No alternatives available",-1))]),key:"0"}:void 0,t(V)||t(n)?.failingLocator?{name:"actions",fn:A(()=>[p("div",No,[t(n)?.failingLocator?(o(),q(Y,{key:0,size:"xs",color:"neutral",variant:"outline",icon:"i-lucide-mouse-pointer",title:"Open the failure-time DOM snapshot and click the element to pick a locator",onClick:d[6]||(d[6]=N=>B.value=!0)},{default:A(()=>[...d[28]||(d[28]=[E(" Pick from snapshot ",-1)])]),_:1})):T("",!0),t(V)?(o(),q(Y,{key:1,to:t(V),target:"_blank",size:"xs",color:"neutral",variant:"outline",icon:"i-lucide-crosshair",title:"Open the failure trace in the trace viewer — its Pick locator tool works on the recorded page snapshots"},{default:A(()=>[...d[29]||(d[29]=[E(" Pick from trace ",-1)])]),_:1},8,["to"])):T("",!0)])]),key:"1"}:void 0]),1040)):T("",!0),t(n)?.failingLocator?(o(),q(so,{key:2,open:t(B),"onUpdate:open":d[7]||(d[7]=N=>Le(B)?B.value=N:null),"run-id":e.runId,"test-runs-case-id":e.testRunsCaseId,"failing-locator":t(n).failingLocator,healing:t(n),onConfirmed:X,onClose:d[8]||(d[8]=N=>B.value=!1)},null,8,["open","run-id","test-runs-case-id","failing-locator","healing"])):T("",!0)],64)}}}),Ma=Object.assign(Uo,{__name:"LocatorHealingPanel"}),jo={key:1,class:"space-y-2"},Do={class:"text-xs font-medium text-gray-500 dark:text-gray-400 sm:w-40 shrink-0"},Ko={class:"flex flex-wrap items-center gap-1.5 min-w-0 text-xs font-mono"},Vo={class:"rounded bg-red-50 px-1.5 py-0.5 text-red-700 dark:bg-red-950/30 dark:text-red-400 break-all"},Ho={class:"rounded bg-green-50 px-1.5 py-0.5 text-green-700 dark:bg-green-950/30 dark:text-green-400 break-all"},Fo={key:0,class:"text-xs text-gray-400 dark:text-gray-500"},qo={key:0},Zo=ue({__name:"EnvironmentDiffCard",props:{runId:{},testRunsCaseId:{},storageKey:{}},setup(e,{expose:r}){const a=e,c=I(()=>a.storageKey?De:je),n=I(()=>a.storageKey?{storageKey:a.storageKey}:{}),{data:s,pending:l,error:f}=Ue(()=>`/api/test-runs/${a.runId}/cases/${a.testRunsCaseId}/environment-diff`,{lazy:!0},"$yASgALxNz3"),i=I(()=>s.value?.entries??[]),h=I(()=>i.value.filter(w=>!w.informational)),v=I(()=>i.value.filter(w=>w.informational)),L=I(()=>{const w=s.value?.baseline;if(!w)return"";const S=w.startTime?` · ${Ge(new Date(w.startTime))}`:"";return`vs last pass in run #${w.runId}${S}`}),y=I(()=>{if(s.value?.status!=="ok")return"No passing baseline to compare against";const w=h.value.length;return w===0?"Identical to last pass — no environment drift":`${w} change${w===1?"":"s"}: ${h.value.map(S=>S.label).join(", ")}`}),C=G(null);return r({reveal:()=>C.value?.reveal?.()}),(w,S)=>{const D=Ye,U=$e;return!t(l)&&!t(f)&&t(s)?.status==="ok"?(o(),q(Se(t(c)),Ne({key:0,ref_key:"card",ref:C},t(n),{icon:"i-lucide-git-compare-arrows",title:"Environment diff",count:t(h).length||void 0,help:"environment-diff",subtitle:t(L)}),Re({default:A(()=>[t(i).length===0?(o(),q(D,{key:0,color:"success",icon:"i-lucide-check-circle",variant:"subtle",description:"The environment is identical to the last passing run — environment drift is unlikely to explain this failure."})):(o(),u("div",jo,[(o(!0),u(ee,null,fe(t(h),V=>(o(),u("div",{key:V.key,class:"rounded-lg border border-default p-3 flex flex-col gap-1 sm:flex-row sm:items-center sm:gap-3"},[p("span",Do,$(V.label),1),p("div",Ko,[p("code",Vo,$(V.failing??"(unset)"),1),_(U,{name:"i-lucide-arrow-left",class:"size-3 shrink-0 text-gray-400"}),p("code",Ho,$(V.baseline??"(unset)"),1)])]))),128)),t(v).length>0?(o(),u("p",Fo,[S[0]||(S[0]=E(" Also changed (varies naturally between runs): ",-1)),(o(!0),u(ee,null,fe(t(v),(V,B)=>(o(),u("span",{key:V.key},[E($(V.label.toLowerCase())+" "+$(V.baseline??"—")+" → "+$(V.failing??"—"),1),B<t(v).length-1?(o(),u("span",qo,", ")):T("",!0)]))),128))])):T("",!0)]))]),_:2},[e.storageKey?{name:"folded",fn:A(()=>[p("span",null,$(t(y)),1)]),key:"0"}:void 0]),1040,["count","subtitle"])):T("",!0)}}}),Na=Object.assign(Zo,{__name:"EnvironmentDiffCard"}),Jo={class:"absolute top-4 left-4 text-white/70 text-sm font-medium"},Wo=["src","alt"],Go=ue({__name:"ScreenshotLightbox",props:{images:{},modelValue:{}},emits:["update:modelValue"],setup(e,{emit:r}){const a=e,c=r,n=I(()=>a.modelValue!==null);function s(){c("update:modelValue",null)}function l(){a.modelValue!==null&&a.modelValue>0&&c("update:modelValue",a.modelValue-1)}function f(){a.modelValue!==null&&a.modelValue<a.images.length-1&&c("update:modelValue",a.modelValue+1)}const i=I(()=>a.modelValue===null?null:a.images[a.modelValue]??null);function h(v){n.value&&(v.key==="Escape"&&s(),v.key==="ArrowLeft"&&l(),v.key==="ArrowRight"&&f())}return rt(()=>window.addEventListener("keydown",h)),Ct(()=>window.removeEventListener("keydown",h)),(v,L)=>{const y=$e;return o(),q(Tt,{to:"body"},[_(St,{name:"lightbox"},{default:A(()=>[n.value?(o(),u("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/90",onClick:_e(s,["self"])},[p("button",{class:"absolute top-4 right-4 size-10 flex items-center justify-center rounded-full bg-white/10 text-white hover:bg-white/20 transition-colors",onClick:s},[_(y,{name:"i-lucide-x",class:"size-6"})]),p("div",Jo,$((e.modelValue??0)+1)+" / "+$(e.images.length),1),e.images.length>1&&(e.modelValue??0)>0?(o(),u("button",{key:0,class:"absolute left-4 size-10 flex items-center justify-center rounded-full bg-white/10 text-white hover:bg-white/20 transition-colors",onClick:l},[_(y,{name:"i-lucide-chevron-left",class:"size-6"})])):T("",!0),i.value?(o(),u("img",{key:1,src:i.value.src,alt:i.value.name,class:"max-h-[90vh] max-w-[90vw] object-contain rounded-lg",onClick:L[0]||(L[0]=_e(()=>{},["stop"]))},null,8,Wo)):T("",!0),e.images.length>1&&(e.modelValue??0)<e.images.length-1?(o(),u("button",{key:2,class:"absolute right-4 size-10 flex items-center justify-center rounded-full bg-white/10 text-white hover:bg-white/20 transition-colors",onClick:f},[_(y,{name:"i-lucide-chevron-right",class:"size-6"})])):T("",!0)])):T("",!0)]),_:1})])}}}),mt=Object.assign(At(Go,[["__scopeId","data-v-c02b1e9b"]]),{__name:"ScreenshotLightbox"}),Yo={class:"flex justify-end mb-2"},Xo={key:1,class:"rounded overflow-hidden border border-default bg-gray-50 dark:bg-gray-900"},Qo=["src"],es={key:2,class:"grid grid-cols-1 sm:grid-cols-2 gap-2"},ts={class:"rounded overflow-hidden border border-red-200 dark:border-red-900 bg-gray-50 dark:bg-gray-900"},ns=["src"],os={class:"rounded overflow-hidden border border-green-200 dark:border-green-900 bg-gray-50 dark:bg-gray-900"},ss={class:"px-2 py-1 text-[10px] font-medium text-green-600 dark:text-green-400"},as=["src"],rs=ue({__name:"VisualDiffCard",props:{runId:{},testRunsCaseId:{},storageKey:{}},setup(e,{expose:r}){const a=e,c=I(()=>a.storageKey?De:je),n=I(()=>a.storageKey?{storageKey:a.storageKey}:{}),s=ze(),{data:l,pending:f,error:i}=Ue(()=>`/api/test-runs/${a.runId}/cases/${a.testRunsCaseId}/visual-diff`,{lazy:!0},"$nTbSHl3faK"),h=I(()=>l.value?.status==="ok"?l.value.diff??null:null),v=G("overlay"),L=[{label:"Overlay",value:"overlay"},{label:"Side by side",value:"side-by-side"}],y=I(()=>h.value?Me(h.value.path,"image/png",s.app?.baseURL):""),C=I(()=>h.value?Me(h.value.failingPath,null,s.app?.baseURL):""),w=I(()=>h.value?Me(h.value.baselinePath,null,s.app?.baseURL):""),S=I(()=>h.value?(h.value.changedPixelRatio*100).toFixed(2):"0"),D=I(()=>{const Q=h.value?.changedPixelRatio??0;return Q>.1?"error":Q>.01?"warning":"success"}),U=I(()=>h.value?h.value.dimensionMismatch?`${S.value}% changed — dimensions differ, unreliable`:`${S.value}% of pixels changed vs last pass`:"No comparable screenshots"),V=I(()=>h.value?[{src:C.value,name:"Failing screenshot"},{src:w.value,name:"Last passing screenshot"},{src:y.value,name:"Diff overlay"}]:[]),B=G(null),X=G(null);return r({reveal:()=>X.value?.reveal?.()}),(Q,m)=>{const M=Pe,x=Ye,K=Nt,P=mt;return!t(f)&&!t(i)&&t(h)?(o(),q(Se(t(c)),Ne({key:0,ref_key:"card",ref:X},t(n),{icon:"i-lucide-images",title:"Visual diff",help:"visual-diff"}),Re({subtitle:A(()=>[p("span",null,"vs last pass in run #"+$(t(h).baselineRunId),1)]),actions:A(()=>[_(M,{color:t(D),variant:"subtle",size:"sm",class:"font-mono tabular-nums"},{default:A(()=>[E($(t(S))+"% changed ",1)]),_:1},8,["color"])]),default:A(()=>[t(h).dimensionMismatch?(o(),q(x,{key:0,class:"mb-3",color:"warning",icon:"i-lucide-alert-triangle",variant:"subtle",title:"Screenshot dimensions differ",description:"The failing and passing screenshots have different sizes (viewport change?). They are compared on a padded canvas, so the changed-pixel ratio is inflated and unreliable."})):T("",!0),p("div",Yo,[_(K,{modelValue:t(v),"onUpdate:modelValue":m[0]||(m[0]=j=>Le(v)?v.value=j:null),items:L,size:"xs",content:!1,ui:{list:"overflow-x-auto",trigger:"shrink-0"}},null,8,["modelValue"])]),t(v)==="overlay"?(o(),u("div",Xo,[p("img",{src:t(y),alt:"Diff overlay (red = changed pixels)",class:"w-full max-h-96 object-contain cursor-zoom-in outline-none focus-visible:outline-2 focus-visible:outline-primary",loading:"lazy",role:"button",tabindex:"0","aria-label":"Open diff overlay in lightbox",onClick:m[1]||(m[1]=j=>B.value=2),onKeydown:[m[2]||(m[2]=ke(j=>B.value=2,["enter"])),m[3]||(m[3]=ke(_e(j=>B.value=2,["prevent"]),["space"]))]},null,40,Qo),m[11]||(m[11]=p("p",{class:"px-2 py-1 text-[10px] text-gray-500"},"Red pixels mark differences against the last passing run",-1))])):(o(),u("div",es,[p("div",ts,[m[12]||(m[12]=p("p",{class:"px-2 py-1 text-[10px] font-medium text-red-600 dark:text-red-400"},"Failing",-1)),p("img",{src:t(C),alt:"Failing screenshot",class:"w-full max-h-80 object-contain cursor-zoom-in outline-none focus-visible:outline-2 focus-visible:outline-primary",loading:"lazy",role:"button",tabindex:"0","aria-label":"Open failing screenshot in lightbox",onClick:m[4]||(m[4]=j=>B.value=0),onKeydown:[m[5]||(m[5]=ke(j=>B.value=0,["enter"])),m[6]||(m[6]=ke(_e(j=>B.value=0,["prevent"]),["space"]))]},null,40,ns)]),p("div",os,[p("p",ss," Last pass (run #"+$(t(h).baselineRunId)+") ",1),p("img",{src:t(w),alt:"Last passing screenshot",class:"w-full max-h-80 object-contain cursor-zoom-in outline-none focus-visible:outline-2 focus-visible:outline-primary",loading:"lazy",role:"button",tabindex:"0","aria-label":"Open last passing screenshot in lightbox",onClick:m[7]||(m[7]=j=>B.value=1),onKeydown:[m[8]||(m[8]=ke(j=>B.value=1,["enter"])),m[9]||(m[9]=ke(_e(j=>B.value=1,["prevent"]),["space"]))]},null,40,as)])])),_(P,{modelValue:t(B),"onUpdate:modelValue":m[10]||(m[10]=j=>Le(B)?B.value=j:null),images:t(V)},null,8,["modelValue","images"])]),_:2},[e.storageKey?{name:"folded",fn:A(()=>[p("span",null,$(t(U)),1)]),key:"0"}:void 0]),1040)):T("",!0)}}}),Ua=Object.assign(rs,{__name:"VisualDiffCard"}),is={class:"max-h-96 overflow-y-auto"},ls={key:0,class:"mt-2 text-xs text-gray-400 dark:text-gray-500"},Ze=2e4,cs=ue({__name:"DomSnapshotCard",props:{runId:{},testRunsCaseId:{},storageKey:{}},setup(e,{expose:r}){const a=e,c=I(()=>a.storageKey?De:je),n=I(()=>a.storageKey?{storageKey:a.storageKey}:{}),{data:s,pending:l,error:f}=Ue(()=>`/api/test-runs/${a.runId}/cases/${a.testRunsCaseId}/dom-snapshot`,{lazy:!0},"$AxHFpokm2o"),i=I(()=>(s.value?.html??"").slice(0,Ze)),h=I(()=>(s.value?.html?.length??0)>Ze),v=I(()=>{const w=s.value;return!w||w.status!=="ok"?"":`${Math.round((w.html?.length??0)/1024)} KB · rendered from the uploaded trace${w.snapshotName?` (${w.snapshotName})`:""}`}),{copy:L,copied:y}=He(),C=G(null);return r({reveal:()=>C.value?.reveal?.()}),(w,S)=>{const D=Ie,U=Ut,V=jt;return!t(l)&&!t(f)&&t(s)?.status==="ok"&&t(s).html?(o(),q(Se(t(c)),Ne({key:0,ref_key:"card",ref:C},t(n),{icon:"i-lucide-file-code",title:"DOM snapshot",help:"dom-snapshot",subtitle:t(v)}),Re({actions:A(()=>[_(U,{text:t(y)?"Copied!":"Copy full HTML"},{default:A(()=>[_(D,{size:"xs",variant:"ghost",color:"neutral",icon:t(y)?"i-lucide-check":"i-lucide-clipboard",onClick:S[0]||(S[0]=B=>t(L)(t(s).html))},null,8,["icon"])]),_:1},8,["text"])]),default:A(()=>[p("div",is,[_(V,{code:t(i),lang:"xml"},null,8,["code"])]),t(h)||t(s).truncated?(o(),u("p",ls,[t(h)?(o(),u(ee,{key:0},[E("Showing the first "+$(Math.round(Ze/1e3))+"k characters — use Copy for the full document.",1)],64)):(o(),u(ee,{key:1},[E("The snapshot was truncated to its size cap.")],64))])):T("",!0)]),_:2},[e.storageKey?{name:"folded",fn:A(()=>[p("span",null,"Failure-time HTML extracted from the trace — "+$(Math.round((t(s).html.length??0)/1024))+" KB",1)]),key:"0"}:void 0]),1040,["subtitle"])):T("",!0)}}}),ja=Object.assign(cs,{__name:"DomSnapshotCard"}),us={class:"rounded-md border border-default overflow-hidden"},ds={class:"text-xs font-semibold text-gray-600 dark:text-gray-300 flex-1"},ps={key:0,class:"text-gray-400 font-normal ml-1"},fs={key:0},ms=ue({__name:"TestEvidenceSection",props:Je({icon:{},label:{},count:{},collapsible:{type:Boolean}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:["update:open"],setup(e){const r=e,a=at(e,"open"),c=I(()=>r.collapsible===!1||a.value);return(n,s)=>{const l=$e;return o(),u("div",us,[(o(),q(Se(e.collapsible===!1?"div":"button"),{class:pe(["w-full flex items-center gap-1.5 px-3 py-2 bg-elevated border-b border-default text-left",e.collapsible!==!1&&"hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors cursor-pointer"]),onClick:s[0]||(s[0]=f=>e.collapsible!==!1&&(a.value=!a.value))},{default:A(()=>[_(l,{name:e.icon,class:"size-3.5 shrink-0 text-primary/70"},null,8,["name"]),p("span",ds,[E($(e.label),1),e.count!=null?(o(),u("span",ps,"("+$(e.count)+")",1)):T("",!0)]),e.collapsible!==!1?(o(),q(l,{key:0,name:a.value?"i-lucide-chevron-up":"i-lucide-chevron-down",class:"size-3.5 text-gray-400"},null,8,["name"])):T("",!0)]),_:1},8,["class"])),t(c)?(o(),u("div",fs,[Oe(n.$slots,"default")])):T("",!0)])}}}),Qe=Object.assign(ms,{__name:"TestEvidenceSection"}),gs={class:"grid grid-cols-2 gap-2 p-2 bg-gray-50 dark:bg-gray-900"},hs=["aria-label","onClick","onKeydown"],ys=["src","alt"],vs={class:"absolute inset-0 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity bg-black/30"},xs={class:"absolute bottom-0 inset-x-0 px-1.5 py-0.5 text-[10px] text-white bg-black/50 truncate"},bs=ue({__name:"TestEvidenceScreenshots",props:{attachments:{}},setup(e){const r=e,a=ze();function c(l){return l.split("/").pop()||l}const n=I(()=>r.attachments.filter(l=>Kt(l.path,l.contentType)).map(l=>({src:Me(l.path,l.contentType,a.app?.baseURL),name:l.name||c(l.path)}))),s=G(null);return(l,f)=>{const i=$e,h=mt,v=Qe;return t(n).length>0?(o(),q(v,{key:0,icon:"i-lucide-image",label:"Screenshots",count:t(n).length,collapsible:!1},{default:A(()=>[p("div",gs,[(o(!0),u(ee,null,fe(t(n),(L,y)=>(o(),u("div",{key:L.src,class:"relative group cursor-pointer rounded overflow-hidden border border-default outline-none focus-visible:outline-2 focus-visible:outline-primary",role:"button",tabindex:"0","aria-label":`View screenshot ${L.name}`,onClick:C=>s.value=y,onKeydown:[ke(C=>s.value=y,["enter"]),ke(_e(C=>s.value=y,["prevent"]),["space"])]},[p("img",{src:L.src,alt:L.name,class:"w-full h-28 object-cover object-top transition-opacity group-hover:opacity-80",loading:"lazy"},null,8,ys),p("div",vs,[_(i,{name:"i-lucide-zoom-in",class:"size-5 text-white"})]),p("p",xs,$(L.name),1)],40,hs))),128))]),_(h,{modelValue:t(s),"onUpdate:modelValue":f[0]||(f[0]=L=>Le(s)?s.value=L:null),images:t(n)},null,8,["modelValue","images"])]),_:1},8,["count"])):T("",!0)}}}),Da=Object.assign(bs,{__name:"TestEvidenceScreenshots"}),ks={class:"m-0"},_s={class:"bg-black rounded overflow-hidden"},$s=["src"],ws=["title"],Cs=ue({__name:"VideoPlayer",props:{src:{},label:{}},setup(e){return(r,a)=>(o(),u("figure",ks,[p("div",_s,[p("video",{src:e.src,controls:"",preload:"metadata",class:"w-full max-h-96"}," Your browser does not support the video tag. ",8,$s)]),e.label?(o(),u("figcaption",{key:0,class:"mt-1 text-xs text-gray-400 truncate",title:e.label},$(e.label),9,ws)):T("",!0)]))}}),Ts=Object.assign(Cs,{__name:"VideoPlayer"}),Ss={class:"space-y-2 p-2 bg-gray-50 dark:bg-gray-900"},As=ue({__name:"TestEvidenceVideos",props:{attachments:{}},setup(e){const r=e,a=ze();function c(s){return s.split("/").pop()||s}const n=I(()=>r.attachments.filter(s=>Vt(s.path,s.contentType)).map(s=>({src:Me(s.path,s.contentType,a.app?.baseURL),name:s.name||c(s.path)})));return(s,l)=>{const f=Ts,i=Qe;return t(n).length>0?(o(),q(i,{key:0,icon:"i-lucide-video",label:"Videos",count:t(n).length,collapsible:!1},{default:A(()=>[p("div",Ss,[(o(!0),u(ee,null,fe(t(n),h=>(o(),q(f,{key:h.src,src:h.src,label:h.name},null,8,["src","label"]))),128))])]),_:1},8,["count"])):T("",!0)}}}),Ka=Object.assign(As,{__name:"TestEvidenceVideos"}),Ls={class:"flex items-center justify-between gap-2"},Rs={class:"flex items-center gap-2 min-w-0"},Is={class:"text-sm truncate"},zs={key:0,class:"text-xs text-gray-400 shrink-0"},Ps={key:1,class:"text-xs text-gray-400 shrink-0"},Bs={class:"flex items-center gap-1.5 shrink-0"},Es=ue({__name:"TraceListItem",props:{trace:{},showTime:{type:Boolean,default:!0}},setup(e){const r=e,a=ze(),c=I(()=>(a.app?.baseURL??"/").replace(/\/$/,"")),n=I(()=>!!a.public.demoMode&&r.trace.filePath.startsWith("demo/")),s=I(()=>r.trace.filePath.split("/").pop()||r.trace.filePath),l=I(()=>ct(r.trace.filePath,a.app?.baseURL,n.value)),f=I(()=>n.value?`${c.value}/${r.trace.filePath}`:`${c.value}/api/files/${Ot(r.trace.filePath)}`);return(i,h)=>{const v=$e,L=Ie;return o(),u("div",Ls,[p("div",Rs,[_(v,{name:"i-lucide-file-archive",class:"size-4 text-gray-400 shrink-0"}),p("span",Is,$(t(s)),1),e.trace.size?(o(),u("span",zs,$(("formatBytes"in i?i.formatBytes:t(Ht))(e.trace.size)),1)):T("",!0),e.showTime?(o(),u("span",Ps,$(("formatRelativeTime"in i?i.formatRelativeTime:t(Ge))(e.trace.createdAt)),1)):T("",!0)]),p("div",Bs,[_(L,{to:t(l),target:"_blank",icon:"i-lucide-bug-play",size:"xs",label:"View trace"},null,8,["to"]),_(L,{to:t(f),target:"_blank",icon:"i-lucide-download",size:"xs",color:"neutral",variant:"soft",label:"Download"},null,8,["to"])])])}}}),Os=Object.assign(Es,{__name:"TraceListItem"}),Ms={key:0,class:"flex items-center justify-center py-4"},Ns={key:1,class:"divide-y divide-default"},Us=ue({__name:"TestEvidenceTraces",props:{traces:{},loading:{type:Boolean}},setup(e){return(r,a)=>{const c=$e,n=Os,s=Qe;return e.loading||e.traces.length>0?(o(),q(s,{key:0,icon:"i-lucide-bug-play",label:"Traces",count:e.traces.length||null,collapsible:!1},{default:A(()=>[e.loading&&!e.traces.length?(o(),u("div",Ms,[_(c,{name:"i-lucide-loader-circle",class:"size-4 animate-spin text-gray-400"})])):(o(),u("div",Ns,[(o(!0),u(ee,null,fe(e.traces,l=>(o(),q(n,{key:l.id,trace:l,class:"px-3 py-2"},null,8,["trace"]))),128))]))]),_:1},8,["count"])):T("",!0)}}}),Va=Object.assign(Us,{__name:"TestEvidenceTraces"}),js={class:"space-y-2"},Ds={key:0,class:"rounded-lg border border-default overflow-hidden"},Ks=["title"],Vs={key:2,class:"truncate text-gray-400 dark:text-gray-500"},Hs={class:"font-mono"},Fs={key:0,class:"overflow-x-auto text-xs font-mono leading-relaxed py-1"},qs={class:"min-w-max"},Zs={key:1,class:"rounded-lg border border-dashed border-default"},Js=["onClick"],Ws={key:0,class:"px-3 pb-2 space-y-1"},Gs=["title"],Ys={key:0,class:"truncate font-mono shrink-0"},Xs=ue({__name:"TraceCallStack",props:{frames:{},projectKey:{},projectName:{}},setup(e){const r=e,a=I(()=>{if(!r.frames.some(L=>L.inProject))return r.frames.map((L,y)=>({kind:"frame",frame:L,frameIndex:y}));const i=[];let h=[];const v=()=>{h.length!==0&&(i.push({kind:"group",frames:h,key:`group-${i.length}`}),h=[])};return r.frames.forEach((L,y)=>{L.inProject?(v(),i.push({kind:"frame",frame:L,frameIndex:y})):h.push(L)}),v(),i}),c=I(()=>{const f=r.frames.findIndex(i=>i.inProject);return f>=0?f:0}),n=G(new Set);function s(f){const i=new Set(n.value);i.has(f)?i.delete(f):i.add(f),n.value=i}function l(f){return f.source?f.source.lines.map((i,h)=>{const v=f.source.startLine+h;return{lineNo:v,text:i,failing:v===f.line}}):[]}return(f,i)=>{const h=$e,v=ut,L=Pe;return o(),u("div",js,[(o(!0),u(ee,null,fe(t(a),y=>(o(),u(ee,{key:y.kind==="frame"?`f-${y.frameIndex}`:y.key},[y.kind==="frame"?(o(),u("div",Ds,[p("div",{class:pe(["flex items-center gap-2 px-3 py-1.5 bg-elevated/40 text-xs",y.frame.source?"border-b border-default":""])},[_(h,{name:y.frameIndex===t(c)?"i-lucide-circle-x":"i-lucide-corner-left-up",class:pe([y.frameIndex===t(c)?"text-red-500":"text-gray-400","size-3.5 shrink-0"])},null,8,["name","class"]),y.frame.inProject?(o(),q(v,{key:0,"file-path":y.frame.file,line:y.frame.line,column:y.frame.column,"project-key":e.projectKey,"project-name":e.projectName,class:"min-w-0"},null,8,["file-path","line","column","project-key","project-name"])):(o(),u("code",{key:1,class:"truncate text-gray-500 dark:text-gray-400",title:y.frame.absFile||y.frame.file},$(y.frame.file)+":"+$(y.frame.line),9,Ks)),y.frame.functionName?(o(),u("span",Vs,[i[0]||(i[0]=E(" in ",-1)),p("span",Hs,$(y.frame.functionName),1)])):T("",!0),_(L,{color:y.frameIndex===t(c)?"error":"neutral",variant:"subtle",size:"xs",class:"ml-auto shrink-0"},{default:A(()=>[E($(y.frameIndex===t(c)?"Failed here":"Caller"),1)]),_:2},1032,["color"])],2),y.frame.source?(o(),u("div",Fs,[p("div",qs,[(o(!0),u(ee,null,fe(l(y.frame),C=>(o(),u("div",{key:C.lineNo,class:pe(["px-3 whitespace-pre flex",C.failing?"bg-red-50 dark:bg-red-950/30 text-red-700 dark:text-red-300 font-medium":"text-gray-600 dark:text-gray-400"])},[p("span",{class:pe(["w-10 shrink-0 text-right pr-3 tabular-nums select-none",C.failing?"text-red-400 dark:text-red-500":"text-gray-300 dark:text-gray-600"])},$(C.lineNo),3),p("span",null,$(C.text),1)],2))),128))])])):T("",!0)])):(o(),u("div",Zs,[p("button",{type:"button",class:"w-full flex items-center gap-2 px-3 py-1.5 text-xs text-gray-400 dark:text-gray-500 hover:text-gray-600 dark:hover:text-gray-300",onClick:C=>s(y.key)},[_(h,{name:t(n).has(y.key)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3.5 shrink-0"},null,8,["name"]),E(" "+$(y.frames.length)+" frame"+$(y.frames.length===1?"":"s")+" in dependencies ",1)],8,Js),t(n).has(y.key)?(o(),u("div",Ws,[(o(!0),u(ee,null,fe(y.frames,(C,w)=>(o(),u("div",{key:w,class:"flex items-center gap-2 text-xs text-gray-400 dark:text-gray-500 min-w-0"},[_(h,{name:"i-lucide-corner-left-up",class:"size-3 shrink-0"}),p("code",{class:"truncate",title:C.absFile||C.file},$(C.file)+":"+$(C.line),9,Gs),C.functionName?(o(),u("span",Ys,$(C.functionName),1)):T("",!0)]))),128))])):T("",!0)]))],64))),128))])}}}),Ha=Object.assign(Xs,{__name:"TraceCallStack"}),Qs={class:"space-y-2"},ea={class:"flex items-center gap-2 px-3 py-1.5 bg-elevated/40 border-b border-default text-xs"},ta={class:"overflow-x-auto text-xs font-mono leading-relaxed py-1"},na={class:"min-w-max"},oa=ue({__name:"TestSourceStack",props:{frames:{},projectKey:{},projectName:{}},setup(e){function r(a){return a.split(`
|
|
5
|
+
`).map(c=>({text:c,failing:c.startsWith(">")}))}return(a,c)=>{const n=$e,s=ut,l=Pe;return o(),u("div",Qs,[(o(!0),u(ee,null,fe(e.frames,(f,i)=>(o(),u("div",{key:`${f.file}:${f.line}:${i}`,class:"rounded-lg border border-default overflow-hidden"},[p("div",ea,[_(n,{name:i===0?"i-lucide-circle-x":"i-lucide-corner-left-up",class:pe([i===0?"text-red-500":"text-gray-400","size-3.5 shrink-0"])},null,8,["name","class"]),_(s,{"file-path":f.file,line:f.line,"project-key":e.projectKey,"project-name":e.projectName,class:"min-w-0"},null,8,["file-path","line","project-key","project-name"]),_(l,{color:i===0?"error":"neutral",variant:"subtle",size:"xs",class:"ml-auto shrink-0"},{default:A(()=>[E($(i===0?"Failed here":"Caller"),1)]),_:2},1032,["color"])]),p("div",ta,[p("div",na,[(o(!0),u(ee,null,fe(r(f.snippet),(h,v)=>(o(),u("div",{key:v,class:pe(["px-3 whitespace-pre",h.failing?"bg-red-50 dark:bg-red-950/30 text-red-700 dark:text-red-300 font-medium":"text-gray-600 dark:text-gray-400"])},$(h.text),3))),128))])])]))),128))])}}}),Fa=Object.assign(oa,{__name:"TestSourceStack"}),sa={class:"space-y-3 text-sm"},aa={key:0,class:"flex flex-col gap-0.5"},ra={class:"text-xs font-mono break-all"},ia={key:1,class:"flex flex-col gap-0.5"},la={class:"text-xs font-mono break-all"},ca={class:"grid grid-cols-1 gap-3 sm:grid-cols-2"},ua={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},da={key:0,class:"text-xs text-gray-400"},pa={key:1,class:"mt-1 space-y-0.5"},fa={class:"text-gray-400"},ma={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},ga={key:0,class:"text-xs text-gray-400"},ha={key:1,class:"mt-1 space-y-0.5"},ya={key:0,class:"text-gray-400"},va={class:"text-gray-400"},xa=ue({__name:"PageStateCard",props:{pageState:{},storageKey:{},plain:{type:Boolean}},setup(e){const r=e,a=I(()=>r.plain?"div":r.storageKey?De:je),c=I(()=>r.plain?{}:{icon:"i-lucide-database",title:"App state at test end",help:"page-state",...r.storageKey?{storageKey:r.storageKey}:{}}),n=l=>[l.httpOnly?"HttpOnly":null,l.secure?"Secure":null,l.sameSite??null].filter(Boolean).join(", "),s=I(()=>{const l=r.pageState;return[`${l.localStorage.length} localStorage`,`${l.sessionStorage.length} sessionStorage`,`${l.cookies.length} cookie${l.cookies.length===1?"":"s"}`].join(" · ")});return(l,f)=>(o(),q(Se(t(a)),Lt(Rt(t(c))),Re({default:A(()=>[p("div",sa,[e.pageState.url?(o(),u("div",aa,[f[0]||(f[0]=p("span",{class:"text-xs font-medium text-gray-500 dark:text-gray-400"},"URL",-1)),p("code",ra,$(e.pageState.url)+$(e.pageState.hash??""),1)])):T("",!0),e.pageState.historyState?(o(),u("div",ia,[f[1]||(f[1]=p("span",{class:"text-xs font-medium text-gray-500 dark:text-gray-400"},"History state",-1)),p("code",la,$(e.pageState.historyState),1)])):T("",!0),p("div",ca,[(o(!0),u(ee,null,fe({localStorage:e.pageState.localStorage,sessionStorage:e.pageState.sessionStorage},(i,h)=>(o(),u("div",{key:h},[p("span",ua,$(h)+" ("+$(i.length)+")",1),i.length===0?(o(),u("p",da,"empty")):(o(),u("ul",pa,[(o(!0),u(ee,null,fe(i,v=>(o(),u("li",{key:v.key,class:"text-xs font-mono truncate"},[E($(v.key)+" ",1),p("span",fa,"("+$(v.length)+" ch)",1)]))),128))]))]))),128))]),p("div",null,[p("span",ma,"Cookies ("+$(e.pageState.cookies.length)+")",1),e.pageState.cookies.length===0?(o(),u("p",ga,"none")):(o(),u("ul",ha,[(o(!0),u(ee,null,fe(e.pageState.cookies,i=>(o(),u("li",{key:i.name+i.domain,class:"text-xs font-mono truncate"},[E($(i.name)+" ",1),n(i)?(o(),u("span",ya,"["+$(n(i))+"]",1)):T("",!0),p("span",va,"· "+$(i.domain),1)]))),128))]))]),f[2]||(f[2]=p("p",{class:"text-[11px] text-gray-400 dark:text-gray-500"}," Storage values and cookie values are never captured — key names, lengths and flags only. ",-1))])]),_:2},[e.storageKey&&!e.plain?{name:"folded",fn:A(()=>[p("span",null,$(t(s)),1)]),key:"0"}:void 0]),1040))}}),qa=Object.assign(xa,{__name:"PageStateCard"});function Za(e={}){const r=G(!1),a=We();let c=null;async function n(s,l,f={}){try{typeof ClipboardItem<"u"?await navigator.clipboard.write([new ClipboardItem({"text/plain":new Blob([s],{type:"text/plain"}),"text/html":new Blob([l],{type:"text/html"})})]):await navigator.clipboard.writeText(s),r.value=!0,c&&clearTimeout(c),c=setTimeout(()=>{r.value=!1,c=null},e.duration??2e3),f.toast&&a.add({title:typeof f.toast=="string"?f.toast:"Copied to clipboard",icon:"i-lucide-check",color:"success",duration:2e3})}catch{}}return{copyRich:n,copied:r}}export{Qe as _,Da as a,Ka as b,Va as c,Ha as d,Fa as e,qa as f,cn as g,De as h,Ma as i,Na as j,Ua as k,ja as l,Oa as m,Os as n,Ts as o,mt as p,Za as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as f}from"./Ebw5l7n8.js";import{d as y,o as s,f as b,g as d,c as o,F as r,y as u,k as p,R as h,q as m,i as n,t as l,h as x}from"./DCFbQvIN.js";const w={key:0,class:"flex gap-0.5 h-2.5 w-full min-w-30 overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-700"},g={key:1,class:"text-xs text-zinc-400 dark:text-zinc-500 italic"},v={class:"min-w-52 space-y-1.5 rounded-md bg-zinc-900 px-3 py-2 text-sm shadow-lg"},z={class:"font-semibold text-white"},B={class:"text-white"},C={class:"ml-4 tabular-nums font-medium text-white"},F={class:"ml-auto tabular-nums text-zinc-300 text-xs"},N=y({__name:"TestStatusBar",props:{passed:{},failed:{},skipped:{},flaky:{},total:{},didNotRun:{}},setup(i){const t=i,c=x(()=>t.total?[{key:"passed",label:"Passed",count:t.passed-t.flaky,color:"bg-emerald-500"},{key:"failed",label:"Failed",count:t.failed,color:"bg-rose-500"},{key:"flaky",label:"Flaky",count:t.flaky,color:"bg-purple-500"},{key:"skipped",label:"Skipped",count:t.skipped,color:"bg-zinc-400"},{key:"didNotRun",label:"Didn't run",count:t.didNotRun??0,color:"bg-amber-300 dark:bg-amber-700"}].filter(a=>a.count>0).map(a=>({...a,widthPct:a.count/t.total*100,displayPct:(a.count/t.total*100).toFixed(1)})):[]);return(k,a)=>{const _=f;return s(),b(_,{ui:{content:"overflow-visible !p-0"}},{content:d(()=>[n("div",v,[n("div",z,l(i.total)+" tests total",1),(s(!0),o(r,null,u(p(c),e=>(s(),o("div",{key:e.key,class:"flex items-center gap-2 whitespace-nowrap"},[n("span",{class:m([e.color,"inline-block h-2.5 w-2.5 shrink-0 rounded-sm"])},null,2),n("span",B,l(e.label),1),n("span",C,l(e.count),1),n("span",F,l(e.displayPct)+"%",1)]))),128))])]),default:d(()=>[i.total>0?(s(),o("div",w,[(s(!0),o(r,null,u(p(c),e=>(s(),o("div",{key:e.key,class:m([e.color,"h-full transition-all"]),style:h({width:e.widthPct+"%"})},null,6))),128))])):(s(),o("div",g,"No tests"))]),_:1})}}}),R=Object.assign(N,{__name:"TestStatusBar"});export{R as _};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{D as H,a as N,b as E,c as R,d as _,e as b,f as A,g as L}from"./oKrbs1XK.js";import{a2 as T,a3 as z,a4 as F,a5 as I,a6 as W,a7 as G,bN as K,o as a,f as l,g as r,k as e,q as c,V as d,v as i,j as h,W as k,bQ as Q,c1 as U,bW as J,m,t as v,c as q,_ as M,i as X,a0 as Y,a1 as Z,h as $,b7 as B,c5 as ee,a8 as te}from"./DCFbQvIN.js";const se={slots:{overlay:"fixed inset-0 bg-elevated/75",content:"fixed bg-default divide-y divide-default sm:ring ring-default sm:shadow-lg flex flex-col focus:outline-none",header:"flex items-center gap-1.5 p-4 sm:px-6 min-h-(--ui-header-height)",wrapper:"",body:"flex-1 overflow-y-auto p-4 sm:p-6",footer:"flex items-center gap-1.5 p-4 sm:px-6",title:"text-highlighted font-semibold",description:"mt-1 text-muted text-sm",close:"absolute top-4 end-4"},variants:{side:{top:{content:""},right:{content:"max-w-md"},bottom:{content:""},left:{content:"max-w-md"}},inset:{true:{content:"rounded-lg"}},transition:{true:{overlay:"data-[state=open]:animate-[fade-in_200ms_ease-out] data-[state=closed]:animate-[fade-out_200ms_ease-in]"}}},compoundVariants:[{side:"top",inset:!0,class:{content:"max-h-[calc(100%-2rem)] inset-x-4 top-4"}},{side:"top",inset:!1,class:{content:"max-h-full inset-x-0 top-0"}},{side:"right",inset:!0,class:{content:"w-[calc(100%-2rem)] inset-y-4 right-4"}},{side:"right",inset:!1,class:{content:"w-full inset-y-0 right-0"}},{side:"bottom",inset:!0,class:{content:"max-h-[calc(100%-2rem)] inset-x-4 bottom-4"}},{side:"bottom",inset:!1,class:{content:"max-h-full inset-x-0 bottom-0"}},{side:"left",inset:!0,class:{content:"w-[calc(100%-2rem)] inset-y-4 left-4"}},{side:"left",inset:!1,class:{content:"w-full inset-y-0 left-0"}},{transition:!0,side:"top",class:{content:"data-[state=open]:animate-[slide-in-from-top_200ms_ease-in-out] data-[state=closed]:animate-[slide-out-to-top_200ms_ease-in-out]"}},{transition:!0,side:"right",class:{content:"data-[state=open]:animate-[slide-in-from-right_200ms_ease-in-out] data-[state=closed]:animate-[slide-out-to-right_200ms_ease-in-out]"}},{transition:!0,side:"bottom",class:{content:"data-[state=open]:animate-[slide-in-from-bottom_200ms_ease-in-out] data-[state=closed]:animate-[slide-out-to-bottom_200ms_ease-in-out]"}},{transition:!0,side:"left",class:{content:"data-[state=open]:animate-[slide-in-from-left_200ms_ease-in-out] data-[state=closed]:animate-[slide-out-to-left_200ms_ease-in-out]"}}]},le={__name:"USlideover",props:{title:{type:String,required:!1},description:{type:String,required:!1},content:{type:Object,required:!1},overlay:{type:Boolean,required:!1,default:!0},transition:{type:Boolean,required:!1,default:!0},side:{type:null,required:!1,default:"right"},inset:{type:Boolean,required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},close:{type:[Boolean,Object],required:!1,default:!0},closeIcon:{type:null,required:!1},dismissible:{type:Boolean,required:!1,default:!0},class:{type:null,required:!1},ui:{type:Object,required:!1},open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1},modal:{type:Boolean,required:!1,default:!0},unmountOnHide:{type:Boolean,required:!1}},emits:["leave","after:leave","enter","after:enter","close:prevent","update:open"],setup(D,{emit:O}){const P=D,f=O,s=T(),t=z("slideover",P),{t:C}=F(),w=I(),S=W(G(t,"open","defaultOpen","modal","unmountOnHide"),f),x=K(B(()=>t.portal)),V=B(()=>t.content),j=$(()=>t.dismissible?{pointerDownOutside:ee}:["interactOutside","escapeKeyDown"].reduce((n,y)=>(n[y]=p=>{p.preventDefault(),f("close:prevent")},n),{})),u=$(()=>te({extend:se,...w.ui?.slideover||{}})({transition:t.transition,side:t.side,inset:t.inset}));return(o,n)=>(a(),l(e(L),Y(Z(e(S))),{default:r(({open:y,close:p})=>[s.default?(a(),l(e(H),{key:0,"as-child":"",class:c(e(t).class)},{default:r(()=>[d(o.$slots,"default",{open:y})]),_:2},1032,["class"])):i("",!0),h(e(N),k(e(x),{"force-mount":e(x).disabled&&e(t).unmountOnHide===!1||void 0}),{default:r(()=>[h(e(Q),null,{default:r(()=>[e(t).overlay?(a(),l(e(E),{key:0,"data-slot":"overlay",class:c(u.value.overlay({class:e(t).ui?.overlay}))},null,8,["class"])):i("",!0),h(e(R),k({"data-side":e(t).side,"data-slot":"content",class:u.value.content({class:[!s.default&&e(t).class,e(t).ui?.content]})},V.value,{onEnter:n[0]||(n[0]=g=>f("enter")),onAfterEnter:n[1]||(n[1]=g=>f("after:enter")),onLeave:n[2]||(n[2]=g=>f("leave")),onAfterLeave:n[3]||(n[3]=g=>f("after:leave"))},U(j.value)),{default:r(()=>[!e(t).title&&!s.title||!e(t).description&&!s.description||s.content?(a(),l(e(J),{key:0},{default:r(()=>[!e(t).title&&!s.title?(a(),l(e(_),{key:0})):s.content?(a(),l(e(_),{key:1},{default:r(()=>[d(o.$slots,"title",{},()=>[m(v(e(t).title),1)])]),_:3})):i("",!0),!e(t).description&&!s.description?(a(),l(e(b),{key:2})):s.content?(a(),l(e(b),{key:3},{default:r(()=>[d(o.$slots,"description",{},()=>[m(v(e(t).description),1)])]),_:3})):i("",!0)]),_:3})):i("",!0),d(o.$slots,"content",{close:p},()=>[s.header||e(t).title||s.title||e(t).description||s.description||e(t).close||s.close?(a(),q("div",{key:0,"data-slot":"header",class:c(u.value.header({class:e(t).ui?.header}))},[d(o.$slots,"header",{close:p},()=>[e(t).title||s.title||e(t).description||s.description?(a(),q("div",{key:0,"data-slot":"wrapper",class:c(u.value.wrapper({class:e(t).ui?.wrapper}))},[e(t).title||s.title?(a(),l(e(_),{key:0,"data-slot":"title",class:c(u.value.title({class:e(t).ui?.title}))},{default:r(()=>[d(o.$slots,"title",{},()=>[m(v(e(t).title),1)])]),_:3},8,["class"])):i("",!0),e(t).description||s.description?(a(),l(e(b),{key:1,"data-slot":"description",class:c(u.value.description({class:e(t).ui?.description}))},{default:r(()=>[d(o.$slots,"description",{},()=>[m(v(e(t).description),1)])]),_:3},8,["class"])):i("",!0)],2)):i("",!0),d(o.$slots,"actions"),e(t).close||s.close?(a(),l(e(A),{key:1,"as-child":""},{default:r(()=>[d(o.$slots,"close",{ui:u.value},()=>[e(t).close?(a(),l(M,k({key:0,icon:e(t).closeIcon||e(w).ui.icons.close,color:"neutral",variant:"ghost","aria-label":e(C)("slideover.close")},typeof e(t).close=="object"?e(t).close:{},{"data-slot":"close",class:u.value.close({class:e(t).ui?.close})}),null,16,["icon","aria-label","class"])):i("",!0)])]),_:2},1024)):i("",!0)])],2)):i("",!0),X("div",{"data-slot":"body",class:c(u.value.body({class:e(t).ui?.body}))},[d(o.$slots,"body",{close:p})],2),s.footer?(a(),q("div",{key:1,"data-slot":"footer",class:c(u.value.footer({class:e(t).ui?.footer}))},[d(o.$slots,"footer",{close:p})],2)):i("",!0)])]),_:2},1040,["data-side","class"])]),_:2},1024)]),_:2},1040,["force-mount"])]),_:3},16))}};export{le as _};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as D,U as Z,o as r,f as x,g as d,V as F,m as S,W as Q,k as e,X as H,Y as He,Z as We,h as k,$ as Xe,a0 as Ye,a1 as Je,t as P,c as I,i as f,Q as ce,q as L,j as i,p as ee,F as A,y as oe,s as qe,D as Se,v as B,_ as G,r as w,a2 as et,a3 as tt,a4 as at,a5 as st,a6 as lt,a7 as nt,a8 as ot,u as it,a as rt,A as ut,H as ae,I as dt,l as se,a9 as Re,aa as de}from"./NQikbhmK.js";import{_ as ct}from"./DS636elg.js";import{_ as pt}from"./Bti38m-M.js";import{_ as ft}from"./BxCKKeYs.js";import{_ as gt}from"./ybDYeNxd.js";import{_ as mt}from"./DLSrtpsA.js";import{_ as vt}from"./D0HNloZ9.js";import{_ as ze}from"./BSIxhGsh.js";import{_ as Ie}from"./CV9-fTmY.js";import{k as pe,l as fe,p as ge,f as me,g as _t,t as yt}from"./CDk0q2hV.js";import{_ as bt}from"./nv9-6vBK.js";import{_ as ht}from"./BPRffDuo.js";import{_ as xt}from"./C9_jrmk9.js";import{_ as kt}from"./DprVVyUQ.js";import{u as Ct}from"./C-elpgyr.js";import{u as Pt}from"./CpjgB2aY.js";var Rt=D({__name:"PaginationEllipsis",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const c=u;return Z(),(s,_)=>(r(),x(e(H),Q(c,{"data-type":"ellipsis"}),{default:d(()=>[F(s.$slots,"default",{},()=>[_[0]||(_[0]=S("…"))])]),_:3},16))}}),$t=Rt;const[te,qt]=Xe("PaginationRoot");var St=D({__name:"PaginationRoot",props:{page:{type:Number,required:!1},defaultPage:{type:Number,required:!1,default:1},itemsPerPage:{type:Number,required:!0},total:{type:Number,required:!1,default:0},siblingCount:{type:Number,required:!1,default:2},disabled:{type:Boolean,required:!1},showEdges:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"nav"}},emits:["update:page"],setup(u,{emit:c}){const s=u,_=c,{siblingCount:m,disabled:t,showEdges:C}=He(s);Z();const b=We(s,"page",_,{defaultValue:s.defaultPage,passive:s.page===void 0}),T=k(()=>Math.max(1,Math.ceil(s.total/(s.itemsPerPage||1))));return qt({page:b,onPageChange(z){b.value=z},pageCount:T,siblingCount:m,disabled:t,showEdges:C}),(z,E)=>(r(),x(e(H),{as:z.as,"as-child":z.asChild},{default:d(()=>[F(z.$slots,"default",{page:e(b),pageCount:T.value})]),_:3},8,["as","as-child"]))}}),zt=St,It=D({__name:"PaginationFirst",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(u){const c=u,s=te();Z();const _=k(()=>s.page.value===1||s.disabled.value);return(m,t)=>(r(),x(e(H),Q(c,{"aria-label":"First Page",type:m.as==="button"?"button":void 0,disabled:_.value,onClick:t[0]||(t[0]=C=>!_.value&&e(s).onPageChange(1))}),{default:d(()=>[F(m.$slots,"default",{},()=>[t[1]||(t[1]=S("First page"))])]),_:3},16,["type","disabled"]))}}),Lt=It,Nt=D({__name:"PaginationLast",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(u){const c=u,s=te();Z();const _=k(()=>s.page.value===s.pageCount.value||s.disabled.value);return(m,t)=>(r(),x(e(H),Q(c,{"aria-label":"Last Page",type:m.as==="button"?"button":void 0,disabled:_.value,onClick:t[0]||(t[0]=C=>!_.value&&e(s).onPageChange(e(s).pageCount.value))}),{default:d(()=>[F(m.$slots,"default",{},()=>[t[1]||(t[1]=S("Last page"))])]),_:3},16,["type","disabled"]))}}),Tt=Nt;function K(u,c){const s=c-u+1;return Array.from({length:s},(_,m)=>m+u)}function jt(u){return u.map(c=>typeof c=="number"?{type:"page",value:c}:{type:"ellipsis"})}const ne="ellipsis";function Ft(u,c,s,_){const t=c,C=Math.max(u-s,1),b=Math.min(u+s,t);if(_){const z=Math.min(2*s+5,c)-2,E=C>3&&Math.abs(t-z-1+1)>2&&Math.abs(C-1)>2,V=b<t-2&&Math.abs(t-z)>2&&Math.abs(t-b)>2;if(!E&&V)return[...K(1,z),ne,t];if(E&&!V){const l=K(t-z+1,t);return[1,ne,...l]}if(E&&V){const l=K(C,b);return[1,ne,...l,ne,t]}return K(1,t)}else{const T=s*2+1;return c<T?K(1,t):u<=s+1?K(1,T):c-u<=s?K(c-T+1,t):K(C,b)}}var wt=D({__name:"PaginationList",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const c=u;Z();const s=te(),_=k(()=>jt(Ft(s.page.value,s.pageCount.value,s.siblingCount.value,s.showEdges.value)));return(m,t)=>(r(),x(e(H),Ye(Je(c)),{default:d(()=>[F(m.$slots,"default",{items:_.value})]),_:3},16))}}),Bt=wt,Dt=D({__name:"PaginationListItem",props:{value:{type:Number,required:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(u){const c=u;Z();const s=te(),_=k(()=>s.page.value===c.value),m=k(()=>s.disabled.value);return(t,C)=>(r(),x(e(H),Q(c,{"data-type":"page","aria-label":`Page ${t.value}`,"aria-current":_.value?"page":void 0,"data-selected":_.value?"true":void 0,disabled:m.value,type:t.as==="button"?"button":void 0,onClick:C[0]||(C[0]=b=>!m.value&&e(s).onPageChange(t.value))}),{default:d(()=>[F(t.$slots,"default",{},()=>[S(P(t.value),1)])]),_:3},16,["aria-label","aria-current","data-selected","disabled","type"]))}}),Et=Dt,Vt=D({__name:"PaginationNext",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(u){const c=u;Z();const s=te(),_=k(()=>s.page.value===s.pageCount.value||s.disabled.value);return(m,t)=>(r(),x(e(H),Q(c,{"aria-label":"Next Page",type:m.as==="button"?"button":void 0,disabled:_.value,onClick:t[0]||(t[0]=C=>!_.value&&e(s).onPageChange(e(s).page.value+1))}),{default:d(()=>[F(m.$slots,"default",{},()=>[t[1]||(t[1]=S("Next page"))])]),_:3},16,["type","disabled"]))}}),Mt=Vt,At=D({__name:"PaginationPrev",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(u){const c=u;Z();const s=te(),_=k(()=>s.page.value===1||s.disabled.value);return(m,t)=>(r(),x(e(H),Q(c,{"aria-label":"Previous Page",type:m.as==="button"?"button":void 0,disabled:_.value,onClick:t[0]||(t[0]=C=>!_.value&&e(s).onPageChange(e(s).page.value-1))}),{default:d(()=>[F(m.$slots,"default",{},()=>[t[1]||(t[1]=S("Prev page"))])]),_:3},16,["type","disabled"]))}}),Ut=At;const Ot=["title"],Kt={class:"h-1.5 w-14 shrink-0 overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},Gt={class:"text-sm font-medium tabular-nums"},Qt={key:1,class:"text-sm text-muted",title:"No executed runs yet"},Zt=D({__name:"PassRateIndicator",props:{rate:{}},setup(u){const c=u,s=k(()=>c.rate==null?null:Math.round(c.rate*100)),_=k(()=>s.value==null?"":s.value>=80?"bg-green-500":s.value>=50?"bg-amber-500":"bg-red-500");return(m,t)=>e(s)!=null?(r(),I("div",{key:0,class:"flex items-center gap-2",title:`${e(s)}% of executed runs passed`},[f("div",Kt,[f("div",{class:L([e(_),"h-full rounded-full transition-all"]),style:ce({width:`${e(s)}%`})},null,6)]),f("span",Gt,P(e(s))+"%",1)],8,Ot)):(r(),I("span",Qt,"—"))}}),Le=Object.assign(Zt,{__name:"PassRateIndicator"}),Ht={class:"rounded-lg border border-default bg-default text-sm"},Wt={class:"flex items-center justify-end px-3 py-1.5 border-b border-default bg-elevated"},Xt=["disabled","title"],Yt=["onClick"],Jt={class:"text-xs text-muted tabular-nums shrink-0"},ea={class:"w-24 sm:w-32 shrink-0 max-sm:hidden"},ta={class:"flex items-center gap-3 shrink-0"},aa=["title"],sa=["title"],la={key:0,class:"text-center py-8 text-muted"},na=D({__name:"ProjectTestCasesTree",props:{items:{},hasFilter:{type:Boolean}},setup(u){const c=u;function s(l){return(l.suitePath||"").split("").filter(Boolean)}function _(l){const n={passed:0,failed:0,skipped:0,flaky:0,didNotRun:0,total:0,cases:l.length};for(const v of l)n.passed+=v.passedRuns,n.failed+=v.failedRuns,n.skipped+=v.skippedRuns,n.flaky+=v.flakyRuns,n.didNotRun+=v.didNotRunRuns,n.total+=v.totalRuns;return n}const m=w(new Set),t=k(()=>m.value.size===0);function C(l){return c.hasFilter?!0:!m.value.has(l)}function b(l){if(c.hasFilter)return;const n=new Set(m.value);n.has(l)?n.delete(l):n.add(l),m.value=n}function T(){const l=new Set;for(const n of c.items){l.add(`file:${n.filePath}`);const v=s(n);for(let y=1;y<=v.length;y++)l.add(`group:${n.filePath}${v.slice(0,y).join("")}`)}return[...l]}function z(){m.value=new Set(T())}function E(){m.value=new Set}function V(l,n,v,y,h){const $=n.filter(R=>s(R).length===y.length),q=n.filter(R=>s(R).length>y.length),j=new Map;for(const R of q){const o=s(R)[y.length];j.has(o)||j.set(o,[]),j.get(o).push(R)}for(const[R,o]of j){const W=[...y,R],N=`group:${v}${W.join("")}`;l.push({kind:"group",depth:h,key:N,label:R,agg:_(o)}),C(N)&&V(l,o,v,W,h+1)}for(const R of $)l.push({kind:"case",depth:h,key:`case:${R.id}`,testCase:R})}const U=k(()=>{const l=[],n=new Map;for(const v of c.items){const y=v.filePath||"unknown";n.has(y)||n.set(y,[]),n.get(y).push(v)}for(const[v,y]of[...n.entries()].sort(([h],[$])=>h.localeCompare($))){const h=`file:${v}`;l.push({kind:"group",depth:0,key:h,label:v,agg:_(y)}),C(h)&&V(l,y,v,[],1)}return l});return(l,n)=>{const v=ee,y=ze,h=qe,$=Se,q=Le,j=Ie,R=G;return r(),I("div",Ht,[f("div",Wt,[f("button",{class:L(["flex items-center gap-1 text-xs transition-colors",u.hasFilter?"text-muted cursor-not-allowed opacity-50":"text-muted hover:text-default"]),disabled:u.hasFilter,title:u.hasFilter?"Clear filters to collapse/expand":e(t)?"Collapse all":"Expand all",onClick:n[0]||(n[0]=o=>e(t)?z():E())},[i(v,{name:e(t)?"i-lucide-fold-vertical":"i-lucide-unfold-vertical",class:"size-3.5"},null,8,["name"]),S(" "+P(e(t)?"Collapse all":"Expand all"),1)],10,Xt)]),(r(!0),I(A,null,oe(e(U),o=>(r(),I(A,{key:o.key},[o.kind==="group"?(r(),I("div",{key:0,class:L(["flex items-center gap-2 py-2 pr-3 border-b border-default last:border-b-0 select-none",[o.depth===0?"bg-elevated":"bg-default",!u.hasFilter&&"cursor-pointer"]]),style:ce({paddingLeft:`${o.depth*20+12}px`}),onClick:W=>b(o.key)},[i(v,{name:C(o.key)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3.5 text-muted shrink-0"},null,8,["name"]),i(v,{name:o.depth===0?"i-lucide-file-code-2":"i-lucide-folder-open",class:L(["size-4 shrink-0",o.depth===0?"text-blue-500":"text-amber-500"])},null,8,["name","class"]),f("span",{class:L(["font-medium truncate min-w-0",[o.depth===0?"text-default font-mono text-xs sm:text-sm":"text-muted"]])},P(o.label),3),f("span",Jt,P(o.agg.cases)+" "+P(o.agg.cases===1?"case":"cases"),1),n[1]||(n[1]=f("div",{class:"flex-1"},null,-1)),f("div",ea,[i(y,{passed:o.agg.passed,failed:o.agg.failed,skipped:o.agg.skipped,flaky:o.agg.flaky,"did-not-run":o.agg.didNotRun,total:o.agg.total},null,8,["passed","failed","skipped","flaky","did-not-run","total"])])],14,Yt)):(r(),I("div",{key:1,class:"flex flex-wrap items-center gap-x-2 gap-y-1 pr-3 py-1.5 border-b border-default last:border-b-0 hover:bg-gray-50 dark:hover:bg-gray-900/40 transition-colors",style:ce({paddingLeft:`${o.depth*20+12}px`})},[i(v,{name:"i-lucide-flask-conical",class:"size-3.5 text-muted shrink-0"}),i(h,{color:("testCaseCategoryColor"in l?l.testCaseCategoryColor:e(fe))(o.testCase.status),size:"xs",variant:"subtle",class:"capitalize shrink-0"},{default:d(()=>[S(P(("formatStatusLabel"in l?l.formatStatusLabel:e(pe))(o.testCase.status)),1)]),_:2},1032,["color"]),i($,{to:`/test-cases/${o.testCase.id}`,class:"text-sm text-primary hover:underline truncate flex-1 min-w-32",title:o.testCase.title},{default:d(()=>[S(P(o.testCase.title),1)]),_:2},1032,["to","title"]),f("div",ta,[i(q,{rate:o.testCase.passRate},null,8,["rate"]),f("span",{class:"text-xs text-muted tabular-nums max-sm:hidden",title:`${o.testCase.totalRuns} runs`},P(o.testCase.totalRuns)+"× ",9,aa),o.testCase.avgDuration!=null?(r(),x(j,{key:0,ms:o.testCase.avgDuration,class:"text-xs text-muted max-sm:hidden"},null,8,["ms"])):B("",!0),f("span",{class:"text-xs text-muted max-sm:hidden",title:("prettyDateFormat"in l?l.prettyDateFormat:e(ge))(o.testCase.lastRun)},P(("formatRelativeTime"in l?l.formatRelativeTime:e(me))(o.testCase.lastRun)),9,sa),i(R,{to:`/test-cases/${o.testCase.id}`,size:"xs",variant:"outline"},{default:d(()=>[...n[2]||(n[2]=[S("View",-1)])]),_:1},8,["to"])])],4))],64))),128)),e(U).length===0?(r(),I("div",la,[i(v,{name:"i-lucide-search-x",class:"size-6 mx-auto mb-2 text-gray-300 dark:text-gray-600"}),n[3]||(n[3]=f("p",{class:"text-sm"},"No test cases match your filters.",-1))])):B("",!0)])}}}),oa=Object.assign(na,{__name:"ProjectTestCasesTree"}),ia={slots:{root:"",list:"flex items-center gap-1",ellipsis:"pointer-events-none",label:"min-w-5 text-center",first:"",prev:"",item:"",next:"",last:""}},ra={__name:"UPagination",props:{as:{type:null,required:!1},firstIcon:{type:null,required:!1},prevIcon:{type:null,required:!1},nextIcon:{type:null,required:!1},lastIcon:{type:null,required:!1},ellipsisIcon:{type:null,required:!1},color:{type:null,required:!1,default:"neutral"},variant:{type:null,required:!1,default:"outline"},activeColor:{type:null,required:!1,default:"primary"},activeVariant:{type:null,required:!1,default:"solid"},showControls:{type:Boolean,required:!1,default:!0},size:{type:null,required:!1},to:{type:Function,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultPage:{type:Number,required:!1},disabled:{type:Boolean,required:!1},itemsPerPage:{type:Number,required:!1,default:10},page:{type:Number,required:!1},showEdges:{type:Boolean,required:!1,default:!1},siblingCount:{type:Number,required:!1,default:2},total:{type:Number,required:!1,default:0}},emits:["update:page"],setup(u,{emit:c}){const s=u,_=c,m=et(),t=tt("pagination",s),{dir:C}=at(),b=st(),T=lt(nt(t,"as","defaultPage","disabled","itemsPerPage","page","showEdges","siblingCount","total"),_),z=k(()=>t.firstIcon||(C.value==="rtl"?b.ui.icons.chevronDoubleRight:b.ui.icons.chevronDoubleLeft)),E=k(()=>t.prevIcon||(C.value==="rtl"?b.ui.icons.chevronRight:b.ui.icons.chevronLeft)),V=k(()=>t.nextIcon||(C.value==="rtl"?b.ui.icons.chevronLeft:b.ui.icons.chevronRight)),U=k(()=>t.lastIcon||(C.value==="rtl"?b.ui.icons.chevronDoubleLeft:b.ui.icons.chevronDoubleRight)),l=k(()=>ot({extend:ia,...b.ui?.pagination||{}})());return(n,v)=>(r(),x(e(zt),Q(e(T),{"data-slot":"root",class:l.value.root({class:[e(t).ui?.root,e(t).class]})}),{default:d(({page:y,pageCount:h})=>[i(e(Bt),{"data-slot":"list",class:L(l.value.list({class:e(t).ui?.list}))},{default:d(({items:$})=>[e(t).showControls||m.first?(r(),x(e(Lt),{key:0,"as-child":"","data-slot":"first",class:L(l.value.first({class:e(t).ui?.first}))},{default:d(()=>[F(n.$slots,"first",{},()=>[i(G,{color:e(t).color,variant:e(t).variant,size:e(t).size,icon:z.value,to:e(t).to?.(1)},null,8,["color","variant","size","icon","to"])])]),_:3},8,["class"])):B("",!0),e(t).showControls||m.prev?(r(),x(e(Ut),{key:1,"as-child":"","data-slot":"prev",class:L(l.value.prev({class:e(t).ui?.prev}))},{default:d(()=>[F(n.$slots,"prev",{},()=>[i(G,{color:e(t).color,variant:e(t).variant,size:e(t).size,icon:E.value,to:y>1?e(t).to?.(y-1):void 0},null,8,["color","variant","size","icon","to"])])]),_:2},1032,["class"])):B("",!0),(r(!0),I(A,null,oe($,(q,j)=>(r(),I(A,{key:j},[q.type==="page"?(r(),x(e(Et),{key:0,"as-child":"",value:q.value,"data-slot":"item",class:L(l.value.item({class:e(t).ui?.item}))},{default:d(()=>[F(n.$slots,"item",Q({ref_for:!0},{item:q,index:j,page:y,pageCount:h}),()=>[i(G,{color:y===q.value?e(t).activeColor:e(t).color,variant:y===q.value?e(t).activeVariant:e(t).variant,size:e(t).size,label:String(q.value),ui:{label:l.value.label()},to:e(t).to?.(q.value),square:""},null,8,["color","variant","size","label","ui","to"])])]),_:2},1032,["value","class"])):(r(),x(e($t),{key:1,"as-child":"","data-slot":"ellipsis",class:L(l.value.ellipsis({class:e(t).ui?.ellipsis}))},{default:d(()=>[F(n.$slots,"ellipsis",{ui:l.value},()=>[i(G,{as:"div",color:e(t).color,variant:e(t).variant,size:e(t).size,icon:e(t).ellipsisIcon||e(b).ui.icons.ellipsis},null,8,["color","variant","size","icon"])])]),_:3},8,["class"]))],64))),128)),e(t).showControls||m.next?(r(),x(e(Mt),{key:2,"as-child":"","data-slot":"next",class:L(l.value.next({class:e(t).ui?.next}))},{default:d(()=>[F(n.$slots,"next",{},()=>[i(G,{color:e(t).color,variant:e(t).variant,size:e(t).size,icon:V.value,to:y<h?e(t).to?.(y+1):void 0},null,8,["color","variant","size","icon","to"])])]),_:2},1032,["class"])):B("",!0),e(t).showControls||m.last?(r(),x(e(Tt),{key:3,"as-child":"","data-slot":"last",class:L(l.value.last({class:e(t).ui?.last}))},{default:d(()=>[F(n.$slots,"last",{},()=>[i(G,{color:e(t).color,variant:e(t).variant,size:e(t).size,icon:U.value,to:e(t).to?.(h)},null,8,["color","variant","size","icon","to"])])]),_:2},1032,["class"])):B("",!0)]),_:2},1032,["class"])]),_:3},16,["class"]))}},ua={class:"flex items-center rounded-md border border-default overflow-hidden"},da={class:"text-sm text-muted tabular-nums"},ca={class:"flex flex-wrap items-center gap-1"},pa=["aria-pressed","onClick"],fa={class:"mt-3 flex items-center justify-center gap-2"},ga={class:"hidden md:block overflow-x-auto"},ma={class:"min-w-0 space-y-0.5"},va={class:"flex items-center gap-1 text-xs text-muted"},_a={class:"text-sm tabular-nums"},ya=["title"],ba={class:"flex justify-end"},ha={class:"space-y-2 md:hidden"},xa={class:"flex items-start justify-between gap-2"},ka={class:"flex items-center gap-1 text-xs text-muted min-w-0"},Ca={class:"flex flex-wrap items-center justify-between gap-x-3 gap-y-1"},Pa={class:"text-xs text-muted tabular-nums"},Ra=["title"],$a={class:"mt-4 flex flex-wrap items-center justify-between gap-3"},qa={class:"flex flex-wrap items-center gap-3"},Sa={class:"text-sm text-muted tabular-nums"},za={class:"flex items-center gap-1.5"},Ia=1e3,$e=25,La=D({__name:"ProjectTestCasesTable",props:{projectId:{},projectName:{},syncQuery:{type:Boolean}},emits:["total"],setup(u,{expose:c,emit:s}){const _=u,m=s,t=it(),C=rt(),{treeView:b,setTreeView:T}=Ct("project-test-cases"),z=[{label:"10 / page",value:10},{label:"25 / page",value:25},{label:"50 / page",value:50},{label:"100 / page",value:100}],E=[{label:"Last 7 days",value:7},{label:"Last 30 days",value:30},{label:"Last 90 days",value:90},{label:"Last year",value:365},{label:"All time",value:0}],V=[{label:"Passed",value:"passed",color:"green"},{label:"Failed",value:"failed",color:"red"},{label:"Flaky",value:"flaky",color:"orange"},{label:"Skipped",value:"skipped",color:"gray"},{label:"Didn't run",value:"didnotrun",color:"amber"}],U=ut().public.demoMode?0:30,l=_.syncQuery?t.query:{},n=w(Math.max(1,Number(l.page)||1)),v=w(typeof l.q=="string"?l.q:""),y=w(v.value),h=w(typeof l.status=="string"?l.status.split(",").filter(Boolean):[]),$=w(typeof l.age=="string"&&l.age!==""?Math.max(0,Number(l.age)||0):U),q=w(typeof l.tags=="string"?l.tags:""),j=w(q.value),R=w(typeof l.sort=="string"?l.sort:"lastRun"),o=w(l.dir==="asc"?"asc":"desc"),W=Number(l.pageSize),N=w(z.some(p=>p.value===W)?W:$e);ae(y,Re(p=>{v.value=p.trim()},300)),ae(j,Re(p=>{q.value=p.trim()},300)),ae([v,h,q,$,R,o,N,b],()=>{n.value=1});const Ne=k(()=>({limit:b.value?Ia:N.value,offset:b.value?0:(n.value-1)*N.value,...v.value?{q:v.value}:{},...h.value.length>0?{status:h.value.join(",")}:{},...q.value?{tags:q.value}:{},maxAgeDays:$.value,sort:R.value,dir:o.value})),{data:X,status:ie,error:ve,refresh:re}=Pt(`/api/projects/${_.projectId}/test-cases`,{query:Ne},"$6hxagaRDEc");ae(()=>X.value?.total,p=>{p!=null&&m("total",p)},{immediate:!0}),_.syncQuery&&ae([v,h,q,$,R,o,n,N],()=>{C.replace({query:{...t.query,q:v.value||void 0,status:h.value.length>0?h.value.join(","):void 0,tags:q.value||void 0,age:$.value!==U?String($.value):void 0,sort:R.value!=="lastRun"?R.value:void 0,dir:o.value!=="desc"?o.value:void 0,page:n.value>1?String(n.value):void 0,pageSize:N.value!==$e?String(N.value):void 0}})});function Te(p){h.value=h.value.includes(p)?h.value.filter(g=>g!==p):[...h.value,p]}function je(p){R.value===p?o.value=o.value==="asc"?"desc":"asc":(R.value=p,o.value=p==="title"?"asc":"desc")}function Y(p,g){return()=>{const O=R.value===g,le=O?o.value==="asc"?"i-lucide-chevron-up":"i-lucide-chevron-down":"i-lucide-chevrons-up-down";return de("button",{type:"button",class:"flex items-center gap-1 font-semibold select-none cursor-pointer hover:text-highlighted transition-colors",onClick:()=>je(g)},[p,de(ee,{name:le,class:["shrink-0 size-3.5",!O&&"opacity-40"]})])}}const Fe=k(()=>[{accessorKey:"title",header:Y("Test case","title")},{accessorKey:"status",header:Y("Status","status")},{accessorKey:"totalRuns",header:Y("Runs","totalRuns")},{accessorKey:"passRate",header:Y("Pass rate","passRate")},{id:"results",header:"Results"},{accessorKey:"avgDuration",header:Y("Avg duration","avgDuration")},{accessorKey:"lastRun",header:Y("Last run","lastRun")},{id:"actions",header:()=>de("div",{class:"text-right"},"Actions")}]),J=k(()=>X.value?.items??[]),M=k(()=>X.value?.total??0),we=k(()=>M.value===0?0:(n.value-1)*N.value+1),Be=k(()=>b.value?J.value.length:Math.min(n.value*N.value,M.value)),ue=k(()=>v.value!==""||h.value.length>0),De=k(()=>ue.value||$.value!==0),Ee=k(()=>ie.value==="pending"&&!X.value);return c({refresh:re}),(p,g)=>{const O=G,le=dt,_e=ct,Ve=pt,Me=ft,Ae=gt,ye=mt,Ue=vt,Oe=oa,be=Se,Ke=bt,he=ht,xe=qe,ke=Le,Ce=ze,Pe=Ie,Ge=xt,Qe=ra,Ze=kt;return r(),x(Ze,{title:"Test cases",icon:"i-lucide-flask-conical",count:e(X)?.total,help:"project.test-cases"},{actions:d(()=>[i(O,{icon:"i-lucide-refresh-cw",size:"sm",color:"neutral",variant:"ghost","aria-label":"Refresh test cases",loading:e(ie)==="pending"&&!!e(X),onClick:g[0]||(g[0]=()=>e(re)())},null,8,["loading"])]),default:d(()=>[i(Ve,{class:"mb-4"},{start:d(()=>[f("div",ua,[f("button",{type:"button",class:L(["px-2 py-1 text-xs transition-colors",e(b)?"text-muted hover:bg-elevated/60":"bg-primary text-white dark:text-white"]),title:"Flat list",onClick:g[1]||(g[1]=a=>e(T)(!1))},[i(e(ee),{name:"i-lucide-list",class:"size-3.5"})],2),f("button",{type:"button",class:L(["px-2 py-1 text-xs transition-colors",e(b)?"bg-primary text-white dark:text-white":"text-muted hover:bg-elevated/60"]),title:"Tree view",onClick:g[2]||(g[2]=a=>e(T)(!0))},[i(e(ee),{name:"i-lucide-folder-tree",class:"size-3.5"})],2)]),f("span",da,P(e(M))+" "+P(e(M)===1?"case":"cases"),1)]),default:d(()=>[i(le,{modelValue:e(y),"onUpdate:modelValue":g[3]||(g[3]=a=>se(y)?y.value=a:null),placeholder:"Search title or file...",icon:"i-lucide-search",size:"sm",class:"min-w-48 max-sm:flex-1","aria-label":"Search test cases"},null,8,["modelValue"]),i(le,{modelValue:e(j),"onUpdate:modelValue":g[4]||(g[4]=a=>se(j)?j.value=a:null),placeholder:"Tags (comma-separated)…",icon:"i-lucide-tag",size:"sm",class:"min-w-44 max-sm:flex-1","aria-label":"Filter by tag",title:"Show only cases carrying every listed tag. A leading @ is optional."},null,8,["modelValue"]),f("div",ca,[(r(),I(A,null,oe(V,a=>f("button",{key:a.value,type:"button",class:L(["inline-flex items-center gap-1.5 px-2 py-1 rounded-md text-xs font-medium transition-colors whitespace-nowrap",e(h).includes(a.value)?a.color==="green"?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":a.color==="red"?"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400":a.color==="orange"?"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400":a.color==="amber"?"bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400":"bg-gray-200 text-gray-700 dark:bg-gray-700 dark:text-gray-300":"bg-gray-100 text-gray-500 dark:bg-gray-800 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-700"]),"aria-pressed":e(h).includes(a.value),onClick:Na=>Te(a.value)},[f("span",{class:L(["size-2 rounded-full shrink-0",a.color==="green"?"bg-green-500":a.color==="red"?"bg-red-500":a.color==="orange"?"bg-orange-500":a.color==="amber"?"bg-amber-500":"bg-gray-400"])},null,2),S(" "+P(a.label),1)],10,pa)),64))]),i(_e,{modelValue:e($),"onUpdate:modelValue":g[5]||(g[5]=a=>se($)?$.value=a:null),items:E,size:"sm",class:"w-36","aria-label":"Last run age filter"},null,8,["modelValue"])]),_:1}),e(Ee)?(r(),x(Me,{key:0,text:"Loading test cases..."})):e(ve)?(r(),x(Ae,{key:1,text:("errorMessage"in p?p.errorMessage:e(_t))(e(ve),"Failed to load test cases")},{action:d(()=>[i(O,{size:"sm",variant:"outline",onClick:g[6]||(g[6]=()=>e(re)())},{default:d(()=>[...g[11]||(g[11]=[S("Retry",-1)])]),_:1})]),_:1},8,["text"])):e(M)===0?(r(),I(A,{key:2},[e(De)?(r(),x(ye,{key:1,icon:"i-lucide-search-x",text:"No test cases match your filters."},{default:d(()=>[f("div",fa,[e($)!==0?(r(),x(O,{key:0,size:"sm",variant:"outline",onClick:g[7]||(g[7]=a=>$.value=0)},{default:d(()=>[...g[12]||(g[12]=[S("Show all time",-1)])]),_:1})):B("",!0),e(ue)?(r(),x(O,{key:1,size:"sm",variant:"ghost",onClick:g[8]||(g[8]=()=>{y.value="",v.value="",h.value=[]})},{default:d(()=>[...g[13]||(g[13]=[S(" Clear filters ",-1)])]),_:1})):B("",!0)])]),_:1})):(r(),x(ye,{key:0,icon:"i-lucide-flask-conical",text:"No test cases yet for this project."}))],64)):(r(),I("div",{key:3,class:L([{"opacity-60 pointer-events-none":e(ie)==="pending"},"transition-opacity"])},[e(b)?(r(),I(A,{key:0},[e(J).length<e(M)?(r(),x(Ue,{key:0,color:"warning",variant:"subtle",icon:"i-lucide-triangle-alert",class:"mb-3",title:`Showing the first ${e(J).length} of ${e(M)} cases — narrow the search or filters to see the rest.`},null,8,["title"])):B("",!0),i(Oe,{items:e(J),"has-filter":e(ue)},null,8,["items","has-filter"])],64)):(r(),I(A,{key:1},[f("div",ga,[i(Ge,{data:e(J),columns:e(Fe),ui:{base:"w-full table-fixed border-separate border-spacing-0 min-w-[56rem]",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0 [&>tr]:hover:bg-gray-50 dark:[&>tr]:hover:bg-gray-900/50",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"title-cell":d(({row:a})=>[f("div",ma,[i(be,{to:`/test-cases/${a.original.id}`,class:"text-sm font-medium text-primary hover:underline truncate block",title:a.original.title},{default:d(()=>[S(P(a.original.title),1)]),_:2},1032,["to","title"]),i(Ke,{tags:a.original.tags,meta:{owner:a.original.owner??void 0,priority:("toTestPriority"in p?p.toTestPriority:e(yt))(a.original.priority),feature:a.original.feature??void 0,link:a.original.link??void 0},"max-tags":4},null,8,["tags","meta"]),f("div",va,[i(e(ee),{name:"i-lucide-file-code",class:"size-3 shrink-0"}),i(he,{"file-path":a.original.filePath,"project-key":u.projectId,"project-name":u.projectName,class:"min-w-0"},null,8,["file-path","project-key","project-name"])])])]),"status-cell":d(({row:a})=>[i(xe,{color:("testCaseCategoryColor"in p?p.testCaseCategoryColor:e(fe))(a.original.status),variant:"subtle",size:"sm",class:"capitalize"},{default:d(()=>[S(P(("formatStatusLabel"in p?p.formatStatusLabel:e(pe))(a.original.status)),1)]),_:2},1032,["color"])]),"totalRuns-cell":d(({row:a})=>[f("span",_a,P(a.original.totalRuns),1)]),"passRate-cell":d(({row:a})=>[i(ke,{rate:a.original.passRate},null,8,["rate"])]),"results-cell":d(({row:a})=>[i(Ce,{passed:a.original.passedRuns,failed:a.original.failedRuns,skipped:a.original.skippedRuns,flaky:a.original.flakyRuns,"did-not-run":a.original.didNotRunRuns,total:a.original.totalRuns},null,8,["passed","failed","skipped","flaky","did-not-run","total"])]),"avgDuration-cell":d(({row:a})=>[i(Pe,{ms:a.original.avgDuration,class:"text-sm text-muted"},null,8,["ms"])]),"lastRun-cell":d(({row:a})=>[f("span",{class:"text-sm text-muted",title:("prettyDateFormat"in p?p.prettyDateFormat:e(ge))(a.original.lastRun)},P(a.original.lastRun!=null?("formatRelativeTime"in p?p.formatRelativeTime:e(me))(a.original.lastRun):"—"),9,ya)]),"actions-cell":d(({row:a})=>[f("div",ba,[i(O,{to:`/test-cases/${a.original.id}`,size:"sm",variant:"outline","trailing-icon":"i-lucide-arrow-right"},{default:d(()=>[...g[14]||(g[14]=[S(" View ",-1)])]),_:1},8,["to"])])]),_:1},8,["data","columns"])]),f("div",ha,[(r(!0),I(A,null,oe(e(J),a=>(r(),I("div",{key:a.id,class:"rounded-lg border border-default p-3 space-y-2"},[f("div",xa,[i(be,{to:`/test-cases/${a.id}`,class:"text-sm font-medium text-primary hover:underline min-w-0 truncate",title:a.title},{default:d(()=>[S(P(a.title),1)]),_:2},1032,["to","title"]),i(xe,{color:("testCaseCategoryColor"in p?p.testCaseCategoryColor:e(fe))(a.status),variant:"subtle",size:"sm",class:"capitalize shrink-0"},{default:d(()=>[S(P(("formatStatusLabel"in p?p.formatStatusLabel:e(pe))(a.status)),1)]),_:2},1032,["color"])]),f("div",ka,[i(e(ee),{name:"i-lucide-file-code",class:"size-3 shrink-0"}),i(he,{"file-path":a.filePath,"project-key":u.projectId,"project-name":u.projectName,class:"min-w-0"},null,8,["file-path","project-key","project-name"])]),i(Ce,{passed:a.passedRuns,failed:a.failedRuns,skipped:a.skippedRuns,flaky:a.flakyRuns,"did-not-run":a.didNotRunRuns,total:a.totalRuns},null,8,["passed","failed","skipped","flaky","did-not-run","total"]),f("div",Ca,[i(ke,{rate:a.passRate},null,8,["rate"]),f("span",Pa,P(a.totalRuns)+" runs",1),a.avgDuration!=null?(r(),x(Pe,{key:0,ms:a.avgDuration,class:"text-xs text-muted"},null,8,["ms"])):B("",!0),f("span",{class:"text-xs text-muted",title:("prettyDateFormat"in p?p.prettyDateFormat:e(ge))(a.lastRun)},P(a.lastRun!=null?("formatRelativeTime"in p?p.formatRelativeTime:e(me))(a.lastRun):"—"),9,Ra)])]))),128))]),f("div",$a,[f("div",qa,[f("span",Sa,"Showing "+P(e(we))+"–"+P(e(Be))+" of "+P(e(M)),1),f("div",za,[g[15]||(g[15]=f("span",{class:"text-sm text-muted"},"Rows per page",-1)),i(_e,{modelValue:e(N),"onUpdate:modelValue":g[9]||(g[9]=a=>se(N)?N.value=a:null),items:z,size:"sm",class:"w-28","aria-label":"Rows per page"},null,8,["modelValue"])])]),e(M)>e(N)?(r(),x(Qe,{key:0,page:e(n),"onUpdate:page":g[10]||(g[10]=a=>se(n)?n.value=a:null),total:e(M),"items-per-page":e(N),size:"sm"},null,8,["page","total","items-per-page"])):B("",!0)])],64))],2))]),_:1},8,["count"])}}}),Ha=Object.assign(La,{__name:"ProjectTestCasesTable"});export{Ha as _};
|
|
1
|
+
import{d as B,U as Z,o as r,f as x,g as d,V as F,m as S,W as Q,k as e,X as H,Y as He,Z as Je,h as k,$ as We,a0 as Xe,a1 as Ye,t as P,c as I,i as f,R as ce,q as L,j as i,p as ee,F as A,y as oe,s as qe,G as Se,v as E,_ as G,r as w,a2 as et,a3 as tt,a4 as at,a5 as st,a6 as lt,a7 as nt,a8 as ot,u as it,a as rt,A as ut,J as ae,E as dt,l as se,a9 as Re,aa as de}from"./DCFbQvIN.js";import{_ as ct}from"./BrxtP_cN.js";import{_ as pt}from"./Dsvu7YJT.js";import{_ as ft}from"./DdH3op4b.js";import{_ as gt}from"./Dk9nD32g.js";import{_ as mt}from"./D_eDAIsT.js";import{_ as vt}from"./DkT2nCqn.js";import{_ as ze}from"./CtstIQSh.js";import{_ as Ie}from"./DfSBKzrC.js";import{k as pe,l as fe,p as ge,f as me,e as _t,t as yt}from"./BAKUqW95.js";import{_ as bt}from"./IPePdbzl.js";import{_ as ht}from"./LHoUGrfi.js";import{_ as xt}from"./CTP8Pw0-.js";import{_ as kt}from"./B3Fsod9X.js";import{u as Ct}from"./lGC893pn.js";import{u as Pt}from"./E-_n_6vi.js";var Rt=B({__name:"PaginationEllipsis",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const c=u;return Z(),(s,_)=>(r(),x(e(H),Q(c,{"data-type":"ellipsis"}),{default:d(()=>[F(s.$slots,"default",{},()=>[_[0]||(_[0]=S("…"))])]),_:3},16))}}),$t=Rt;const[te,qt]=We("PaginationRoot");var St=B({__name:"PaginationRoot",props:{page:{type:Number,required:!1},defaultPage:{type:Number,required:!1,default:1},itemsPerPage:{type:Number,required:!0},total:{type:Number,required:!1,default:0},siblingCount:{type:Number,required:!1,default:2},disabled:{type:Boolean,required:!1},showEdges:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"nav"}},emits:["update:page"],setup(u,{emit:c}){const s=u,_=c,{siblingCount:m,disabled:t,showEdges:C}=He(s);Z();const b=Je(s,"page",_,{defaultValue:s.defaultPage,passive:s.page===void 0}),T=k(()=>Math.max(1,Math.ceil(s.total/(s.itemsPerPage||1))));return qt({page:b,onPageChange(z){b.value=z},pageCount:T,siblingCount:m,disabled:t,showEdges:C}),(z,V)=>(r(),x(e(H),{as:z.as,"as-child":z.asChild},{default:d(()=>[F(z.$slots,"default",{page:e(b),pageCount:T.value})]),_:3},8,["as","as-child"]))}}),zt=St,It=B({__name:"PaginationFirst",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(u){const c=u,s=te();Z();const _=k(()=>s.page.value===1||s.disabled.value);return(m,t)=>(r(),x(e(H),Q(c,{"aria-label":"First Page",type:m.as==="button"?"button":void 0,disabled:_.value,onClick:t[0]||(t[0]=C=>!_.value&&e(s).onPageChange(1))}),{default:d(()=>[F(m.$slots,"default",{},()=>[t[1]||(t[1]=S("First page"))])]),_:3},16,["type","disabled"]))}}),Lt=It,Nt=B({__name:"PaginationLast",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(u){const c=u,s=te();Z();const _=k(()=>s.page.value===s.pageCount.value||s.disabled.value);return(m,t)=>(r(),x(e(H),Q(c,{"aria-label":"Last Page",type:m.as==="button"?"button":void 0,disabled:_.value,onClick:t[0]||(t[0]=C=>!_.value&&e(s).onPageChange(e(s).pageCount.value))}),{default:d(()=>[F(m.$slots,"default",{},()=>[t[1]||(t[1]=S("Last page"))])]),_:3},16,["type","disabled"]))}}),Tt=Nt;function K(u,c){const s=c-u+1;return Array.from({length:s},(_,m)=>m+u)}function jt(u){return u.map(c=>typeof c=="number"?{type:"page",value:c}:{type:"ellipsis"})}const ne="ellipsis";function Ft(u,c,s,_){const t=c,C=Math.max(u-s,1),b=Math.min(u+s,t);if(_){const z=Math.min(2*s+5,c)-2,V=C>3&&Math.abs(t-z-1+1)>2&&Math.abs(C-1)>2,D=b<t-2&&Math.abs(t-z)>2&&Math.abs(t-b)>2;if(!V&&D)return[...K(1,z),ne,t];if(V&&!D){const l=K(t-z+1,t);return[1,ne,...l]}if(V&&D){const l=K(C,b);return[1,ne,...l,ne,t]}return K(1,t)}else{const T=s*2+1;return c<T?K(1,t):u<=s+1?K(1,T):c-u<=s?K(c-T+1,t):K(C,b)}}var wt=B({__name:"PaginationList",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const c=u;Z();const s=te(),_=k(()=>jt(Ft(s.page.value,s.pageCount.value,s.siblingCount.value,s.showEdges.value)));return(m,t)=>(r(),x(e(H),Xe(Ye(c)),{default:d(()=>[F(m.$slots,"default",{items:_.value})]),_:3},16))}}),Et=wt,Bt=B({__name:"PaginationListItem",props:{value:{type:Number,required:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(u){const c=u;Z();const s=te(),_=k(()=>s.page.value===c.value),m=k(()=>s.disabled.value);return(t,C)=>(r(),x(e(H),Q(c,{"data-type":"page","aria-label":`Page ${t.value}`,"aria-current":_.value?"page":void 0,"data-selected":_.value?"true":void 0,disabled:m.value,type:t.as==="button"?"button":void 0,onClick:C[0]||(C[0]=b=>!m.value&&e(s).onPageChange(t.value))}),{default:d(()=>[F(t.$slots,"default",{},()=>[S(P(t.value),1)])]),_:3},16,["aria-label","aria-current","data-selected","disabled","type"]))}}),Vt=Bt,Dt=B({__name:"PaginationNext",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(u){const c=u;Z();const s=te(),_=k(()=>s.page.value===s.pageCount.value||s.disabled.value);return(m,t)=>(r(),x(e(H),Q(c,{"aria-label":"Next Page",type:m.as==="button"?"button":void 0,disabled:_.value,onClick:t[0]||(t[0]=C=>!_.value&&e(s).onPageChange(e(s).page.value+1))}),{default:d(()=>[F(m.$slots,"default",{},()=>[t[1]||(t[1]=S("Next page"))])]),_:3},16,["type","disabled"]))}}),Mt=Dt,At=B({__name:"PaginationPrev",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(u){const c=u;Z();const s=te(),_=k(()=>s.page.value===1||s.disabled.value);return(m,t)=>(r(),x(e(H),Q(c,{"aria-label":"Previous Page",type:m.as==="button"?"button":void 0,disabled:_.value,onClick:t[0]||(t[0]=C=>!_.value&&e(s).onPageChange(e(s).page.value-1))}),{default:d(()=>[F(m.$slots,"default",{},()=>[t[1]||(t[1]=S("Prev page"))])]),_:3},16,["type","disabled"]))}}),Ut=At;const Ot=["title"],Kt={class:"h-1.5 w-14 shrink-0 overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},Gt={class:"text-sm font-medium tabular-nums"},Qt={key:1,class:"text-sm text-muted",title:"No executed runs yet"},Zt=B({__name:"PassRateIndicator",props:{rate:{}},setup(u){const c=u,s=k(()=>c.rate==null?null:Math.round(c.rate*100)),_=k(()=>s.value==null?"":s.value>=80?"bg-green-500":s.value>=50?"bg-amber-500":"bg-red-500");return(m,t)=>e(s)!=null?(r(),I("div",{key:0,class:"flex items-center gap-2",title:`${e(s)}% of executed runs passed`},[f("div",Kt,[f("div",{class:L([e(_),"h-full rounded-full transition-all"]),style:ce({width:`${e(s)}%`})},null,6)]),f("span",Gt,P(e(s))+"%",1)],8,Ot)):(r(),I("span",Qt,"—"))}}),Le=Object.assign(Zt,{__name:"PassRateIndicator"}),Ht={class:"rounded-lg border border-default bg-default text-sm"},Jt={class:"flex items-center justify-end px-3 py-1.5 border-b border-default bg-elevated"},Wt=["disabled","title"],Xt=["onClick"],Yt={class:"text-xs text-muted tabular-nums shrink-0"},ea={class:"w-24 sm:w-32 shrink-0 max-sm:hidden"},ta={class:"flex items-center gap-3 shrink-0"},aa=["title"],sa=["title"],la={key:0,class:"text-center py-8 text-muted"},na=B({__name:"ProjectTestCasesTree",props:{items:{},hasFilter:{type:Boolean}},setup(u){const c=u;function s(l){return(l.suitePath||"").split("").filter(Boolean)}function _(l){const n={passed:0,failed:0,skipped:0,flaky:0,didNotRun:0,total:0,cases:l.length};for(const v of l)n.passed+=v.passedRuns,n.failed+=v.failedRuns,n.skipped+=v.skippedRuns,n.flaky+=v.flakyRuns,n.didNotRun+=v.didNotRunRuns,n.total+=v.totalRuns;return n}const m=w(new Set),t=k(()=>m.value.size===0);function C(l){return c.hasFilter?!0:!m.value.has(l)}function b(l){if(c.hasFilter)return;const n=new Set(m.value);n.has(l)?n.delete(l):n.add(l),m.value=n}function T(){const l=new Set;for(const n of c.items){l.add(`file:${n.filePath}`);const v=s(n);for(let y=1;y<=v.length;y++)l.add(`group:${n.filePath}${v.slice(0,y).join("")}`)}return[...l]}function z(){m.value=new Set(T())}function V(){m.value=new Set}function D(l,n,v,y,h){const $=n.filter(R=>s(R).length===y.length),q=n.filter(R=>s(R).length>y.length),j=new Map;for(const R of q){const o=s(R)[y.length];j.has(o)||j.set(o,[]),j.get(o).push(R)}for(const[R,o]of j){const J=[...y,R],N=`group:${v}${J.join("")}`;l.push({kind:"group",depth:h,key:N,label:R,agg:_(o)}),C(N)&&D(l,o,v,J,h+1)}for(const R of $)l.push({kind:"case",depth:h,key:`case:${R.id}`,testCase:R})}const U=k(()=>{const l=[],n=new Map;for(const v of c.items){const y=v.filePath||"unknown";n.has(y)||n.set(y,[]),n.get(y).push(v)}for(const[v,y]of[...n.entries()].sort(([h],[$])=>h.localeCompare($))){const h=`file:${v}`;l.push({kind:"group",depth:0,key:h,label:v,agg:_(y)}),C(h)&&D(l,y,v,[],1)}return l});return(l,n)=>{const v=ee,y=ze,h=qe,$=Se,q=Le,j=Ie,R=G;return r(),I("div",Ht,[f("div",Jt,[f("button",{class:L(["flex items-center gap-1 text-xs transition-colors",u.hasFilter?"text-muted cursor-not-allowed opacity-50":"text-muted hover:text-default"]),disabled:u.hasFilter,title:u.hasFilter?"Clear filters to collapse/expand":e(t)?"Collapse all":"Expand all",onClick:n[0]||(n[0]=o=>e(t)?z():V())},[i(v,{name:e(t)?"i-lucide-fold-vertical":"i-lucide-unfold-vertical",class:"size-3.5"},null,8,["name"]),S(" "+P(e(t)?"Collapse all":"Expand all"),1)],10,Wt)]),(r(!0),I(A,null,oe(e(U),o=>(r(),I(A,{key:o.key},[o.kind==="group"?(r(),I("div",{key:0,class:L(["flex items-center gap-2 py-2 pr-3 border-b border-default last:border-b-0 select-none",[o.depth===0?"bg-elevated":"bg-default",!u.hasFilter&&"cursor-pointer"]]),style:ce({paddingLeft:`${o.depth*20+12}px`}),onClick:J=>b(o.key)},[i(v,{name:C(o.key)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3.5 text-muted shrink-0"},null,8,["name"]),i(v,{name:o.depth===0?"i-lucide-file-code-2":"i-lucide-folder-open",class:L(["size-4 shrink-0",o.depth===0?"text-blue-500":"text-amber-500"])},null,8,["name","class"]),f("span",{class:L(["font-medium truncate min-w-0",[o.depth===0?"text-default font-mono text-xs sm:text-sm":"text-muted"]])},P(o.label),3),f("span",Yt,P(o.agg.cases)+" "+P(o.agg.cases===1?"case":"cases"),1),n[1]||(n[1]=f("div",{class:"flex-1"},null,-1)),f("div",ea,[i(y,{passed:o.agg.passed,failed:o.agg.failed,skipped:o.agg.skipped,flaky:o.agg.flaky,"did-not-run":o.agg.didNotRun,total:o.agg.total},null,8,["passed","failed","skipped","flaky","did-not-run","total"])])],14,Xt)):(r(),I("div",{key:1,class:"flex flex-wrap items-center gap-x-2 gap-y-1 pr-3 py-1.5 border-b border-default last:border-b-0 hover:bg-gray-50 dark:hover:bg-gray-900/40 transition-colors",style:ce({paddingLeft:`${o.depth*20+12}px`})},[i(v,{name:"i-lucide-flask-conical",class:"size-3.5 text-muted shrink-0"}),i(h,{color:("testCaseCategoryColor"in l?l.testCaseCategoryColor:e(fe))(o.testCase.status),size:"xs",variant:"subtle",class:"capitalize shrink-0"},{default:d(()=>[S(P(("formatStatusLabel"in l?l.formatStatusLabel:e(pe))(o.testCase.status)),1)]),_:2},1032,["color"]),i($,{to:`/test-cases/${o.testCase.id}`,class:"text-sm text-primary hover:underline truncate flex-1 min-w-32",title:o.testCase.title},{default:d(()=>[S(P(o.testCase.title),1)]),_:2},1032,["to","title"]),f("div",ta,[i(q,{rate:o.testCase.passRate},null,8,["rate"]),f("span",{class:"text-xs text-muted tabular-nums max-sm:hidden",title:`${o.testCase.totalRuns} runs`},P(o.testCase.totalRuns)+"× ",9,aa),o.testCase.avgDuration!=null?(r(),x(j,{key:0,ms:o.testCase.avgDuration,class:"text-xs text-muted max-sm:hidden"},null,8,["ms"])):E("",!0),f("span",{class:"text-xs text-muted max-sm:hidden",title:("prettyDateFormat"in l?l.prettyDateFormat:e(ge))(o.testCase.lastRun)},P(("formatRelativeTime"in l?l.formatRelativeTime:e(me))(o.testCase.lastRun)),9,sa),i(R,{to:`/test-cases/${o.testCase.id}`,size:"xs",variant:"outline"},{default:d(()=>[...n[2]||(n[2]=[S("View",-1)])]),_:1},8,["to"])])],4))],64))),128)),e(U).length===0?(r(),I("div",la,[i(v,{name:"i-lucide-search-x",class:"size-6 mx-auto mb-2 text-gray-300 dark:text-gray-600"}),n[3]||(n[3]=f("p",{class:"text-sm"},"No test cases match your filters.",-1))])):E("",!0)])}}}),oa=Object.assign(na,{__name:"ProjectTestCasesTree"}),ia={slots:{root:"",list:"flex items-center gap-1",ellipsis:"pointer-events-none",label:"min-w-5 text-center",first:"",prev:"",item:"",next:"",last:""}},ra={__name:"UPagination",props:{as:{type:null,required:!1},firstIcon:{type:null,required:!1},prevIcon:{type:null,required:!1},nextIcon:{type:null,required:!1},lastIcon:{type:null,required:!1},ellipsisIcon:{type:null,required:!1},color:{type:null,required:!1,default:"neutral"},variant:{type:null,required:!1,default:"outline"},activeColor:{type:null,required:!1,default:"primary"},activeVariant:{type:null,required:!1,default:"solid"},showControls:{type:Boolean,required:!1,default:!0},size:{type:null,required:!1},to:{type:Function,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultPage:{type:Number,required:!1},disabled:{type:Boolean,required:!1},itemsPerPage:{type:Number,required:!1,default:10},page:{type:Number,required:!1},showEdges:{type:Boolean,required:!1,default:!1},siblingCount:{type:Number,required:!1,default:2},total:{type:Number,required:!1,default:0}},emits:["update:page"],setup(u,{emit:c}){const s=u,_=c,m=et(),t=tt("pagination",s),{dir:C}=at(),b=st(),T=lt(nt(t,"as","defaultPage","disabled","itemsPerPage","page","showEdges","siblingCount","total"),_),z=k(()=>t.firstIcon||(C.value==="rtl"?b.ui.icons.chevronDoubleRight:b.ui.icons.chevronDoubleLeft)),V=k(()=>t.prevIcon||(C.value==="rtl"?b.ui.icons.chevronRight:b.ui.icons.chevronLeft)),D=k(()=>t.nextIcon||(C.value==="rtl"?b.ui.icons.chevronLeft:b.ui.icons.chevronRight)),U=k(()=>t.lastIcon||(C.value==="rtl"?b.ui.icons.chevronDoubleLeft:b.ui.icons.chevronDoubleRight)),l=k(()=>ot({extend:ia,...b.ui?.pagination||{}})());return(n,v)=>(r(),x(e(zt),Q(e(T),{"data-slot":"root",class:l.value.root({class:[e(t).ui?.root,e(t).class]})}),{default:d(({page:y,pageCount:h})=>[i(e(Et),{"data-slot":"list",class:L(l.value.list({class:e(t).ui?.list}))},{default:d(({items:$})=>[e(t).showControls||m.first?(r(),x(e(Lt),{key:0,"as-child":"","data-slot":"first",class:L(l.value.first({class:e(t).ui?.first}))},{default:d(()=>[F(n.$slots,"first",{},()=>[i(G,{color:e(t).color,variant:e(t).variant,size:e(t).size,icon:z.value,to:e(t).to?.(1)},null,8,["color","variant","size","icon","to"])])]),_:3},8,["class"])):E("",!0),e(t).showControls||m.prev?(r(),x(e(Ut),{key:1,"as-child":"","data-slot":"prev",class:L(l.value.prev({class:e(t).ui?.prev}))},{default:d(()=>[F(n.$slots,"prev",{},()=>[i(G,{color:e(t).color,variant:e(t).variant,size:e(t).size,icon:V.value,to:y>1?e(t).to?.(y-1):void 0},null,8,["color","variant","size","icon","to"])])]),_:2},1032,["class"])):E("",!0),(r(!0),I(A,null,oe($,(q,j)=>(r(),I(A,{key:j},[q.type==="page"?(r(),x(e(Vt),{key:0,"as-child":"",value:q.value,"data-slot":"item",class:L(l.value.item({class:e(t).ui?.item}))},{default:d(()=>[F(n.$slots,"item",Q({ref_for:!0},{item:q,index:j,page:y,pageCount:h}),()=>[i(G,{color:y===q.value?e(t).activeColor:e(t).color,variant:y===q.value?e(t).activeVariant:e(t).variant,size:e(t).size,label:String(q.value),ui:{label:l.value.label()},to:e(t).to?.(q.value),square:""},null,8,["color","variant","size","label","ui","to"])])]),_:2},1032,["value","class"])):(r(),x(e($t),{key:1,"as-child":"","data-slot":"ellipsis",class:L(l.value.ellipsis({class:e(t).ui?.ellipsis}))},{default:d(()=>[F(n.$slots,"ellipsis",{ui:l.value},()=>[i(G,{as:"div",color:e(t).color,variant:e(t).variant,size:e(t).size,icon:e(t).ellipsisIcon||e(b).ui.icons.ellipsis},null,8,["color","variant","size","icon"])])]),_:3},8,["class"]))],64))),128)),e(t).showControls||m.next?(r(),x(e(Mt),{key:2,"as-child":"","data-slot":"next",class:L(l.value.next({class:e(t).ui?.next}))},{default:d(()=>[F(n.$slots,"next",{},()=>[i(G,{color:e(t).color,variant:e(t).variant,size:e(t).size,icon:D.value,to:y<h?e(t).to?.(y+1):void 0},null,8,["color","variant","size","icon","to"])])]),_:2},1032,["class"])):E("",!0),e(t).showControls||m.last?(r(),x(e(Tt),{key:3,"as-child":"","data-slot":"last",class:L(l.value.last({class:e(t).ui?.last}))},{default:d(()=>[F(n.$slots,"last",{},()=>[i(G,{color:e(t).color,variant:e(t).variant,size:e(t).size,icon:U.value,to:e(t).to?.(h)},null,8,["color","variant","size","icon","to"])])]),_:2},1032,["class"])):E("",!0)]),_:2},1032,["class"])]),_:3},16,["class"]))}},ua={class:"flex items-center rounded-md border border-default overflow-hidden"},da={class:"text-sm text-muted tabular-nums"},ca={class:"flex flex-wrap items-center gap-1"},pa=["aria-pressed","onClick"],fa={class:"mt-3 flex items-center justify-center gap-2"},ga={class:"hidden md:block overflow-x-auto"},ma={class:"min-w-0 space-y-0.5"},va={class:"flex items-center gap-1 text-xs text-muted"},_a={class:"text-sm tabular-nums"},ya=["title"],ba={class:"flex justify-end"},ha={class:"space-y-2 md:hidden"},xa={class:"flex items-start justify-between gap-2"},ka={class:"flex items-center gap-1 text-xs text-muted min-w-0"},Ca={class:"flex flex-wrap items-center justify-between gap-x-3 gap-y-1"},Pa={class:"text-xs text-muted tabular-nums"},Ra=["title"],$a={class:"mt-4 flex flex-wrap items-center justify-between gap-3"},qa={class:"flex flex-wrap items-center gap-3"},Sa={class:"text-sm text-muted tabular-nums"},za={class:"flex items-center gap-1.5"},Ia=1e3,$e=25,La=B({__name:"ProjectTestCasesTable",props:{projectId:{},projectName:{},syncQuery:{type:Boolean}},emits:["total"],setup(u,{expose:c,emit:s}){const _=u,m=s,t=it(),C=rt(),{treeView:b,setTreeView:T}=Ct("project-test-cases"),z=[{label:"10 / page",value:10},{label:"25 / page",value:25},{label:"50 / page",value:50},{label:"100 / page",value:100}],V=[{label:"Last 7 days",value:7},{label:"Last 30 days",value:30},{label:"Last 90 days",value:90},{label:"Last year",value:365},{label:"All time",value:0}],D=[{label:"Passed",value:"passed",color:"green"},{label:"Failed",value:"failed",color:"red"},{label:"Flaky",value:"flaky",color:"orange"},{label:"Skipped",value:"skipped",color:"gray"},{label:"Didn't run",value:"didnotrun",color:"amber"}],U=ut().public.demoMode?0:30,l=_.syncQuery?t.query:{},n=w(Math.max(1,Number(l.page)||1)),v=w(typeof l.q=="string"?l.q:""),y=w(v.value),h=w(typeof l.status=="string"?l.status.split(",").filter(Boolean):[]),$=w(typeof l.age=="string"&&l.age!==""?Math.max(0,Number(l.age)||0):U),q=w(typeof l.tags=="string"?l.tags:""),j=w(q.value),R=w(typeof l.sort=="string"?l.sort:"lastRun"),o=w(l.dir==="asc"?"asc":"desc"),J=Number(l.pageSize),N=w(z.some(p=>p.value===J)?J:$e);ae(y,Re(p=>{v.value=p.trim()},300)),ae(j,Re(p=>{q.value=p.trim()},300)),ae([v,h,q,$,R,o,N,b],()=>{n.value=1});const Ne=k(()=>({limit:b.value?Ia:N.value,offset:b.value?0:(n.value-1)*N.value,...v.value?{q:v.value}:{},...h.value.length>0?{status:h.value.join(",")}:{},...q.value?{tags:q.value}:{},maxAgeDays:$.value,sort:R.value,dir:o.value})),{data:W,status:ie,error:ve,refresh:re}=Pt(`/api/projects/${_.projectId}/test-cases`,{query:Ne},"$6hxagaRDEc");ae(()=>W.value?.total,p=>{p!=null&&m("total",p)},{immediate:!0}),_.syncQuery&&ae([v,h,q,$,R,o,n,N],()=>{C.replace({query:{...t.query,q:v.value||void 0,status:h.value.length>0?h.value.join(","):void 0,tags:q.value||void 0,age:$.value!==U?String($.value):void 0,sort:R.value!=="lastRun"?R.value:void 0,dir:o.value!=="desc"?o.value:void 0,page:n.value>1?String(n.value):void 0,pageSize:N.value!==$e?String(N.value):void 0}})});function Te(p){h.value=h.value.includes(p)?h.value.filter(g=>g!==p):[...h.value,p]}function je(p){R.value===p?o.value=o.value==="asc"?"desc":"asc":(R.value=p,o.value=p==="title"?"asc":"desc")}function X(p,g){return()=>{const O=R.value===g,le=O?o.value==="asc"?"i-lucide-chevron-up":"i-lucide-chevron-down":"i-lucide-chevrons-up-down";return de("button",{type:"button",class:"flex items-center gap-1 font-semibold select-none cursor-pointer hover:text-highlighted transition-colors",onClick:()=>je(g)},[p,de(ee,{name:le,class:["shrink-0 size-3.5",!O&&"opacity-40"]})])}}const Fe=k(()=>[{accessorKey:"title",header:X("Test case","title")},{accessorKey:"status",header:X("Status","status")},{accessorKey:"totalRuns",header:X("Runs","totalRuns")},{accessorKey:"passRate",header:X("Pass rate","passRate")},{id:"results",header:"Results"},{accessorKey:"avgDuration",header:X("Avg duration","avgDuration")},{accessorKey:"lastRun",header:X("Last run","lastRun")},{id:"actions",header:()=>de("div",{class:"text-right"},"Actions")}]),Y=k(()=>W.value?.items??[]),M=k(()=>W.value?.total??0),we=k(()=>M.value===0?0:(n.value-1)*N.value+1),Ee=k(()=>b.value?Y.value.length:Math.min(n.value*N.value,M.value)),ue=k(()=>v.value!==""||h.value.length>0),Be=k(()=>ue.value||$.value!==0),Ve=k(()=>ie.value==="pending"&&!W.value);return c({refresh:re}),(p,g)=>{const O=G,le=dt,_e=ct,De=pt,Me=ft,Ae=gt,ye=mt,Ue=vt,Oe=oa,be=Se,Ke=bt,he=ht,xe=qe,ke=Le,Ce=ze,Pe=Ie,Ge=xt,Qe=ra,Ze=kt;return r(),x(Ze,{title:"Test cases",icon:"i-lucide-flask-conical",count:e(W)?.total,help:"project.test-cases"},{actions:d(()=>[i(O,{icon:"i-lucide-refresh-cw",size:"sm",color:"neutral",variant:"ghost","aria-label":"Refresh test cases",loading:e(ie)==="pending"&&!!e(W),onClick:g[0]||(g[0]=()=>e(re)())},null,8,["loading"])]),default:d(()=>[i(De,{class:"mb-4"},{start:d(()=>[f("div",ua,[f("button",{type:"button",class:L(["px-2 py-1 text-xs transition-colors",e(b)?"text-muted hover:bg-elevated/60":"bg-primary text-white dark:text-white"]),title:"Flat list",onClick:g[1]||(g[1]=a=>e(T)(!1))},[i(e(ee),{name:"i-lucide-list",class:"size-3.5"})],2),f("button",{type:"button",class:L(["px-2 py-1 text-xs transition-colors",e(b)?"bg-primary text-white dark:text-white":"text-muted hover:bg-elevated/60"]),title:"Tree view",onClick:g[2]||(g[2]=a=>e(T)(!0))},[i(e(ee),{name:"i-lucide-folder-tree",class:"size-3.5"})],2)]),f("span",da,P(e(M))+" "+P(e(M)===1?"case":"cases"),1)]),default:d(()=>[i(le,{modelValue:e(y),"onUpdate:modelValue":g[3]||(g[3]=a=>se(y)?y.value=a:null),placeholder:"Search title or file...",icon:"i-lucide-search",size:"sm",class:"min-w-48 max-sm:flex-1","aria-label":"Search test cases"},null,8,["modelValue"]),i(le,{modelValue:e(j),"onUpdate:modelValue":g[4]||(g[4]=a=>se(j)?j.value=a:null),placeholder:"Tags (comma-separated)…",icon:"i-lucide-tag",size:"sm",class:"min-w-44 max-sm:flex-1","aria-label":"Filter by tag",title:"Show only cases carrying every listed tag. A leading @ is optional."},null,8,["modelValue"]),f("div",ca,[(r(),I(A,null,oe(D,a=>f("button",{key:a.value,type:"button",class:L(["inline-flex items-center gap-1.5 px-2 py-1 rounded-md text-xs font-medium transition-colors whitespace-nowrap",e(h).includes(a.value)?a.color==="green"?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":a.color==="red"?"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400":a.color==="orange"?"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400":a.color==="amber"?"bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400":"bg-gray-200 text-gray-700 dark:bg-gray-700 dark:text-gray-300":"bg-gray-100 text-gray-500 dark:bg-gray-800 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-700"]),"aria-pressed":e(h).includes(a.value),onClick:Na=>Te(a.value)},[f("span",{class:L(["size-2 rounded-full shrink-0",a.color==="green"?"bg-green-500":a.color==="red"?"bg-red-500":a.color==="orange"?"bg-orange-500":a.color==="amber"?"bg-amber-500":"bg-gray-400"])},null,2),S(" "+P(a.label),1)],10,pa)),64))]),i(_e,{modelValue:e($),"onUpdate:modelValue":g[5]||(g[5]=a=>se($)?$.value=a:null),items:V,size:"sm",class:"w-36","aria-label":"Last run age filter"},null,8,["modelValue"])]),_:1}),e(Ve)?(r(),x(Me,{key:0,text:"Loading test cases..."})):e(ve)?(r(),x(Ae,{key:1,text:("errorMessage"in p?p.errorMessage:e(_t))(e(ve),"Failed to load test cases")},{action:d(()=>[i(O,{size:"sm",variant:"outline",onClick:g[6]||(g[6]=()=>e(re)())},{default:d(()=>[...g[11]||(g[11]=[S("Retry",-1)])]),_:1})]),_:1},8,["text"])):e(M)===0?(r(),I(A,{key:2},[e(Be)?(r(),x(ye,{key:1,icon:"i-lucide-search-x",text:"No test cases match your filters."},{default:d(()=>[f("div",fa,[e($)!==0?(r(),x(O,{key:0,size:"sm",variant:"outline",onClick:g[7]||(g[7]=a=>$.value=0)},{default:d(()=>[...g[12]||(g[12]=[S("Show all time",-1)])]),_:1})):E("",!0),e(ue)?(r(),x(O,{key:1,size:"sm",variant:"ghost",onClick:g[8]||(g[8]=()=>{y.value="",v.value="",h.value=[]})},{default:d(()=>[...g[13]||(g[13]=[S(" Clear filters ",-1)])]),_:1})):E("",!0)])]),_:1})):(r(),x(ye,{key:0,icon:"i-lucide-flask-conical",text:"No test cases yet for this project."}))],64)):(r(),I("div",{key:3,class:L([{"opacity-60 pointer-events-none":e(ie)==="pending"},"transition-opacity"])},[e(b)?(r(),I(A,{key:0},[e(Y).length<e(M)?(r(),x(Ue,{key:0,color:"warning",variant:"subtle",icon:"i-lucide-triangle-alert",class:"mb-3",title:`Showing the first ${e(Y).length} of ${e(M)} cases — narrow the search or filters to see the rest.`},null,8,["title"])):E("",!0),i(Oe,{items:e(Y),"has-filter":e(ue)},null,8,["items","has-filter"])],64)):(r(),I(A,{key:1},[f("div",ga,[i(Ge,{data:e(Y),columns:e(Fe),ui:{base:"w-full table-fixed border-separate border-spacing-0 min-w-[56rem]",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0 [&>tr]:hover:bg-gray-50 dark:[&>tr]:hover:bg-gray-900/50",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"title-cell":d(({row:a})=>[f("div",ma,[i(be,{to:`/test-cases/${a.original.id}`,class:"text-sm font-medium text-primary hover:underline truncate block",title:a.original.title},{default:d(()=>[S(P(a.original.title),1)]),_:2},1032,["to","title"]),i(Ke,{tags:a.original.tags,meta:{owner:a.original.owner??void 0,priority:("toTestPriority"in p?p.toTestPriority:e(yt))(a.original.priority),feature:a.original.feature??void 0,link:a.original.link??void 0},"max-tags":4},null,8,["tags","meta"]),f("div",va,[i(e(ee),{name:"i-lucide-file-code",class:"size-3 shrink-0"}),i(he,{"file-path":a.original.filePath,"project-key":u.projectId,"project-name":u.projectName,class:"min-w-0"},null,8,["file-path","project-key","project-name"])])])]),"status-cell":d(({row:a})=>[i(xe,{color:("testCaseCategoryColor"in p?p.testCaseCategoryColor:e(fe))(a.original.status),variant:"subtle",size:"sm",class:"capitalize"},{default:d(()=>[S(P(("formatStatusLabel"in p?p.formatStatusLabel:e(pe))(a.original.status)),1)]),_:2},1032,["color"])]),"totalRuns-cell":d(({row:a})=>[f("span",_a,P(a.original.totalRuns),1)]),"passRate-cell":d(({row:a})=>[i(ke,{rate:a.original.passRate},null,8,["rate"])]),"results-cell":d(({row:a})=>[i(Ce,{passed:a.original.passedRuns,failed:a.original.failedRuns,skipped:a.original.skippedRuns,flaky:a.original.flakyRuns,"did-not-run":a.original.didNotRunRuns,total:a.original.totalRuns},null,8,["passed","failed","skipped","flaky","did-not-run","total"])]),"avgDuration-cell":d(({row:a})=>[i(Pe,{ms:a.original.avgDuration,class:"text-sm text-muted"},null,8,["ms"])]),"lastRun-cell":d(({row:a})=>[f("span",{class:"text-sm text-muted",title:("prettyDateFormat"in p?p.prettyDateFormat:e(ge))(a.original.lastRun)},P(a.original.lastRun!=null?("formatRelativeTime"in p?p.formatRelativeTime:e(me))(a.original.lastRun):"—"),9,ya)]),"actions-cell":d(({row:a})=>[f("div",ba,[i(O,{to:`/test-cases/${a.original.id}`,size:"sm",variant:"outline","trailing-icon":"i-lucide-arrow-right"},{default:d(()=>[...g[14]||(g[14]=[S(" View ",-1)])]),_:1},8,["to"])])]),_:1},8,["data","columns"])]),f("div",ha,[(r(!0),I(A,null,oe(e(Y),a=>(r(),I("div",{key:a.id,class:"rounded-lg border border-default p-3 space-y-2"},[f("div",xa,[i(be,{to:`/test-cases/${a.id}`,class:"text-sm font-medium text-primary hover:underline min-w-0 truncate",title:a.title},{default:d(()=>[S(P(a.title),1)]),_:2},1032,["to","title"]),i(xe,{color:("testCaseCategoryColor"in p?p.testCaseCategoryColor:e(fe))(a.status),variant:"subtle",size:"sm",class:"capitalize shrink-0"},{default:d(()=>[S(P(("formatStatusLabel"in p?p.formatStatusLabel:e(pe))(a.status)),1)]),_:2},1032,["color"])]),f("div",ka,[i(e(ee),{name:"i-lucide-file-code",class:"size-3 shrink-0"}),i(he,{"file-path":a.filePath,"project-key":u.projectId,"project-name":u.projectName,class:"min-w-0"},null,8,["file-path","project-key","project-name"])]),i(Ce,{passed:a.passedRuns,failed:a.failedRuns,skipped:a.skippedRuns,flaky:a.flakyRuns,"did-not-run":a.didNotRunRuns,total:a.totalRuns},null,8,["passed","failed","skipped","flaky","did-not-run","total"]),f("div",Ca,[i(ke,{rate:a.passRate},null,8,["rate"]),f("span",Pa,P(a.totalRuns)+" runs",1),a.avgDuration!=null?(r(),x(Pe,{key:0,ms:a.avgDuration,class:"text-xs text-muted"},null,8,["ms"])):E("",!0),f("span",{class:"text-xs text-muted",title:("prettyDateFormat"in p?p.prettyDateFormat:e(ge))(a.lastRun)},P(a.lastRun!=null?("formatRelativeTime"in p?p.formatRelativeTime:e(me))(a.lastRun):"—"),9,Ra)])]))),128))]),f("div",$a,[f("div",qa,[f("span",Sa,"Showing "+P(e(we))+"–"+P(e(Ee))+" of "+P(e(M)),1),f("div",za,[g[15]||(g[15]=f("span",{class:"text-sm text-muted"},"Rows per page",-1)),i(_e,{modelValue:e(N),"onUpdate:modelValue":g[9]||(g[9]=a=>se(N)?N.value=a:null),items:z,size:"sm",class:"w-28","aria-label":"Rows per page"},null,8,["modelValue"])])]),e(M)>e(N)?(r(),x(Qe,{key:0,page:e(n),"onUpdate:page":g[10]||(g[10]=a=>se(n)?n.value=a:null),total:e(M),"items-per-page":e(N),size:"sm"},null,8,["page","total","items-per-page"])):E("",!0)])],64))],2))]),_:1},8,["count"])}}}),Ha=Object.assign(La,{__name:"ProjectTestCasesTable"});export{Ha as _};
|