plum-e2e 2.12.0 → 2.12.3

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 (299) hide show
  1. package/README.md +24 -23
  2. package/backend/scripts/manage-nodes.mjs +2 -2
  3. package/bin/plum.js +33 -11
  4. package/frontend/.svelte-kit/adapter-node/.vite/manifest.json +4 -4
  5. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/{_layout.B4TT3qNx.css → _layout.DWCC-fI9.css} +1 -1
  6. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.B3djLY18.css +6 -0
  7. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BNh9zY8Y.css +6 -0
  8. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.D1jbMcpb.css +6 -0
  9. package/frontend/.svelte-kit/adapter-node/chunks/internal.js +1 -1
  10. package/frontend/.svelte-kit/adapter-node/entries/pages/_layout.svelte.js +0 -2
  11. package/frontend/.svelte-kit/adapter-node/entries/pages/live/_id_/_page.svelte.js +1 -1
  12. package/frontend/.svelte-kit/adapter-node/entries/pages/reports/_id_/_page.svelte.js +0 -2
  13. package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/_page.svelte.js +35 -27
  14. package/frontend/.svelte-kit/adapter-node/manifest-full.js +1 -1
  15. package/frontend/.svelte-kit/adapter-node/manifest.js +1 -1
  16. package/frontend/.svelte-kit/adapter-node/nodes/0.js +2 -2
  17. package/frontend/.svelte-kit/adapter-node/nodes/1.js +1 -1
  18. package/frontend/.svelte-kit/adapter-node/nodes/10.js +2 -2
  19. package/frontend/.svelte-kit/adapter-node/nodes/11.js +1 -1
  20. package/frontend/.svelte-kit/adapter-node/nodes/12.js +1 -1
  21. package/frontend/.svelte-kit/adapter-node/nodes/3.js +2 -2
  22. package/frontend/.svelte-kit/adapter-node/nodes/4.js +1 -1
  23. package/frontend/.svelte-kit/adapter-node/nodes/5.js +1 -1
  24. package/frontend/.svelte-kit/adapter-node/nodes/6.js +2 -2
  25. package/frontend/.svelte-kit/adapter-node/nodes/8.js +1 -1
  26. package/frontend/.svelte-kit/adapter-node/nodes/9.js +1 -1
  27. package/frontend/.svelte-kit/generated/server/internal.js +1 -1
  28. package/frontend/.svelte-kit/output/client/.vite/manifest.json +80 -90
  29. package/frontend/{build/client/_app/immutable/assets/0.BEqlRAtD.css → .svelte-kit/output/client/_app/immutable/assets/0.DbhNvxzA.css} +1 -1
  30. package/frontend/.svelte-kit/output/client/_app/immutable/assets/10.D2ehp3UL.css +6 -0
  31. package/frontend/.svelte-kit/output/client/_app/immutable/assets/3.B3djLY18.css +6 -0
  32. package/frontend/.svelte-kit/output/client/_app/immutable/assets/6.BofiCOMr.css +6 -0
  33. package/frontend/.svelte-kit/output/client/_app/immutable/assets/{_layout.B4TT3qNx.css → _layout.DWCC-fI9.css} +1 -1
  34. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.B3djLY18.css +6 -0
  35. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BNh9zY8Y.css +6 -0
  36. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.D1jbMcpb.css +6 -0
  37. package/frontend/{build/client/_app/immutable/chunks/BdBJfKUi.js → .svelte-kit/output/client/_app/immutable/chunks/B74j8LrV.js} +1 -1
  38. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{DiexacSB.js → BIDsfWFz.js} +1 -1
  39. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BqJQeI8K.js +8 -0
  40. package/frontend/{build/client/_app/immutable/chunks/Dlymnwnf.js → .svelte-kit/output/client/_app/immutable/chunks/CUWTHbZi.js} +1 -1
  41. package/frontend/{build/client/_app/immutable/chunks/r_d1Iu0W.js → .svelte-kit/output/client/_app/immutable/chunks/DFZtPGTY.js} +1 -1
  42. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Dn1b1Jgc.js +6 -0
  43. package/frontend/.svelte-kit/output/client/_app/immutable/entry/{app.DgdSwPuN.js → app.CfdgGRnJ.js} +2 -2
  44. package/frontend/.svelte-kit/output/client/_app/immutable/entry/{start.D_lhI48n.js → start.CDN4Yr-S.js} +1 -1
  45. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.Owx2-FyO.js +6 -0
  46. package/frontend/{build/client/_app/immutable/nodes/1.JIF2GfHq.js → .svelte-kit/output/client/_app/immutable/nodes/1.ClH1FMY8.js} +1 -1
  47. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/10.CXqf0Rbs.js +6 -0
  48. package/frontend/{build/client/_app/immutable/nodes/11.CVSPxlqY.js → .svelte-kit/output/client/_app/immutable/nodes/11.Dv1VqvOV.js} +1 -1
  49. package/frontend/{build/client/_app/immutable/nodes/12.CnAR0AQb.js → .svelte-kit/output/client/_app/immutable/nodes/12.BfLHpcG7.js} +1 -1
  50. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/3.ConeF9qP.js +6 -0
  51. package/frontend/{build/client/_app/immutable/nodes/4.BX70m3v6.js → .svelte-kit/output/client/_app/immutable/nodes/4.BhAoYx0d.js} +1 -1
  52. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{5.UIFh06yr.js → 5.BXasF8ka.js} +1 -1
  53. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/6.CDEJGi13.js +10 -0
  54. package/frontend/{build/client/_app/immutable/nodes/8.CVHgJw-E.js → .svelte-kit/output/client/_app/immutable/nodes/8.DL5gzc5s.js} +1 -1
  55. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{9.DDDQPmMj.js → 9.Bv15cDh1.js} +1 -1
  56. package/frontend/.svelte-kit/output/client/_app/version.json +1 -1
  57. package/frontend/.svelte-kit/output/server/.vite/manifest.json +4 -4
  58. package/frontend/{build/client/_app/immutable/assets/_layout.B4TT3qNx.css → .svelte-kit/output/server/_app/immutable/assets/_layout.DWCC-fI9.css} +1 -1
  59. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.B3djLY18.css +6 -0
  60. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BNh9zY8Y.css +6 -0
  61. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.D1jbMcpb.css +6 -0
  62. package/frontend/.svelte-kit/output/server/chunks/internal.js +1 -1
  63. package/frontend/.svelte-kit/output/server/entries/pages/_layout.svelte.js +0 -2
  64. package/frontend/.svelte-kit/output/server/entries/pages/live/_id_/_page.svelte.js +1 -1
  65. package/frontend/.svelte-kit/output/server/entries/pages/reports/_id_/_page.svelte.js +0 -2
  66. package/frontend/.svelte-kit/output/server/entries/pages/test-repository/_page.svelte.js +35 -27
  67. package/frontend/.svelte-kit/output/server/manifest-full.js +1 -1
  68. package/frontend/.svelte-kit/output/server/manifest.js +1 -1
  69. package/frontend/.svelte-kit/output/server/nodes/0.js +2 -2
  70. package/frontend/.svelte-kit/output/server/nodes/1.js +1 -1
  71. package/frontend/.svelte-kit/output/server/nodes/10.js +2 -2
  72. package/frontend/.svelte-kit/output/server/nodes/11.js +1 -1
  73. package/frontend/.svelte-kit/output/server/nodes/12.js +1 -1
  74. package/frontend/.svelte-kit/output/server/nodes/3.js +2 -2
  75. package/frontend/.svelte-kit/output/server/nodes/4.js +1 -1
  76. package/frontend/.svelte-kit/output/server/nodes/5.js +1 -1
  77. package/frontend/.svelte-kit/output/server/nodes/6.js +2 -2
  78. package/frontend/.svelte-kit/output/server/nodes/8.js +1 -1
  79. package/frontend/.svelte-kit/output/server/nodes/9.js +1 -1
  80. package/frontend/{.svelte-kit/output/client/_app/immutable/assets/0.BEqlRAtD.css → build/client/_app/immutable/assets/0.DbhNvxzA.css} +1 -1
  81. package/frontend/build/client/_app/immutable/assets/0.DbhNvxzA.css.br +0 -0
  82. package/frontend/build/client/_app/immutable/assets/0.DbhNvxzA.css.gz +0 -0
  83. package/frontend/build/client/_app/immutable/assets/10.D2ehp3UL.css +6 -0
  84. package/frontend/build/client/_app/immutable/assets/10.D2ehp3UL.css.br +0 -0
  85. package/frontend/build/client/_app/immutable/assets/10.D2ehp3UL.css.gz +0 -0
  86. package/frontend/build/client/_app/immutable/assets/3.B3djLY18.css +6 -0
  87. package/frontend/build/client/_app/immutable/assets/3.B3djLY18.css.br +0 -0
  88. package/frontend/build/client/_app/immutable/assets/3.B3djLY18.css.gz +0 -0
  89. package/frontend/build/client/_app/immutable/assets/6.BofiCOMr.css +6 -0
  90. package/frontend/build/client/_app/immutable/assets/6.BofiCOMr.css.br +0 -0
  91. package/frontend/build/client/_app/immutable/assets/6.BofiCOMr.css.gz +0 -0
  92. package/frontend/{.svelte-kit/output/server/_app/immutable/assets/_layout.B4TT3qNx.css → build/client/_app/immutable/assets/_layout.DWCC-fI9.css} +1 -1
  93. package/frontend/build/client/_app/immutable/assets/_layout.DWCC-fI9.css.br +0 -0
  94. package/frontend/build/client/_app/immutable/assets/_layout.DWCC-fI9.css.gz +0 -0
  95. package/frontend/build/client/_app/immutable/assets/_page.B3djLY18.css +6 -0
  96. package/frontend/build/client/_app/immutable/assets/_page.B3djLY18.css.br +0 -0
  97. package/frontend/build/client/_app/immutable/assets/_page.B3djLY18.css.gz +0 -0
  98. package/frontend/build/client/_app/immutable/assets/_page.BNh9zY8Y.css +6 -0
  99. package/frontend/build/client/_app/immutable/assets/_page.BNh9zY8Y.css.br +0 -0
  100. package/frontend/build/client/_app/immutable/assets/_page.BNh9zY8Y.css.gz +0 -0
  101. package/frontend/build/client/_app/immutable/assets/_page.D1jbMcpb.css +6 -0
  102. package/frontend/build/client/_app/immutable/assets/_page.D1jbMcpb.css.br +0 -0
  103. package/frontend/build/client/_app/immutable/assets/_page.D1jbMcpb.css.gz +0 -0
  104. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/BdBJfKUi.js → build/client/_app/immutable/chunks/B74j8LrV.js} +1 -1
  105. package/frontend/build/client/_app/immutable/chunks/B74j8LrV.js.br +0 -0
  106. package/frontend/build/client/_app/immutable/chunks/B74j8LrV.js.gz +0 -0
  107. package/frontend/build/client/_app/immutable/chunks/{DiexacSB.js → BIDsfWFz.js} +1 -1
  108. package/frontend/build/client/_app/immutable/chunks/BIDsfWFz.js.br +0 -0
  109. package/frontend/build/client/_app/immutable/chunks/BIDsfWFz.js.gz +0 -0
  110. package/frontend/build/client/_app/immutable/chunks/BqJQeI8K.js +8 -0
  111. package/frontend/build/client/_app/immutable/chunks/BqJQeI8K.js.br +0 -0
  112. package/frontend/build/client/_app/immutable/chunks/BqJQeI8K.js.gz +0 -0
  113. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/Dlymnwnf.js → build/client/_app/immutable/chunks/CUWTHbZi.js} +1 -1
  114. package/frontend/build/client/_app/immutable/chunks/CUWTHbZi.js.br +0 -0
  115. package/frontend/build/client/_app/immutable/chunks/CUWTHbZi.js.gz +0 -0
  116. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/r_d1Iu0W.js → build/client/_app/immutable/chunks/DFZtPGTY.js} +1 -1
  117. package/frontend/build/client/_app/immutable/chunks/{r_d1Iu0W.js.br → DFZtPGTY.js.br} +0 -0
  118. package/frontend/build/client/_app/immutable/chunks/{r_d1Iu0W.js.gz → DFZtPGTY.js.gz} +0 -0
  119. package/frontend/build/client/_app/immutable/chunks/Dn1b1Jgc.js +6 -0
  120. package/frontend/build/client/_app/immutable/chunks/Dn1b1Jgc.js.br +0 -0
  121. package/frontend/build/client/_app/immutable/chunks/Dn1b1Jgc.js.gz +0 -0
  122. package/frontend/build/client/_app/immutable/entry/{app.DgdSwPuN.js → app.CfdgGRnJ.js} +2 -2
  123. package/frontend/build/client/_app/immutable/entry/app.CfdgGRnJ.js.br +0 -0
  124. package/frontend/build/client/_app/immutable/entry/app.CfdgGRnJ.js.gz +0 -0
  125. package/frontend/build/client/_app/immutable/entry/{start.D_lhI48n.js → start.CDN4Yr-S.js} +1 -1
  126. package/frontend/build/client/_app/immutable/entry/{start.D_lhI48n.js.br → start.CDN4Yr-S.js.br} +0 -0
  127. package/frontend/build/client/_app/immutable/entry/{start.D_lhI48n.js.gz → start.CDN4Yr-S.js.gz} +0 -0
  128. package/frontend/build/client/_app/immutable/nodes/0.Owx2-FyO.js +6 -0
  129. package/frontend/build/client/_app/immutable/nodes/0.Owx2-FyO.js.br +0 -0
  130. package/frontend/build/client/_app/immutable/nodes/0.Owx2-FyO.js.gz +0 -0
  131. package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/1.JIF2GfHq.js → build/client/_app/immutable/nodes/1.ClH1FMY8.js} +1 -1
  132. package/frontend/build/client/_app/immutable/nodes/1.ClH1FMY8.js.br +0 -0
  133. package/frontend/build/client/_app/immutable/nodes/1.ClH1FMY8.js.gz +0 -0
  134. package/frontend/build/client/_app/immutable/nodes/10.CXqf0Rbs.js +6 -0
  135. package/frontend/build/client/_app/immutable/nodes/10.CXqf0Rbs.js.br +0 -0
  136. package/frontend/build/client/_app/immutable/nodes/10.CXqf0Rbs.js.gz +0 -0
  137. package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/11.CVSPxlqY.js → build/client/_app/immutable/nodes/11.Dv1VqvOV.js} +1 -1
  138. package/frontend/build/client/_app/immutable/nodes/11.Dv1VqvOV.js.br +0 -0
  139. package/frontend/build/client/_app/immutable/nodes/11.Dv1VqvOV.js.gz +0 -0
  140. package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/12.CnAR0AQb.js → build/client/_app/immutable/nodes/12.BfLHpcG7.js} +1 -1
  141. package/frontend/build/client/_app/immutable/nodes/12.BfLHpcG7.js.br +0 -0
  142. package/frontend/build/client/_app/immutable/nodes/12.BfLHpcG7.js.gz +0 -0
  143. package/frontend/build/client/_app/immutable/nodes/3.ConeF9qP.js +6 -0
  144. package/frontend/build/client/_app/immutable/nodes/3.ConeF9qP.js.br +0 -0
  145. package/frontend/build/client/_app/immutable/nodes/3.ConeF9qP.js.gz +0 -0
  146. package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/4.BX70m3v6.js → build/client/_app/immutable/nodes/4.BhAoYx0d.js} +1 -1
  147. package/frontend/build/client/_app/immutable/nodes/4.BhAoYx0d.js.br +0 -0
  148. package/frontend/build/client/_app/immutable/nodes/4.BhAoYx0d.js.gz +0 -0
  149. package/frontend/build/client/_app/immutable/nodes/{5.UIFh06yr.js → 5.BXasF8ka.js} +1 -1
  150. package/frontend/build/client/_app/immutable/nodes/5.BXasF8ka.js.br +0 -0
  151. package/frontend/build/client/_app/immutable/nodes/5.BXasF8ka.js.gz +0 -0
  152. package/frontend/build/client/_app/immutable/nodes/6.CDEJGi13.js +10 -0
  153. package/frontend/build/client/_app/immutable/nodes/6.CDEJGi13.js.br +0 -0
  154. package/frontend/build/client/_app/immutable/nodes/6.CDEJGi13.js.gz +0 -0
  155. package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/8.CVHgJw-E.js → build/client/_app/immutable/nodes/8.DL5gzc5s.js} +1 -1
  156. package/frontend/build/client/_app/immutable/nodes/8.DL5gzc5s.js.br +0 -0
  157. package/frontend/build/client/_app/immutable/nodes/8.DL5gzc5s.js.gz +0 -0
  158. package/frontend/build/client/_app/immutable/nodes/{9.DDDQPmMj.js → 9.Bv15cDh1.js} +1 -1
  159. package/frontend/build/client/_app/immutable/nodes/9.Bv15cDh1.js.br +0 -0
  160. package/frontend/build/client/_app/immutable/nodes/9.Bv15cDh1.js.gz +0 -0
  161. package/frontend/build/client/_app/version.json +1 -1
  162. package/frontend/build/client/_app/version.json.br +0 -0
  163. package/frontend/build/client/_app/version.json.gz +0 -0
  164. package/frontend/build/server/chunks/{0-38cvTs44.js → 0-EDIcywdR.js} +4 -4
  165. package/frontend/build/server/chunks/0-EDIcywdR.js.map +5 -0
  166. package/frontend/build/server/chunks/{1-CcYsajvR.js → 1-DUXDWP4s.js} +2 -2
  167. package/frontend/build/server/chunks/{1-CcYsajvR.js.map → 1-DUXDWP4s.js.map} +1 -1
  168. package/frontend/build/server/chunks/{10-CFR2MUJt.js → 10-C2C3V4ib.js} +4 -4
  169. package/frontend/build/server/chunks/{10-CFR2MUJt.js.map → 10-C2C3V4ib.js.map} +1 -1
  170. package/frontend/build/server/chunks/{11-BmkiRQ9D.js → 11-C9Dv5Ypy.js} +2 -2
  171. package/frontend/build/server/chunks/{11-BmkiRQ9D.js.map → 11-C9Dv5Ypy.js.map} +1 -1
  172. package/frontend/build/server/chunks/{12-BphJAwnL.js → 12-aJDC1MAo.js} +2 -2
  173. package/frontend/build/server/chunks/{12-BphJAwnL.js.map → 12-aJDC1MAo.js.map} +1 -1
  174. package/frontend/build/server/chunks/{3-BvsmdXCj.js → 3-cuk7ocXX.js} +4 -4
  175. package/frontend/build/server/chunks/{3-BvsmdXCj.js.map → 3-cuk7ocXX.js.map} +1 -1
  176. package/frontend/build/server/chunks/{4-CN18WCEn.js → 4-D6Mu8Mm3.js} +2 -2
  177. package/frontend/build/server/chunks/{4-CN18WCEn.js.map → 4-D6Mu8Mm3.js.map} +1 -1
  178. package/frontend/build/server/chunks/{5-BwLYF3xL.js → 5-ZN8cEN5r.js} +2 -2
  179. package/frontend/build/server/chunks/{5-BwLYF3xL.js.map → 5-ZN8cEN5r.js.map} +1 -1
  180. package/frontend/build/server/chunks/{6-DTM2N_k3.js → 6-nLl6wUex.js} +4 -4
  181. package/frontend/build/server/chunks/6-nLl6wUex.js.map +5 -0
  182. package/frontend/build/server/chunks/{8-BfCbb7pl.js → 8-BvQ3XjdA.js} +2 -2
  183. package/frontend/build/server/chunks/{8-BfCbb7pl.js.map → 8-BvQ3XjdA.js.map} +1 -1
  184. package/frontend/build/server/chunks/{9-CQKepnMw.js → 9-BVKP6RbZ.js} +2 -2
  185. package/frontend/build/server/chunks/{9-CQKepnMw.js.map → 9-BVKP6RbZ.js.map} +1 -1
  186. package/frontend/build/server/chunks/{_layout.svelte-B8vZGefg.js → _layout.svelte-CiX-oQp_.js} +4 -3
  187. package/frontend/build/server/chunks/_layout.svelte-CiX-oQp_.js.map +5 -0
  188. package/frontend/build/server/chunks/{_page.svelte-BrnXHxJ4.js → _page.svelte-BYYUOBOB.js} +1 -3
  189. package/frontend/build/server/chunks/_page.svelte-BYYUOBOB.js.map +5 -0
  190. package/frontend/build/server/chunks/{_page.svelte-DM1_y4Oq.js → _page.svelte-BaxqeEYc.js} +36 -28
  191. package/frontend/build/server/chunks/_page.svelte-BaxqeEYc.js.map +5 -0
  192. package/frontend/build/server/chunks/{_page.svelte-Mo-O3HJ5.js → _page.svelte-DAIQT067.js} +2 -2
  193. package/frontend/build/server/chunks/_page.svelte-DAIQT067.js.map +5 -0
  194. package/frontend/build/server/index.js +1 -1
  195. package/frontend/build/server/index.js.map +1 -1
  196. package/frontend/build/server/manifest.js +12 -12
  197. package/frontend/build/server/manifest.js.map +1 -1
  198. package/frontend/package-lock.json +0 -14
  199. package/frontend/package.json +0 -2
  200. package/frontend/src/lib/components/reports/LiveReplayer.svelte +0 -6
  201. package/frontend/src/lib/components/reports/RecordingPlayer.svelte +30 -177
  202. package/frontend/src/lib/components/ui/NotificationStack.svelte +1 -79
  203. package/frontend/src/lib/copy/reports.js +0 -13
  204. package/frontend/src/routes/reports/[id]/+page.svelte +0 -1
  205. package/frontend/src/routes/test-repository/+page.svelte +6 -3
  206. package/package.json +4 -1
  207. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.4bPj83tb.css +0 -6
  208. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Be5c3USL.css +0 -6
  209. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BwgtEi_a.css +0 -6
  210. package/frontend/.svelte-kit/output/client/_app/immutable/assets/10.DC0wD6w_.css +0 -6
  211. package/frontend/.svelte-kit/output/client/_app/immutable/assets/3.Be5c3USL.css +0 -6
  212. package/frontend/.svelte-kit/output/client/_app/immutable/assets/6.DdQVxyZK.css +0 -6
  213. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.4bPj83tb.css +0 -6
  214. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Be5c3USL.css +0 -6
  215. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BwgtEi_a.css +0 -6
  216. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BIjh3jiU.js +0 -8
  217. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BtTNggoY.js +0 -8
  218. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/pNZogwkM.js +0 -6
  219. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.D2F-i1I5.js +0 -6
  220. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/10.A0AHLfOt.js +0 -6
  221. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/3.B6KwaCsM.js +0 -6
  222. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/6.DZ1OV24V.js +0 -10
  223. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.4bPj83tb.css +0 -6
  224. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Be5c3USL.css +0 -6
  225. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BwgtEi_a.css +0 -6
  226. package/frontend/build/client/_app/immutable/assets/0.BEqlRAtD.css.br +0 -0
  227. package/frontend/build/client/_app/immutable/assets/0.BEqlRAtD.css.gz +0 -0
  228. package/frontend/build/client/_app/immutable/assets/10.DC0wD6w_.css +0 -6
  229. package/frontend/build/client/_app/immutable/assets/10.DC0wD6w_.css.br +0 -0
  230. package/frontend/build/client/_app/immutable/assets/10.DC0wD6w_.css.gz +0 -0
  231. package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css +0 -6
  232. package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css.br +0 -0
  233. package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css.gz +0 -0
  234. package/frontend/build/client/_app/immutable/assets/6.DdQVxyZK.css +0 -6
  235. package/frontend/build/client/_app/immutable/assets/6.DdQVxyZK.css.br +0 -0
  236. package/frontend/build/client/_app/immutable/assets/6.DdQVxyZK.css.gz +0 -0
  237. package/frontend/build/client/_app/immutable/assets/_layout.B4TT3qNx.css.br +0 -0
  238. package/frontend/build/client/_app/immutable/assets/_layout.B4TT3qNx.css.gz +0 -0
  239. package/frontend/build/client/_app/immutable/assets/_page.4bPj83tb.css +0 -6
  240. package/frontend/build/client/_app/immutable/assets/_page.4bPj83tb.css.br +0 -0
  241. package/frontend/build/client/_app/immutable/assets/_page.4bPj83tb.css.gz +0 -0
  242. package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css +0 -6
  243. package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css.br +0 -0
  244. package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css.gz +0 -0
  245. package/frontend/build/client/_app/immutable/assets/_page.BwgtEi_a.css +0 -6
  246. package/frontend/build/client/_app/immutable/assets/_page.BwgtEi_a.css.br +0 -0
  247. package/frontend/build/client/_app/immutable/assets/_page.BwgtEi_a.css.gz +0 -0
  248. package/frontend/build/client/_app/immutable/chunks/BIjh3jiU.js +0 -8
  249. package/frontend/build/client/_app/immutable/chunks/BIjh3jiU.js.br +0 -0
  250. package/frontend/build/client/_app/immutable/chunks/BIjh3jiU.js.gz +0 -0
  251. package/frontend/build/client/_app/immutable/chunks/BdBJfKUi.js.br +0 -0
  252. package/frontend/build/client/_app/immutable/chunks/BdBJfKUi.js.gz +0 -0
  253. package/frontend/build/client/_app/immutable/chunks/BtTNggoY.js +0 -8
  254. package/frontend/build/client/_app/immutable/chunks/BtTNggoY.js.br +0 -0
  255. package/frontend/build/client/_app/immutable/chunks/BtTNggoY.js.gz +0 -0
  256. package/frontend/build/client/_app/immutable/chunks/DiexacSB.js.br +0 -0
  257. package/frontend/build/client/_app/immutable/chunks/DiexacSB.js.gz +0 -0
  258. package/frontend/build/client/_app/immutable/chunks/Dlymnwnf.js.br +0 -0
  259. package/frontend/build/client/_app/immutable/chunks/Dlymnwnf.js.gz +0 -0
  260. package/frontend/build/client/_app/immutable/chunks/pNZogwkM.js +0 -6
  261. package/frontend/build/client/_app/immutable/chunks/pNZogwkM.js.br +0 -0
  262. package/frontend/build/client/_app/immutable/chunks/pNZogwkM.js.gz +0 -0
  263. package/frontend/build/client/_app/immutable/entry/app.DgdSwPuN.js.br +0 -0
  264. package/frontend/build/client/_app/immutable/entry/app.DgdSwPuN.js.gz +0 -0
  265. package/frontend/build/client/_app/immutable/nodes/0.D2F-i1I5.js +0 -6
  266. package/frontend/build/client/_app/immutable/nodes/0.D2F-i1I5.js.br +0 -0
  267. package/frontend/build/client/_app/immutable/nodes/0.D2F-i1I5.js.gz +0 -0
  268. package/frontend/build/client/_app/immutable/nodes/1.JIF2GfHq.js.br +0 -5
  269. package/frontend/build/client/_app/immutable/nodes/1.JIF2GfHq.js.gz +0 -0
  270. package/frontend/build/client/_app/immutable/nodes/10.A0AHLfOt.js +0 -6
  271. package/frontend/build/client/_app/immutable/nodes/10.A0AHLfOt.js.br +0 -0
  272. package/frontend/build/client/_app/immutable/nodes/10.A0AHLfOt.js.gz +0 -0
  273. package/frontend/build/client/_app/immutable/nodes/11.CVSPxlqY.js.br +0 -0
  274. package/frontend/build/client/_app/immutable/nodes/11.CVSPxlqY.js.gz +0 -0
  275. package/frontend/build/client/_app/immutable/nodes/12.CnAR0AQb.js.br +0 -0
  276. package/frontend/build/client/_app/immutable/nodes/12.CnAR0AQb.js.gz +0 -0
  277. package/frontend/build/client/_app/immutable/nodes/3.B6KwaCsM.js +0 -6
  278. package/frontend/build/client/_app/immutable/nodes/3.B6KwaCsM.js.br +0 -0
  279. package/frontend/build/client/_app/immutable/nodes/3.B6KwaCsM.js.gz +0 -0
  280. package/frontend/build/client/_app/immutable/nodes/4.BX70m3v6.js.br +0 -0
  281. package/frontend/build/client/_app/immutable/nodes/4.BX70m3v6.js.gz +0 -0
  282. package/frontend/build/client/_app/immutable/nodes/5.UIFh06yr.js.br +0 -0
  283. package/frontend/build/client/_app/immutable/nodes/5.UIFh06yr.js.gz +0 -0
  284. package/frontend/build/client/_app/immutable/nodes/6.DZ1OV24V.js +0 -10
  285. package/frontend/build/client/_app/immutable/nodes/6.DZ1OV24V.js.br +0 -0
  286. package/frontend/build/client/_app/immutable/nodes/6.DZ1OV24V.js.gz +0 -0
  287. package/frontend/build/client/_app/immutable/nodes/8.CVHgJw-E.js.br +0 -0
  288. package/frontend/build/client/_app/immutable/nodes/8.CVHgJw-E.js.gz +0 -0
  289. package/frontend/build/client/_app/immutable/nodes/9.DDDQPmMj.js.br +0 -0
  290. package/frontend/build/client/_app/immutable/nodes/9.DDDQPmMj.js.gz +0 -0
  291. package/frontend/build/server/chunks/0-38cvTs44.js.map +0 -5
  292. package/frontend/build/server/chunks/6-DTM2N_k3.js.map +0 -5
  293. package/frontend/build/server/chunks/_layout.svelte-B8vZGefg.js.map +0 -5
  294. package/frontend/build/server/chunks/_page.svelte-BrnXHxJ4.js.map +0 -5
  295. package/frontend/build/server/chunks/_page.svelte-DM1_y4Oq.js.map +0 -5
  296. package/frontend/build/server/chunks/_page.svelte-Mo-O3HJ5.js.map +0 -5
  297. package/frontend/src/lib/stores/replayVideo.js +0 -51
  298. package/frontend/src/lib/utils/replayCapture.js +0 -91
  299. package/frontend/src/lib/utils/replayVideo.js +0 -111
@@ -1,5 +0,0 @@
1
- /*
2
- This file is part of Plum.
3
- Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
- {"version":3,"file":"_page.svelte-DM1_y4Oq.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/test-repository/_page.svelte.js"],"sourcesContent":["import { a as push, _ as fallback, Z as stringify, $ as bind_props, p as pop, a2 as copy_payload, a3 as assign_payload, X as head, Y as ensure_array_like } from \"../../../chunks/index.js\";\nimport { A as API_BASE } from \"../../../chunks/constants.js\";\nimport { a as auth } from \"../../../chunks/auth.js\";\nimport { d as EXPORT_LABEL, e as EXPORT_MENU_ITEMS, b as CANCEL_LABEL, S as SORT_BY_LABEL, f as SEARCHING_LABEL, L as LOADING_LABEL } from \"../../../chunks/common.js\";\n/* empty css */\nimport { a as attr } from \"../../../chunks/attributes.js\";\nimport { e as escape_html } from \"../../../chunks/escaping.js\";\nimport { d as deleteEntityTitle, D as DUPLICATE_LABEL, a as DUPLICATE_RUN_MODAL_TITLE, N as NEW_SUITE_MODAL_TITLE, S as SUITE_NAME_PLACEHOLDER, b as SUITE_DESC_PLACEHOLDER, c as NEW_RUN_MODAL_TITLE, R as RUN_TITLE_PLACEHOLDER, I as IMPORT_TEST_CASES_HREF, e as SEARCH_PLACEHOLDER, f as NO_RESULTS_TITLE, n as noResultsDescription, g as DELETE_SUITE_TITLE, h as caseCount, i as createdByLabel, j as DUPLICATE_RUN_ACTION_TITLE, k as DELETE_RUN_TITLE, P as PAGE_TITLE, l as NAME_LABEL, m as DESCRIPTION_LABEL, o as PRIORITY_LABEL, p as createSuiteLabel, T as TITLE_LABEL, q as createRunLabel, H as HEADING, r as HEADER_DESC, s as IMPORT_TEST_CASES_LINK, t as NEW_SUITE_LABEL, u as NEW_RUN_LABEL, v as SUITES_TAB_LABEL, w as RUNS_TAB_LABEL, C as CASES_LABEL, A as AUTOMATED_TAG_LABEL, x as SUITES_LABEL } from \"../../../chunks/repository.js\";\nimport \"../../../chunks/runner.js\";\n/* empty css */\nimport { E as EmptyState } from \"../../../chunks/EmptyState.js\";\nimport { C as ConfirmModal } from \"../../../chunks/ConfirmModal.js\";\nimport { M as Modal } from \"../../../chunks/Modal.js\";\nimport { B as Button } from \"../../../chunks/Button.js\";\nfunction getToken() {\n return auth.getToken();\n}\nfunction authHeaders() {\n return { \"Content-Type\": \"application/json\", Authorization: `Bearer ${getToken()}` };\n}\nasync function searchRepository(q) {\n const enc = encodeURIComponent(q);\n const [sRes, rRes] = await Promise.all([\n fetch(`${API_BASE}/test-suites?q=${enc}`, { headers: authHeaders() }),\n fetch(`${API_BASE}/test-runs?q=${enc}&limit=50`, { headers: authHeaders() })\n ]);\n const { suites, cases } = await sRes.json();\n const { runs } = await rRes.json();\n return { suites, cases, runs };\n}\nfunction ExportMenu($$payload, $$props) {\n push();\n let label = fallback($$props[\"label\"], EXPORT_LABEL);\n let items = fallback($$props[\"items\"], EXPORT_MENU_ITEMS);\n let busy = fallback($$props[\"busy\"], false);\n let disabled = fallback($$props[\"disabled\"], false);\n let align = fallback($$props[\"align\"], \"right\");\n let open = false;\n $$payload.out += `<div class=\"export-menu svelte-uuhpp9\"><button type=\"button\"${attr(\"class\", `trigger svelte-uuhpp9 ${stringify([\"\"].filter(Boolean).join(\" \"))}`)}${attr(\"disabled\", disabled, true)} aria-haspopup=\"menu\"${attr(\"aria-expanded\", open)}><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path><polyline points=\"7 10 12 15 17 10\"></polyline><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"></line></svg> <span>${escape_html(busy ? \"…\" : label)}</span></button> `;\n {\n $$payload.out += \"<!--[!-->\";\n }\n $$payload.out += `<!--]--></div>`;\n bind_props($$props, { label, items, busy, disabled, align });\n pop();\n}\nfunction _page($$payload, $$props) {\n push();\n let q, filteredCases, filteredSuites, filteredRuns;\n let tab = typeof sessionStorage !== \"undefined\" && sessionStorage.getItem(\"plum:repo:tab\") || \"suites\";\n function readSort(key, fallback2) {\n try {\n const v = sessionStorage.getItem(key);\n if (v) return JSON.parse(v);\n } catch {\n }\n return fallback2;\n }\n let suitesTotal = 0;\n let suitesSort = readSort(\"plum:repo:suites:sort\", { by: \"createdAt\", order: \"desc\" });\n let runsTotal = 0;\n let runsSort = readSort(\"plum:repo:runs:sort\", { by: \"createdAt\", order: \"desc\" });\n let searchResults = null;\n let searchLoading = false;\n let searchTimer = null;\n let suiteModalOpen = false;\n let suiteForm = {\n name: \"\",\n description: \"\"\n };\n let suiteFormSaving = false;\n let runModalOpen = false;\n let runForm = { title: \"\" };\n let runFormSaving = false;\n let confirmDeleteOpen = false;\n let confirmDuplicateOpen = false;\n let search = \"\";\n const PRIORITIES = [\"Critical\", \"High\", \"Medium\", \"Low\"];\n let exporting = false;\n function priorityClass(p) {\n return p?.toLowerCase() ?? \"medium\";\n }\n function runStatusClass(s) {\n return s === \"complete\" ? \"pass\" : s === \"in-progress\" ? \"warn\" : \"muted\";\n }\n q = search.trim();\n {\n clearTimeout(searchTimer);\n if (q) {\n searchLoading = true;\n searchResults = null;\n searchTimer = setTimeout(\n async () => {\n try {\n searchResults = await searchRepository(q);\n } catch {\n searchResults = { suites: [], cases: [], runs: [] };\n } finally {\n searchLoading = false;\n }\n },\n 300\n );\n } else {\n searchResults = null;\n searchLoading = false;\n }\n }\n filteredCases = searchResults?.cases ?? [];\n filteredSuites = searchResults?.suites ?? [];\n filteredRuns = searchResults?.runs ?? [];\n let $$settled = true;\n let $$inner_payload;\n function $$render_inner($$payload2) {\n head($$payload2, ($$payload3) => {\n $$payload3.title = `<title>${escape_html(PAGE_TITLE)}</title>`;\n });\n ConfirmModal($$payload2, {\n title: deleteEntityTitle(),\n get open() {\n return confirmDeleteOpen;\n },\n set open($$value) {\n confirmDeleteOpen = $$value;\n $$settled = false;\n },\n children: ($$payload3) => {\n {\n $$payload3.out += \"<!--[!-->\";\n }\n $$payload3.out += `<!--]-->`;\n },\n $$slots: { default: true }\n });\n $$payload2.out += `<!----> `;\n ConfirmModal($$payload2, {\n title: DUPLICATE_RUN_MODAL_TITLE,\n confirmLabel: DUPLICATE_LABEL,\n get open() {\n return confirmDuplicateOpen;\n },\n set open($$value) {\n confirmDuplicateOpen = $$value;\n $$settled = false;\n },\n children: ($$payload3) => {\n {\n $$payload3.out += \"<!--[!-->\";\n }\n $$payload3.out += `<!--]-->`;\n },\n $$slots: { default: true }\n });\n $$payload2.out += `<!----> `;\n Modal($$payload2, {\n title: NEW_SUITE_MODAL_TITLE,\n get open() {\n return suiteModalOpen;\n },\n set open($$value) {\n suiteModalOpen = $$value;\n $$settled = false;\n },\n children: ($$payload3) => {\n const each_array = ensure_array_like(PRIORITIES);\n $$payload3.out += `<div class=\"form-fields svelte-lqfl9a\"><div class=\"field\"><label class=\"field-label\" for=\"suite-name\">${escape_html(NAME_LABEL)}</label> <input id=\"suite-name\" type=\"text\" class=\"field-input\"${attr(\"value\", suiteForm.name)}${attr(\"placeholder\", SUITE_NAME_PLACEHOLDER)}></div> <div class=\"field\"><label class=\"field-label\" for=\"suite-desc\">${escape_html(DESCRIPTION_LABEL)}</label> <textarea id=\"suite-desc\" class=\"field-input field-textarea svelte-lqfl9a\"${attr(\"placeholder\", SUITE_DESC_PLACEHOLDER)} rows=\"3\">`;\n const $$body = escape_html(suiteForm.description);\n if ($$body) {\n $$payload3.out += `${$$body}`;\n }\n $$payload3.out += `</textarea></div> <div class=\"field\"><label class=\"field-label\" for=\"suite-prio\">${escape_html(PRIORITY_LABEL)}</label> <select id=\"suite-prio\" class=\"field-input\"><!--[-->`;\n for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n let p = each_array[$$index];\n $$payload3.out += `<option${attr(\"value\", p)}>${escape_html(p)}</option>`;\n }\n $$payload3.out += `<!--]--></select></div> `;\n {\n $$payload3.out += \"<!--[!-->\";\n }\n $$payload3.out += `<!--]--> <div class=\"modal-actions svelte-lqfl9a\">`;\n Button($$payload3, {\n disabled: suiteFormSaving,\n children: ($$payload4) => {\n $$payload4.out += `<!---->${escape_html(createSuiteLabel())}`;\n },\n $$slots: { default: true }\n });\n $$payload3.out += `<!----> `;\n Button($$payload3, {\n variant: \"ghost\",\n children: ($$payload4) => {\n $$payload4.out += `<!---->${escape_html(CANCEL_LABEL)}`;\n },\n $$slots: { default: true }\n });\n $$payload3.out += `<!----></div></div>`;\n },\n $$slots: { default: true }\n });\n $$payload2.out += `<!----> `;\n Modal($$payload2, {\n title: NEW_RUN_MODAL_TITLE,\n get open() {\n return runModalOpen;\n },\n set open($$value) {\n runModalOpen = $$value;\n $$settled = false;\n },\n children: ($$payload3) => {\n $$payload3.out += `<div class=\"form-fields svelte-lqfl9a\"><div class=\"field\"><label class=\"field-label\" for=\"run-title\">${escape_html(TITLE_LABEL)}</label> <input id=\"run-title\" type=\"text\" class=\"field-input\"${attr(\"value\", runForm.title)}${attr(\"placeholder\", RUN_TITLE_PLACEHOLDER)}></div> `;\n {\n $$payload3.out += \"<!--[!-->\";\n }\n $$payload3.out += `<!--]--> <div class=\"modal-actions svelte-lqfl9a\">`;\n Button($$payload3, {\n disabled: runFormSaving,\n children: ($$payload4) => {\n $$payload4.out += `<!---->${escape_html(createRunLabel())}`;\n },\n $$slots: { default: true }\n });\n $$payload3.out += `<!----> `;\n Button($$payload3, {\n variant: \"ghost\",\n children: ($$payload4) => {\n $$payload4.out += `<!---->${escape_html(CANCEL_LABEL)}`;\n },\n $$slots: { default: true }\n });\n $$payload3.out += `<!----></div></div>`;\n },\n $$slots: { default: true }\n });\n $$payload2.out += `<!----> <div class=\"page-header svelte-lqfl9a\"><div class=\"header-text svelte-lqfl9a\"><h1 class=\"svelte-lqfl9a\">${escape_html(HEADING)}</h1> <p class=\"header-desc svelte-lqfl9a\">${escape_html(HEADER_DESC)}</p></div> <div class=\"header-actions svelte-lqfl9a\">`;\n if (tab === \"suites\") {\n $$payload2.out += \"<!--[-->\";\n $$payload2.out += `<a class=\"import-link svelte-lqfl9a\"${attr(\"href\", IMPORT_TEST_CASES_HREF)}>${escape_html(IMPORT_TEST_CASES_LINK)}</a> `;\n ExportMenu($$payload2, { busy: exporting });\n $$payload2.out += `<!----> `;\n Button($$payload2, {\n children: ($$payload3) => {\n $$payload3.out += `<!---->${escape_html(NEW_SUITE_LABEL)}`;\n },\n $$slots: { default: true }\n });\n $$payload2.out += `<!---->`;\n } else {\n $$payload2.out += \"<!--[!-->\";\n Button($$payload2, {\n children: ($$payload3) => {\n $$payload3.out += `<!---->${escape_html(NEW_RUN_LABEL)}`;\n },\n $$slots: { default: true }\n });\n }\n $$payload2.out += `<!--]--></div></div> <div class=\"tabs svelte-lqfl9a\"><button${attr(\"class\", `tab svelte-lqfl9a ${stringify([tab === \"suites\" ? \"active\" : \"\"].filter(Boolean).join(\" \"))}`)}>${escape_html(SUITES_TAB_LABEL)} <span class=\"tab-count svelte-lqfl9a\">${escape_html(q ? filteredSuites.length + \"/\" : \"\")}${escape_html(suitesTotal)}</span></button> <button${attr(\"class\", `tab svelte-lqfl9a ${stringify([tab === \"runs\" ? \"active\" : \"\"].filter(Boolean).join(\" \"))}`)}>${escape_html(RUNS_TAB_LABEL)} <span class=\"tab-count svelte-lqfl9a\">${escape_html(q ? filteredRuns.length + \"/\" : \"\")}${escape_html(runsTotal)}</span></button></div> <div class=\"search-bar svelte-lqfl9a\"><svg class=\"search-icon svelte-lqfl9a\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line></svg> <input type=\"search\" class=\"search-input svelte-lqfl9a\"${attr(\"placeholder\", SEARCH_PLACEHOLDER)}${attr(\"value\", search)}> `;\n {\n $$payload2.out += \"<!--[!-->\";\n }\n $$payload2.out += `<!--]--></div> `;\n if (!q) {\n $$payload2.out += \"<!--[-->\";\n $$payload2.out += `<div class=\"sort-bar svelte-lqfl9a\"><span class=\"sort-label svelte-lqfl9a\">${escape_html(SORT_BY_LABEL)}</span> `;\n if (tab === \"suites\") {\n $$payload2.out += \"<!--[-->\";\n const each_array_1 = ensure_array_like([\n [\"createdAt\", \"Date Created\"],\n [\"displayId\", \"ID\"],\n [\"name\", \"Name\"],\n [\"priority\", \"Priority\"]\n ]);\n $$payload2.out += `<!--[-->`;\n for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n let [val, label] = each_array_1[$$index_1];\n $$payload2.out += `<button${attr(\"class\", `sort-chip svelte-lqfl9a ${stringify([suitesSort.by === val ? \"active\" : \"\"].filter(Boolean).join(\" \"))}`)}>${escape_html(label)} `;\n if (suitesSort.by === val) {\n $$payload2.out += \"<!--[-->\";\n $$payload2.out += `<span class=\"sort-dir svelte-lqfl9a\">${escape_html(suitesSort.order === \"asc\" ? \"↑\" : \"↓\")}</span>`;\n } else {\n $$payload2.out += \"<!--[!-->\";\n }\n $$payload2.out += `<!--]--></button>`;\n }\n $$payload2.out += `<!--]-->`;\n } else {\n $$payload2.out += \"<!--[!-->\";\n const each_array_2 = ensure_array_like([\n [\"createdAt\", \"Date Created\"],\n [\"updatedAt\", \"Last Updated\"],\n [\"title\", \"Name\"]\n ]);\n $$payload2.out += `<!--[-->`;\n for (let $$index_2 = 0, $$length = each_array_2.length; $$index_2 < $$length; $$index_2++) {\n let [val, label] = each_array_2[$$index_2];\n $$payload2.out += `<button${attr(\"class\", `sort-chip svelte-lqfl9a ${stringify([runsSort.by === val ? \"active\" : \"\"].filter(Boolean).join(\" \"))}`)}>${escape_html(label)} `;\n if (runsSort.by === val) {\n $$payload2.out += \"<!--[-->\";\n $$payload2.out += `<span class=\"sort-dir svelte-lqfl9a\">${escape_html(runsSort.order === \"asc\" ? \"↑\" : \"↓\")}</span>`;\n } else {\n $$payload2.out += \"<!--[!-->\";\n }\n $$payload2.out += `<!--]--></button>`;\n }\n $$payload2.out += `<!--]-->`;\n }\n $$payload2.out += `<!--]--></div>`;\n } else {\n $$payload2.out += \"<!--[!-->\";\n }\n $$payload2.out += `<!--]--> `;\n if (q) {\n $$payload2.out += \"<!--[-->\";\n $$payload2.out += `<div>`;\n if (searchLoading) {\n $$payload2.out += \"<!--[-->\";\n $$payload2.out += `<div class=\"loading-row svelte-lqfl9a\">${escape_html(SEARCHING_LABEL)}</div>`;\n } else {\n $$payload2.out += \"<!--[!-->\";\n if (!searchResults) {\n $$payload2.out += \"<!--[-->\";\n $$payload2.out += `<div class=\"loading-row svelte-lqfl9a\">${escape_html(SEARCHING_LABEL)}</div>`;\n } else {\n $$payload2.out += \"<!--[!-->\";\n if (filteredCases.length === 0 && filteredSuites.length === 0 && filteredRuns.length === 0) {\n $$payload2.out += \"<!--[-->\";\n EmptyState($$payload2, {\n title: NO_RESULTS_TITLE,\n description: noResultsDescription(search)\n });\n } else {\n $$payload2.out += \"<!--[!-->\";\n if (filteredCases.length > 0) {\n $$payload2.out += \"<!--[-->\";\n const each_array_3 = ensure_array_like(filteredCases);\n $$payload2.out += `<div class=\"search-section svelte-lqfl9a\"><h2 class=\"search-section-title svelte-lqfl9a\">${escape_html(CASES_LABEL)} <span class=\"tab-count svelte-lqfl9a\">${escape_html(filteredCases.length)}</span></h2> <div class=\"case-results svelte-lqfl9a\"><!--[-->`;\n for (let $$index_3 = 0, $$length = each_array_3.length; $$index_3 < $$length; $$index_3++) {\n let tc = each_array_3[$$index_3];\n $$payload2.out += `<a${attr(\"href\", `/test-repository/suites/${stringify(tc.suite.id)}`)} class=\"case-result-row svelte-lqfl9a\"><span class=\"id-chip small svelte-lqfl9a\">${escape_html(tc.displayId)}</span> <span class=\"case-result-title svelte-lqfl9a\">${escape_html(tc.title)}</span> `;\n if (tc.isAutomated) {\n $$payload2.out += \"<!--[-->\";\n $$payload2.out += `<span class=\"auto-badge svelte-lqfl9a\">${escape_html(AUTOMATED_TAG_LABEL)}</span>`;\n } else {\n $$payload2.out += \"<!--[!-->\";\n }\n $$payload2.out += `<!--]--> <span${attr(\"class\", `priority-badge small ${stringify(priorityClass(tc.priority))} svelte-lqfl9a`)}>${escape_html(tc.priority)}</span> <span class=\"case-result-suite svelte-lqfl9a\">${escape_html(tc.suite.displayId)} · ${escape_html(tc.suite.name)}</span></a>`;\n }\n $$payload2.out += `<!--]--></div></div>`;\n } else {\n $$payload2.out += \"<!--[!-->\";\n }\n $$payload2.out += `<!--]--> `;\n if (filteredSuites.length > 0) {\n $$payload2.out += \"<!--[-->\";\n const each_array_4 = ensure_array_like(filteredSuites);\n $$payload2.out += `<div class=\"search-section svelte-lqfl9a\"><h2 class=\"search-section-title svelte-lqfl9a\">${escape_html(SUITES_LABEL)} <span class=\"tab-count svelte-lqfl9a\">${escape_html(filteredSuites.length)}</span></h2> <div class=\"suite-grid svelte-lqfl9a\"><!--[-->`;\n for (let $$index_4 = 0, $$length = each_array_4.length; $$index_4 < $$length; $$index_4++) {\n let suite = each_array_4[$$index_4];\n $$payload2.out += `<div class=\"suite-card svelte-lqfl9a\"><a${attr(\"href\", `/test-repository/suites/${stringify(suite.id)}`)} class=\"card-link svelte-lqfl9a\"${attr(\"aria-label\", suite.name)}></a> <div class=\"suite-card-header svelte-lqfl9a\"><span class=\"id-chip svelte-lqfl9a\">${escape_html(suite.displayId)}</span> <span${attr(\"class\", `priority-badge ${stringify(priorityClass(suite.priority))} svelte-lqfl9a`)}>${escape_html(suite.priority)}</span> <div class=\"suite-card-actions svelte-lqfl9a\"><button class=\"icon-btn danger svelte-lqfl9a\"${attr(\"title\", DELETE_SUITE_TITLE)}><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"3 6 5 6 21 6\"></polyline><path d=\"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6\"></path><path d=\"M10 11v6M14 11v6\"></path><path d=\"M9 6V4h6v2\"></path></svg></button></div></div> <h3 class=\"suite-name svelte-lqfl9a\">${escape_html(suite.name)}</h3> `;\n if (suite.description) {\n $$payload2.out += \"<!--[-->\";\n $$payload2.out += `<p class=\"suite-desc svelte-lqfl9a\">${escape_html(suite.description)}</p>`;\n } else {\n $$payload2.out += \"<!--[!-->\";\n }\n $$payload2.out += `<!--]--> <div class=\"suite-meta svelte-lqfl9a\"><span class=\"meta-item svelte-lqfl9a\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2\"></path></svg> ${escape_html(caseCount(suite._count.cases))}</span> <span class=\"meta-item svelte-lqfl9a\">${escape_html(createdByLabel(suite.createdBy.name))}</span></div></div>`;\n }\n $$payload2.out += `<!--]--></div></div>`;\n } else {\n $$payload2.out += \"<!--[!-->\";\n }\n $$payload2.out += `<!--]--> `;\n if (filteredRuns.length > 0) {\n $$payload2.out += \"<!--[-->\";\n const each_array_5 = ensure_array_like(filteredRuns);\n $$payload2.out += `<div class=\"search-section svelte-lqfl9a\"><h2 class=\"search-section-title svelte-lqfl9a\">Runs <span class=\"tab-count svelte-lqfl9a\">${escape_html(filteredRuns.length)}</span></h2> <div class=\"runs-list svelte-lqfl9a\"><!--[-->`;\n for (let $$index_5 = 0, $$length = each_array_5.length; $$index_5 < $$length; $$index_5++) {\n let run = each_array_5[$$index_5];\n $$payload2.out += `<div class=\"run-row svelte-lqfl9a\"><a${attr(\"href\", `/test-repository/runs/${stringify(run.id)}`)} class=\"card-link svelte-lqfl9a\"${attr(\"aria-label\", run.title)}></a> <div class=\"run-row-main svelte-lqfl9a\"><span${attr(\"class\", `run-status-dot ${stringify(runStatusClass(run.status))} svelte-lqfl9a`)}></span> <span class=\"run-title svelte-lqfl9a\">${escape_html(run.title)}</span> <span class=\"run-count svelte-lqfl9a\">${escape_html(caseCount(run._count.entries))}</span></div> <div class=\"run-meta svelte-lqfl9a\"><span class=\"run-status-label svelte-lqfl9a\">${escape_html(run.status)}</span> <span class=\"meta-sep svelte-lqfl9a\">·</span> <span>${escape_html(createdByLabel(run.createdBy.name))}</span> <span class=\"meta-sep svelte-lqfl9a\">·</span> <span>${escape_html(new Date(run.createdAt).toLocaleDateString())}</span></div> <div class=\"run-row-actions svelte-lqfl9a\"><button class=\"icon-btn svelte-lqfl9a\"${attr(\"title\", DUPLICATE_RUN_ACTION_TITLE)}><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"></rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path></svg></button> <button class=\"icon-btn danger svelte-lqfl9a\"${attr(\"title\", DELETE_RUN_TITLE)}><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"3 6 5 6 21 6\"></polyline><path d=\"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6\"></path><path d=\"M10 11v6M14 11v6\"></path><path d=\"M9 6V4h6v2\"></path></svg></button></div></div>`;\n }\n $$payload2.out += `<!--]--></div></div>`;\n } else {\n $$payload2.out += \"<!--[!-->\";\n }\n $$payload2.out += `<!--]-->`;\n }\n $$payload2.out += `<!--]-->`;\n }\n $$payload2.out += `<!--]-->`;\n }\n $$payload2.out += `<!--]--></div>`;\n } else {\n $$payload2.out += \"<!--[!-->\";\n if (tab === \"suites\") {\n $$payload2.out += \"<!--[-->\";\n $$payload2.out += `<div>`;\n {\n $$payload2.out += \"<!--[-->\";\n $$payload2.out += `<div class=\"loading-row svelte-lqfl9a\">${escape_html(LOADING_LABEL)}</div>`;\n }\n $$payload2.out += `<!--]--></div>`;\n } else {\n $$payload2.out += \"<!--[!-->\";\n $$payload2.out += `<div>`;\n {\n $$payload2.out += \"<!--[-->\";\n $$payload2.out += `<div class=\"loading-row svelte-lqfl9a\">${escape_html(LOADING_LABEL)}</div>`;\n }\n $$payload2.out += `<!--]--></div>`;\n }\n $$payload2.out += `<!--]-->`;\n }\n $$payload2.out += `<!--]-->`;\n }\n do {\n $$settled = true;\n $$inner_payload = copy_payload($$payload);\n $$render_inner($$inner_payload);\n } while (!$$settled);\n assign_payload($$payload, $$inner_payload);\n pop();\n}\nexport {\n _page as default\n};\n"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /*
2
- This file is part of Plum.
3
- Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
- {"version":3,"file":"_page.svelte-Mo-O3HJ5.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/live/_id_/_page.svelte.js"],"sourcesContent":["import { _ as fallback, $ as bind_props, p as pop, a as push, a0 as store_get, X as head, Z as stringify, Y as ensure_array_like, a1 as unsubscribe_stores } from \"../../../../chunks/index.js\";\nimport { o as onDestroy } from \"../../../../chunks/index-server.js\";\nimport { g as goto } from \"../../../../chunks/client.js\";\nimport { p as page } from \"../../../../chunks/stores.js\";\nimport { b as backgroundRuns } from \"../../../../chunks/runner.js\";\nimport { R as REDIRECT_DELAY_MS } from \"../../../../chunks/constants.js\";\nimport \"../../../../chunks/auth.js\";\nimport { r as reportUrl } from \"../../../../chunks/reports.js\";\nimport \"rrweb-player\";\nimport { B as BackLink } from \"../../../../chunks/BackLink.js\";\nimport { A as ALL_TESTS_LABEL } from \"../../../../chunks/common.js\";\nimport { C as CANCEL_RUN_LABEL, R as RUN_SKIPPED_HEADING, w as workersCountLabel, r as runnersBadge, a as RUNNER_LABEL, W as WAITING_FOR_OUTPUT, L as LIVE_PAGE_TITLE, b as REPORTS_BACK_LABEL, Q as QUEUED_HEADING, c as QUEUED_BODY, q as queuePositionLine, V as VIEW_PAST_REPORTS_LINK, d as LIVE_BADGE_LABEL, P as PASSED_LABEL, F as FAILED_LABEL, A as ALL_TESTS_PASSED, S as SOME_TESTS_FAILED, e as redirectingIn, f as VIEW_REPORT_NOW_LABEL, g as workerLabel, h as AWAITING_STREAM_LABEL, N as NO_STREAM_LABEL, i as RUNNING_LABEL, j as FINISHED_LABEL } from \"../../../../chunks/reports2.js\";\nimport { B as Badge } from \"../../../../chunks/Badge.js\";\nimport { e as escape_html } from \"../../../../chunks/escaping.js\";\nimport { a as attr } from \"../../../../chunks/attributes.js\";\nfunction LiveReplayer($$payload, $$props) {\n push();\n let events = fallback($$props[\"events\"], () => [], true);\n let player = null;\n onDestroy(() => {\n try {\n player?.getReplayer()?.destroy();\n } catch {\n }\n });\n $$payload.out += `<div class=\"live-viewport svelte-1wgcx8r\"><div class=\"live-stage svelte-1wgcx8r\"><div class=\"live-mount svelte-1wgcx8r\"></div></div></div>`;\n bind_props($$props, { events });\n pop();\n}\nfunction _page($$payload, $$props) {\n push();\n var $$store_subs;\n let runId, run, status, lanes, isMulti, activeLane, activeLaneId, laneWorkers, workerIds, activeWorkerEvents;\n let redirectTimer = null;\n let redirectCountdown = REDIRECT_DELAY_MS / 1e3;\n let countdownInterval = null;\n let activeTab = null;\n let activeWorkerId = null;\n onDestroy(() => {\n if (redirectTimer) clearTimeout(redirectTimer);\n if (countdownInterval) clearInterval(countdownInterval);\n });\n runId = store_get($$store_subs ??= {}, \"$page\", page).params.id;\n run = store_get($$store_subs ??= {}, \"$backgroundRuns\", backgroundRuns)[runId] ?? null;\n status = run?.status ?? null;\n lanes = run?.lanes ?? [];\n isMulti = lanes.length > 1;\n {\n if (lanes.length === 0) activeTab = null;\n else if (!lanes.find((l) => l.id === activeTab)) activeTab = lanes[0].id;\n }\n activeLane = lanes.find((l) => l.id === activeTab) ?? null;\n activeLaneId = isMulti ? activeTab : lanes[0]?.id;\n laneWorkers = activeLaneId && run?.rrwebByLane[activeLaneId] || {};\n workerIds = Object.keys(laneWorkers).sort((a, b) => Number(a) - Number(b));\n {\n if (workerIds.length === 0) activeWorkerId = null;\n else if (!workerIds.includes(activeWorkerId)) activeWorkerId = workerIds[0];\n }\n activeWorkerEvents = activeWorkerId ? laneWorkers[activeWorkerId]?.events ?? [] : [];\n if (status === \"done\" && run?.testCompleted && run?.latestReportId && !redirectTimer) {\n redirectCountdown = REDIRECT_DELAY_MS / 1e3;\n countdownInterval = setInterval(\n () => {\n redirectCountdown--;\n if (redirectCountdown <= 0) clearInterval(countdownInterval);\n },\n 1e3\n );\n redirectTimer = setTimeout(() => goto(reportUrl(run.latestReportId)), REDIRECT_DELAY_MS);\n }\n head($$payload, ($$payload2) => {\n $$payload2.title = `<title>${escape_html(LIVE_PAGE_TITLE)}</title>`;\n });\n if (!run) {\n $$payload.out += \"<!--[-->\";\n BackLink($$payload, { href: \"/reports\", label: REPORTS_BACK_LABEL });\n $$payload.out += `<!----> <div class=\"notice-state svelte-13l3gen\">`;\n {\n $$payload.out += \"<!--[!-->\";\n $$payload.out += `<div class=\"pulse-dot svelte-13l3gen\"></div>`;\n }\n $$payload.out += `<!--]--></div>`;\n } else {\n $$payload.out += \"<!--[!-->\";\n if (status === \"queued\") {\n $$payload.out += \"<!--[-->\";\n BackLink($$payload, { href: \"/reports\", label: REPORTS_BACK_LABEL });\n $$payload.out += `<!----> <div class=\"notice-state svelte-13l3gen\"><div class=\"pulse-dot warn svelte-13l3gen\"></div> <h2 class=\"svelte-13l3gen\">${escape_html(QUEUED_HEADING)}</h2> <p class=\"svelte-13l3gen\">${escape_html(QUEUED_BODY)}</p> <p class=\"queue-pos svelte-13l3gen\">${escape_html(queuePositionLine())}</p> <button class=\"cancel-btn svelte-13l3gen\">${escape_html(CANCEL_RUN_LABEL)}</button></div>`;\n } else {\n $$payload.out += \"<!--[!-->\";\n if (status === \"done\" && !run.latestReportId) {\n $$payload.out += \"<!--[-->\";\n BackLink($$payload, { href: \"/reports\", label: REPORTS_BACK_LABEL });\n $$payload.out += `<!----> <div class=\"notice-state svelte-13l3gen\"><h2 class=\"svelte-13l3gen\">${escape_html(run.verdict === \"cancelled\" ? CANCEL_RUN_LABEL : RUN_SKIPPED_HEADING)}</h2> <a href=\"/reports\" class=\"notice-link svelte-13l3gen\">${escape_html(VIEW_PAST_REPORTS_LINK)}</a></div>`;\n } else {\n $$payload.out += \"<!--[!-->\";\n $$payload.out += `<div class=\"live-fullscreen svelte-13l3gen\"><div${attr(\"class\", `run-header svelte-13l3gen ${stringify([\n run.verdict === \"pass\" ? \"header-pass\" : \"\",\n run.verdict === \"fail\" ? \"header-fail\" : \"\"\n ].filter(Boolean).join(\" \"))}`)}><div class=\"header-left svelte-13l3gen\"><div class=\"header-back svelte-13l3gen\">`;\n BackLink($$payload, { href: \"/reports\", label: REPORTS_BACK_LABEL });\n $$payload.out += `<!----></div> `;\n if (status === \"running\") {\n $$payload.out += \"<!--[-->\";\n $$payload.out += `<span class=\"live-badge svelte-13l3gen\"><span class=\"live-dot svelte-13l3gen\"></span>${escape_html(LIVE_BADGE_LABEL)}</span>`;\n } else {\n $$payload.out += \"<!--[!-->\";\n if (run.verdict === \"pass\") {\n $$payload.out += \"<!--[-->\";\n Badge($$payload, {\n variant: \"pass\",\n children: ($$payload2) => {\n $$payload2.out += `<!---->${escape_html(PASSED_LABEL)}`;\n },\n $$slots: { default: true }\n });\n } else {\n $$payload.out += \"<!--[!-->\";\n Badge($$payload, {\n variant: \"fail\",\n children: ($$payload2) => {\n $$payload2.out += `<!---->${escape_html(FAILED_LABEL)}`;\n },\n $$slots: { default: true }\n });\n }\n $$payload.out += `<!--]-->`;\n }\n $$payload.out += `<!--]--> `;\n if (run.currentRun) {\n $$payload.out += \"<!--[-->\";\n $$payload.out += `<div class=\"run-info svelte-13l3gen\">`;\n if (run.currentRun.runTitle) {\n $$payload.out += \"<!--[-->\";\n $$payload.out += `<span class=\"run-title-label svelte-13l3gen\">${escape_html(run.currentRun.runTitle)}</span> <span class=\"run-sep svelte-13l3gen\">·</span>`;\n } else {\n $$payload.out += \"<!--[!-->\";\n }\n $$payload.out += `<!--]--> <span class=\"run-tag-label svelte-13l3gen\">${escape_html(run.currentRun.tag || ALL_TESTS_LABEL)}</span> <span class=\"run-sep svelte-13l3gen\">·</span> <span class=\"run-detail svelte-13l3gen\">${escape_html(workersCountLabel(run.currentRun.workers))}</span> <span class=\"run-sep svelte-13l3gen\">·</span> <span class=\"run-detail svelte-13l3gen\">${escape_html(run.currentRun.browser)}</span> `;\n if (lanes.length > 1) {\n $$payload.out += \"<!--[-->\";\n $$payload.out += `<span class=\"run-sep svelte-13l3gen\">·</span> <span class=\"run-detail svelte-13l3gen\">${escape_html(runnersBadge(lanes.length))}</span>`;\n } else {\n $$payload.out += \"<!--[!-->\";\n }\n $$payload.out += `<!--]--></div>`;\n } else {\n $$payload.out += \"<!--[!-->\";\n }\n $$payload.out += `<!--]--></div> `;\n if (status === \"running\") {\n $$payload.out += \"<!--[-->\";\n $$payload.out += `<button class=\"cancel-btn svelte-13l3gen\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-13l3gen\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" class=\"svelte-13l3gen\"></rect><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" class=\"svelte-13l3gen\"></line><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" class=\"svelte-13l3gen\"></line></svg> ${escape_html(CANCEL_RUN_LABEL)}</button>`;\n } else {\n $$payload.out += \"<!--[!-->\";\n }\n $$payload.out += `<!--]--></div> `;\n if (status === \"done\" && run.testCompleted && run.latestReportId) {\n $$payload.out += \"<!--[-->\";\n $$payload.out += `<div${attr(\"class\", `completion-bar svelte-13l3gen ${stringify([\n run.verdict === \"pass\" ? \"pass-bar\" : \"\",\n run.verdict === \"fail\" ? \"fail-bar\" : \"\"\n ].filter(Boolean).join(\" \"))}`)}><div class=\"completion-left svelte-13l3gen\">`;\n if (run.verdict === \"pass\") {\n $$payload.out += \"<!--[-->\";\n $$payload.out += `<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-13l3gen\"><polyline points=\"20 6 9 17 4 12\" class=\"svelte-13l3gen\"></polyline></svg>${escape_html(ALL_TESTS_PASSED)}`;\n } else {\n $$payload.out += \"<!--[!-->\";\n $$payload.out += `<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-13l3gen\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" class=\"svelte-13l3gen\"></line><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" class=\"svelte-13l3gen\"></line></svg>${escape_html(SOME_TESTS_FAILED)}`;\n }\n $$payload.out += `<!--]--></div> <div class=\"completion-right svelte-13l3gen\"><span class=\"redirect-hint svelte-13l3gen\">${escape_html(redirectingIn(redirectCountdown))}</span> <button class=\"view-now-btn svelte-13l3gen\">${escape_html(VIEW_REPORT_NOW_LABEL)} <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-13l3gen\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" class=\"svelte-13l3gen\"></line><polyline points=\"12 5 19 12 12 19\" class=\"svelte-13l3gen\"></polyline></svg></button></div></div>`;\n } else {\n $$payload.out += \"<!--[!-->\";\n }\n $$payload.out += `<!--]--> `;\n if (isMulti) {\n $$payload.out += \"<!--[-->\";\n const each_array = ensure_array_like(lanes);\n $$payload.out += `<div class=\"lane-tabs svelte-13l3gen\"><!--[-->`;\n for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n let lane = each_array[$$index];\n $$payload.out += `<button${attr(\"class\", `lane-tab svelte-13l3gen ${stringify([activeTab === lane.id ? \"active\" : \"\"].filter(Boolean).join(\" \"))}`)}><span${attr(\"class\", `tab-dot svelte-13l3gen ${stringify([\n lane.status === \"running\" ? \"tab-dot-running\" : \"\",\n lane.status === \"done\" ? \"tab-dot-done\" : \"\",\n lane.status === \"error\" ? \"tab-dot-error\" : \"\"\n ].filter(Boolean).join(\" \"))}`)}></span> ${escape_html(lane.name)} `;\n if (lane.testCount) {\n $$payload.out += \"<!--[-->\";\n $$payload.out += `<span class=\"tab-count svelte-13l3gen\">${escape_html(lane.testCount)}</span>`;\n } else {\n $$payload.out += \"<!--[!-->\";\n }\n $$payload.out += `<!--]--></button>`;\n }\n $$payload.out += `<!--]--></div>`;\n } else {\n $$payload.out += \"<!--[!-->\";\n }\n $$payload.out += `<!--]--> `;\n if (workerIds.length > 1) {\n $$payload.out += \"<!--[-->\";\n const each_array_1 = ensure_array_like(workerIds);\n $$payload.out += `<div class=\"lane-tabs worker-tabs svelte-13l3gen\"><!--[-->`;\n for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n let workerId = each_array_1[$$index_1];\n $$payload.out += `<button${attr(\"class\", `lane-tab svelte-13l3gen ${stringify([activeWorkerId === workerId ? \"active\" : \"\"].filter(Boolean).join(\" \"))}`)}>${escape_html(workerLabel(workerId))}</button>`;\n }\n $$payload.out += `<!--]--></div>`;\n } else {\n $$payload.out += \"<!--[!-->\";\n }\n $$payload.out += `<!--]--> <div class=\"run-view svelte-13l3gen\"><div class=\"stream-panel svelte-13l3gen\">`;\n if (activeWorkerEvents.length > 0) {\n $$payload.out += \"<!--[-->\";\n LiveReplayer($$payload, { events: activeWorkerEvents });\n } else {\n $$payload.out += \"<!--[!-->\";\n $$payload.out += `<div class=\"awaiting-state svelte-13l3gen\"><svg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" opacity=\"0.25\" class=\"svelte-13l3gen\"><rect x=\"2\" y=\"5\" width=\"20\" height=\"14\" rx=\"2\" class=\"svelte-13l3gen\"></rect><circle cx=\"12\" cy=\"12\" r=\"3\" class=\"svelte-13l3gen\"></circle></svg> <span class=\"svelte-13l3gen\">${escape_html(status === \"running\" ? AWAITING_STREAM_LABEL : NO_STREAM_LABEL)}</span></div>`;\n }\n $$payload.out += `<!--]--></div> <div class=\"terminal-panel svelte-13l3gen\"><div class=\"terminal-bar svelte-13l3gen\"><span class=\"dot red svelte-13l3gen\"></span> <span class=\"dot yellow svelte-13l3gen\"></span> <span class=\"dot green svelte-13l3gen\"></span> <span class=\"terminal-label svelte-13l3gen\">`;\n if (isMulti) {\n $$payload.out += \"<!--[-->\";\n $$payload.out += `${escape_html(activeLane?.name ?? RUNNER_LABEL)}`;\n } else {\n $$payload.out += \"<!--[!-->\";\n $$payload.out += `${escape_html(status === \"running\" ? RUNNING_LABEL : FINISHED_LABEL)}`;\n }\n $$payload.out += `<!--]--></span></div> `;\n if (isMulti) {\n $$payload.out += \"<!--[-->\";\n $$payload.out += `<pre class=\"terminal svelte-13l3gen\">${escape_html(activeLane?.logs || WAITING_FOR_OUTPUT)}</pre>`;\n } else {\n $$payload.out += \"<!--[!-->\";\n $$payload.out += `<pre class=\"terminal svelte-13l3gen\">${escape_html(lanes[0]?.logs || run.output || WAITING_FOR_OUTPUT)}</pre>`;\n }\n $$payload.out += `<!--]--></div></div></div>`;\n }\n $$payload.out += `<!--]-->`;\n }\n $$payload.out += `<!--]-->`;\n }\n $$payload.out += `<!--]-->`;\n if ($$store_subs) unsubscribe_stores($$store_subs);\n pop();\n}\nexport {\n _page as default\n};\n"],"names":[],"mappings":"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"}
@@ -1,51 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- import { writable, get } from 'svelte/store';
7
- import { renderReplayToWebM } from '$lib/utils/replayVideo';
8
- import { downloadBlob } from '$lib/utils/download';
9
-
10
- // null when idle; otherwise { status, progress, filename, error }.
11
- // status: 'rendering' | 'done' | 'error'
12
- export const replayVideoJob = writable(null);
13
-
14
- let cancelled = false;
15
-
16
- export function cancelReplayVideo() {
17
- cancelled = true;
18
- }
19
-
20
- export function dismissReplayVideo() {
21
- replayVideoJob.set(null);
22
- }
23
-
24
- /** `replayer` is the live rrweb replayer to record; it is not retained. */
25
- export async function startReplayVideo({ replayer, durationMs, filename }) {
26
- if (get(replayVideoJob)?.status === 'rendering') return;
27
- cancelled = false;
28
- replayVideoJob.set({ status: 'rendering', progress: 0, filename });
29
-
30
- try {
31
- const blob = await renderReplayToWebM({
32
- replayer,
33
- durationMs,
34
- onProgress: (p) => replayVideoJob.update((j) => (j ? { ...j, progress: p } : j)),
35
- shouldCancel: () => cancelled
36
- });
37
- if (cancelled) {
38
- replayVideoJob.set(null);
39
- return;
40
- }
41
- downloadBlob(blob, filename);
42
- replayVideoJob.set({ status: 'done', progress: 1, filename });
43
- setTimeout(() => replayVideoJob.update((j) => (j?.status === 'done' ? null : j)), 6000);
44
- } catch (e) {
45
- if (cancelled || e.message === 'Cancelled.') {
46
- replayVideoJob.set(null);
47
- return;
48
- }
49
- replayVideoJob.set({ status: 'error', progress: 0, filename, error: e.message });
50
- }
51
- }
@@ -1,91 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- import * as htmlToImage from 'html-to-image';
7
-
8
- function toBase64(buffer) {
9
- const bytes = new Uint8Array(buffer);
10
- let binary = '';
11
- for (let i = 0; i < bytes.length; i += 0x8000) {
12
- binary += String.fromCharCode.apply(null, bytes.subarray(i, i + 0x8000));
13
- }
14
- return btoa(binary);
15
- }
16
-
17
- const fontMime = (url) =>
18
- url.includes('woff2') ? 'font/woff2' : url.includes('woff') ? 'font/woff' : 'font/ttf';
19
-
20
- const FONT_FACE_RE = /@font-face\s*{[^}]*}/g;
21
-
22
- async function faceTextsFromHref(href) {
23
- if (!href) return [];
24
- try {
25
- const css = await fetch(href).then((r) => r.text());
26
- return css.match(FONT_FACE_RE) ?? [];
27
- } catch {
28
- return [];
29
- }
30
- }
31
-
32
- // html-to-image's own font embedding misses @font-face rules from a cross-origin
33
- // stylesheet (the tested page's Google Fonts <link>) — the capture then falls
34
- // back to a default face. Re-fetch the CORS-blocked sheets by URL ourselves.
35
- export async function collectFontEmbedCSS(doc) {
36
- const rules = [];
37
- for (const sheet of doc.styleSheets) {
38
- let cssRules;
39
- try {
40
- cssRules = sheet.cssRules;
41
- } catch {
42
- rules.push(...(await faceTextsFromHref(sheet.href)));
43
- continue;
44
- }
45
- for (const rule of cssRules) {
46
- if (rule.type === 5 || rule.constructor?.name === 'CSSFontFaceRule') {
47
- rules.push(rule.cssText);
48
- } else if (rule.type === 3 && rule.href) {
49
- let reachable = true;
50
- try {
51
- void rule.styleSheet.cssRules;
52
- } catch {
53
- reachable = false;
54
- }
55
- if (!reachable) rules.push(...(await faceTextsFromHref(rule.href)));
56
- }
57
- }
58
- }
59
-
60
- const cache = new Map();
61
- const out = [];
62
- for (let text of rules) {
63
- const urls = [...text.matchAll(/url\((['"]?)(https?:\/\/[^'")]+)\1\)/g)].map((m) => m[2]);
64
- for (const url of urls) {
65
- try {
66
- if (!cache.has(url)) {
67
- const buf = await fetch(url).then((r) => r.arrayBuffer());
68
- cache.set(url, `data:${fontMime(url)};base64,${toBase64(buf)}`);
69
- }
70
- text = text.split(url).join(cache.get(url));
71
- } catch {
72
- // unreachable font — leave the original url, the face just won't embed
73
- }
74
- }
75
- out.push(text);
76
- }
77
- return out.join('\n');
78
- }
79
-
80
- /** PNG blob of whatever the given rrweb replayer is currently showing. */
81
- export async function captureReplayFrame(replayer) {
82
- const doc = replayer?.iframe?.contentDocument;
83
- if (!doc?.documentElement) throw new Error('Nothing to capture yet — let the replay load first.');
84
- const fontEmbedCSS = await collectFontEmbedCSS(doc).catch(() => '');
85
- const blob = await htmlToImage.toBlob(doc.documentElement, {
86
- backgroundColor: '#ffffff',
87
- fontEmbedCSS
88
- });
89
- if (!blob) throw new Error('Could not capture this frame.');
90
- return blob;
91
- }
@@ -1,111 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- import * as htmlToImage from 'html-to-image';
7
- import fixWebmDuration from 'fix-webm-duration';
8
- import { collectFontEmbedCSS } from './replayCapture';
9
-
10
- const FPS = 12;
11
- const TAIL_MS = 400;
12
-
13
- const supportedMime = () =>
14
- ['video/webm;codecs=vp9', 'video/webm;codecs=vp8', 'video/webm'].find((m) =>
15
- MediaRecorder.isTypeSupported(m)
16
- );
17
-
18
- /**
19
- * Records the already-loaded replayer to a WebM blob in the browser — nothing is
20
- * uploaded. Plays it through in real time (so a mid-recording navigation applies
21
- * the same as normal playback) while html-to-image snapshots each frame onto a
22
- * canvas the MediaRecorder samples at FPS; a slow snapshot just repeats the
23
- * previous frame, so the clip stays the right length.
24
- *
25
- * A second rrweb player can't be spun up off-screen for this (two instances
26
- * fight over shared module state and the hidden one renders blank), so it drives
27
- * the visible replayer and the caller restores its position afterwards.
28
- */
29
- export async function renderReplayToWebM({ replayer, durationMs, onProgress, shouldCancel }) {
30
- const iframe = replayer?.iframe;
31
- if (!iframe?.contentDocument?.documentElement) throw new Error('The replay is not ready yet.');
32
- if (!durationMs || durationMs < 200) throw new Error('This recording is too short to record.');
33
- if (typeof MediaRecorder === 'undefined') throw new Error("This browser can't record video.");
34
- const mime = supportedMime();
35
- if (!mime) throw new Error("This browser can't record WebM video.");
36
-
37
- const w = Math.max(320, iframe.offsetWidth || 1280);
38
- const h = Math.max(240, iframe.offsetHeight || 720);
39
- const canvas = document.createElement('canvas');
40
- canvas.width = w;
41
- canvas.height = h;
42
- const ctx = canvas.getContext('2d');
43
- const paintWhite = () => {
44
- ctx.fillStyle = '#ffffff';
45
- ctx.fillRect(0, 0, w, h);
46
- };
47
- paintWhite();
48
-
49
- const fontEmbedCSS = await collectFontEmbedCSS(iframe.contentDocument).catch(() => '');
50
-
51
- const recorder = new MediaRecorder(canvas.captureStream(FPS), {
52
- mimeType: mime,
53
- videoBitsPerSecond: 3_500_000
54
- });
55
- const chunks = [];
56
- recorder.ondataavailable = (e) => e.data.size && chunks.push(e.data);
57
- const stopped = new Promise((res) => (recorder.onstop = res));
58
- recorder.start(250);
59
-
60
- replayer.play(0);
61
- const start = performance.now();
62
- let capturing = false;
63
- let renderedMs = 0;
64
-
65
- try {
66
- await new Promise((resolve, reject) => {
67
- function tick() {
68
- if (shouldCancel?.()) return reject(new Error('Cancelled.'));
69
- renderedMs = performance.now() - start;
70
- onProgress?.(Math.min(1, renderedMs / durationMs));
71
-
72
- if (!capturing) {
73
- capturing = true;
74
- htmlToImage
75
- .toCanvas(iframe.contentDocument.documentElement, {
76
- width: w,
77
- height: h,
78
- backgroundColor: '#ffffff',
79
- fontEmbedCSS
80
- })
81
- .then((frame) => {
82
- paintWhite();
83
- ctx.drawImage(frame, 0, 0, w, h);
84
- })
85
- .catch(() => {})
86
- .finally(() => {
87
- capturing = false;
88
- });
89
- }
90
-
91
- if (renderedMs >= durationMs + TAIL_MS) resolve();
92
- else requestAnimationFrame(tick);
93
- }
94
- requestAnimationFrame(tick);
95
- });
96
- } finally {
97
- recorder.stop();
98
- await stopped;
99
- try {
100
- replayer.pause(0);
101
- } catch {
102
- // caller rebuilds the player anyway
103
- }
104
- }
105
-
106
- onProgress?.(1);
107
- const raw = new Blob(chunks, { type: mime });
108
- // MediaRecorder WebM carries no duration in its header — players show it as
109
- // unseekable / 0:00 until playback ends. Patch the EBML so the file behaves.
110
- return fixWebmDuration(raw, Math.round(renderedMs), { logger: false }).catch(() => raw);
111
- }