@piwitests/server 0.18.1 → 0.19.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.
Files changed (773) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{BaDv5D7A.js → -09h6CA9.js} +1 -1
  3. package/.output/public/_nuxt/279D2RYp.js +1 -0
  4. package/.output/public/_nuxt/81InBX9v.js +1 -0
  5. package/.output/public/_nuxt/{CRpbGS75.js → Ar3IelOY.js} +1 -1
  6. package/.output/public/_nuxt/B33iXw77.js +1 -0
  7. package/.output/public/_nuxt/B3B9Ii2A.js +1 -0
  8. package/.output/public/_nuxt/B3HO8kuh.js +1 -0
  9. package/.output/public/_nuxt/B44A4LSJ.js +1 -0
  10. package/.output/public/_nuxt/{CPZ5wygb.js → B7NBP1C-.js} +1 -1
  11. package/.output/public/_nuxt/{Db_-yjYg.js → B9WhzpKO.js} +1 -1
  12. package/.output/public/_nuxt/{DoYgYLOd.js → BCMuIgP5.js} +1 -1
  13. package/.output/public/_nuxt/BDicZ1gQ.js +1 -0
  14. package/.output/public/_nuxt/BJ0XQElc.js +1 -0
  15. package/.output/public/_nuxt/{D4SFgXAf.js → BMvCSA6h.js} +1 -1
  16. package/.output/public/_nuxt/BPQoBGg5.js +1 -0
  17. package/.output/public/_nuxt/BPRffDuo.js +1 -0
  18. package/.output/public/_nuxt/BSIxhGsh.js +1 -0
  19. package/.output/public/_nuxt/BVaxh6Nl.js +4 -0
  20. package/.output/public/_nuxt/{BReNbog6.js → BX9ZXe98.js} +1 -1
  21. package/.output/public/_nuxt/{rm7OkgDG.js → BYDaY0Z7.js} +1 -1
  22. package/.output/public/_nuxt/{WAaPPk0g.js → Bc8mOoz9.js} +2 -2
  23. package/.output/public/_nuxt/BccXfBfI.js +1 -0
  24. package/.output/public/_nuxt/{Dbg8z684.js → BeLWlVK0.js} +1 -1
  25. package/.output/public/_nuxt/{CP0vUzbd.js → BfTuX0wq.js} +1 -1
  26. package/.output/public/_nuxt/BjaRappk.js +1 -0
  27. package/.output/public/_nuxt/{D3MWm6JP.js → Bn0YQDyy.js} +1 -1
  28. package/.output/public/_nuxt/Bp5ELvx9.js +1 -0
  29. package/.output/public/_nuxt/BpUaY9nH.js +2 -0
  30. package/.output/public/_nuxt/BqV0l12c.js +1 -0
  31. package/.output/public/_nuxt/{D8YZvjas.js → Bti38m-M.js} +1 -1
  32. package/.output/public/_nuxt/{DVgMaBxD.js → Bu2aaVIY.js} +3 -3
  33. package/.output/public/_nuxt/{CUDeMcEK.js → BuMC3WjZ.js} +1 -1
  34. package/.output/public/_nuxt/{Bi3i470l.js → BxCKKeYs.js} +1 -1
  35. package/.output/public/_nuxt/{BTYiG93l.js → C-elpgyr.js} +1 -1
  36. package/.output/public/_nuxt/C2_3mdPC.js +1 -0
  37. package/.output/public/_nuxt/{BoC6qaRF.js → C5iG7O4O.js} +4 -4
  38. package/.output/public/_nuxt/C7P1UCO2.js +1 -0
  39. package/.output/public/_nuxt/{BuuvTH9e.js → C95YAaJq.js} +1 -1
  40. package/.output/public/_nuxt/{DOr_4nln.js → C9_jrmk9.js} +2 -2
  41. package/.output/public/_nuxt/CDk0q2hV.js +2 -0
  42. package/.output/public/_nuxt/{DIA_NAIv.js → CGNkHojN.js} +3 -3
  43. package/.output/public/_nuxt/CHEFCN8Q.js +1 -0
  44. package/.output/public/_nuxt/CHNwfU1y.js +1 -0
  45. package/.output/public/_nuxt/CK_2LZBS.js +1 -0
  46. package/.output/public/_nuxt/CNFYDQmj.js +1 -0
  47. package/.output/public/_nuxt/{BfoG8R5a.js → CTxDO9fB.js} +1 -1
  48. package/.output/public/_nuxt/{B1CB30tg.js → CU5S9GCh.js} +1 -1
  49. package/.output/public/_nuxt/{BKaU95es.js → CUtJobDm.js} +1 -1
  50. package/.output/public/_nuxt/CV9-fTmY.js +1 -0
  51. package/.output/public/_nuxt/{BAkJhSAW.js → CYsTqbBS.js} +1 -1
  52. package/.output/public/_nuxt/{AjuKBlzz.js → CZfMdzfk.js} +1 -1
  53. package/.output/public/_nuxt/{lowCGL2S.js → Cdff9XNh.js} +1 -1
  54. package/.output/public/_nuxt/{quV6tp4n.js → ClOqkAcc.js} +1 -1
  55. package/.output/public/_nuxt/{Doul3p1_.js → CpjgB2aY.js} +1 -1
  56. package/.output/public/_nuxt/CrwJAwhk.js +1 -0
  57. package/.output/public/_nuxt/CtQBsNUb.js +1 -0
  58. package/.output/public/_nuxt/CuSVQEkS.js +3 -0
  59. package/.output/public/_nuxt/{wQZj69OY.js → CylWPruw.js} +1 -1
  60. package/.output/public/_nuxt/CzGyac8q.js +1 -0
  61. package/.output/public/_nuxt/D-c8ZSws.js +1 -0
  62. package/.output/public/_nuxt/{B6IHiVa1.js → D0HNloZ9.js} +1 -1
  63. package/.output/public/_nuxt/{ClIKZ4qY.js → D55D4EYo.js} +1 -1
  64. package/.output/public/_nuxt/{Bi9DO8jm.js → DDDpCFpF.js} +1 -1
  65. package/.output/public/_nuxt/{va1mwSm9.js → DEFEpYzn.js} +1 -1
  66. package/.output/public/_nuxt/DGfAxLHV.js +1 -0
  67. package/.output/public/_nuxt/DHDtnj7p.js +1 -0
  68. package/.output/public/_nuxt/DLSrtpsA.js +1 -0
  69. package/.output/public/_nuxt/DP8hfJ9h.js +1 -0
  70. package/.output/public/_nuxt/DS636elg.js +1 -0
  71. package/.output/public/_nuxt/{D51_cB9D.js → DT53RWbC.js} +1 -1
  72. package/.output/public/_nuxt/DVDXJYq2.js +2 -0
  73. package/.output/public/_nuxt/DW0xl3I6.js +17 -0
  74. package/.output/public/_nuxt/{BEB2Mv6B.js → DX-MDGb3.js} +1 -1
  75. package/.output/public/_nuxt/DcmZRa_F.js +1 -0
  76. package/.output/public/_nuxt/DgE2YE3R.js +1 -0
  77. package/.output/public/_nuxt/Dgf5N4Ng.js +1 -0
  78. package/.output/public/_nuxt/DiOLdHBC.js +1 -0
  79. package/.output/public/_nuxt/DiZyJYez.js +1 -0
  80. package/.output/public/_nuxt/Dk9fwOCm.js +34 -0
  81. package/.output/public/_nuxt/{DRE6Aqqp.js → Dnpkl-1q.js} +1 -1
  82. package/.output/public/_nuxt/DoUy4UHi.js +44 -0
  83. package/.output/public/_nuxt/{empGC_x-.js → DprVVyUQ.js} +1 -1
  84. package/.output/public/_nuxt/{BVDBIVAQ.js → DslPMqfa.js} +1 -1
  85. package/.output/public/_nuxt/{Vnfkr1pJ.js → FUXhyidq.js} +1 -1
  86. package/.output/public/_nuxt/HXerICAi.js +79 -0
  87. package/.output/public/_nuxt/{Do6zIWQf.js → IvQlbZk6.js} +1 -1
  88. package/.output/public/_nuxt/{n-QWmQgc.js → Jo8kRmHz.js} +1 -1
  89. package/.output/public/_nuxt/{BsDB_eCd.js → KnfsST6Y.js} +1 -1
  90. package/.output/public/_nuxt/NQikbhmK.js +253 -0
  91. package/.output/public/_nuxt/OSduWzyz.js +1 -0
  92. package/.output/public/_nuxt/SfMRXW25.js +5 -0
  93. package/.output/public/_nuxt/{mlAADjK3.js → SlIRLREZ.js} +2 -2
  94. package/.output/public/_nuxt/TagBadge.By1E6r4y.css +1 -0
  95. package/.output/public/_nuxt/WsxFTEFq.js +10 -0
  96. package/.output/public/_nuxt/YVN7WG7q.js +1 -0
  97. package/.output/public/_nuxt/{CRcjGmf7.js → ZFiQCMUB.js} +1 -1
  98. package/.output/public/_nuxt/aQgs_c6e.js +9 -0
  99. package/.output/public/_nuxt/builds/latest.json +1 -1
  100. package/.output/public/_nuxt/builds/meta/ab473028-4b37-4884-b243-b8f6e5046e5e.json +1 -0
  101. package/.output/public/_nuxt/{Dwp3GkV-.js → cHAnlQbv.js} +1 -1
  102. package/.output/public/_nuxt/dYCKgE-3.js +5 -0
  103. package/.output/public/_nuxt/{DnThe2U0.js → eaVkJRSa.js} +1 -1
  104. package/.output/public/_nuxt/entry.CPhW41mh.css +1 -0
  105. package/.output/public/_nuxt/{DoFSKAvY.js → eptP4pGv.js} +1 -1
  106. package/.output/public/_nuxt/fVcG504p.js +1 -0
  107. package/.output/public/_nuxt/g26aVPxc.js +1 -0
  108. package/.output/public/_nuxt/{wGpfdK6o.js → ndShiWE8.js} +1 -1
  109. package/.output/public/_nuxt/nv9-6vBK.js +1 -0
  110. package/.output/public/_nuxt/rWNTSFD6.js +3 -0
  111. package/.output/public/_nuxt/tvgqrYDd.js +1 -0
  112. package/.output/public/_nuxt/{DCMFuzDI.js → y17lMTFy.js} +1 -1
  113. package/.output/public/_nuxt/{DM_YaJgJ.js → ybDYeNxd.js} +1 -1
  114. package/.output/public/_nuxt/{B_aSGB8S.js → zQyPuvV1.js} +1 -1
  115. package/.output/public/demo/seed.version.json +2 -2
  116. package/.output/server/chunks/_/ai-prompt-preview.mjs +38 -0
  117. package/.output/server/chunks/_/ai-prompt-preview.mjs.map +1 -0
  118. package/.output/server/chunks/_/collect.mjs +122 -0
  119. package/.output/server/chunks/_/collect.mjs.map +1 -0
  120. package/.output/server/chunks/_/import-runs.mjs +351 -0
  121. package/.output/server/chunks/_/import-runs.mjs.map +1 -0
  122. package/.output/server/chunks/_/markers.mjs +1 -1
  123. package/.output/server/chunks/_/quarantine.mjs +112 -0
  124. package/.output/server/chunks/_/quarantine.mjs.map +1 -0
  125. package/.output/server/chunks/_/users.mjs +1 -1
  126. package/.output/server/chunks/build/{Alert-Bp1Wz_sq.mjs → Alert-C4xq8lao.mjs} +2 -2
  127. package/.output/server/chunks/build/Alert-C4xq8lao.mjs.map +1 -0
  128. package/.output/server/chunks/build/{Breadcrumb-C9ZPTLym.mjs → Breadcrumb-Ak2Lg3oM.mjs} +3 -3
  129. package/.output/server/chunks/build/Breadcrumb-Ak2Lg3oM.mjs.map +1 -0
  130. package/.output/server/chunks/build/{BreadcrumbNav-C3y42Vun.mjs → BreadcrumbNav-DO7I_z-n.mjs} +3 -3
  131. package/.output/server/chunks/build/BreadcrumbNav-DO7I_z-n.mjs.map +1 -0
  132. package/.output/server/chunks/build/{BrowserBadge-DNCp9pF-.mjs → BrowserBadge-D33lqUcj.mjs} +5 -5
  133. package/.output/server/chunks/build/BrowserBadge-D33lqUcj.mjs.map +1 -0
  134. package/.output/server/chunks/build/{ChartCard-Fr557IbV.mjs → ChartCard-Y1UKwMsf.mjs} +2 -2
  135. package/.output/server/chunks/build/ChartCard-Y1UKwMsf.mjs.map +1 -0
  136. package/.output/server/chunks/build/{Checkbox-cVOSIY93.mjs → Checkbox-DvUBGagc.mjs} +8 -8
  137. package/.output/server/chunks/build/Checkbox-DvUBGagc.mjs.map +1 -0
  138. package/.output/server/chunks/build/{CiEnvCard-DXPOhdSG.mjs → CiEnvCard-CrjOM17n.mjs} +25 -34
  139. package/.output/server/chunks/build/CiEnvCard-CrjOM17n.mjs.map +1 -0
  140. package/.output/server/chunks/build/{CodeBlock-BGwNmJ8J.mjs → CodeBlock-BgE-NSmE.mjs} +7 -22
  141. package/.output/server/chunks/build/CodeBlock-BgE-NSmE.mjs.map +1 -0
  142. package/.output/server/chunks/build/{DashboardNavbar-Bdp-OwTN.mjs → DashboardNavbar-BHmMSPX7.mjs} +3 -3
  143. package/.output/server/chunks/build/DashboardNavbar-BHmMSPX7.mjs.map +1 -0
  144. package/.output/server/chunks/build/{DashboardSidebarToggle-Ji6ADuqF.mjs → DashboardSidebarToggle-DCTnHiIv.mjs} +3 -3
  145. package/.output/server/chunks/build/DashboardSidebarToggle-DCTnHiIv.mjs.map +1 -0
  146. package/.output/server/chunks/build/{DataLocationCard-D6xSOrme.mjs → DataLocationCard-B_YHdzSz.mjs} +3 -3
  147. package/.output/server/chunks/build/DataLocationCard-B_YHdzSz.mjs.map +1 -0
  148. package/.output/server/chunks/build/{DiagnosisPanel-DV1xwGu4.mjs → DiagnosisPanel-B646dK4p.mjs} +17 -528
  149. package/.output/server/chunks/build/DiagnosisPanel-B646dK4p.mjs.map +1 -0
  150. package/.output/server/chunks/build/DurationValue-D20oGbnc.mjs +43 -0
  151. package/.output/server/chunks/build/DurationValue-D20oGbnc.mjs.map +1 -0
  152. package/.output/server/chunks/build/{EmptyState-DV3oT_xz.mjs → EmptyState-Dtlab7S9.mjs} +3 -3
  153. package/.output/server/chunks/build/EmptyState-Dtlab7S9.mjs.map +1 -0
  154. package/.output/server/chunks/build/{EntityLinks-DeOP13Kr.mjs → EntityLinks-D3fp57pR.mjs} +6 -6
  155. package/.output/server/chunks/build/EntityLinks-D3fp57pR.mjs.map +1 -0
  156. package/.output/server/chunks/build/{EnvManagedBadge-Qpn58Nmr.mjs → EnvManagedBadge-Bg3FSiU1.mjs} +3 -3
  157. package/.output/server/chunks/build/EnvManagedBadge-Bg3FSiU1.mjs.map +1 -0
  158. package/.output/server/chunks/build/{FormField-B-GSn_VR.mjs → FormField-B0HKsdMd.mjs} +3 -3
  159. package/.output/server/chunks/build/FormField-B0HKsdMd.mjs.map +1 -0
  160. package/.output/server/chunks/build/{HelpHint-YEMWtKu1.mjs → HelpHint-DrcIv-Oj.mjs} +53 -6
  161. package/.output/server/chunks/build/HelpHint-DrcIv-Oj.mjs.map +1 -0
  162. package/.output/server/chunks/build/{Label-DBvbHd3A.mjs → Label-DYDR1Oeh.mjs} +2 -2
  163. package/.output/server/chunks/build/Label-DYDR1Oeh.mjs.map +1 -0
  164. package/.output/server/chunks/build/{MiniRunBars-C3HG-EYm.mjs → MiniRunBars-CZMugDrh.mjs} +2 -2
  165. package/.output/server/chunks/build/MiniRunBars-CZMugDrh.mjs.map +1 -0
  166. package/.output/server/chunks/build/{Modal-CfA78Hm1.mjs → Modal-Ck2XLt8d.mjs} +2 -2
  167. package/.output/server/chunks/build/Modal-Ck2XLt8d.mjs.map +1 -0
  168. package/.output/server/chunks/build/{OpenInIdeLink-B92wosXu.mjs → OpenInIdeLink-C4MXA8ya.mjs} +6 -6
  169. package/.output/server/chunks/build/{OpenInIdeLink-B92wosXu.mjs.map → OpenInIdeLink-C4MXA8ya.mjs.map} +1 -1
  170. package/.output/server/chunks/build/{ProjectTestCasesTable-9Ia825h8.mjs → ProjectTestCasesTable-CxfQ5wtN.mjs} +120 -45
  171. package/.output/server/chunks/build/ProjectTestCasesTable-CxfQ5wtN.mjs.map +1 -0
  172. package/.output/server/chunks/build/{RovingFocusItem-CxhHdNGo.mjs → RovingFocusItem-BJSzTBjy.mjs} +2 -2
  173. package/.output/server/chunks/build/RovingFocusItem-BJSzTBjy.mjs.map +1 -0
  174. package/.output/server/chunks/build/{RunReports-BpJqLHY9.mjs → RunReports-DFLv51TX.mjs} +8 -6
  175. package/.output/server/chunks/build/RunReports-DFLv51TX.mjs.map +1 -0
  176. package/.output/server/chunks/build/{RunStatusBadge-BhmJ_RKM.mjs → RunStatusBadge-FfGb6bkW.mjs} +3 -2
  177. package/.output/server/chunks/build/RunStatusBadge-FfGb6bkW.mjs.map +1 -0
  178. package/.output/server/chunks/build/{SectionCard-COd9TuDq.mjs → SectionCard-CN-v0FZ_.mjs} +2 -2
  179. package/.output/server/chunks/build/SectionCard-CN-v0FZ_.mjs.map +1 -0
  180. package/.output/server/chunks/build/{Select-ppPz926C.mjs → Select-CUqj50wi.mjs} +4 -4
  181. package/.output/server/chunks/build/Select-CUqj50wi.mjs.map +1 -0
  182. package/.output/server/chunks/build/{SelectMenu-799c_Ils.mjs → SelectMenu-Db7osY7J.mjs} +4 -4
  183. package/.output/server/chunks/build/{SelectMenu-799c_Ils.mjs.map → SelectMenu-Db7osY7J.mjs.map} +1 -1
  184. package/.output/server/chunks/build/{Separator-CxZdx8kw.mjs → Separator-CR4WcEKD.mjs} +2 -2
  185. package/.output/server/chunks/build/Separator-CR4WcEKD.mjs.map +1 -0
  186. package/.output/server/chunks/build/{SettingsField-DDD4oqys.mjs → SettingsField-D6iEYbEc.mjs} +6 -6
  187. package/.output/server/chunks/build/SettingsField-D6iEYbEc.mjs.map +1 -0
  188. package/.output/server/chunks/build/{Slideover-B95Rj237.mjs → Slideover-DgCa80mf.mjs} +3 -3
  189. package/.output/server/chunks/build/Slideover-DgCa80mf.mjs.map +1 -0
  190. package/.output/server/chunks/build/{Switch-xQQ3_ME1.mjs → Switch-CgUioOYB.mjs} +5 -5
  191. package/.output/server/chunks/build/Switch-CgUioOYB.mjs.map +1 -0
  192. package/.output/server/chunks/build/{Table-CPhhVzDv.mjs → Table-BRk04Hd2.mjs} +3 -3
  193. package/.output/server/chunks/build/Table-BRk04Hd2.mjs.map +1 -0
  194. package/.output/server/chunks/build/{Tabs-BV9XqjoO.mjs → Tabs-Bbsg9wag.mjs} +3 -3
  195. package/.output/server/chunks/build/Tabs-Bbsg9wag.mjs.map +1 -0
  196. package/.output/server/chunks/build/TagBadge-DwzoFCBb.mjs +31 -0
  197. package/.output/server/chunks/build/TagBadge-DwzoFCBb.mjs.map +1 -0
  198. package/.output/server/chunks/build/TagBadge-styles.jhuZ4NjP.mjs +8 -0
  199. package/.output/server/chunks/build/TagBadge-styles.jhuZ4NjP.mjs.map +1 -0
  200. package/.output/server/chunks/build/{TestCaseHistoryChart-DMb-xSJa.mjs → TestCaseHistoryChart-nMLPhdvD.mjs} +6 -6
  201. package/.output/server/chunks/build/TestCaseHistoryChart-nMLPhdvD.mjs.map +1 -0
  202. package/.output/server/chunks/build/TestMetaBadges-D5_yUtIP.mjs +200 -0
  203. package/.output/server/chunks/build/TestMetaBadges-D5_yUtIP.mjs.map +1 -0
  204. package/.output/server/chunks/build/{TestStatusBar-CEzt76wk.mjs → TestStatusBar-j6h2Jp6A.mjs} +15 -15
  205. package/.output/server/chunks/build/TestStatusBar-j6h2Jp6A.mjs.map +1 -0
  206. package/.output/server/chunks/build/{Textarea-DrrqQUVG.mjs → Textarea-Dv2-lOvW.mjs} +2 -2
  207. package/.output/server/chunks/build/Textarea-Dv2-lOvW.mjs.map +1 -0
  208. package/.output/server/chunks/build/{Tooltip-7vwuDPrZ.mjs → Tooltip-BOazooWP.mjs} +3 -3
  209. package/.output/server/chunks/build/Tooltip-BOazooWP.mjs.map +1 -0
  210. package/.output/server/chunks/build/{VisuallyHiddenInput-C9eJVpPW.mjs → VisuallyHiddenInput-D6kBJxVd.mjs} +2 -2
  211. package/.output/server/chunks/build/VisuallyHiddenInput-D6kBJxVd.mjs.map +1 -0
  212. package/.output/server/chunks/build/{_id_-B2yirIuA.mjs → _id_-B78ky13D.mjs} +798 -358
  213. package/.output/server/chunks/build/_id_-B78ky13D.mjs.map +1 -0
  214. package/.output/server/chunks/build/{_id_-bWcP2xFl.mjs → _id_-BHh65pfg.mjs} +690 -443
  215. package/.output/server/chunks/build/_id_-BHh65pfg.mjs.map +1 -0
  216. package/.output/server/chunks/build/{_id_-B4V5fop6.mjs → _id_-Rzkqx55x.mjs} +297 -60
  217. package/.output/server/chunks/build/{_id_-B4V5fop6.mjs.map → _id_-Rzkqx55x.mjs.map} +1 -1
  218. package/.output/server/chunks/build/{_id_-CE0Gso6i.mjs → _id_-z5N6HPyC.mjs} +89 -40
  219. package/.output/server/chunks/build/_id_-z5N6HPyC.mjs.map +1 -0
  220. package/.output/server/chunks/build/{about-CoJjvUwM.mjs → about-CvSP73Ug.mjs} +100 -52
  221. package/.output/server/chunks/build/about-CvSP73Ug.mjs.map +1 -0
  222. package/.output/server/chunks/build/{account-Cn-eZqXM.mjs → account-DAfvaD-F.mjs} +21 -9
  223. package/.output/server/chunks/build/account-DAfvaD-F.mjs.map +1 -0
  224. package/.output/server/chunks/build/{ai-7jdaPOmj.mjs → ai-B4VJ9K1K.mjs} +45 -23
  225. package/.output/server/chunks/build/{ai-7jdaPOmj.mjs.map → ai-B4VJ9K1K.mjs.map} +1 -1
  226. package/.output/server/chunks/build/{analytics-B276WPeU.mjs → analytics-CJPC6t4L.mjs} +65 -39
  227. package/.output/server/chunks/build/{analytics-B276WPeU.mjs.map → analytics-CJPC6t4L.mjs.map} +1 -1
  228. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  229. package/.output/server/chunks/build/compare-RxHSOdsO.mjs +12 -0
  230. package/.output/server/chunks/build/{db.client-aHcD0wyX.mjs → db.client-CQoVTYB9.mjs} +83 -5
  231. package/.output/server/chunks/build/db.client-CQoVTYB9.mjs.map +1 -0
  232. package/.output/server/chunks/build/{default-BSzdkM_L.mjs → default-zvbFgDJG.mjs} +36 -24
  233. package/.output/server/chunks/build/default-zvbFgDJG.mjs.map +1 -0
  234. package/.output/server/chunks/build/{docs-BN_x1OW3.mjs → docs-DyuVEgtB.mjs} +30 -49
  235. package/.output/server/chunks/build/{docs-BN_x1OW3.mjs.map → docs-DyuVEgtB.mjs.map} +1 -1
  236. package/.output/server/chunks/build/{edit-C9Z7oZeu.mjs → edit-CFR5g2Qf.mjs} +30 -18
  237. package/.output/server/chunks/build/edit-CFR5g2Qf.mjs.map +1 -0
  238. package/.output/server/chunks/build/{fetch-8kznMtBM.mjs → fetch-B4FwBOzu.mjs} +3 -3
  239. package/.output/server/chunks/build/fetch-B4FwBOzu.mjs.map +1 -0
  240. package/.output/server/chunks/build/{forgot-password-BqPF4Rxs.mjs → forgot-password-CC__1OnV.mjs} +17 -5
  241. package/.output/server/chunks/build/forgot-password-CC__1OnV.mjs.map +1 -0
  242. package/.output/server/chunks/build/{help-content-DmFnuhNu.mjs → help-content-C876a9WD.mjs} +37 -8
  243. package/.output/server/chunks/build/help-content-C876a9WD.mjs.map +1 -0
  244. package/.output/server/chunks/build/import-CZo3djDi.mjs +1021 -0
  245. package/.output/server/chunks/build/import-CZo3djDi.mjs.map +1 -0
  246. package/.output/server/chunks/build/{index-CULN3-en.mjs → index-CU2nZhAa.mjs} +113 -42
  247. package/.output/server/chunks/build/index-CU2nZhAa.mjs.map +1 -0
  248. package/.output/server/chunks/build/{index-DVUtBexc.mjs → index-D7fe97l3.mjs} +1305 -281
  249. package/.output/server/chunks/build/index-D7fe97l3.mjs.map +1 -0
  250. package/.output/server/chunks/build/{index-BR9hw6qk.mjs → index-Stqw0dEI.mjs} +50 -30
  251. package/.output/server/chunks/build/index-Stqw0dEI.mjs.map +1 -0
  252. package/.output/server/chunks/build/{index-BK9PTRpd.mjs → index-gCw_y4ZJ.mjs} +87 -70
  253. package/.output/server/chunks/build/{index-BK9PTRpd.mjs.map → index-gCw_y4ZJ.mjs.map} +1 -1
  254. package/.output/server/chunks/build/{index-Ba-Fifra.mjs → index-tR6owKzj.mjs} +18 -6
  255. package/.output/server/chunks/build/index-tR6owKzj.mjs.map +1 -0
  256. package/.output/server/chunks/build/{isValueEqualOrExist-DBZjbD_3.mjs → isValueEqualOrExist-D2qw9YEr.mjs} +3 -3
  257. package/.output/server/chunks/build/isValueEqualOrExist-D2qw9YEr.mjs.map +1 -0
  258. package/.output/server/chunks/build/{login-D2XZDuek.mjs → login-Da4u1IlW.mjs} +19 -7
  259. package/.output/server/chunks/build/login-Da4u1IlW.mjs.map +1 -0
  260. package/.output/server/chunks/build/{mcp-_o6cMS6m.mjs → mcp-B3IUvRgD.mjs} +27 -21
  261. package/.output/server/chunks/build/mcp-B3IUvRgD.mjs.map +1 -0
  262. package/.output/server/chunks/build/{notifications-Dzm9c0u_.mjs → notifications-abDv0id8.mjs} +27 -21
  263. package/.output/server/chunks/build/notifications-abDv0id8.mjs.map +1 -0
  264. package/.output/server/chunks/build/pr-feedback-DjZID6q-.mjs +368 -0
  265. package/.output/server/chunks/build/pr-feedback-DjZID6q-.mjs.map +1 -0
  266. package/.output/server/chunks/build/{reset-password-gpFzIEDj.mjs → reset-password-BmrUS4ZD.mjs} +17 -5
  267. package/.output/server/chunks/build/reset-password-BmrUS4ZD.mjs.map +1 -0
  268. package/.output/server/chunks/build/server.mjs +238 -36
  269. package/.output/server/chunks/build/{settings-pNyPBXVa.mjs → settings-Du7YqF8i.mjs} +23 -10
  270. package/.output/server/chunks/build/settings-Du7YqF8i.mjs.map +1 -0
  271. package/.output/server/chunks/build/{settings-metadata-B0wo5R-W.mjs → settings-metadata-DrEqWcW-.mjs} +11 -2
  272. package/.output/server/chunks/build/settings-metadata-DrEqWcW-.mjs.map +1 -0
  273. package/.output/server/chunks/build/{storage-XelzuyPy.mjs → storage-B4vzxd8G.mjs} +41 -31
  274. package/.output/server/chunks/build/storage-B4vzxd8G.mjs.map +1 -0
  275. package/.output/server/chunks/build/styles.mjs +1 -0
  276. package/.output/server/chunks/build/{tags-DrCQ7QSw.mjs → tags-DauTe_F-.mjs} +22 -10
  277. package/.output/server/chunks/build/tags-DauTe_F-.mjs.map +1 -0
  278. package/.output/server/chunks/build/{test-cases-pmOxi-AN.mjs → test-cases-DUvaO1He.mjs} +38 -24
  279. package/.output/server/chunks/build/test-cases-DUvaO1He.mjs.map +1 -0
  280. package/.output/server/chunks/build/{timeout-hygiene-CNs71Iah.mjs → timeout-hygiene-CbnSaVbK.mjs} +20 -8
  281. package/.output/server/chunks/build/timeout-hygiene-CbnSaVbK.mjs.map +1 -0
  282. package/.output/server/chunks/build/{useAiStatus-ZO987RY7.mjs → useAiStatus-CWvIo32Q.mjs} +89 -89
  283. package/.output/server/chunks/build/useAiStatus-CWvIo32Q.mjs.map +1 -0
  284. package/.output/server/chunks/build/{useCopy-BQQKcwlq.mjs → useCopy-CeKWgHyT.mjs} +2 -2
  285. package/.output/server/chunks/build/useCopy-CeKWgHyT.mjs.map +1 -0
  286. package/.output/server/chunks/build/{PageStateCard-Bwee6JTk.mjs → useCopyRich-BemRsKgv.mjs} +418 -39
  287. package/.output/server/chunks/build/useCopyRich-BemRsKgv.mjs.map +1 -0
  288. package/.output/server/chunks/build/useDesktopDownload-D49JRQSw.mjs +46 -0
  289. package/.output/server/chunks/build/useDesktopDownload-D49JRQSw.mjs.map +1 -0
  290. package/.output/server/chunks/build/{useFormControl-BLpq1s4O.mjs → useFormControl-CZ9So7iX.mjs} +2 -2
  291. package/.output/server/chunks/build/useFormControl-CZ9So7iX.mjs.map +1 -0
  292. package/.output/server/chunks/build/{useOpenInIde-kMZ7Jw5c.mjs → useOpenInIde-4GFf-kdi.mjs} +2 -2
  293. package/.output/server/chunks/build/useOpenInIde-4GFf-kdi.mjs.map +1 -0
  294. package/.output/server/chunks/build/{useSettingsNav-NjI2seBy.mjs → useSettingsNav-C3O866KC.mjs} +6 -6
  295. package/.output/server/chunks/build/useSettingsNav-C3O866KC.mjs.map +1 -0
  296. package/.output/server/chunks/build/{useTreeViewCookie-DVYpxW-p.mjs → useTreeViewCookie-CQjQdTkH.mjs} +2 -2
  297. package/.output/server/chunks/build/useTreeViewCookie-CQjQdTkH.mjs.map +1 -0
  298. package/.output/server/chunks/build/{users-NmAUZs3i.mjs → users-CTUqXyGh.mjs} +22 -10
  299. package/.output/server/chunks/build/users-CTUqXyGh.mjs.map +1 -0
  300. package/.output/server/chunks/build/{virtualizer-ZaqK4guJ.mjs → virtualizer-Cd1hhlxC.mjs} +5 -5
  301. package/.output/server/chunks/build/virtualizer-Cd1hhlxC.mjs.map +1 -0
  302. package/.output/server/chunks/build/{wasted-time-CguAF9zc.mjs → wasted-time-lYkx5YO4.mjs} +26 -14
  303. package/.output/server/chunks/build/wasted-time-lYkx5YO4.mjs.map +1 -0
  304. package/.output/server/chunks/nitro/nitro.mjs +4914 -1102
  305. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  306. package/.output/server/chunks/routes/__piwi/session.get.mjs +13 -1
  307. package/.output/server/chunks/routes/__piwi/session.get.mjs.map +1 -1
  308. package/.output/server/chunks/routes/api/admin/cleanup.delete.mjs +12 -0
  309. package/.output/server/chunks/routes/api/admin/cleanup.delete.mjs.map +1 -1
  310. package/.output/server/chunks/routes/api/admin/stats.get.mjs +12 -0
  311. package/.output/server/chunks/routes/api/admin/stats.get.mjs.map +1 -1
  312. package/.output/server/chunks/routes/api/ai/status.get.mjs +12 -0
  313. package/.output/server/chunks/routes/api/ai/status.get.mjs.map +1 -1
  314. package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs +12 -0
  315. package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs.map +1 -1
  316. package/.output/server/chunks/routes/api/auth/change-password.post.mjs +12 -0
  317. package/.output/server/chunks/routes/api/auth/change-password.post.mjs.map +1 -1
  318. package/.output/server/chunks/routes/api/auth/forgot-password.post.mjs +12 -0
  319. package/.output/server/chunks/routes/api/auth/forgot-password.post.mjs.map +1 -1
  320. package/.output/server/chunks/routes/api/auth/login.post.mjs +12 -0
  321. package/.output/server/chunks/routes/api/auth/login.post.mjs.map +1 -1
  322. package/.output/server/chunks/routes/api/auth/logout.post.mjs +12 -0
  323. package/.output/server/chunks/routes/api/auth/logout.post.mjs.map +1 -1
  324. package/.output/server/chunks/routes/api/auth/me.get.mjs +12 -0
  325. package/.output/server/chunks/routes/api/auth/me.get.mjs.map +1 -1
  326. package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs +12 -0
  327. package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs.map +1 -1
  328. package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs +12 -0
  329. package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs.map +1 -1
  330. package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs +12 -0
  331. package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs.map +1 -1
  332. package/.output/server/chunks/routes/api/auth/reset-password.post.mjs +12 -0
  333. package/.output/server/chunks/routes/api/auth/reset-password.post.mjs.map +1 -1
  334. package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs +12 -0
  335. package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs.map +1 -1
  336. package/.output/server/chunks/routes/api/auth/setup.get.mjs +12 -0
  337. package/.output/server/chunks/routes/api/auth/setup.get.mjs.map +1 -1
  338. package/.output/server/chunks/routes/api/auth/setup.post.mjs +12 -0
  339. package/.output/server/chunks/routes/api/auth/setup.post.mjs.map +1 -1
  340. package/.output/server/chunks/routes/api/auth/verify-email.get.mjs +12 -0
  341. package/.output/server/chunks/routes/api/auth/verify-email.get.mjs.map +1 -1
  342. package/.output/server/chunks/routes/api/channels/_id/test.post.mjs +12 -0
  343. package/.output/server/chunks/routes/api/channels/_id/test.post.mjs.map +1 -1
  344. package/.output/server/chunks/routes/api/channels/_id_.delete.mjs +12 -0
  345. package/.output/server/chunks/routes/api/channels/_id_.delete.mjs.map +1 -1
  346. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs +12 -0
  347. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs.map +1 -1
  348. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs +12 -0
  349. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs.map +1 -1
  350. package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs +12 -0
  351. package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs.map +1 -1
  352. package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs +12 -0
  353. package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs.map +1 -1
  354. package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs +12 -0
  355. package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs.map +1 -1
  356. package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs +12 -0
  357. package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs.map +1 -1
  358. package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs +12 -0
  359. package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs.map +1 -1
  360. package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs +24 -1
  361. package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs.map +1 -1
  362. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs +13 -1
  363. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs.map +1 -1
  364. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs +13 -1
  365. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs.map +1 -1
  366. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs +13 -1
  367. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs.map +1 -1
  368. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs +13 -1
  369. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs.map +1 -1
  370. package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs +64 -0
  371. package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs.map +1 -0
  372. package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs +13 -1
  373. package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs.map +1 -1
  374. package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs +56 -0
  375. package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs.map +1 -0
  376. package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs +13 -1
  377. package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs.map +1 -1
  378. package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs +12 -0
  379. package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs.map +1 -1
  380. package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs +13 -1
  381. package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs.map +1 -1
  382. package/.output/server/chunks/routes/api/files/_...path_.get.mjs +13 -32
  383. package/.output/server/chunks/routes/api/files/_...path_.get.mjs.map +1 -1
  384. package/.output/server/chunks/routes/api/health.get.mjs +13 -1
  385. package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
  386. package/.output/server/chunks/routes/api/index.get.mjs +12 -0
  387. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
  388. package/.output/server/chunks/routes/api/index.get2.mjs +13 -1
  389. package/.output/server/chunks/routes/api/index.get2.mjs.map +1 -1
  390. package/.output/server/chunks/routes/api/index.get3.mjs +13 -1
  391. package/.output/server/chunks/routes/api/index.get3.mjs.map +1 -1
  392. package/.output/server/chunks/routes/api/index.get4.mjs +13 -1
  393. package/.output/server/chunks/routes/api/index.get4.mjs.map +1 -1
  394. package/.output/server/chunks/routes/api/index.get5.mjs +12 -0
  395. package/.output/server/chunks/routes/api/index.get5.mjs.map +1 -1
  396. package/.output/server/chunks/routes/api/index.post.mjs +12 -0
  397. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
  398. package/.output/server/chunks/routes/api/index.post2.mjs +13 -1
  399. package/.output/server/chunks/routes/api/index.post2.mjs.map +1 -1
  400. package/.output/server/chunks/routes/api/index.post3.mjs +13 -1
  401. package/.output/server/chunks/routes/api/index.post3.mjs.map +1 -1
  402. package/.output/server/chunks/routes/api/index.post4.mjs +13 -1
  403. package/.output/server/chunks/routes/api/index.post4.mjs.map +1 -1
  404. package/.output/server/chunks/routes/api/index.post5.mjs +13 -1
  405. package/.output/server/chunks/routes/api/index.post5.mjs.map +1 -1
  406. package/.output/server/chunks/routes/api/index.post6.mjs +12 -0
  407. package/.output/server/chunks/routes/api/index.post6.mjs.map +1 -1
  408. package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs +13 -1
  409. package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs.map +1 -1
  410. package/.output/server/chunks/routes/api/links/_id_.delete.mjs +13 -1
  411. package/.output/server/chunks/routes/api/links/_id_.delete.mjs.map +1 -1
  412. package/.output/server/chunks/routes/api/links/_id_.patch.mjs +13 -1
  413. package/.output/server/chunks/routes/api/links/_id_.patch.mjs.map +1 -1
  414. package/.output/server/chunks/routes/api/markers/_id_.delete.mjs +13 -1
  415. package/.output/server/chunks/routes/api/markers/_id_.delete.mjs.map +1 -1
  416. package/.output/server/chunks/routes/api/markers/_id_.put.mjs +13 -1
  417. package/.output/server/chunks/routes/api/markers/_id_.put.mjs.map +1 -1
  418. package/.output/server/chunks/routes/api/notifications/stream.get.mjs +13 -1
  419. package/.output/server/chunks/routes/api/notifications/stream.get.mjs.map +1 -1
  420. package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs +13 -1
  421. package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs.map +1 -1
  422. package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs +13 -1
  423. package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs.map +1 -1
  424. package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs +13 -1
  425. package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs.map +1 -1
  426. package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs +22 -2
  427. package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs.map +1 -1
  428. package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs +13 -1
  429. package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs.map +1 -1
  430. package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs +13 -1
  431. package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs.map +1 -1
  432. package/.output/server/chunks/routes/api/projects/_id/markers.post.mjs +13 -1
  433. package/.output/server/chunks/routes/api/projects/_id/markers.post.mjs.map +1 -1
  434. package/.output/server/chunks/routes/api/projects/_id/members.get.mjs +13 -1
  435. package/.output/server/chunks/routes/api/projects/_id/members.get.mjs.map +1 -1
  436. package/.output/server/chunks/routes/api/projects/_id/members.put.mjs +13 -1
  437. package/.output/server/chunks/routes/api/projects/_id/members.put.mjs.map +1 -1
  438. package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs +13 -1
  439. package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs.map +1 -1
  440. package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs +58 -0
  441. package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs.map +1 -0
  442. package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs +57 -0
  443. package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs.map +1 -0
  444. package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs +72 -0
  445. package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs.map +1 -0
  446. package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs +13 -1
  447. package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs.map +1 -1
  448. package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs +13 -1
  449. package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs.map +1 -1
  450. package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs +13 -1
  451. package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs.map +1 -1
  452. package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs +13 -1
  453. package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs.map +1 -1
  454. package/.output/server/chunks/routes/api/projects/_id_.delete.mjs +13 -1
  455. package/.output/server/chunks/routes/api/projects/_id_.delete.mjs.map +1 -1
  456. package/.output/server/chunks/routes/api/projects/_id_.get.mjs +13 -1
  457. package/.output/server/chunks/routes/api/projects/_id_.get.mjs.map +1 -1
  458. package/.output/server/chunks/routes/api/projects/_id_.put.mjs +13 -1
  459. package/.output/server/chunks/routes/api/projects/_id_.put.mjs.map +1 -1
  460. package/.output/server/chunks/routes/api/projects/menu.get.mjs +13 -1
  461. package/.output/server/chunks/routes/api/projects/menu.get.mjs.map +1 -1
  462. package/.output/server/chunks/routes/api/projects/overview.get.mjs +13 -1
  463. package/.output/server/chunks/routes/api/projects/overview.get.mjs.map +1 -1
  464. package/.output/server/chunks/routes/api/projects.get.mjs +13 -1
  465. package/.output/server/chunks/routes/api/projects.get.mjs.map +1 -1
  466. package/.output/server/chunks/routes/api/search.get.mjs +13 -1
  467. package/.output/server/chunks/routes/api/search.get.mjs.map +1 -1
  468. package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs +13 -1
  469. package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs.map +1 -1
  470. package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs +13 -1
  471. package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs.map +1 -1
  472. package/.output/server/chunks/routes/api/settings/ai/models.post.mjs +12 -0
  473. package/.output/server/chunks/routes/api/settings/ai/models.post.mjs.map +1 -1
  474. package/.output/server/chunks/routes/api/settings/ai/test.post.mjs +13 -1
  475. package/.output/server/chunks/routes/api/settings/ai/test.post.mjs.map +1 -1
  476. package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs +13 -1
  477. package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs.map +1 -1
  478. package/.output/server/chunks/routes/api/settings/ai.get.mjs +13 -1
  479. package/.output/server/chunks/routes/api/settings/ai.get.mjs.map +1 -1
  480. package/.output/server/chunks/routes/api/settings/ai.put.mjs +13 -1
  481. package/.output/server/chunks/routes/api/settings/ai.put.mjs.map +1 -1
  482. package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs +57 -0
  483. package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs.map +1 -0
  484. package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs +63 -0
  485. package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs.map +1 -0
  486. package/.output/server/chunks/routes/api/settings/smtp/test.post.mjs +12 -0
  487. package/.output/server/chunks/routes/api/settings/smtp/test.post.mjs.map +1 -1
  488. package/.output/server/chunks/routes/api/settings/smtp.get.mjs +13 -1
  489. package/.output/server/chunks/routes/api/settings/smtp.get.mjs.map +1 -1
  490. package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs +13 -1
  491. package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs.map +1 -1
  492. package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs +13 -1
  493. package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs.map +1 -1
  494. package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs +13 -1
  495. package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs.map +1 -1
  496. package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs +13 -1
  497. package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs.map +1 -1
  498. package/.output/server/chunks/routes/api/stream.get.mjs +13 -1
  499. package/.output/server/chunks/routes/api/stream.get.mjs.map +1 -1
  500. package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs +13 -1
  501. package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs.map +1 -1
  502. package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs +13 -1
  503. package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs.map +1 -1
  504. package/.output/server/chunks/routes/api/tags/_id_.delete.mjs +13 -1
  505. package/.output/server/chunks/routes/api/tags/_id_.delete.mjs.map +1 -1
  506. package/.output/server/chunks/routes/api/tags/_id_.put.mjs +13 -1
  507. package/.output/server/chunks/routes/api/tags/_id_.put.mjs.map +1 -1
  508. package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs +13 -1
  509. package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs.map +1 -1
  510. package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs +13 -1
  511. package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs.map +1 -1
  512. package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs +13 -1
  513. package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs.map +1 -1
  514. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs +13 -1
  515. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs.map +1 -1
  516. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs +25 -3
  517. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs.map +1 -1
  518. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs +13 -1
  519. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs.map +1 -1
  520. package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs +60 -0
  521. package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs.map +1 -0
  522. package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs +13 -1
  523. package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs.map +1 -1
  524. package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs +13 -1
  525. package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs.map +1 -1
  526. package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs +13 -1
  527. package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs.map +1 -1
  528. package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs +13 -1
  529. package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs.map +1 -1
  530. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs +13 -1
  531. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs.map +1 -1
  532. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs +13 -1
  533. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs.map +1 -1
  534. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs +13 -1
  535. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs.map +1 -1
  536. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs +13 -1
  537. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs.map +1 -1
  538. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs +13 -1
  539. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs.map +1 -1
  540. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs +13 -1
  541. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs.map +1 -1
  542. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs +13 -1
  543. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs.map +1 -1
  544. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs +13 -1
  545. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs.map +1 -1
  546. package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs +13 -1
  547. package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs.map +1 -1
  548. package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs +13 -1
  549. package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs.map +1 -1
  550. package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs +15 -1
  551. package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs.map +1 -1
  552. package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs +196 -0
  553. package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs.map +1 -0
  554. package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs +13 -1
  555. package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs.map +1 -1
  556. package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs +13 -1
  557. package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs.map +1 -1
  558. package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs +13 -1
  559. package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs.map +1 -1
  560. package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs +13 -1
  561. package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs.map +1 -1
  562. package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs +13 -1
  563. package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs.map +1 -1
  564. package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs +13 -1
  565. package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs.map +1 -1
  566. package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs +13 -1
  567. package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs.map +1 -1
  568. package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs +13 -1
  569. package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs.map +1 -1
  570. package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs +13 -1
  571. package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs.map +1 -1
  572. package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs +78 -0
  573. package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs.map +1 -0
  574. package/.output/server/chunks/routes/api/test-runs/import.post.mjs +201 -0
  575. package/.output/server/chunks/routes/api/test-runs/import.post.mjs.map +1 -0
  576. package/.output/server/chunks/routes/api/test-runs/recent.get.mjs +13 -1
  577. package/.output/server/chunks/routes/api/test-runs/recent.get.mjs.map +1 -1
  578. package/.output/server/chunks/routes/api/test-runs/setup.post.mjs +13 -1
  579. package/.output/server/chunks/routes/api/test-runs/setup.post.mjs.map +1 -1
  580. package/.output/server/chunks/routes/api/test-runs/start.post.mjs +13 -1
  581. package/.output/server/chunks/routes/api/test-runs/start.post.mjs.map +1 -1
  582. package/.output/server/chunks/routes/api/test-runs/submit.post.mjs +32 -15
  583. package/.output/server/chunks/routes/api/test-runs/submit.post.mjs.map +1 -1
  584. package/.output/server/chunks/routes/api/test-runs/upload.post.mjs +21 -6
  585. package/.output/server/chunks/routes/api/test-runs/upload.post.mjs.map +1 -1
  586. package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs +154 -3
  587. package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs.map +1 -1
  588. package/.output/server/chunks/routes/api/traces/check.post.mjs +13 -1
  589. package/.output/server/chunks/routes/api/traces/check.post.mjs.map +1 -1
  590. package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs +12 -0
  591. package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs.map +1 -1
  592. package/.output/server/chunks/routes/api/users/_id/index.get.mjs +12 -0
  593. package/.output/server/chunks/routes/api/users/_id/index.get.mjs.map +1 -1
  594. package/.output/server/chunks/routes/api/users/_id/index.post.mjs +13 -1
  595. package/.output/server/chunks/routes/api/users/_id/index.post.mjs.map +1 -1
  596. package/.output/server/chunks/routes/api/users/_id/invite.post.mjs +13 -1
  597. package/.output/server/chunks/routes/api/users/_id/invite.post.mjs.map +1 -1
  598. package/.output/server/chunks/routes/api/users/_id/projects.get.mjs +13 -1
  599. package/.output/server/chunks/routes/api/users/_id/projects.get.mjs.map +1 -1
  600. package/.output/server/chunks/routes/api/users/_id/projects.put.mjs +13 -1
  601. package/.output/server/chunks/routes/api/users/_id/projects.put.mjs.map +1 -1
  602. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +12 -0
  603. package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
  604. package/.output/server/chunks/routes/api/users/_id_.patch.mjs +12 -0
  605. package/.output/server/chunks/routes/api/users/_id_.patch.mjs.map +1 -1
  606. package/.output/server/chunks/routes/api/version.get.mjs +13 -1
  607. package/.output/server/chunks/routes/api/version.get.mjs.map +1 -1
  608. package/.output/server/chunks/routes/mcp.post.mjs +13 -1
  609. package/.output/server/chunks/routes/mcp.post.mjs.map +1 -1
  610. package/.output/server/chunks/routes/renderer.mjs +1 -1
  611. package/.output/server/chunks/tasks/sweep.mjs +12 -0
  612. package/.output/server/chunks/tasks/sweep.mjs.map +1 -1
  613. package/.output/server/chunks/tasks/sweep2.mjs +12 -0
  614. package/.output/server/chunks/tasks/sweep2.mjs.map +1 -1
  615. package/.output/server/database/migrations/0039_remarkable_jean_grey.sql +2 -0
  616. package/.output/server/database/migrations/0040_organic_phalanx.sql +8 -0
  617. package/.output/server/database/migrations/0041_tense_gravity.sql +5 -0
  618. package/.output/server/database/migrations/0042_burly_hemingway.sql +19 -0
  619. package/.output/server/database/migrations/meta/0039_snapshot.json +3403 -0
  620. package/.output/server/database/migrations/meta/0040_snapshot.json +3457 -0
  621. package/.output/server/database/migrations/meta/0041_snapshot.json +3492 -0
  622. package/.output/server/database/migrations/meta/0042_snapshot.json +3618 -0
  623. package/.output/server/database/migrations/meta/_journal.json +28 -0
  624. package/.output/server/database/migrations-pg/0040_lazy_layla_miller.sql +2 -0
  625. package/.output/server/database/migrations-pg/0041_light_screwball.sql +8 -0
  626. package/.output/server/database/migrations-pg/0042_serious_layla_miller.sql +5 -0
  627. package/.output/server/database/migrations-pg/0043_wonderful_mordo.sql +19 -0
  628. package/.output/server/database/migrations-pg/meta/0040_snapshot.json +4060 -0
  629. package/.output/server/database/migrations-pg/meta/0041_snapshot.json +4123 -0
  630. package/.output/server/database/migrations-pg/meta/0042_snapshot.json +4153 -0
  631. package/.output/server/database/migrations-pg/meta/0043_snapshot.json +4308 -0
  632. package/.output/server/database/migrations-pg/meta/_journal.json +28 -0
  633. package/.output/server/index.mjs +13 -1
  634. package/.output/server/index.mjs.map +1 -1
  635. package/.output/server/node_modules/fflate/esm/index.mjs +2710 -0
  636. package/.output/server/node_modules/fflate/package.json +128 -0
  637. package/.output/server/node_modules/highlight.js/es/languages/yaml.js +213 -0
  638. package/.output/server/node_modules/marked/lib/marked.esm.js +72 -0
  639. package/.output/server/node_modules/marked/package.json +103 -0
  640. package/.output/server/package.json +3 -1
  641. package/package.json +2 -2
  642. package/.output/public/_nuxt/36cXPVrY.js +0 -26
  643. package/.output/public/_nuxt/87SGk1nu.js +0 -1
  644. package/.output/public/_nuxt/B6rt3IcG.js +0 -1
  645. package/.output/public/_nuxt/BAaSmp8J.js +0 -1
  646. package/.output/public/_nuxt/BBnX5xw4.js +0 -2
  647. package/.output/public/_nuxt/BCArQk0c.js +0 -1
  648. package/.output/public/_nuxt/BFjmLXYo.js +0 -8
  649. package/.output/public/_nuxt/BJltXwHg.js +0 -1
  650. package/.output/public/_nuxt/BUMZHDRC.js +0 -2
  651. package/.output/public/_nuxt/BdHdHyop.js +0 -34
  652. package/.output/public/_nuxt/BiX7c2qU.js +0 -1
  653. package/.output/public/_nuxt/C11lmBd4.js +0 -4
  654. package/.output/public/_nuxt/C4AfzZER.js +0 -47
  655. package/.output/public/_nuxt/C7ZVzS0K.js +0 -1
  656. package/.output/public/_nuxt/C8cz5feG.js +0 -1
  657. package/.output/public/_nuxt/C9EpbPNU.js +0 -1
  658. package/.output/public/_nuxt/C9ahP7km.js +0 -1
  659. package/.output/public/_nuxt/CBEM3L1q.js +0 -4
  660. package/.output/public/_nuxt/CCsl9MOZ.js +0 -1
  661. package/.output/public/_nuxt/CCw3Tx4S.js +0 -1
  662. package/.output/public/_nuxt/CGq9qR-0.js +0 -1
  663. package/.output/public/_nuxt/CLdGRzLL.js +0 -1
  664. package/.output/public/_nuxt/CTgM5Fke.js +0 -2
  665. package/.output/public/_nuxt/CU3W9YrI.js +0 -1
  666. package/.output/public/_nuxt/CYIR2GbL.js +0 -1
  667. package/.output/public/_nuxt/Ccit_CX1.js +0 -1
  668. package/.output/public/_nuxt/CiPH-swI.js +0 -1
  669. package/.output/public/_nuxt/ClVRQpP_.js +0 -1
  670. package/.output/public/_nuxt/CmbjAoQu.js +0 -1
  671. package/.output/public/_nuxt/Cx65B3c3.js +0 -1
  672. package/.output/public/_nuxt/D1ttGJfs.js +0 -5
  673. package/.output/public/_nuxt/D3SYPlEB.js +0 -114
  674. package/.output/public/_nuxt/DB3ljns7.js +0 -1
  675. package/.output/public/_nuxt/DC51KKt4.js +0 -1
  676. package/.output/public/_nuxt/DaewB_zT.js +0 -1
  677. package/.output/public/_nuxt/DcfRfTaA.js +0 -34
  678. package/.output/public/_nuxt/Dm1_3W9g.js +0 -1
  679. package/.output/public/_nuxt/DraETso1.js +0 -1
  680. package/.output/public/_nuxt/Dy4TloG3.js +0 -1
  681. package/.output/public/_nuxt/EltzgiyS.js +0 -1
  682. package/.output/public/_nuxt/HTQtMbWb.js +0 -1
  683. package/.output/public/_nuxt/KYucVFu7.js +0 -1
  684. package/.output/public/_nuxt/TBDx0s9p.js +0 -3
  685. package/.output/public/_nuxt/Tt5LX5Y-.js +0 -1
  686. package/.output/public/_nuxt/builds/meta/2f517ae9-c342-457e-b4c5-6301728179f5.json +0 -1
  687. package/.output/public/_nuxt/entry.ChQMshd4.css +0 -1
  688. package/.output/public/_nuxt/l0QnzFNM.js +0 -1
  689. package/.output/public/_nuxt/oFIS9u6t.js +0 -3
  690. package/.output/public/_nuxt/oWY3I9uX.js +0 -1
  691. package/.output/public/_nuxt/q0DPzLKN.js +0 -2
  692. package/.output/public/_nuxt/r3SBLxtE.js +0 -1
  693. package/.output/public/_nuxt/riEUDnED.js +0 -1
  694. package/.output/public/_nuxt/uaqMzXqE.js +0 -5
  695. package/.output/public/_nuxt/wgcgHmRR.js +0 -1
  696. package/.output/public/sw.js +0 -1
  697. package/.output/public/workbox-2fbc6a65.js +0 -1
  698. package/.output/server/chunks/build/Alert-Bp1Wz_sq.mjs.map +0 -1
  699. package/.output/server/chunks/build/Breadcrumb-C9ZPTLym.mjs.map +0 -1
  700. package/.output/server/chunks/build/BreadcrumbNav-C3y42Vun.mjs.map +0 -1
  701. package/.output/server/chunks/build/BrowserBadge-DNCp9pF-.mjs.map +0 -1
  702. package/.output/server/chunks/build/ChartCard-Fr557IbV.mjs.map +0 -1
  703. package/.output/server/chunks/build/Checkbox-cVOSIY93.mjs.map +0 -1
  704. package/.output/server/chunks/build/CiEnvCard-DXPOhdSG.mjs.map +0 -1
  705. package/.output/server/chunks/build/CodeBlock-BGwNmJ8J.mjs.map +0 -1
  706. package/.output/server/chunks/build/DashboardNavbar-Bdp-OwTN.mjs.map +0 -1
  707. package/.output/server/chunks/build/DashboardSidebarToggle-Ji6ADuqF.mjs.map +0 -1
  708. package/.output/server/chunks/build/DataLocationCard-D6xSOrme.mjs.map +0 -1
  709. package/.output/server/chunks/build/DiagnosisPanel-DV1xwGu4.mjs.map +0 -1
  710. package/.output/server/chunks/build/EmptyState-DV3oT_xz.mjs.map +0 -1
  711. package/.output/server/chunks/build/EntityLinks-DeOP13Kr.mjs.map +0 -1
  712. package/.output/server/chunks/build/EnvManagedBadge-Qpn58Nmr.mjs.map +0 -1
  713. package/.output/server/chunks/build/FormField-B-GSn_VR.mjs.map +0 -1
  714. package/.output/server/chunks/build/HelpHint-YEMWtKu1.mjs.map +0 -1
  715. package/.output/server/chunks/build/Label-DBvbHd3A.mjs.map +0 -1
  716. package/.output/server/chunks/build/MiniRunBars-C3HG-EYm.mjs.map +0 -1
  717. package/.output/server/chunks/build/Modal-CfA78Hm1.mjs.map +0 -1
  718. package/.output/server/chunks/build/PageStateCard-Bwee6JTk.mjs.map +0 -1
  719. package/.output/server/chunks/build/ProjectTestCasesTable-9Ia825h8.mjs.map +0 -1
  720. package/.output/server/chunks/build/RovingFocusItem-CxhHdNGo.mjs.map +0 -1
  721. package/.output/server/chunks/build/RunReports-BpJqLHY9.mjs.map +0 -1
  722. package/.output/server/chunks/build/RunStatusBadge-BhmJ_RKM.mjs.map +0 -1
  723. package/.output/server/chunks/build/SectionCard-COd9TuDq.mjs.map +0 -1
  724. package/.output/server/chunks/build/Select-ppPz926C.mjs.map +0 -1
  725. package/.output/server/chunks/build/Separator-CxZdx8kw.mjs.map +0 -1
  726. package/.output/server/chunks/build/SettingsField-DDD4oqys.mjs.map +0 -1
  727. package/.output/server/chunks/build/Slideover-B95Rj237.mjs.map +0 -1
  728. package/.output/server/chunks/build/Switch-xQQ3_ME1.mjs.map +0 -1
  729. package/.output/server/chunks/build/Table-CPhhVzDv.mjs.map +0 -1
  730. package/.output/server/chunks/build/Tabs-BV9XqjoO.mjs.map +0 -1
  731. package/.output/server/chunks/build/TagBadge-BDcvvGxw.mjs +0 -47
  732. package/.output/server/chunks/build/TagBadge-BDcvvGxw.mjs.map +0 -1
  733. package/.output/server/chunks/build/TestCaseHistoryChart-DMb-xSJa.mjs.map +0 -1
  734. package/.output/server/chunks/build/TestStatusBar-CEzt76wk.mjs.map +0 -1
  735. package/.output/server/chunks/build/Textarea-DrrqQUVG.mjs.map +0 -1
  736. package/.output/server/chunks/build/Tooltip-7vwuDPrZ.mjs.map +0 -1
  737. package/.output/server/chunks/build/VisuallyHiddenInput-C9eJVpPW.mjs.map +0 -1
  738. package/.output/server/chunks/build/_id_-B2yirIuA.mjs.map +0 -1
  739. package/.output/server/chunks/build/_id_-CE0Gso6i.mjs.map +0 -1
  740. package/.output/server/chunks/build/_id_-bWcP2xFl.mjs.map +0 -1
  741. package/.output/server/chunks/build/about-CoJjvUwM.mjs.map +0 -1
  742. package/.output/server/chunks/build/account-Cn-eZqXM.mjs.map +0 -1
  743. package/.output/server/chunks/build/db.client-aHcD0wyX.mjs.map +0 -1
  744. package/.output/server/chunks/build/default-BSzdkM_L.mjs.map +0 -1
  745. package/.output/server/chunks/build/edit-C9Z7oZeu.mjs.map +0 -1
  746. package/.output/server/chunks/build/fetch-8kznMtBM.mjs.map +0 -1
  747. package/.output/server/chunks/build/forgot-password-BqPF4Rxs.mjs.map +0 -1
  748. package/.output/server/chunks/build/help-content-DmFnuhNu.mjs.map +0 -1
  749. package/.output/server/chunks/build/index-BR9hw6qk.mjs.map +0 -1
  750. package/.output/server/chunks/build/index-Ba-Fifra.mjs.map +0 -1
  751. package/.output/server/chunks/build/index-CULN3-en.mjs.map +0 -1
  752. package/.output/server/chunks/build/index-DVUtBexc.mjs.map +0 -1
  753. package/.output/server/chunks/build/isValueEqualOrExist-DBZjbD_3.mjs.map +0 -1
  754. package/.output/server/chunks/build/login-D2XZDuek.mjs.map +0 -1
  755. package/.output/server/chunks/build/mcp-_o6cMS6m.mjs.map +0 -1
  756. package/.output/server/chunks/build/notifications-Dzm9c0u_.mjs.map +0 -1
  757. package/.output/server/chunks/build/reset-password-gpFzIEDj.mjs.map +0 -1
  758. package/.output/server/chunks/build/settings-metadata-B0wo5R-W.mjs.map +0 -1
  759. package/.output/server/chunks/build/settings-pNyPBXVa.mjs.map +0 -1
  760. package/.output/server/chunks/build/storage-XelzuyPy.mjs.map +0 -1
  761. package/.output/server/chunks/build/tags-DrCQ7QSw.mjs.map +0 -1
  762. package/.output/server/chunks/build/test-cases-pmOxi-AN.mjs.map +0 -1
  763. package/.output/server/chunks/build/timeout-hygiene-CNs71Iah.mjs.map +0 -1
  764. package/.output/server/chunks/build/useAiStatus-ZO987RY7.mjs.map +0 -1
  765. package/.output/server/chunks/build/useCopy-BQQKcwlq.mjs.map +0 -1
  766. package/.output/server/chunks/build/useFormControl-BLpq1s4O.mjs.map +0 -1
  767. package/.output/server/chunks/build/useOpenInIde-kMZ7Jw5c.mjs.map +0 -1
  768. package/.output/server/chunks/build/useSettingsNav-NjI2seBy.mjs.map +0 -1
  769. package/.output/server/chunks/build/useTreeViewCookie-DVYpxW-p.mjs.map +0 -1
  770. package/.output/server/chunks/build/users-NmAUZs3i.mjs.map +0 -1
  771. package/.output/server/chunks/build/virtualizer-ZaqK4guJ.mjs.map +0 -1
  772. package/.output/server/chunks/build/wasted-time-CguAF9zc.mjs.map +0 -1
  773. /package/.output/public/_nuxt/{PageStateCard.BrM5HWjY.css → useCopyRich.BrM5HWjY.css} +0 -0
@@ -1,5 +0,0 @@
1
- import{d as oe,o as n,c as l,j as $,g as S,M as mt,i as d,T as Re,ac as ft,k as t,Q as ge,H as he,v as ye,f as P,p as re,q as k,m as L,t as p,F as D,G as pt,r as j,y as ne,s as Ie,_ as Me,h as w,z as ot,B as Be,ad as Le,C as st,b as gt,D as ht,l as Oe,O as Qe,A as qe,aa as Ae,x as vt,U as Ue,ae as Se,K as je,R as yt,ab as xt,af as bt,ag as kt,ah as _t,Z as $t,$ as wt}from"./D3SYPlEB.js";import{_ as Ze}from"./B6IHiVa1.js";import{q as Ct,u as St,e as Tt,f as We,v as at,l as Pe,k as Lt,w as At}from"./BUMZHDRC.js";import{_ as It,a as zt}from"./C8cz5feG.js";import{_ as Ne}from"./empGC_x-.js";import{_ as Bt}from"./l0QnzFNM.js";import{u as Ge}from"./D3MWm6JP.js";import{u as Ee}from"./Doul3p1_.js";import{_ as Rt}from"./Dwp3GkV-.js";import{_ as Pt}from"./CCw3Tx4S.js";import{_ as Ot}from"./oFIS9u6t.js";import{l as Ut,i as Et,b as Mt}from"./36cXPVrY.js";import{_ as rt}from"./Tt5LX5Y-.js";import{_ as jt}from"./DoFSKAvY.js";const Nt={class:"flex items-center justify-between gap-2"},Kt=["aria-expanded","title"],Vt={class:"text-lg font-medium inline-flex items-center gap-1 shrink-0"},Dt={key:2,class:"min-w-0 flex-1 truncate text-sm text-gray-500 dark:text-gray-400"},Ht={key:0,class:"flex items-center gap-1 shrink-0"},Ft={key:0,class:"text-sm text-gray-500 mt-1 ml-11"},qt=oe({__name:"CollapsibleSectionCard",props:{title:{},icon:{},subtitle:{},count:{},iconClass:{default:"text-primary"},help:{},storageKey:{},defaultFolded:{type:Boolean,default:!0}},setup(e,{expose:r}){const i=e,{folded:m,toggle:o,setFolded:a}=Ut(`piwi-section-fold-${i.storageKey}`,i.defaultFolded),s=j(null);function g(){a(!1),pt(()=>s.value?.scrollIntoView({behavior:"smooth",block:"start"}))}return r({setFolded:a,reveal:g}),(c,h)=>{const C=ye,T=It,x=jt;return n(),l("div",{ref_key:"rootEl",ref:s,class:"scroll-mt-4"},[$(x,{ui:{header:"p-3 sm:px-4 sm:py-3",body:t(m)?"p-0 sm:p-0":""},class:re(t(m)&&"divide-y-0")},{header:S(()=>[d("div",Nt,[d("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(m),title:t(m)?"Expand section":"Collapse section",onClick:h[1]||(h[1]=(...A)=>t(o)&&t(o)(...A)),onKeydown:[h[2]||(h[2]=ge((...A)=>t(o)&&t(o)(...A),["enter"])),h[3]||(h[3]=ge(he((...A)=>t(o)&&t(o)(...A),["prevent"]),["space"]))]},[$(C,{name:t(m)?"i-lucide-chevron-right":"i-lucide-chevron-down",class:"size-4 shrink-0 text-gray-400"},null,8,["name"]),e.icon?(n(),P(C,{key:0,name:e.icon,class:re(["size-5 shrink-0",e.iconClass])},null,8,["name","class"])):k("",!0),d("h3",Vt,[L(p(e.title),1),e.count!=null?(n(),l(D,{key:0},[L(" ("+p(e.count)+")",1)],64)):k("",!0)]),e.help?(n(),l("span",{key:1,onClick:h[0]||(h[0]=he(()=>{},["stop"]))},[$(T,{topic:e.help},null,8,["topic"])])):k("",!0),t(m)&&c.$slots.folded?(n(),l("span",Dt,[Re(c.$slots,"folded")])):k("",!0)],40,Kt),c.$slots.actions?(n(),l("div",Ht,[Re(c.$slots,"actions")])):k("",!0)]),!t(m)&&(e.subtitle||c.$slots.subtitle)?(n(),l("p",Ft,[Re(c.$slots,"subtitle",{},()=>[L(p(e.subtitle),1)])])):k("",!0)]),default:S(()=>[mt(d("div",null,[Re(c.$slots,"default")],512),[[ft,!t(m)]])]),_:3},8,["ui","class"])],512)}}}),Ke=Object.assign(qt,{__name:"CollapsibleSectionCard"}),Zt={class:"overflow-x-auto text-xs font-mono"},Wt=oe({__name:"DiffPatch",props:{patch:{}},setup(e){return(r,i)=>(n(),l("div",Zt,[(n(!0),l(D,null,ne(("parsePatchLines"in r?r.parsePatchLines:t(St))(e.patch),(m,o)=>(n(),l("div",{key:o,class:re(["px-3 py-px whitespace-pre leading-5 min-w-0",("patchLineClass"in r?r.patchLineClass:t(Ct))[m.type]])},p(m.text||" "),3))),128))]))}}),Gt=Object.assign(Wt,{__name:"DiffPatch"}),Yt=["role","aria-checked","tabindex"],Jt={class:"flex-1 min-w-0"},Qt=["title"],Xt={key:0,class:"text-[11px] leading-4 text-gray-500 truncate"},en=oe({__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 i(a){return a>=80?"success":a>=50?"warning":"error"}function m(a){const{method:s,score:g,args:c}=a;return c&&(c.anchorTestId||c.anchorSelector||c.anchorRole)?"scoped to a stable ancestor — survives renames":g>=100?"most stable — purpose-built for testing":s==="getByRole"&&c&&!("name"in c)?"name-free role — survives renames":s==="getByRole"?"browser ARIA tree — semantic and stable":s==="getByLabel"?"associated <label> element":s==="getByPlaceholder"?"input placeholder":s==="getByText"?"visible text":s==="getByAltText"?"image alt text":s==="getByTitle"?"title attribute":s==="locator"&&g>=50?"stable selector":s==="locator"?"CSS class — may be fragile":""}const o=w(()=>r.note??m(r.alt));return(a,s)=>{const g=Ie,c=ye,h=Me;return n(),l("div",{class:re(["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:s[1]||(s[1]=C=>e.selectable&&a.$emit("select")),onKeydown:[s[2]||(s[2]=ge(he(C=>e.selectable&&a.$emit("select"),["prevent"]),["enter"])),s[3]||(s[3]=ge(he(C=>e.selectable&&a.$emit("select"),["prevent"]),["space"]))]},[$(g,{size:"xs",color:i(e.alt.score),variant:"subtle",class:re(["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:S(()=>[L(p(e.alt.score),1)]),_:1},8,["color","class","title"]),d("div",Jt,[d("code",{class:"text-xs font-mono block truncate",title:e.alt.locator},p(e.alt.locator),9,Qt),t(o)?(n(),l("p",Xt,p(t(o)),1)):k("",!0)]),e.alt.pickedByUser&&e.dense?(n(),P(c,{key:0,name:"i-lucide-user-check",class:"size-3.5 text-primary shrink-0",title:"Confirmed with the locator picker"})):e.alt.pickedByUser?(n(),P(g,{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"})):k("",!0),$(h,{size:"xs",variant:"ghost",color:"neutral",icon:e.copied?"i-lucide-check":"i-lucide-copy",title:e.copied?"Copied!":"Copy",class:"shrink-0",onClick:s[0]||(s[0]=he(C=>a.$emit("copy"),["stop"]))},null,8,["icon","title"])],42,Yt)}}}),it=Object.assign(en,{__name:"LocatorAlternativeRow"}),Xe={getByTestId:"testid",getByRole:"semantic",getByLabel:"label",getByPlaceholder:"label",getByText:"text",getByAltText:"text",getByTitle:"text",locator:"css","page.locator":"css"},tn=50;function lt(e,r,i=tn){const m=r[0]??null;if(!m)return{recommended:null,durable:null,preservesConvention:!1,hasDurableAlternative:!1,suggestAddTestId:!1};const o=e?Xe[e]:void 0,a=(e?r.find(c=>c.method===e&&c.score>=i):void 0)??(o?r.find(c=>Xe[c.method]===o&&c.score>=i):void 0),g=r.find(c=>c.pickedByUser)??a??m;return{recommended:g,durable:m,preservesConvention:!!a&&g===a,hasDurableAlternative:g.locator!==m.locator,suggestAddTestId:m.score<i}}const ct={a:"link",button:"button",nav:"navigation",main:"main",article:"article",section:"region",form:"form",img:"img",figure:"figure",figcaption:"caption",blockquote:"blockquote",table:"table",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"},nn={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"},on=["id","class","name","data-testid","placeholder","alt","title","aria-label","aria-level","role","type","href","multiple"];function sn(e){const r=e.attributes.role;if(r)return r;const i=e.tagName;if(!i)return null;if(i==="input"){const m=(e.attributes.type??"text").toLowerCase();return nn[m]??"textbox"}return i==="select"?e.attributes.multiple!=null?"listbox":"combobox":i==="a"?e.attributes.href!=null?"link":null:ct[i]??null}function an(e,r){if(r!=="heading")return null;const i=e.tagName.match(/^h([1-6])$/);if(i)return Number(i[1]);const m=e.attributes["aria-level"];return m&&/^\d+$/.test(m)?Number(m):null}const $e=(e,r)=>e.attributes[r]||null,pe=e=>e.replace(/\\/g,"\\\\").replace(/'/g,"\\'"),He=e=>e.replace(/\\/g,"\\\\").replace(/"/g,'\\"'),et=e=>/^[A-Za-z][A-Za-z0-9_-]*$/.test(e);function rn(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 tt(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+$/.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))}function ln(e){const r=[],i=new Set,m=y=>{i.has(y.locator)||(i.add(y.locator),r.push(y))},{accessibleName:o}=e,a=e.tagName,s=sn(e),g=e.selectorCounts,c=y=>y==null||y<=1,h=e.textContent?e.textContent.replace(/\s+/g," ").trim():null,C=$e(e,"data-testid");C&&c(g?.testId)&&m({locator:`getByTestId('${pe(C)}')`,method:"getByTestId",args:{testId:C},score:100});const T=an(e,s),x=T!=null?`, level: ${T}`:"",A=y=>T!=null?{...y,level:T}:y;s&&o&&m({locator:`getByRole('${s}', { name: '${pe(o)}'${x} })`,method:"getByRole",args:A({role:s,name:o}),score:90});const z=$e(e,"aria-label");if(s&&z&&z!==o&&m({locator:`getByRole('${s}', { name: '${pe(z)}'${x} })`,method:"getByRole",args:A({role:s,name:z}),score:85}),o&&["input","select","textarea"].includes(a)){const y=$e(e,"aria-label");(e.hasLabel===void 0||e.hasLabel===!0||y===o)&&m({locator:`getByLabel('${pe(o)}')`,method:"getByLabel",args:{label:o},score:85})}const B=$e(e,"placeholder");B&&m({locator:`getByPlaceholder('${pe(B)}')`,method:"getByPlaceholder",args:{placeholder:B},score:80}),h&&h.length<80&&m({locator:`getByText('${pe(h)}')`,method:"getByText",args:{text:h},score:75});const Z=$e(e,"id");if(Z&&!tt(Z)&&c(g?.id)){const y=et(Z)?`#${Z}`:`[id="${He(Z)}"]`;m({locator:`locator('${pe(y)}')`,method:"locator",args:{selector:y},score:65})}const Y=$e(e,"name");if(Y&&c(g?.name)){const y=`[name="${He(Y)}"]`;m({locator:`locator('${pe(y)}')`,method:"locator",args:{selector:y},score:60})}const E=$e(e,"alt");E&&m({locator:`getByAltText('${pe(E)}')`,method:"getByAltText",args:{text:E},score:60});const O=$e(e,"title");O&&m({locator:`getByTitle('${pe(O)}')`,method:"getByTitle",args:{title:O},score:50});const ce=!!(C&&c(g?.testId));if(s&&!ce){const y=T!=null?`'${s}', { level: ${T} }`:`'${s}'`,H=A({role:s});let M=!1,K=!1,W=!1;for(const Q of e.ancestors??[]){if(Q.scopedRoleCount!==1)continue;if(!M&&Q.testId&&Q.testIdCount===1&&(M=!0,m({locator:`getByTestId('${pe(Q.testId)}').getByRole(${y})`,method:"getByRole",args:{...H,anchorTestId:Q.testId},score:72})),!K&&Q.id&&!tt(Q.id)&&Q.idCount===1){K=!0;const xe=et(Q.id)?`#${Q.id}`:`[id="${He(Q.id)}"]`;m({locator:`locator('${pe(xe)}').getByRole(${y})`,method:"getByRole",args:{...H,anchorSelector:xe},score:64})}const ve=Q.role||ct[Q.tag]||null;!W&&ve&&ve!==s&&Q.roleCount===1&&(W=!0,m({locator:`getByRole('${pe(ve)}').getByRole(${y})`,method:"getByRole",args:{...H,anchorRole:ve},score:55}))}const F=e.rolePosition;F&&F.role===s&&(F.count===1||T!=null&&F.levelCount===1)&&m({locator:`getByRole(${y})`,method:"getByRole",args:H,score:58})}const ee=$e(e,"class");if(ee){const y=g?.classes,H=ee.split(/\s+/).filter(M=>M.length>1&&/^[A-Za-z_-][A-Za-z0-9_-]*$/.test(M)&&c(y?.[M])).map(M=>({cls:M,score:rn(M)})).sort((M,K)=>K.score-M.score).slice(0,3);for(const{cls:M,score:K}of H)m({locator:`locator('.${pe(M)}')`,method:"locator",args:{selector:`.${M}`},score:K})}return r.sort((y,H)=>H.score-y.score)}function cn(e){const r=e.attributes,i=r["aria-label"];if(i)return i;if(e.textContent)return e.textContent;const m=r.title;if(m)return m;const o=r.placeholder;return o||null}function un(e){if(window.__piwiPickerInstalled)return;window.__piwiPickerInstalled=!0;var r=document,i=window,m=2147483600,o=e.probedAttrs,a=r.createElement("div");a.id="__piwi_picker_highlight",a.style.cssText="position:fixed;pointer-events:none;z-index:"+m+";display:none;box-sizing:border-box;border:2px solid #7c3aed;background:rgba(124,58,237,.12);border-radius:3px;",r.body.appendChild(a);var s=r.createElement("div");s.id="__piwi_picker_banner",s.style.cssText="position:fixed;top:12px;left:50%;transform:translateX(-50%);z-index:"+(m+2)+";background:#111827;color:#f9fafb;font:13px/1.5 system-ui,sans-serif;padding:10px 16px;border-radius:8px;box-shadow:0 4px 24px rgba(0,0,0,.4);max-width:80vw;",s.innerHTML='<div>Click an element to generate locators</div><div style="color:#9ca3af;margin-top:3px;font-size:11px">↑ parent · ↓ child · Esc skip</div>',r.body.appendChild(s),i.parent.postMessage({type:"pickerReady"},"*");function g(u){var b=(u.tagName||"?").toLowerCase(),I=u.getAttribute&&u.getAttribute("data-testid");if(I)return"getByTestId('"+I+"')";if(u.labels&&u.labels.length>0){var U=(u.labels[0].textContent||"").replace(/\s+/g," ").trim().slice(0,80);if(U)return"getByLabel('"+U+"')"}var X=u.getAttribute&&u.getAttribute("aria-label");if(X)return"getByLabel('"+X+"')";var J=u.getAttribute&&u.getAttribute("placeholder");if(J)return"getByPlaceholder('"+J+"')";var q=u.getAttribute&&u.getAttribute("alt");if(q)return"getByAltText('"+q+"')";var ae=u.getAttribute&&u.getAttribute("title");if(ae)return"getByTitle('"+ae+"')";if(u.id)return"locator('#"+u.id+"')";var fe=(u.getAttribute&&u.getAttribute("class")||"").split(/\s+/).find(function(_){return _.length>1});return fe?"locator('."+fe+"')":b}function c(u){for(var b=[],I=u;I&&b.length<15;){var U=(I.tagName||"").toLowerCase();if(U==="body"||U==="html")break;b.push(I),I=I.parentElement}return b.length?b:[u]}var h=["button","a","input","select","textarea","summary","option"];function C(u){for(var b=0;b<Math.min(u.length,4);b++){var I=u[b],U=(I.tagName||"").toLowerCase();if(h.indexOf(U)!==-1||I.getAttribute&&(I.getAttribute("role")||I.getAttribute("data-testid")))return b}return 0}var T=[],x=0,A=null;function z(){return T[x]||null}function B(){var u=z();if(!u){a.style.display="none";return}var b=u.getBoundingClientRect();a.style.display="block",a.style.left=b.left+"px",a.style.top=b.top+"px",a.style.width=b.width+"px",a.style.height=b.height+"px";var I=r.getElementById("__piwi_picker_foot");I&&(I.textContent=g(u)+" — click to pick · ↑ parent · ↓ child · Esc skip")}var Z=s.querySelector("[style*=margin]");Z&&(Z.id="__piwi_picker_foot");function Y(u){for(var b={},I=0;I<o.length;I++){var U=o[I],X=u.getAttribute(U)||u[U];b[U]=typeof X=="string"?X.slice(0,200):X?String(X).slice(0,200):null}var J=u.getBoundingClientRect(),q={};try{var ae=function(we){return i.CSS.escape(we)},fe=function(we){try{return r.querySelectorAll(we).length}catch{return}};b["data-testid"]&&(q.testId=fe("[data-testid="+JSON.stringify(b["data-testid"])+"]")),b.id&&(q.id=fe("#"+ae(b.id))),b.name&&(q.name=fe("[name="+JSON.stringify(b.name)+"]"));var _=(b.class||"").split(/\s+/).filter(function(we){return we.length>1}).slice(0,10);if(_.length>0){for(var v={},G=0;G<_.length;G++){var le=fe("."+ae(_[G]));le!==void 0&&(v[_[G]]=le)}q.classes=v}}catch{}var Ve=null;return u.labels&&u.labels.length>0&&(Ve=(u.labels[0].textContent||"").replace(/\s+/g," ").trim().slice(0,120)||null),{tagName:(u.tagName||"").toLowerCase(),attributes:b,textContent:(u.textContent||"").replace(/\s+/g," ").trim().slice(0,80)||null,center:{x:Math.round(J.x+J.width/2),y:Math.round(J.y+J.height/2)},hasLabel:!!(u.labels&&u.labels.length>0),labelText:Ve,selectorCounts:q}}function E(u){u.preventDefault(),u.stopImmediatePropagation()}function O(u){return u===s||u===a||s.contains&&s.contains(u)||u&&u.__piwiHint}var ce="top";function ee(u){ce!==u&&(ce=u,u==="bottom"?(s.style.top="auto",s.style.bottom="12px"):(s.style.top="12px",s.style.bottom="auto"))}function y(u){var b=u.target;if(!b||O(b)){a.style.display="none";return}b!==A&&(A=b,T=c(b),x=C(T)),B();var I=z();if(I){var U=I.getBoundingClientRect(),X=s.getBoundingClientRect(),J=8;U.left<X.right+J&&U.right>X.left-J&&U.top<X.bottom+J&&U.bottom>X.top-J&&ee(ce==="top"?"bottom":"top")}}function H(u){if(u==="Escape"){Te();return}u==="ArrowUp"&&(x=Math.min(x+1,T.length-1),B()),u==="ArrowDown"&&(x=Math.max(x-1,0),B())}function M(u){(u.key==="Escape"||u.key==="ArrowUp"||u.key==="ArrowDown")&&(E(u),H(u.key))}var K=[];function W(){for(var u=0;u<K.length;u++)K[u].parentNode&&K[u].parentNode.removeChild(K[u]);K=[]}function F(u){return(u||"").replace(/\s+/g," ").trim().toLowerCase()}function Q(u){var b=F(u);if(b.length<2)return[];for(var I=r.querySelectorAll("button,a,[role],h1,h2,h3,h4,h5,h6,label,summary,input,textarea,select,option,span,li,td,th,p"),U=[],X=[],J=0;J<I.length;J++){var q=I[J],ae=F(q.textContent);if(!ae){var fe=F(q.getAttribute&&(q.getAttribute("placeholder")||q.getAttribute("aria-label"))||"");fe&&(fe===b||fe.indexOf(b)!==-1)&&U.push(q);continue}ae.length>120||(ae===b?U.push(q):ae.indexOf(b)!==-1&&ae.length<b.length+30&&X.push(q))}return U.concat(X)}function ve(u,b){var I=u.getBoundingClientRect();if(I.width===0&&I.height===0)return null;var U=r.createElement("div");return U.__piwiHint=!0,U.style.cssText="position:fixed;pointer-events:none;z-index:"+(m+1)+";box-sizing:border-box;border-radius:3px;transition:opacity .3s;border:2px solid "+b+";box-shadow:0 0 0 3px "+b+"55;left:"+I.left+"px;top:"+I.top+"px;width:"+I.width+"px;height:"+I.height+"px;",r.body.appendChild(U),K.push(U),U}function xe(u){var b=u.getBoundingClientRect();i.parent.postMessage({type:"piwiScrollTo",y:b.top},"*")}function ze(u){if(W(),!(!u||!u.length)){for(var b=null,I=0;I<u.length;I++)for(var U=u[I],X=Q(U&&U.text),J=0;J<Math.min(X.length,3);J++)ve(X[J],"#f59e0b"),b||(b=X[J]);b&&xe(b),setTimeout(function(){for(var q=0;q<K.length;q++)K[q].style.opacity="0"},2600),setTimeout(W,3e3)}}var te=[],ke=0;function R(){i.parent.postMessage({type:"piwiSearchResult",count:te.length,index:te.length?ke:-1},"*")}function f(){W();var u=te[ke];u&&(ve(u,"#7c3aed"),xe(u),R())}function N(u){if(te=Q(u),ke=0,!te.length){W(),R();return}f()}function be(){te.length&&(ke=(ke+1)%te.length,f())}function me(u){var b=u.data;if(!(!b||typeof b.type!="string")){if(b.type==="piwiPickerKey"&&typeof b.key=="string")H(b.key);else if(b.type==="piwiHighlight")try{ze(b.hints)}catch{}else if(b.type==="piwiSearch")try{N(b.q)}catch{}else if(b.type==="piwiSearchNext")try{be()}catch{}else if(b.type==="piwiClearHints")try{W()}catch{}}}function ue(u){E(u);var b=z();if(!(!b||O(u.target))){var I=Y(b);a.style.display="none",W(),s.innerHTML='<div style="text-align:center;color:#9ca3af;">Analyzing element…</div>',Ce(),i.parent.postMessage({type:"elementPicked",attrs:I},"*")}}var _e=["mousedown","mouseup","pointerdown","pointerup","auxclick","dblclick"];function Ce(){r.removeEventListener("mousemove",y,!0),r.removeEventListener("click",ue,!0),r.removeEventListener("keydown",M,!0),i.removeEventListener("message",me,!1);for(var u=0;u<_e.length;u++)r.removeEventListener(_e[u],E,!0)}function Te(){Ce(),W(),a.remove(),s.remove(),i.parent.postMessage({type:"pickerClosed"},"*")}r.addEventListener("mousemove",y,!0),r.addEventListener("click",ue,!0),r.addEventListener("keydown",M,!0),i.addEventListener("message",me,!1);for(var se=0;se<_e.length;se++)r.addEventListener(_e[se],E,!0);function V(){var u=Math.max(r.documentElement?r.documentElement.scrollHeight:0,r.body?r.body.scrollHeight:0);u>0&&i.parent.postMessage({type:"piwiContentHeight",height:u},"*")}V();try{if(i.ResizeObserver){var ie=new i.ResizeObserver(V);r.documentElement&&ie.observe(r.documentElement),r.body&&ie.observe(r.body)}}catch{}}function dn(e){const r=[],i=new Set,m=a=>{if(typeof a!="string")return;const s=a.trim();if(s.length<2||s.length>80)return;const g=s.toLowerCase();i.has(g)||(i.add(g),r.push({text:s}))},o=a=>a&&(a.name??a.text??a.label??a.placeholder??a.alt??a.title);m(o(e.failingLocator?.args));for(const a of e.fromElementMatch??[])m(o(a.args));for(const a of e.fromAriaSnapshot??[])m(o(a.args));return r.slice(0,6)}function mn(e){return`<script>(${String(un).replace(/<\/(script)/gi,"<\\/$1")})(${JSON.stringify(e)})<\/script>`}function fn(e){return e.replace(/<base\b[^>]*>/gi,"")}function pn(e,r){return fn(e)+mn(r)}const gn={key:0,class:"flex items-center justify-center py-20"},hn={key:1,class:"py-8 text-center"},vn={class:"text-xs text-gray-400 mt-1"},yn={key:2,class:"py-8 text-center"},xn={class:"mb-2 flex items-center gap-2 flex-wrap"},bn={key:1,class:"ml-auto inline-flex rounded-md border border-default overflow-hidden text-xs"},kn={key:0,class:"flex items-center gap-1 mb-1.5 text-xs text-gray-500"},_n={class:"tabular-nums w-11 text-center select-none"},$n={class:"ml-auto text-gray-400 tabular-nums"},wn={key:1,class:"flex items-center gap-2 mb-1.5"},Cn={key:0,class:"text-xs text-gray-500 tabular-nums"},Sn={key:1,class:"text-xs text-gray-400"},Tn={key:0,class:"absolute inset-0 flex items-center justify-center bg-white dark:bg-gray-900 z-10"},Ln=["src"],An={key:2,class:"mt-4 space-y-3"},In={class:"flex items-center gap-3 bg-elevated rounded-lg p-3"},zn={class:"flex-1 min-w-0"},Bn={class:"text-sm font-medium"},Rn={class:"text-xs"},Pn={key:0,class:"text-xs text-gray-400 ml-1"},On={key:0,class:"text-xs text-gray-500 mt-0.5 truncate"},Un={class:"space-y-1",role:"radiogroup","aria-label":"Alternative locators"},En={class:"flex-1 min-w-0"},Mn={class:"text-xs font-medium text-primary"},jn={class:"text-sm font-mono block truncate mt-0.5"},Nn={class:"flex justify-between w-full"},Kn={key:1},Vn={class:"flex gap-2"},Dn=oe({__name:"SnapshotLocatorPicker",props:qe({runId:{},testRunsCaseId:{},failingLocator:{},healing:{}},{open:{type:Boolean,required:!0},openModifiers:{}}),emits:qe(["close","confirmed"],["update:open"]),setup(e,{emit:r}){const i=e,m=r,o=ot(e,"open"),a=j(!1),s=j(null),g=j(null),c=j(void 0);async function h(){a.value=!0,g.value=null;try{const _=c.value?`?source=${c.value}`:"";s.value=await $fetch(`/api/test-runs/${i.runId}/cases/${i.testRunsCaseId}/dom-snapshot${_}`),s.value?.source&&(c.value=s.value.source)}catch(_){g.value=_ instanceof Error?_.message:"Unknown error"}finally{a.value=!1}}const C=w(()=>s.value?.availableSources??[]);function T(_){_===c.value||a.value||(c.value=_,z.value=!1,x.value="pick-element",ee.value=0,H.value=!1,B.value=null,Z.value=[],se.value=null,N.value="",be.value=0,me.value=-1,h())}Be(o,_=>{_&&(s.value=null,z.value=!1,x.value="pick-element",ee.value=0,H.value=!1,c.value=void 0,B.value=null,Z.value=[],se.value=null,N.value="",be.value=0,me.value=-1,h())});const x=j("pick-element"),A=j(null),z=j(!1),B=j(null),Z=j([]),Y=j(void 0);function E(_){return URL.createObjectURL(new Blob([pn(_,{probedAttrs:on})],{type:"text/html"}))}Be(()=>s.value?.html,_=>{Y.value&&(URL.revokeObjectURL(Y.value),Y.value=void 0),_&&(Y.value=E(_))},{immediate:!0});const O=j(null),ce=j(0),ee=j(0),y=j(1),H=j(!1),M=w(()=>s.value?.viewport??null),K=w(()=>{const _=M.value;return!_?.width||!ce.value?1:Math.min(ce.value/_.width,1)}),W=w(()=>{const _=M.value;if(!_)return{width:"100%",height:ee.value?`${ee.value}px`:"100%"};const v=ee.value||_.height;return{width:`${Math.round(_.width*y.value)}px`,height:`${Math.round(v*y.value)}px`}}),F=w(()=>{const _=M.value;if(!_)return{width:"100%",height:ee.value?`${ee.value}px`:"100%",border:"0"};const v=ee.value||_.height;return{width:`${_.width}px`,height:`${v}px`,transform:`scale(${y.value})`,transformOrigin:"top left",border:"0"}}),Q=w(()=>Math.round(y.value*100)),ve=_=>Math.min(4,Math.max(.1,_));function xe(_){H.value=!0,y.value=ve(y.value*_)}function ze(){H.value=!1,y.value=K.value}Be([K,M],()=>{H.value||(y.value=K.value)});let te=null;Be(O,_=>{te?.disconnect(),_&&(ce.value=_.clientWidth,te=new ResizeObserver(v=>{for(const G of v)ce.value=G.contentRect.width}),te.observe(_))}),Le(()=>{te?.disconnect()}),Le(()=>{Y.value&&URL.revokeObjectURL(Y.value)});function ke(_){if(!A.value||_.source!==A.value.contentWindow)return;const v=_.data;if(v?.type==="pickerReady"){z.value=!0,f();return}if(v?.type==="piwiContentHeight"&&typeof v.height=="number"){ee.value=Math.max(v.height,M.value?.height??0);return}if(v?.type==="piwiScrollTo"&&typeof v.y=="number"){const G=O.value;G&&G.scrollTo({top:Math.max(0,v.y*y.value-80),behavior:"smooth"});return}if(v?.type==="piwiSearchResult"){be.value=typeof v.count=="number"?v.count:0,me.value=typeof v.index=="number"?v.index:-1;return}if(v?.type==="elementPicked"&&v.attrs){const{labelText:G,...le}=v.attrs;B.value={...le,accessibleName:G??cn(le)},Z.value=ln(B.value),se.value=null,x.value="review"}v?.type==="pickerClosed"&&U()}function R(_){A.value?.contentWindow?.postMessage(_,"*")}function f(){const _=dn({failingLocator:i.failingLocator,fromElementMatch:i.healing?.fromElementMatch??null,fromAriaSnapshot:i.healing?.fromAriaSnapshot??null});_.length&&R({type:"piwiHighlight",hints:_})}const N=j(""),be=j(0),me=j(-1);let ue=null;Be(N,_=>{ue&&clearTimeout(ue),ue=setTimeout(()=>R({type:"piwiSearch",q:_}),180)});function _e(){R({type:"piwiSearchNext"})}Le(()=>{ue&&clearTimeout(ue)});function Ce(_){if(!o.value||x.value!=="pick-element"||!z.value||_.key!=="ArrowUp"&&_.key!=="ArrowDown")return;const v=(document.activeElement?.tagName??"").toLowerCase();if(v==="input"||v==="textarea")return;const G=A.value?.contentWindow;G&&(_.preventDefault(),G.postMessage({type:"piwiPickerKey",key:_.key},"*"))}function Te(){A.value&&(A.value.src="about:blank")}st(()=>{window.addEventListener("message",ke),window.addEventListener("keydown",Ce,!0)}),Le(()=>{window.removeEventListener("message",ke),window.removeEventListener("keydown",Ce,!0)});const se=j(null),V=j(!1);function ie(_){se.value=_}const u=w(()=>lt(i.failingLocator.method,Z.value)),b=gt();async function I(){if(se.value){V.value=!0;try{(await $fetch(`/api/test-runs/${i.runId}/cases/${i.testRunsCaseId}/locator-pick`,{method:"POST",body:{failingLocator:i.failingLocator,pickedLocator:se.value,element:B.value}})).status==="ok"?m("confirmed",se.value):b.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"}),o.value=!1}catch(_){b.add({title:"Could not save the pick",description:Tt(_),color:"error",icon:"i-lucide-alert-triangle"})}finally{V.value=!1}}}function U(){Te(),o.value=!1}function X(){B.value=null,Z.value=[],se.value=null,x.value="pick-element",z.value=!1,N.value="",be.value=0,me.value=-1;const _=s.value?.html;_&&(Y.value&&URL.revokeObjectURL(Y.value),Y.value=E(_))}const{copy:J}=Ge(),q=j(null);let ae=null;function fe(_,v){J(_,{toast:"Locator copied"}),q.value=v,ae&&clearTimeout(ae),ae=setTimeout(()=>{q.value=null},2e3)}return Le(()=>{ae&&clearTimeout(ae)}),(_,v)=>{const G=ye,le=Me,Ve=ht,we=Ie,Je=Bt;return n(),P(Je,{open:o.value,"onUpdate:open":v[8]||(v[8]=de=>o.value=de),ui:{content:"max-w-6xl w-[95vw]"},onAfterLeave:U},{header:S(()=>[...v[9]||(v[9]=[d("div",null,[d("h3",{class:"text-lg font-medium"},"Pick a locator from the DOM snapshot"),d("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:S(()=>[t(a)?(n(),l("div",gn,[$(G,{name:"i-lucide-loader",class:"size-6 animate-spin text-gray-400"}),v[10]||(v[10]=d("span",{class:"ml-2 text-sm text-gray-500"},"Loading DOM snapshot...",-1))])):t(g)?(n(),l("div",hn,[$(G,{name:"i-lucide-alert-triangle",class:"size-8 text-red-300 mx-auto mb-2"}),v[12]||(v[12]=d("p",{class:"text-sm text-red-500"},"Failed to load snapshot",-1)),d("p",vn,p(t(g)),1),$(le,{size:"xs",variant:"outline",color:"neutral",class:"mt-3",onClick:h},{default:S(()=>[...v[11]||(v[11]=[L("Retry",-1)])]),_:1})])):t(s)?.status!=="ok"||!t(s).html?(n(),l("div",yn,[$(G,{name:"i-lucide-file-x",class:"size-8 text-gray-300 mx-auto mb-2"}),v[13]||(v[13]=d("p",{class:"text-sm text-gray-500"},"No DOM snapshot or ARIA data available for this execution",-1)),v[14]||(v[14]=d("p",{class:"text-xs text-gray-400 mt-1"},"This test run has no stored trace or ARIA snapshot to pick from.",-1))])):(n(),l(D,{key:3},[d("div",xn,[t(s).source?(n(),l("div",{key:0,class:re(["text-xs flex items-center gap-1",t(s).source==="aria"?"text-amber-600 dark:text-amber-400":"text-green-600 dark:text-green-400"])},[$(G,{name:t(s).source==="aria"?"i-lucide-accessibility":"i-lucide-check",class:"size-3.5 shrink-0"},null,8,["name"]),t(s).source==="aria"?(n(),l(D,{key:0},[L(" Accessibility tree from the failure-time ARIA snapshot — element styles are approximate ")],64)):(n(),l(D,{key:1},[L(" Rendered from the failure-time DOM snapshot ")],64))],2)):k("",!0),t(C).length>1?(n(),l("div",bn,[d("button",{type:"button",class:re(["px-2 py-1 flex items-center gap-1 transition-colors",t(c)==="dom"?"bg-primary/10 text-primary font-medium":"text-gray-500 hover:bg-elevated"]),title:"Rendered page from the trace",onClick:v[0]||(v[0]=de=>T("dom"))},[$(G,{name:"i-lucide-layout-panel-top",class:"size-3.5"}),v[15]||(v[15]=L(" DOM ",-1))],2),d("button",{type:"button",class:re(["px-2 py-1 flex items-center gap-1 border-l border-default transition-colors",t(c)==="aria"?"bg-primary/10 text-primary font-medium":"text-gray-500 hover:bg-elevated"]),title:"Accessibility tree from the ARIA snapshot",onClick:v[1]||(v[1]=de=>T("aria"))},[$(G,{name:"i-lucide-accessibility",class:"size-3.5"}),v[16]||(v[16]=L(" Tree ",-1))],2)])):k("",!0)]),t(M)?(n(),l("div",kn,[$(le,{size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-zoom-out",title:"Zoom out",onClick:v[2]||(v[2]=de=>xe(1/1.25))}),d("span",_n,p(t(Q))+"%",1),$(le,{size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-zoom-in",title:"Zoom in",onClick:v[3]||(v[3]=de=>xe(1.25))}),$(le,{size:"xs",variant:"outline",color:"neutral",class:"ml-1",onClick:ze},{default:S(()=>[...v[17]||(v[17]=[L("Fit",-1)])]),_:1}),d("span",$n,p(t(M).width)+"×"+p(t(M).height),1)])):k("",!0),t(x)==="pick-element"?(n(),l("div",wn,[$(Ve,{modelValue:t(N),"onUpdate:modelValue":v[4]||(v[4]=de=>Oe(N)?N.value=de:null),size:"xs",icon:"i-lucide-search",placeholder:"Find an element by its text…",class:"max-w-xs",onKeydown:ge(he(_e,["prevent"]),["enter"])},null,8,["modelValue","onKeydown"]),t(N)&&t(be)>0?(n(),l("span",Cn,p(t(me)+1)+"/"+p(t(be)),1)):t(N)?(n(),l("span",Sn,"no matches")):k("",!0),t(be)>1?(n(),P(le,{key:2,size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-chevron-down",title:"Next match (Enter)",onClick:_e})):k("",!0)])):k("",!0),d("div",{ref_key:"stageRef",ref:O,class:re(["relative border border-default rounded-lg overflow-auto",[t(x)==="pick-element"?"h-[75vh]":"h-80",t(M)?"bg-gray-100 dark:bg-gray-800":""]])},[t(z)?k("",!0):(n(),l("div",Tn,[$(G,{name:"i-lucide-loader",class:"size-5 animate-spin text-gray-400"}),v[18]||(v[18]=d("span",{class:"ml-2 text-sm text-gray-500"},"Initializing picker...",-1))])),d("div",{style:Qe(t(W))},[d("iframe",{ref_key:"iframeRef",ref:A,src:t(Y),style:Qe(t(F)),class:"bg-white",sandbox:"allow-scripts",title:"DOM snapshot"},null,12,Ln)],4)],2),t(x)==="review"&&t(B)?(n(),l("div",An,[d("div",In,[$(G,{name:"i-lucide-crosshair",class:"size-5 text-primary shrink-0"}),d("div",zn,[d("p",Bn,[v[19]||(v[19]=L(" Picked: ",-1)),d("code",Rn,p(t(B).tagName),1),t(B).attributes.id?(n(),l("code",Pn,"#"+p(t(B).attributes.id),1)):k("",!0),t(B).attributes["data-testid"]?(n(),P(we,{key:1,size:"xs",color:"primary",variant:"subtle",class:"ml-1"},{default:S(()=>[L(p(t(B).attributes["data-testid"]),1)]),_:1})):k("",!0)]),t(B).textContent?(n(),l("p",On,' "'+p(t(B).textContent)+'" ',1)):k("",!0)]),$(le,{size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-rotate-ccw",title:"Pick a different element",onClick:X})]),d("div",Un,[(n(!0),l(D,null,ne(t(Z),(de,De)=>(n(),P(it,{key:De,alt:de,copied:t(q)===`picked-${De}`,dense:!0,selectable:!0,selected:t(se)?.locator===de.locator,onCopy:dt=>fe(de.locator,`picked-${De}`),onSelect:dt=>ie(de)},null,8,["alt","copied","selected","onCopy","onSelect"]))),128))]),t(u).recommended?(n(),l("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:v[6]||(v[6]=de=>ie(t(u).recommended)),onKeydown:v[7]||(v[7]=ge(he(de=>ie(t(u).recommended),["prevent"]),["enter"]))},[$(G,{name:"i-lucide-star",class:"size-5 text-primary shrink-0"}),d("div",En,[d("p",Mn," Recommended (score: "+p(t(u).recommended.score)+") ",1),d("code",jn,p(t(u).recommended.locator),1)]),$(le,{size:"sm",color:"primary",variant:"solid","trailing-icon":t(q)==="rec"?"i-lucide-check":"i-lucide-copy",onClick:v[5]||(v[5]=he(de=>fe(t(u).recommended.locator,"rec"),["stop"]))},{default:S(()=>[...v[20]||(v[20]=[L(" Copy ",-1)])]),_:1},8,["trailing-icon"])],32)):k("",!0)])):k("",!0)],64))]),footer:S(()=>[d("div",Nn,[t(x)==="review"?(n(),P(le,{key:0,size:"sm",variant:"outline",color:"neutral",icon:"i-lucide-rotate-ccw",onClick:X},{default:S(()=>[...v[21]||(v[21]=[L(" Pick a different element ",-1)])]),_:1})):(n(),l("div",Kn)),d("div",Vn,[$(le,{size:"sm",variant:"outline",color:"neutral",onClick:U},{default:S(()=>[...v[22]||(v[22]=[L("Cancel",-1)])]),_:1}),t(x)==="review"?(n(),P(le,{key:0,size:"sm",color:"primary",loading:t(V),disabled:!t(se),onClick:I},{default:S(()=>[...v[23]||(v[23]=[L(" Confirm pick ",-1)])]),_:1},8,["loading","disabled"])):k("",!0)])])]),_:1},8,["open"])}}}),Hn=Object.assign(Dn,{__name:"SnapshotLocatorPicker"});function Fn(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function qn(e,r){let i=0,m=null;for(let o=r;o<e.length;o++){const a=e[o];if(m){if(a==="\\"){o++;continue}a===m&&(m=null);continue}if(a==="'"||a==='"'||a==="`"){m=a;continue}if(a==="(")i++;else if(a===")"&&(i--,i===0))return o}return-1}function Zn(e,r,i){if(!e||!r||!i)return null;const m=new RegExp(`${Fn(r)}\\s*\\(`,"g");let o;for(;(o=m.exec(e))!==null;){const a=o.index,s=a>0?e[a-1]:"";if(s&&/[A-Za-z0-9_$]/.test(s))continue;const g=a+o[0].lastIndexOf("("),c=qn(e,g);if(c===-1)return null;const h=e.slice(0,a)+i+e.slice(c+1);return h===e?null:{old:e,new:h}}return null}function Wn(e,r){return`${r?`@@ ${r} @@
2
- `:""}-${e.old.trimEnd()}
3
- +${e.new.trimEnd()}`}function Gn(e,r){const i=e??{},m=r??{},o=s=>s==null?null:typeof s=="string"?s:JSON.stringify(s),a=[];for(const s of new Set([...Object.keys(i),...Object.keys(m)])){const g=o(i[s]),c=o(m[s]);g!==c&&a.push({key:s,from:g,to:c})}return a}function Yn(e){const i=[`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&&i.push("","Current line:",e.sourceLine.text.trim()),i.join(`
4
- `)}const Jn={key:0,class:"text-xs font-mono"},Qn={key:1},Xn={class:"flex items-center gap-1"},eo={key:1,class:"rounded-lg border border-primary/50 bg-primary/10 p-3 mb-3 flex items-center gap-3"},to={class:"flex-1 min-w-0"},no={class:"text-xs font-medium text-primary flex items-center gap-1.5"},oo={class:"text-sm font-mono block truncate mt-0.5"},so={key:2,class:"flex items-center gap-2 bg-elevated rounded p-2 mb-3 border border-red-200 dark:border-red-800"},ao={class:"text-xs font-mono text-red-600 dark:text-red-400 flex-1 truncate"},ro={key:4,class:"rounded-lg border border-primary/40 bg-primary/5 p-3 mb-3 space-y-2"},io={class:"flex items-center gap-2 min-w-0"},lo={key:0,class:"text-[11px] text-gray-500 truncate min-w-0"},co={key:0,class:"rounded border border-default overflow-hidden bg-default"},uo={class:"text-sm font-mono block truncate"},mo={key:0,class:"text-xs flex flex-wrap items-center gap-x-1.5 gap-y-0.5"},fo={class:"font-mono text-gray-500"},po={key:0,class:"font-mono text-red-500 line-through"},go={key:1,class:"text-gray-400"},ho={key:2,class:"font-mono text-green-600 dark:text-green-400"},vo={key:3,class:"text-gray-400"},yo={key:2,class:"text-xs text-gray-500"},xo={key:3,class:"text-xs text-primary/90 flex items-center gap-1"},bo={class:"flex items-center gap-2"},ko={key:5,class:"rounded-lg border border-default bg-elevated p-3 mb-3 flex items-center gap-3"},_o={class:"flex-1 min-w-0"},$o={class:"text-xs font-medium text-success-600 dark:text-success-400"},wo={class:"text-sm font-mono block truncate mt-0.5"},Co={class:"space-y-2"},So={key:6,class:"mt-3"},To={class:"space-y-2"},Lo={class:"flex items-center gap-1"},nt=3,Ao=oe({__name:"LocatorHealingPanel",props:{runId:{},testRunsCaseId:{},storageKey:{},affectedCount:{}},setup(e){const r=e,i=w(()=>r.storageKey?Ke:Ne),m=w(()=>r.storageKey?{storageKey:r.storageKey}:{}),{data:o,pending:a,error:s}=Ee(()=>`/api/test-runs/${r.runId}/cases/${r.testRunsCaseId}/locator-healing`,{lazy:!0},"$z1C7vU2CXe"),g=w(()=>!!o.value&&o.value.source!=="none"&&!!(o.value.fromElementMatch?.length||o.value.fromPriorSuccess?.length||o.value.fromAriaSnapshot?.length)),c=w(()=>o.value?o.value.fromElementMatch??o.value.fromPriorSuccess??o.value.fromAriaSnapshot??[]:[]),h=w(()=>c.value.find(R=>R.pickedByUser)??null),C=w(()=>o.value?.recommendation?o.value.recommendation:o.value?.priorNameMayBeStale||!c.value.length?null:lt(o.value?.failingLocator?.method,c.value)),T=w(()=>o.value?.priorNameMayBeStale&&o.value.fromPriorSuccess?.length?o.value.fromAriaSnapshot??[]:[]),x=w(()=>{const R=C.value;return R?.recommended?R.recommended.pickedByUser?"Confirmed with the locator picker on the failing page":R.preservesConvention?"Keeps your original locator style — minimal, idiomatic edit":R.suggestAddTestId?"Most stable available, but still fragile":"Most stable available — a sturdier style than the original":""}),A=w(()=>{const R=o.value?.priorNameMayBeStale,f=(()=>{switch(o.value?.source){case"prior-run":return R?"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""}})(),N=o.value?.capturedAt;return N?`${f} · captured ${We(N)}`:f}),z=w(()=>{if(o.value?.priorNameMayBeStale)return"text-warning-600 dark:text-warning-400";switch(o.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"}}),B=w(()=>{const R=o.value?.failingLocator;return R?`${R.method}(${JSON.stringify(R.args)})`:""}),Z=je(),{data:Y}=Ee(()=>`/api/test-run-cases/${r.testRunsCaseId}/traces`,{lazy:!0},"$vsBboELop9"),E=w(()=>{const R=Y.value?.[0];if(!R)return null;const f=!!Z.public.demoMode&&R.filePath.startsWith("demo/");return at(R.filePath,Z.app?.baseURL,f)}),O=j(!1);async function ce(){await yt(`/api/test-runs/${r.runId}/cases/${r.testRunsCaseId}/locator-healing`)}const{copy:ee}=Ge(),y=j(null);let H=null;function M(R,f,N){ee(R,{toast:N}),y.value=f,H&&clearTimeout(H),H=setTimeout(()=>{y.value=null},2e3)}function K(R,f){M(R,f,"Locator copied")}Le(()=>{H&&clearTimeout(H)});const W=w(()=>C.value?.recommended??null),F=w(()=>r.affectedCount&&r.affectedCount>1&&W.value?`Same break affects ${r.affectedCount} tests in this cluster — one fix`:""),Q=w(()=>{if(W.value?.pickedByUser)return"your confirmed pick";switch(o.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""}}),ve=w(()=>{const R=o.value?.sourceLine,f=W.value;if(!R||!f)return null;const N=Zn(R.text,o.value?.failingLocator?.method,f.locator);return N?{edit:N,patch:Wn(N,o.value?.location??null)}:null}),xe=w(()=>{if(ve.value)return[];const R=o.value?.failingLocator,f=W.value;return!R||!f||f.method!==R.method?[]:Gn(R.args,f.args)});function ze(){const R=W.value;!R||!o.value||M(Yn({location:o.value.location??null,sourceLine:o.value.sourceLine??null,failing:B.value,recommended:R.locator}),"fix-prompt","Fix prompt copied")}const te=j(!1),ke=w(()=>te.value?c.value:c.value.slice(0,nt));return(R,f)=>{const N=Me,be=vt,me=Ze,ue=ye,_e=Ie,Ce=Gt,Te=it,se=zt;return n(),l(D,null,[!t(a)&&!t(s)&&t(g)?(n(),P(Se(t(i)),Ue({key:0},t(m),{icon:"i-lucide-bandage",title:"Alternative locators",count:t(c).length,help:"locator-healing"}),Ae({subtitle:S(()=>[d("span",{class:re(t(z))},p(t(A)),3)]),default:S(()=>[t(o)?.healedInRunId?(n(),P(me,{key:0,class:"mb-3",color:"success",icon:"i-lucide-circle-check",variant:"subtle",title:"Locator healed"},{description:S(()=>[f[11]||(f[11]=L(" The recommended locator now passes at this call site — ",-1)),$(be,{to:`/test-runs/${t(o).healedInRunId}`,class:"underline font-medium"},{default:S(()=>[L(" see run #"+p(t(o).healedInRunId),1)]),_:1},8,["to"]),f[12]||(f[12]=L(". ",-1))]),_:1})):k("",!0),t(h)?(n(),l("div",eo,[$(ue,{name:"i-lucide-user-check",class:"size-5 text-primary shrink-0"}),d("div",to,[d("p",no,[f[14]||(f[14]=L(" Your pick ",-1)),$(_e,{size:"sm",color:"primary",variant:"subtle"},{default:S(()=>[...f[13]||(f[13]=[L("confirmed on the failing page",-1)])]),_:1})]),d("code",oo,p(t(h).locator),1)]),$(N,{size:"sm",color:"primary",variant:"solid","trailing-icon":t(y)==="user-pick"?"i-lucide-check":"i-lucide-copy",onClick:f[1]||(f[1]=V=>K(t(h).locator,"user-pick"))},{default:S(()=>[...f[15]||(f[15]=[L(" Copy ",-1)])]),_:1},8,["trailing-icon"])])):k("",!0),t(o)?.failingLocator?(n(),l("div",so,[$(ue,{name:"i-lucide-x-circle",class:"size-4 text-red-500 shrink-0"}),d("code",ao,p(t(B)),1),$(N,{size:"xs",variant:"ghost",color:"neutral",icon:t(y)==="failing"?"i-lucide-check":"i-lucide-copy",title:t(y)==="failing"?"Copied!":"Copy",onClick:f[2]||(f[2]=V=>K(t(B),"failing"))},null,8,["icon","title"])])):k("",!0),t(o)?.priorNameMayBeStale?(n(),P(me,{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."})):k("",!0),t(W)?(n(),l("div",ro,[d("div",io,[$(ue,{name:"i-lucide-star",class:"size-4 text-primary shrink-0"}),f[16]||(f[16]=d("p",{class:"text-xs font-medium text-primary shrink-0"},"Recommended fix",-1)),t(Q)?(n(),l("span",lo," · "+p(t(Q)),1)):k("",!0),f[17]||(f[17]=d("span",{class:"flex-1"},null,-1)),$(_e,{size:"xs",color:"primary",variant:"subtle",class:"font-mono tabular-nums shrink-0"},{default:S(()=>[L(p(t(W).score),1)]),_:1})]),t(ve)?(n(),l("div",co,[$(Ce,{patch:t(ve).patch},null,8,["patch"])])):(n(),l(D,{key:1},[d("code",uo,p(t(W).locator),1),t(xe).length?(n(),l("p",mo,[(n(!0),l(D,null,ne(t(xe),(V,ie)=>(n(),l(D,{key:ie},[d("span",fo,p(V.key)+":",1),V.from?(n(),l("span",po,p(V.from),1)):(n(),l("span",go,"—")),$(ue,{name:"i-lucide-arrow-right",class:"size-3 text-gray-400"}),V.to?(n(),l("span",ho,p(V.to),1)):(n(),l("span",vo,"removed"))],64))),128))])):k("",!0)],64)),t(x)?(n(),l("p",yo,p(t(x)),1)):k("",!0),t(F)?(n(),l("p",xo,[$(ue,{name:"i-lucide-layers",class:"size-3 shrink-0"}),L(p(t(F)),1)])):k("",!0),d("div",bo,[$(N,{size:"xs",color:"primary",variant:"solid","trailing-icon":t(y)==="top"?"i-lucide-check":"i-lucide-copy",onClick:f[3]||(f[3]=V=>K(t(W).locator,"top"))},{default:S(()=>[...f[18]||(f[18]=[L(" Copy locator ",-1)])]),_:1},8,["trailing-icon"]),$(N,{size:"xs",color:"neutral",variant:"outline",icon:t(y)==="fix-prompt"?"i-lucide-check":"i-lucide-sparkles",title:"Copy an instruction an AI coding agent can apply directly to the test",onClick:ze},{default:S(()=>[...f[19]||(f[19]=[L(" Copy fix prompt ",-1)])]),_:1},8,["icon"])])])):k("",!0),t(C)?.hasDurableAlternative&&t(C).durable?(n(),l("div",ko,[$(ue,{name:"i-lucide-shield-check",class:"size-5 text-success shrink-0"}),d("div",_o,[d("p",$o," Most stable option (score: "+p(t(C).durable.score)+") ",1),d("code",wo,p(t(C).durable.locator),1),f[20]||(f[20]=d("p",{class:"text-xs text-gray-500 mt-0.5"},"Sturdier, but changes the locator style",-1))]),$(N,{size:"sm",color:"neutral",variant:"outline","trailing-icon":t(y)==="durable"?"i-lucide-check":"i-lucide-copy",onClick:f[4]||(f[4]=V=>K(t(C).durable.locator,"durable"))},{default:S(()=>[...f[21]||(f[21]=[L(" Copy ",-1)])]),_:1},8,["trailing-icon"])])):k("",!0),d("div",Co,[f[22]||(f[22]=d("p",{class:"text-xs font-medium text-gray-500"},"All alternatives",-1)),(n(!0),l(D,null,ne(t(ke),(V,ie)=>(n(),P(Te,{key:ie,alt:V,copied:t(y)===`alt-${ie}`,onCopy:u=>K(V.locator,`alt-${ie}`)},null,8,["alt","copied","onCopy"]))),128)),t(c).length>nt?(n(),P(N,{key:0,size:"xs",variant:"ghost",color:"neutral",block:"",icon:t(te)?"i-lucide-chevron-up":"i-lucide-chevron-down",onClick:f[5]||(f[5]=V=>te.value=!t(te))},{default:S(()=>[L(p(t(te)?"Show fewer":`Show all ${t(c).length} alternatives`),1)]),_:1},8,["icon"])):k("",!0)]),t(T).length?(n(),l("div",So,[f[23]||(f[23]=d("p",{class:"text-xs font-medium text-gray-500 mb-2"},"From the failing page",-1)),d("div",To,[(n(!0),l(D,null,ne(t(T),(V,ie)=>(n(),P(Te,{key:ie,alt:V,note:"candidate from the failure-time ARIA snapshot",copied:t(y)===`supp-${ie}`,onCopy:u=>K(V.locator,`supp-${ie}`)},null,8,["alt","copied","onCopy"]))),128))])])):k("",!0),t(C)?.suggestAddTestId?(n(),P(me,{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."})):k("",!0),t(o)?.source==="aria-snapshot"?(n(),P(me,{key:8,class:"mt-3",color:"info",icon:"i-lucide-info",variant:"subtle"},{description:S(()=>[f[25]||(f[25]=L(" No HTML attributes were available. ",-1)),$(se,{to:"capture-fixtures","no-icon":"",class:"text-primary hover:underline"},{default:S(()=>[...f[24]||(f[24]=[L("Enable Piwi fixture capture",-1)])]),_:1}),f[26]||(f[26]=L(" for full alternatives including data-testid and CSS selectors. ",-1))]),_:1})):k("",!0)]),_:2},[e.storageKey?{name:"folded",fn:S(()=>[t(C)?.recommended?(n(),l("code",Jn,p(t(C).recommended.locator),1)):(n(),l("span",Qn,p(t(c).length)+" alternative"+p(t(c).length===1?"":"s"),1))]),key:"0"}:void 0,t(E)||t(o)?.failingLocator?{name:"actions",fn:S(()=>[d("div",Xn,[t(o)?.failingLocator?(n(),P(N,{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:f[0]||(f[0]=V=>O.value=!0)},{default:S(()=>[...f[9]||(f[9]=[L(" Pick from snapshot ",-1)])]),_:1})):k("",!0),t(E)?(n(),P(N,{key:1,to:t(E),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:S(()=>[...f[10]||(f[10]=[L(" Pick from trace ",-1)])]),_:1},8,["to"])):k("",!0)])]),key:"1"}:void 0]),1040,["count"])):!t(a)&&!t(s)&&!t(g)?(n(),P(Se(t(i)),Ue({key:1},t(m),{icon:"i-lucide-bandage",title:"Alternative locators",subtitle:"No alternatives available",help:"locator-healing"}),Ae({default:S(()=>[$(me,{color:"neutral",icon:"i-lucide-info",variant:"subtle"},{description:S(()=>[f[31]||(f[31]=L(" No pre-captured alternatives — this locator has never passed in a previous run. ",-1)),$(se,{to:"capture-fixtures","no-icon":"",class:"text-primary hover:underline"},{default:S(()=>[...f[30]||(f[30]=[L("Enable Piwi dashboard fixtures",-1)])]),_:1}),f[32]||(f[32]=L(" 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:S(()=>[f[27]||(f[27]=d("span",null,"No alternatives available",-1))]),key:"0"}:void 0,t(E)||t(o)?.failingLocator?{name:"actions",fn:S(()=>[d("div",Lo,[t(o)?.failingLocator?(n(),P(N,{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:f[6]||(f[6]=V=>O.value=!0)},{default:S(()=>[...f[28]||(f[28]=[L(" Pick from snapshot ",-1)])]),_:1})):k("",!0),t(E)?(n(),P(N,{key:1,to:t(E),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:S(()=>[...f[29]||(f[29]=[L(" Pick from trace ",-1)])]),_:1},8,["to"])):k("",!0)])]),key:"1"}:void 0]),1040)):k("",!0),t(o)?.failingLocator?(n(),P(Hn,{key:2,open:t(O),"onUpdate:open":f[7]||(f[7]=V=>Oe(O)?O.value=V:null),"run-id":e.runId,"test-runs-case-id":e.testRunsCaseId,"failing-locator":t(o).failingLocator,healing:t(o),onConfirmed:ce,onClose:f[8]||(f[8]=V=>O.value=!1)},null,8,["open","run-id","test-runs-case-id","failing-locator","healing"])):k("",!0)],64)}}}),wa=Object.assign(Ao,{__name:"LocatorHealingPanel"}),Io={key:1,class:"space-y-2"},zo={class:"text-xs font-medium text-gray-500 dark:text-gray-400 sm:w-40 shrink-0"},Bo={class:"flex flex-wrap items-center gap-1.5 min-w-0 text-xs font-mono"},Ro={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"},Po={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"},Oo={key:0,class:"text-xs text-gray-400 dark:text-gray-500"},Uo={key:0},Eo=oe({__name:"EnvironmentDiffCard",props:{runId:{},testRunsCaseId:{},storageKey:{}},setup(e,{expose:r}){const i=e,m=w(()=>i.storageKey?Ke:Ne),o=w(()=>i.storageKey?{storageKey:i.storageKey}:{}),{data:a,pending:s,error:g}=Ee(()=>`/api/test-runs/${i.runId}/cases/${i.testRunsCaseId}/environment-diff`,{lazy:!0},"$yASgALxNz3"),c=w(()=>a.value?.entries??[]),h=w(()=>c.value.filter(z=>!z.informational)),C=w(()=>c.value.filter(z=>z.informational)),T=w(()=>{const z=a.value?.baseline;if(!z)return"";const B=z.startTime?` · ${We(new Date(z.startTime))}`:"";return`vs last pass in run #${z.runId}${B}`}),x=w(()=>{if(a.value?.status!=="ok")return"No passing baseline to compare against";const z=h.value.length;return z===0?"Identical to last pass — no environment drift":`${z} change${z===1?"":"s"}: ${h.value.map(B=>B.label).join(", ")}`}),A=j(null);return r({reveal:()=>A.value?.reveal?.()}),(z,B)=>{const Z=Ze,Y=ye;return!t(s)&&!t(g)&&t(a)?.status==="ok"?(n(),P(Se(t(m)),Ue({key:0,ref_key:"card",ref:A},t(o),{icon:"i-lucide-git-compare-arrows",title:"Environment diff",count:t(h).length||void 0,help:"environment-diff",subtitle:t(T)}),Ae({default:S(()=>[t(c).length===0?(n(),P(Z,{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."})):(n(),l("div",Io,[(n(!0),l(D,null,ne(t(h),E=>(n(),l("div",{key:E.key,class:"rounded-lg border border-default p-3 flex flex-col gap-1 sm:flex-row sm:items-center sm:gap-3"},[d("span",zo,p(E.label),1),d("div",Bo,[d("code",Ro,p(E.failing??"(unset)"),1),$(Y,{name:"i-lucide-arrow-left",class:"size-3 shrink-0 text-gray-400"}),d("code",Po,p(E.baseline??"(unset)"),1)])]))),128)),t(C).length>0?(n(),l("p",Oo,[B[0]||(B[0]=L(" Also changed (varies naturally between runs): ",-1)),(n(!0),l(D,null,ne(t(C),(E,O)=>(n(),l("span",{key:E.key},[L(p(E.label.toLowerCase())+" "+p(E.baseline??"—")+" → "+p(E.failing??"—"),1),O<t(C).length-1?(n(),l("span",Uo,", ")):k("",!0)]))),128))])):k("",!0)]))]),_:2},[e.storageKey?{name:"folded",fn:S(()=>[d("span",null,p(t(x)),1)]),key:"0"}:void 0]),1040,["count","subtitle"])):k("",!0)}}}),Ca=Object.assign(Eo,{__name:"EnvironmentDiffCard"}),Mo={class:"absolute top-4 left-4 text-white/70 text-sm font-medium"},jo=["src","alt"],No=oe({__name:"ScreenshotLightbox",props:{images:{},modelValue:{}},emits:["update:modelValue"],setup(e,{emit:r}){const i=e,m=r,o=w(()=>i.modelValue!==null);function a(){m("update:modelValue",null)}function s(){i.modelValue!==null&&i.modelValue>0&&m("update:modelValue",i.modelValue-1)}function g(){i.modelValue!==null&&i.modelValue<i.images.length-1&&m("update:modelValue",i.modelValue+1)}const c=w(()=>i.modelValue===null?null:i.images[i.modelValue]??null);function h(C){o.value&&(C.key==="Escape"&&a(),C.key==="ArrowLeft"&&s(),C.key==="ArrowRight"&&g())}return st(()=>window.addEventListener("keydown",h)),xt(()=>window.removeEventListener("keydown",h)),(C,T)=>{const x=ye;return n(),P(bt,{to:"body"},[$(kt,{name:"lightbox"},{default:S(()=>[o.value?(n(),l("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/90",onClick:he(a,["self"])},[d("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:a},[$(x,{name:"i-lucide-x",class:"size-6"})]),d("div",Mo,p((e.modelValue??0)+1)+" / "+p(e.images.length),1),e.images.length>1&&(e.modelValue??0)>0?(n(),l("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:s},[$(x,{name:"i-lucide-chevron-left",class:"size-6"})])):k("",!0),c.value?(n(),l("img",{key:1,src:c.value.src,alt:c.value.name,class:"max-h-[90vh] max-w-[90vw] object-contain rounded-lg",onClick:T[0]||(T[0]=he(()=>{},["stop"]))},null,8,jo)):k("",!0),e.images.length>1&&(e.modelValue??0)<e.images.length-1?(n(),l("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:g},[$(x,{name:"i-lucide-chevron-right",class:"size-6"})])):k("",!0)])):k("",!0)]),_:1})])}}}),ut=Object.assign(_t(No,[["__scopeId","data-v-c02b1e9b"]]),{__name:"ScreenshotLightbox"}),Ko={class:"flex justify-end mb-2"},Vo={key:1,class:"rounded overflow-hidden border border-default bg-gray-50 dark:bg-gray-900"},Do=["src"],Ho={key:2,class:"grid grid-cols-1 sm:grid-cols-2 gap-2"},Fo={class:"rounded overflow-hidden border border-red-200 dark:border-red-900 bg-gray-50 dark:bg-gray-900"},qo=["src"],Zo={class:"rounded overflow-hidden border border-green-200 dark:border-green-900 bg-gray-50 dark:bg-gray-900"},Wo={class:"px-2 py-1 text-[10px] font-medium text-green-600 dark:text-green-400"},Go=["src"],Yo=oe({__name:"VisualDiffCard",props:{runId:{},testRunsCaseId:{},storageKey:{}},setup(e,{expose:r}){const i=e,m=w(()=>i.storageKey?Ke:Ne),o=w(()=>i.storageKey?{storageKey:i.storageKey}:{}),a=je(),{data:s,pending:g,error:c}=Ee(()=>`/api/test-runs/${i.runId}/cases/${i.testRunsCaseId}/visual-diff`,{lazy:!0},"$nTbSHl3faK"),h=w(()=>s.value?.status==="ok"?s.value.diff??null:null),C=j("overlay"),T=[{label:"Overlay",value:"overlay"},{label:"Side by side",value:"side-by-side"}],x=w(()=>h.value?Pe(h.value.path,"image/png",a.app?.baseURL):""),A=w(()=>h.value?Pe(h.value.failingPath,null,a.app?.baseURL):""),z=w(()=>h.value?Pe(h.value.baselinePath,null,a.app?.baseURL):""),B=w(()=>h.value?(h.value.changedPixelRatio*100).toFixed(2):"0"),Z=w(()=>{const ee=h.value?.changedPixelRatio??0;return ee>.1?"error":ee>.01?"warning":"success"}),Y=w(()=>h.value?h.value.dimensionMismatch?`${B.value}% changed — dimensions differ, unreliable`:`${B.value}% of pixels changed vs last pass`:"No comparable screenshots"),E=w(()=>h.value?[{src:A.value,name:"Failing screenshot"},{src:z.value,name:"Last passing screenshot"},{src:x.value,name:"Diff overlay"}]:[]),O=j(null),ce=j(null);return r({reveal:()=>ce.value?.reveal?.()}),(ee,y)=>{const H=Ie,M=Ze,K=Rt,W=ut;return!t(g)&&!t(c)&&t(h)?(n(),P(Se(t(m)),Ue({key:0,ref_key:"card",ref:ce},t(o),{icon:"i-lucide-images",title:"Visual diff",help:"visual-diff"}),Ae({subtitle:S(()=>[d("span",null,"vs last pass in run #"+p(t(h).baselineRunId),1)]),actions:S(()=>[$(H,{color:t(Z),variant:"subtle",size:"sm",class:"font-mono tabular-nums"},{default:S(()=>[L(p(t(B))+"% changed ",1)]),_:1},8,["color"])]),default:S(()=>[t(h).dimensionMismatch?(n(),P(M,{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."})):k("",!0),d("div",Ko,[$(K,{modelValue:t(C),"onUpdate:modelValue":y[0]||(y[0]=F=>Oe(C)?C.value=F:null),items:T,size:"xs",content:!1,ui:{list:"overflow-x-auto",trigger:"shrink-0"}},null,8,["modelValue"])]),t(C)==="overlay"?(n(),l("div",Vo,[d("img",{src:t(x),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:y[1]||(y[1]=F=>O.value=2),onKeydown:[y[2]||(y[2]=ge(F=>O.value=2,["enter"])),y[3]||(y[3]=ge(he(F=>O.value=2,["prevent"]),["space"]))]},null,40,Do),y[11]||(y[11]=d("p",{class:"px-2 py-1 text-[10px] text-gray-500"},"Red pixels mark differences against the last passing run",-1))])):(n(),l("div",Ho,[d("div",Fo,[y[12]||(y[12]=d("p",{class:"px-2 py-1 text-[10px] font-medium text-red-600 dark:text-red-400"},"Failing",-1)),d("img",{src:t(A),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:y[4]||(y[4]=F=>O.value=0),onKeydown:[y[5]||(y[5]=ge(F=>O.value=0,["enter"])),y[6]||(y[6]=ge(he(F=>O.value=0,["prevent"]),["space"]))]},null,40,qo)]),d("div",Zo,[d("p",Wo," Last pass (run #"+p(t(h).baselineRunId)+") ",1),d("img",{src:t(z),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:y[7]||(y[7]=F=>O.value=1),onKeydown:[y[8]||(y[8]=ge(F=>O.value=1,["enter"])),y[9]||(y[9]=ge(he(F=>O.value=1,["prevent"]),["space"]))]},null,40,Go)])])),$(W,{modelValue:t(O),"onUpdate:modelValue":y[10]||(y[10]=F=>Oe(O)?O.value=F:null),images:t(E)},null,8,["modelValue","images"])]),_:2},[e.storageKey?{name:"folded",fn:S(()=>[d("span",null,p(t(Y)),1)]),key:"0"}:void 0]),1040)):k("",!0)}}}),Sa=Object.assign(Yo,{__name:"VisualDiffCard"}),Jo={class:"max-h-96 overflow-y-auto"},Qo={key:0,class:"mt-2 text-xs text-gray-400 dark:text-gray-500"},Fe=2e4,Xo=oe({__name:"DomSnapshotCard",props:{runId:{},testRunsCaseId:{},storageKey:{}},setup(e,{expose:r}){const i=e,m=w(()=>i.storageKey?Ke:Ne),o=w(()=>i.storageKey?{storageKey:i.storageKey}:{}),{data:a,pending:s,error:g}=Ee(()=>`/api/test-runs/${i.runId}/cases/${i.testRunsCaseId}/dom-snapshot`,{lazy:!0},"$AxHFpokm2o"),c=w(()=>(a.value?.html??"").slice(0,Fe)),h=w(()=>(a.value?.html?.length??0)>Fe),C=w(()=>{const z=a.value;return!z||z.status!=="ok"?"":`${Math.round((z.html?.length??0)/1024)} KB · rendered from the uploaded trace${z.snapshotName?` (${z.snapshotName})`:""}`}),{copy:T,copied:x}=Ge(),A=j(null);return r({reveal:()=>A.value?.reveal?.()}),(z,B)=>{const Z=Me,Y=Pt,E=Ot;return!t(s)&&!t(g)&&t(a)?.status==="ok"&&t(a).html?(n(),P(Se(t(m)),Ue({key:0,ref_key:"card",ref:A},t(o),{icon:"i-lucide-file-code",title:"DOM snapshot",help:"dom-snapshot",subtitle:t(C)}),Ae({actions:S(()=>[$(Y,{text:t(x)?"Copied!":"Copy full HTML"},{default:S(()=>[$(Z,{size:"xs",variant:"ghost",color:"neutral",icon:t(x)?"i-lucide-check":"i-lucide-clipboard",onClick:B[0]||(B[0]=O=>t(T)(t(a).html))},null,8,["icon"])]),_:1},8,["text"])]),default:S(()=>[d("div",Jo,[$(E,{code:t(c),lang:"xml"},null,8,["code"])]),t(h)||t(a).truncated?(n(),l("p",Qo,[t(h)?(n(),l(D,{key:0},[L("Showing the first "+p(Math.round(Fe/1e3))+"k characters — use Copy for the full document.",1)],64)):(n(),l(D,{key:1},[L("The snapshot was truncated to its size cap.")],64))])):k("",!0)]),_:2},[e.storageKey?{name:"folded",fn:S(()=>[d("span",null,"Failure-time HTML extracted from the trace — "+p(Math.round((t(a).html.length??0)/1024))+" KB",1)]),key:"0"}:void 0]),1040,["subtitle"])):k("",!0)}}}),Ta=Object.assign(Xo,{__name:"DomSnapshotCard"}),es={class:"rounded-md border border-default overflow-hidden"},ts={class:"text-xs font-semibold text-gray-600 dark:text-gray-300 flex-1"},ns={key:0,class:"text-gray-400 font-normal ml-1"},os={key:0},ss=oe({__name:"TestEvidenceSection",props:qe({icon:{},label:{},count:{},collapsible:{type:Boolean}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:["update:open"],setup(e){const r=e,i=ot(e,"open"),m=w(()=>r.collapsible===!1||i.value);return(o,a)=>{const s=ye;return n(),l("div",es,[(n(),P(Se(e.collapsible===!1?"div":"button"),{class:re(["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:a[0]||(a[0]=g=>e.collapsible!==!1&&(i.value=!i.value))},{default:S(()=>[$(s,{name:e.icon,class:"size-3.5 shrink-0 text-primary/70"},null,8,["name"]),d("span",ts,[L(p(e.label),1),e.count!=null?(n(),l("span",ns,"("+p(e.count)+")",1)):k("",!0)]),e.collapsible!==!1?(n(),P(s,{key:0,name:i.value?"i-lucide-chevron-up":"i-lucide-chevron-down",class:"size-3.5 text-gray-400"},null,8,["name"])):k("",!0)]),_:1},8,["class"])),t(m)?(n(),l("div",os,[Re(o.$slots,"default")])):k("",!0)])}}}),Ye=Object.assign(ss,{__name:"TestEvidenceSection"}),as={class:"grid grid-cols-2 gap-2 p-2 bg-gray-50 dark:bg-gray-900"},rs=["aria-label","onClick","onKeydown"],is=["src","alt"],ls={class:"absolute inset-0 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity bg-black/30"},cs={class:"absolute bottom-0 inset-x-0 px-1.5 py-0.5 text-[10px] text-white bg-black/50 truncate"},us=oe({__name:"TestEvidenceScreenshots",props:{attachments:{}},setup(e){const r=e,i=je();function m(s){return s.split("/").pop()||s}const o=w(()=>r.attachments.filter(s=>Et(s.path,s.contentType)).map(s=>({src:Pe(s.path,s.contentType,i.app?.baseURL),name:s.name||m(s.path)}))),a=j(null);return(s,g)=>{const c=ye,h=ut,C=Ye;return t(o).length>0?(n(),P(C,{key:0,icon:"i-lucide-image",label:"Screenshots",count:t(o).length,collapsible:!1},{default:S(()=>[d("div",as,[(n(!0),l(D,null,ne(t(o),(T,x)=>(n(),l("div",{key:T.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 ${T.name}`,onClick:A=>a.value=x,onKeydown:[ge(A=>a.value=x,["enter"]),ge(he(A=>a.value=x,["prevent"]),["space"])]},[d("img",{src:T.src,alt:T.name,class:"w-full h-28 object-cover object-top transition-opacity group-hover:opacity-80",loading:"lazy"},null,8,is),d("div",ls,[$(c,{name:"i-lucide-zoom-in",class:"size-5 text-white"})]),d("p",cs,p(T.name),1)],40,rs))),128))]),$(h,{modelValue:t(a),"onUpdate:modelValue":g[0]||(g[0]=T=>Oe(a)?a.value=T:null),images:t(o)},null,8,["modelValue","images"])]),_:1},8,["count"])):k("",!0)}}}),La=Object.assign(us,{__name:"TestEvidenceScreenshots"}),ds={class:"m-0"},ms={class:"bg-black rounded overflow-hidden"},fs=["src"],ps=["title"],gs=oe({__name:"VideoPlayer",props:{src:{},label:{}},setup(e){return(r,i)=>(n(),l("figure",ds,[d("div",ms,[d("video",{src:e.src,controls:"",preload:"metadata",class:"w-full max-h-96"}," Your browser does not support the video tag. ",8,fs)]),e.label?(n(),l("figcaption",{key:0,class:"mt-1 text-xs text-gray-400 truncate",title:e.label},p(e.label),9,ps)):k("",!0)]))}}),hs=Object.assign(gs,{__name:"VideoPlayer"}),vs={class:"space-y-2 p-2 bg-gray-50 dark:bg-gray-900"},ys=oe({__name:"TestEvidenceVideos",props:{attachments:{}},setup(e){const r=e,i=je();function m(a){return a.split("/").pop()||a}const o=w(()=>r.attachments.filter(a=>Mt(a.path,a.contentType)).map(a=>({src:Pe(a.path,a.contentType,i.app?.baseURL),name:a.name||m(a.path)})));return(a,s)=>{const g=hs,c=Ye;return t(o).length>0?(n(),P(c,{key:0,icon:"i-lucide-video",label:"Videos",count:t(o).length,collapsible:!1},{default:S(()=>[d("div",vs,[(n(!0),l(D,null,ne(t(o),h=>(n(),P(g,{key:h.src,src:h.src,label:h.name},null,8,["src","label"]))),128))])]),_:1},8,["count"])):k("",!0)}}}),Aa=Object.assign(ys,{__name:"TestEvidenceVideos"}),xs={class:"flex items-center justify-between gap-2"},bs={class:"flex items-center gap-2 min-w-0"},ks={class:"text-sm truncate"},_s={key:0,class:"text-xs text-gray-400 shrink-0"},$s={key:1,class:"text-xs text-gray-400 shrink-0"},ws={class:"flex items-center gap-1.5 shrink-0"},Cs=oe({__name:"TraceListItem",props:{trace:{},showTime:{type:Boolean,default:!0}},setup(e){const r=e,i=je(),m=w(()=>(i.app?.baseURL??"/").replace(/\/$/,"")),o=w(()=>!!i.public.demoMode&&r.trace.filePath.startsWith("demo/")),a=w(()=>r.trace.filePath.split("/").pop()||r.trace.filePath),s=w(()=>at(r.trace.filePath,i.app?.baseURL,o.value)),g=w(()=>o.value?`${m.value}/${r.trace.filePath}`:`${m.value}/api/files/${At(r.trace.filePath)}`);return(c,h)=>{const C=ye,T=Me;return n(),l("div",xs,[d("div",bs,[$(C,{name:"i-lucide-file-archive",class:"size-4 text-gray-400 shrink-0"}),d("span",ks,p(t(a)),1),e.trace.size?(n(),l("span",_s,p(("formatBytes"in c?c.formatBytes:t(Lt))(e.trace.size)),1)):k("",!0),e.showTime?(n(),l("span",$s,p(("formatRelativeTime"in c?c.formatRelativeTime:t(We))(e.trace.createdAt)),1)):k("",!0)]),d("div",ws,[$(T,{to:t(s),target:"_blank",icon:"i-lucide-bug-play",size:"xs",label:"View trace"},null,8,["to"]),$(T,{to:t(g),target:"_blank",icon:"i-lucide-download",size:"xs",color:"neutral",variant:"soft",label:"Download"},null,8,["to"])])])}}}),Ss=Object.assign(Cs,{__name:"TraceListItem"}),Ts={key:0,class:"flex items-center justify-center py-4"},Ls={key:1,class:"divide-y divide-default"},As=oe({__name:"TestEvidenceTraces",props:{traces:{},loading:{type:Boolean}},setup(e){return(r,i)=>{const m=ye,o=Ss,a=Ye;return e.loading||e.traces.length>0?(n(),P(a,{key:0,icon:"i-lucide-bug-play",label:"Traces",count:e.traces.length||null,collapsible:!1},{default:S(()=>[e.loading&&!e.traces.length?(n(),l("div",Ts,[$(m,{name:"i-lucide-loader-circle",class:"size-4 animate-spin text-gray-400"})])):(n(),l("div",Ls,[(n(!0),l(D,null,ne(e.traces,s=>(n(),P(o,{key:s.id,trace:s,class:"px-3 py-2"},null,8,["trace"]))),128))]))]),_:1},8,["count"])):k("",!0)}}}),Ia=Object.assign(As,{__name:"TestEvidenceTraces"}),Is={class:"space-y-2"},zs={key:0,class:"rounded-lg border border-default overflow-hidden"},Bs=["title"],Rs={key:2,class:"truncate text-gray-400 dark:text-gray-500"},Ps={class:"font-mono"},Os={key:0,class:"overflow-x-auto text-xs font-mono leading-relaxed py-1"},Us={class:"min-w-max"},Es={key:1,class:"rounded-lg border border-dashed border-default"},Ms=["onClick"],js={key:0,class:"px-3 pb-2 space-y-1"},Ns=["title"],Ks={key:0,class:"truncate font-mono shrink-0"},Vs=oe({__name:"TraceCallStack",props:{frames:{},projectKey:{},projectName:{}},setup(e){const r=e,i=w(()=>{if(!r.frames.some(T=>T.inProject))return r.frames.map((T,x)=>({kind:"frame",frame:T,frameIndex:x}));const c=[];let h=[];const C=()=>{h.length!==0&&(c.push({kind:"group",frames:h,key:`group-${c.length}`}),h=[])};return r.frames.forEach((T,x)=>{T.inProject?(C(),c.push({kind:"frame",frame:T,frameIndex:x})):h.push(T)}),C(),c}),m=w(()=>{const g=r.frames.findIndex(c=>c.inProject);return g>=0?g:0}),o=j(new Set);function a(g){const c=new Set(o.value);c.has(g)?c.delete(g):c.add(g),o.value=c}function s(g){return g.source?g.source.lines.map((c,h)=>{const C=g.source.startLine+h;return{lineNo:C,text:c,failing:C===g.line}}):[]}return(g,c)=>{const h=ye,C=rt,T=Ie;return n(),l("div",Is,[(n(!0),l(D,null,ne(t(i),x=>(n(),l(D,{key:x.kind==="frame"?`f-${x.frameIndex}`:x.key},[x.kind==="frame"?(n(),l("div",zs,[d("div",{class:re(["flex items-center gap-2 px-3 py-1.5 bg-elevated/40 text-xs",x.frame.source?"border-b border-default":""])},[$(h,{name:x.frameIndex===t(m)?"i-lucide-circle-x":"i-lucide-corner-left-up",class:re([x.frameIndex===t(m)?"text-red-500":"text-gray-400","size-3.5 shrink-0"])},null,8,["name","class"]),x.frame.inProject?(n(),P(C,{key:0,"file-path":x.frame.file,line:x.frame.line,column:x.frame.column,"project-key":e.projectKey,"project-name":e.projectName,class:"min-w-0"},null,8,["file-path","line","column","project-key","project-name"])):(n(),l("code",{key:1,class:"truncate text-gray-500 dark:text-gray-400",title:x.frame.absFile||x.frame.file},p(x.frame.file)+":"+p(x.frame.line),9,Bs)),x.frame.functionName?(n(),l("span",Rs,[c[0]||(c[0]=L(" in ",-1)),d("span",Ps,p(x.frame.functionName),1)])):k("",!0),$(T,{color:x.frameIndex===t(m)?"error":"neutral",variant:"subtle",size:"xs",class:"ml-auto shrink-0"},{default:S(()=>[L(p(x.frameIndex===t(m)?"Failed here":"Caller"),1)]),_:2},1032,["color"])],2),x.frame.source?(n(),l("div",Os,[d("div",Us,[(n(!0),l(D,null,ne(s(x.frame),A=>(n(),l("div",{key:A.lineNo,class:re(["px-3 whitespace-pre flex",A.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"])},[d("span",{class:re(["w-10 shrink-0 text-right pr-3 tabular-nums select-none",A.failing?"text-red-400 dark:text-red-500":"text-gray-300 dark:text-gray-600"])},p(A.lineNo),3),d("span",null,p(A.text),1)],2))),128))])])):k("",!0)])):(n(),l("div",Es,[d("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:A=>a(x.key)},[$(h,{name:t(o).has(x.key)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3.5 shrink-0"},null,8,["name"]),L(" "+p(x.frames.length)+" frame"+p(x.frames.length===1?"":"s")+" in dependencies ",1)],8,Ms),t(o).has(x.key)?(n(),l("div",js,[(n(!0),l(D,null,ne(x.frames,(A,z)=>(n(),l("div",{key:z,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"}),d("code",{class:"truncate",title:A.absFile||A.file},p(A.file)+":"+p(A.line),9,Ns),A.functionName?(n(),l("span",Ks,p(A.functionName),1)):k("",!0)]))),128))])):k("",!0)]))],64))),128))])}}}),za=Object.assign(Vs,{__name:"TraceCallStack"}),Ds={class:"space-y-2"},Hs={class:"flex items-center gap-2 px-3 py-1.5 bg-elevated/40 border-b border-default text-xs"},Fs={class:"overflow-x-auto text-xs font-mono leading-relaxed py-1"},qs={class:"min-w-max"},Zs=oe({__name:"TestSourceStack",props:{frames:{},projectKey:{},projectName:{}},setup(e){function r(i){return i.split(`
5
- `).map(m=>({text:m,failing:m.startsWith(">")}))}return(i,m)=>{const o=ye,a=rt,s=Ie;return n(),l("div",Ds,[(n(!0),l(D,null,ne(e.frames,(g,c)=>(n(),l("div",{key:`${g.file}:${g.line}:${c}`,class:"rounded-lg border border-default overflow-hidden"},[d("div",Hs,[$(o,{name:c===0?"i-lucide-circle-x":"i-lucide-corner-left-up",class:re([c===0?"text-red-500":"text-gray-400","size-3.5 shrink-0"])},null,8,["name","class"]),$(a,{"file-path":g.file,line:g.line,"project-key":e.projectKey,"project-name":e.projectName,class:"min-w-0"},null,8,["file-path","line","project-key","project-name"]),$(s,{color:c===0?"error":"neutral",variant:"subtle",size:"xs",class:"ml-auto shrink-0"},{default:S(()=>[L(p(c===0?"Failed here":"Caller"),1)]),_:2},1032,["color"])]),d("div",Fs,[d("div",qs,[(n(!0),l(D,null,ne(r(g.snippet),(h,C)=>(n(),l("div",{key:C,class:re(["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"])},p(h.text),3))),128))])])]))),128))])}}}),Ba=Object.assign(Zs,{__name:"TestSourceStack"}),Ws={class:"space-y-3 text-sm"},Gs={key:0,class:"flex flex-col gap-0.5"},Ys={class:"text-xs font-mono break-all"},Js={key:1,class:"flex flex-col gap-0.5"},Qs={class:"text-xs font-mono break-all"},Xs={class:"grid grid-cols-1 gap-3 sm:grid-cols-2"},ea={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},ta={key:0,class:"text-xs text-gray-400"},na={key:1,class:"mt-1 space-y-0.5"},oa={class:"text-gray-400"},sa={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},aa={key:0,class:"text-xs text-gray-400"},ra={key:1,class:"mt-1 space-y-0.5"},ia={key:0,class:"text-gray-400"},la={class:"text-gray-400"},ca=oe({__name:"PageStateCard",props:{pageState:{},storageKey:{},plain:{type:Boolean}},setup(e){const r=e,i=w(()=>r.plain?"div":r.storageKey?Ke:Ne),m=w(()=>r.plain?{}:{icon:"i-lucide-database",title:"App state at test end",help:"page-state",...r.storageKey?{storageKey:r.storageKey}:{}}),o=s=>[s.httpOnly?"HttpOnly":null,s.secure?"Secure":null,s.sameSite??null].filter(Boolean).join(", "),a=w(()=>{const s=r.pageState;return[`${s.localStorage.length} localStorage`,`${s.sessionStorage.length} sessionStorage`,`${s.cookies.length} cookie${s.cookies.length===1?"":"s"}`].join(" · ")});return(s,g)=>(n(),P(Se(t(i)),$t(wt(t(m))),Ae({default:S(()=>[d("div",Ws,[e.pageState.url?(n(),l("div",Gs,[g[0]||(g[0]=d("span",{class:"text-xs font-medium text-gray-500 dark:text-gray-400"},"URL",-1)),d("code",Ys,p(e.pageState.url)+p(e.pageState.hash??""),1)])):k("",!0),e.pageState.historyState?(n(),l("div",Js,[g[1]||(g[1]=d("span",{class:"text-xs font-medium text-gray-500 dark:text-gray-400"},"History state",-1)),d("code",Qs,p(e.pageState.historyState),1)])):k("",!0),d("div",Xs,[(n(!0),l(D,null,ne({localStorage:e.pageState.localStorage,sessionStorage:e.pageState.sessionStorage},(c,h)=>(n(),l("div",{key:h},[d("span",ea,p(h)+" ("+p(c.length)+")",1),c.length===0?(n(),l("p",ta,"empty")):(n(),l("ul",na,[(n(!0),l(D,null,ne(c,C=>(n(),l("li",{key:C.key,class:"text-xs font-mono truncate"},[L(p(C.key)+" ",1),d("span",oa,"("+p(C.length)+" ch)",1)]))),128))]))]))),128))]),d("div",null,[d("span",sa,"Cookies ("+p(e.pageState.cookies.length)+")",1),e.pageState.cookies.length===0?(n(),l("p",aa,"none")):(n(),l("ul",ra,[(n(!0),l(D,null,ne(e.pageState.cookies,c=>(n(),l("li",{key:c.name+c.domain,class:"text-xs font-mono truncate"},[L(p(c.name)+" ",1),o(c)?(n(),l("span",ia,"["+p(o(c))+"]",1)):k("",!0),d("span",la,"· "+p(c.domain),1)]))),128))]))]),g[2]||(g[2]=d("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:S(()=>[d("span",null,p(t(a)),1)]),key:"0"}:void 0]),1040))}}),Ra=Object.assign(ca,{__name:"PageStateCard"});export{Ye as _,La as a,Aa as b,Ia as c,za as d,Ba as e,Ra as f,Gt as g,Ke as h,wa as i,Ca as j,Sa as k,Ta as l,Ss as m,hs as n,ut as o};