plum-e2e 2.12.3 → 2.12.7

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 (197) hide show
  1. package/README.md +13 -13
  2. package/backend/scripts/manage-nodes.mjs +5 -2
  3. package/bin/plum.js +6 -4
  4. package/frontend/.svelte-kit/adapter-node/chunks/internal.js +1 -1
  5. package/frontend/.svelte-kit/adapter-node/manifest-full.js +1 -1
  6. package/frontend/.svelte-kit/adapter-node/manifest.js +1 -1
  7. package/frontend/.svelte-kit/adapter-node/nodes/0.js +1 -1
  8. package/frontend/.svelte-kit/adapter-node/nodes/1.js +1 -1
  9. package/frontend/.svelte-kit/adapter-node/nodes/10.js +1 -1
  10. package/frontend/.svelte-kit/adapter-node/nodes/11.js +1 -1
  11. package/frontend/.svelte-kit/adapter-node/nodes/12.js +1 -1
  12. package/frontend/.svelte-kit/adapter-node/nodes/2.js +1 -1
  13. package/frontend/.svelte-kit/adapter-node/nodes/3.js +1 -1
  14. package/frontend/.svelte-kit/adapter-node/nodes/4.js +1 -1
  15. package/frontend/.svelte-kit/adapter-node/nodes/5.js +1 -1
  16. package/frontend/.svelte-kit/adapter-node/nodes/6.js +1 -1
  17. package/frontend/.svelte-kit/adapter-node/nodes/7.js +1 -1
  18. package/frontend/.svelte-kit/adapter-node/nodes/8.js +1 -1
  19. package/frontend/.svelte-kit/adapter-node/nodes/9.js +1 -1
  20. package/frontend/.svelte-kit/generated/server/internal.js +1 -1
  21. package/frontend/.svelte-kit/output/client/.vite/manifest.json +66 -60
  22. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/7z7jeLBz.js +8 -0
  23. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{CUWTHbZi.js → ChvVsiZ9.js} +1 -1
  24. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DrfshNlX.js +6 -0
  25. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/uakY4NHp.js +6 -0
  26. package/frontend/{build/client/_app/immutable/entry/app.CfdgGRnJ.js → .svelte-kit/output/client/_app/immutable/entry/app.Cd5QqMRU.js} +2 -2
  27. package/frontend/.svelte-kit/output/client/_app/immutable/entry/{start.CDN4Yr-S.js → start.BWEGCxRW.js} +1 -1
  28. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{0.Owx2-FyO.js → 0.DU9D7D1n.js} +1 -1
  29. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{1.ClH1FMY8.js → 1.BrDYA30C.js} +1 -1
  30. package/frontend/{build/client/_app/immutable/nodes/10.CXqf0Rbs.js → .svelte-kit/output/client/_app/immutable/nodes/10.IuJh-JP1.js} +1 -1
  31. package/frontend/{build/client/_app/immutable/nodes/11.Dv1VqvOV.js → .svelte-kit/output/client/_app/immutable/nodes/11.0vvZmEx6.js} +1 -1
  32. package/frontend/{build/client/_app/immutable/nodes/12.BfLHpcG7.js → .svelte-kit/output/client/_app/immutable/nodes/12.DwpQ7XoT.js} +1 -1
  33. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/2.BqNqlmzM.js +6 -0
  34. package/frontend/{build/client/_app/immutable/nodes/3.ConeF9qP.js → .svelte-kit/output/client/_app/immutable/nodes/3.D9X7H-y-.js} +1 -1
  35. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{4.BhAoYx0d.js → 4.D-awDnNj.js} +1 -1
  36. package/frontend/{build/client/_app/immutable/nodes/5.BXasF8ka.js → .svelte-kit/output/client/_app/immutable/nodes/5.DBcQeD2J.js} +1 -1
  37. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{6.CDEJGi13.js → 6.CLydZ4sL.js} +1 -1
  38. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{7.B_XntBZ1.js → 7.Dgb_D3pO.js} +1 -1
  39. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/8.BpS2myvx.js +9 -0
  40. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{9.Bv15cDh1.js → 9.CsZT3pCm.js} +1 -1
  41. package/frontend/.svelte-kit/output/client/_app/version.json +1 -1
  42. package/frontend/.svelte-kit/output/server/chunks/internal.js +1 -1
  43. package/frontend/.svelte-kit/output/server/manifest-full.js +1 -1
  44. package/frontend/.svelte-kit/output/server/manifest.js +1 -1
  45. package/frontend/.svelte-kit/output/server/nodes/0.js +1 -1
  46. package/frontend/.svelte-kit/output/server/nodes/1.js +1 -1
  47. package/frontend/.svelte-kit/output/server/nodes/10.js +1 -1
  48. package/frontend/.svelte-kit/output/server/nodes/11.js +1 -1
  49. package/frontend/.svelte-kit/output/server/nodes/12.js +1 -1
  50. package/frontend/.svelte-kit/output/server/nodes/2.js +1 -1
  51. package/frontend/.svelte-kit/output/server/nodes/3.js +1 -1
  52. package/frontend/.svelte-kit/output/server/nodes/4.js +1 -1
  53. package/frontend/.svelte-kit/output/server/nodes/5.js +1 -1
  54. package/frontend/.svelte-kit/output/server/nodes/6.js +1 -1
  55. package/frontend/.svelte-kit/output/server/nodes/7.js +1 -1
  56. package/frontend/.svelte-kit/output/server/nodes/8.js +1 -1
  57. package/frontend/.svelte-kit/output/server/nodes/9.js +1 -1
  58. package/frontend/build/client/_app/immutable/chunks/7z7jeLBz.js +8 -0
  59. package/frontend/build/client/_app/immutable/chunks/7z7jeLBz.js.br +0 -0
  60. package/frontend/build/client/_app/immutable/chunks/7z7jeLBz.js.gz +0 -0
  61. package/frontend/build/client/_app/immutable/chunks/{CUWTHbZi.js → ChvVsiZ9.js} +1 -1
  62. package/frontend/build/client/_app/immutable/chunks/ChvVsiZ9.js.br +0 -0
  63. package/frontend/build/client/_app/immutable/chunks/ChvVsiZ9.js.gz +0 -0
  64. package/frontend/build/client/_app/immutable/chunks/DrfshNlX.js +6 -0
  65. package/frontend/build/client/_app/immutable/chunks/DrfshNlX.js.br +0 -0
  66. package/frontend/build/client/_app/immutable/chunks/DrfshNlX.js.gz +0 -0
  67. package/frontend/build/client/_app/immutable/chunks/uakY4NHp.js +6 -0
  68. package/frontend/build/client/_app/immutable/chunks/uakY4NHp.js.br +6 -0
  69. package/frontend/build/client/_app/immutable/chunks/uakY4NHp.js.gz +0 -0
  70. package/frontend/{.svelte-kit/output/client/_app/immutable/entry/app.CfdgGRnJ.js → build/client/_app/immutable/entry/app.Cd5QqMRU.js} +2 -2
  71. package/frontend/build/client/_app/immutable/entry/app.Cd5QqMRU.js.br +0 -0
  72. package/frontend/build/client/_app/immutable/entry/app.Cd5QqMRU.js.gz +0 -0
  73. package/frontend/build/client/_app/immutable/entry/{start.CDN4Yr-S.js → start.BWEGCxRW.js} +1 -1
  74. package/frontend/build/client/_app/immutable/entry/start.BWEGCxRW.js.br +0 -0
  75. package/frontend/build/client/_app/immutable/entry/{start.CDN4Yr-S.js.gz → start.BWEGCxRW.js.gz} +0 -0
  76. package/frontend/build/client/_app/immutable/nodes/{0.Owx2-FyO.js → 0.DU9D7D1n.js} +1 -1
  77. package/frontend/build/client/_app/immutable/nodes/0.DU9D7D1n.js.br +0 -0
  78. package/frontend/build/client/_app/immutable/nodes/0.DU9D7D1n.js.gz +0 -0
  79. package/frontend/build/client/_app/immutable/nodes/{1.ClH1FMY8.js → 1.BrDYA30C.js} +1 -1
  80. package/frontend/build/client/_app/immutable/nodes/1.BrDYA30C.js.br +0 -0
  81. package/frontend/build/client/_app/immutable/nodes/1.BrDYA30C.js.gz +0 -0
  82. package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/10.CXqf0Rbs.js → build/client/_app/immutable/nodes/10.IuJh-JP1.js} +1 -1
  83. package/frontend/build/client/_app/immutable/nodes/10.IuJh-JP1.js.br +0 -0
  84. package/frontend/build/client/_app/immutable/nodes/10.IuJh-JP1.js.gz +0 -0
  85. package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/11.Dv1VqvOV.js → build/client/_app/immutable/nodes/11.0vvZmEx6.js} +1 -1
  86. package/frontend/build/client/_app/immutable/nodes/11.0vvZmEx6.js.br +0 -0
  87. package/frontend/build/client/_app/immutable/nodes/11.0vvZmEx6.js.gz +0 -0
  88. package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/12.BfLHpcG7.js → build/client/_app/immutable/nodes/12.DwpQ7XoT.js} +1 -1
  89. package/frontend/build/client/_app/immutable/nodes/12.DwpQ7XoT.js.br +0 -0
  90. package/frontend/build/client/_app/immutable/nodes/12.DwpQ7XoT.js.gz +0 -0
  91. package/frontend/build/client/_app/immutable/nodes/2.BqNqlmzM.js +6 -0
  92. package/frontend/build/client/_app/immutable/nodes/2.BqNqlmzM.js.br +0 -0
  93. package/frontend/build/client/_app/immutable/nodes/2.BqNqlmzM.js.gz +0 -0
  94. package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/3.ConeF9qP.js → build/client/_app/immutable/nodes/3.D9X7H-y-.js} +1 -1
  95. package/frontend/build/client/_app/immutable/nodes/3.D9X7H-y-.js.br +0 -0
  96. package/frontend/build/client/_app/immutable/nodes/3.D9X7H-y-.js.gz +0 -0
  97. package/frontend/build/client/_app/immutable/nodes/{4.BhAoYx0d.js → 4.D-awDnNj.js} +1 -1
  98. package/frontend/build/client/_app/immutable/nodes/4.D-awDnNj.js.br +0 -0
  99. package/frontend/build/client/_app/immutable/nodes/4.D-awDnNj.js.gz +0 -0
  100. package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/5.BXasF8ka.js → build/client/_app/immutable/nodes/5.DBcQeD2J.js} +1 -1
  101. package/frontend/build/client/_app/immutable/nodes/5.DBcQeD2J.js.br +0 -0
  102. package/frontend/build/client/_app/immutable/nodes/5.DBcQeD2J.js.gz +0 -0
  103. package/frontend/build/client/_app/immutable/nodes/{6.CDEJGi13.js → 6.CLydZ4sL.js} +1 -1
  104. package/frontend/build/client/_app/immutable/nodes/6.CLydZ4sL.js.br +0 -0
  105. package/frontend/build/client/_app/immutable/nodes/6.CLydZ4sL.js.gz +0 -0
  106. package/frontend/build/client/_app/immutable/nodes/{7.B_XntBZ1.js → 7.Dgb_D3pO.js} +1 -1
  107. package/frontend/build/client/_app/immutable/nodes/7.Dgb_D3pO.js.br +0 -0
  108. package/frontend/build/client/_app/immutable/nodes/7.Dgb_D3pO.js.gz +0 -0
  109. package/frontend/build/client/_app/immutable/nodes/8.BpS2myvx.js +9 -0
  110. package/frontend/build/client/_app/immutable/nodes/8.BpS2myvx.js.br +0 -0
  111. package/frontend/build/client/_app/immutable/nodes/8.BpS2myvx.js.gz +0 -0
  112. package/frontend/build/client/_app/immutable/nodes/{9.Bv15cDh1.js → 9.CsZT3pCm.js} +1 -1
  113. package/frontend/build/client/_app/immutable/nodes/9.CsZT3pCm.js.br +0 -0
  114. package/frontend/build/client/_app/immutable/nodes/9.CsZT3pCm.js.gz +0 -0
  115. package/frontend/build/client/_app/version.json +1 -1
  116. package/frontend/build/client/_app/version.json.br +0 -0
  117. package/frontend/build/client/_app/version.json.gz +0 -0
  118. package/frontend/build/server/chunks/{0-EDIcywdR.js → 0-B0pwHIbc.js} +2 -2
  119. package/frontend/build/server/chunks/{0-EDIcywdR.js.map → 0-B0pwHIbc.js.map} +1 -1
  120. package/frontend/build/server/chunks/{1-DUXDWP4s.js → 1-C2ERbGlM.js} +2 -2
  121. package/frontend/build/server/chunks/{1-DUXDWP4s.js.map → 1-C2ERbGlM.js.map} +1 -1
  122. package/frontend/build/server/chunks/{10-C2C3V4ib.js → 10-BkU7HIAH.js} +2 -2
  123. package/frontend/build/server/chunks/{10-C2C3V4ib.js.map → 10-BkU7HIAH.js.map} +1 -1
  124. package/frontend/build/server/chunks/{11-C9Dv5Ypy.js → 11-BIhs2Z-l.js} +2 -2
  125. package/frontend/build/server/chunks/{11-C9Dv5Ypy.js.map → 11-BIhs2Z-l.js.map} +1 -1
  126. package/frontend/build/server/chunks/{12-aJDC1MAo.js → 12-I1hWtCiL.js} +2 -2
  127. package/frontend/build/server/chunks/{12-aJDC1MAo.js.map → 12-I1hWtCiL.js.map} +1 -1
  128. package/frontend/build/server/chunks/{2-Dalgd2D4.js → 2-C8lOtJzo.js} +2 -2
  129. package/frontend/build/server/chunks/2-C8lOtJzo.js.map +5 -0
  130. package/frontend/build/server/chunks/{3-cuk7ocXX.js → 3-gYSyNvG5.js} +2 -2
  131. package/frontend/build/server/chunks/{3-cuk7ocXX.js.map → 3-gYSyNvG5.js.map} +1 -1
  132. package/frontend/build/server/chunks/{4-D6Mu8Mm3.js → 4-CKw2o6VK.js} +2 -2
  133. package/frontend/build/server/chunks/{4-D6Mu8Mm3.js.map → 4-CKw2o6VK.js.map} +1 -1
  134. package/frontend/build/server/chunks/{5-ZN8cEN5r.js → 5-M0Ln62oC.js} +2 -2
  135. package/frontend/build/server/chunks/{5-ZN8cEN5r.js.map → 5-M0Ln62oC.js.map} +1 -1
  136. package/frontend/build/server/chunks/{6-nLl6wUex.js → 6-DLbq8kke.js} +2 -2
  137. package/frontend/build/server/chunks/{6-nLl6wUex.js.map → 6-DLbq8kke.js.map} +1 -1
  138. package/frontend/build/server/chunks/{7-DTNbErSe.js → 7-BQUiJu98.js} +2 -2
  139. package/frontend/build/server/chunks/{7-DTNbErSe.js.map → 7-BQUiJu98.js.map} +1 -1
  140. package/frontend/build/server/chunks/{8-BvQ3XjdA.js → 8-BUIZBLdn.js} +2 -2
  141. package/frontend/build/server/chunks/8-BUIZBLdn.js.map +5 -0
  142. package/frontend/build/server/chunks/{9-BVKP6RbZ.js → 9-Dti6A_P5.js} +2 -2
  143. package/frontend/build/server/chunks/{9-BVKP6RbZ.js.map → 9-Dti6A_P5.js.map} +1 -1
  144. package/frontend/build/server/index.js +1 -1
  145. package/frontend/build/server/index.js.map +1 -1
  146. package/frontend/build/server/manifest.js +14 -14
  147. package/frontend/build/server/manifest.js.map +1 -1
  148. package/frontend/src/lib/stores/runner.js +12 -1
  149. package/frontend/src/lib/utils/clipboard.js +27 -0
  150. package/frontend/src/routes/+page.svelte +2 -1
  151. package/frontend/src/routes/settings/+page.svelte +4 -3
  152. package/package.json +1 -1
  153. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BqJQeI8K.js +0 -8
  154. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/htkwR9b-.js +0 -6
  155. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/2.Bno00fr8.js +0 -6
  156. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/8.DL5gzc5s.js +0 -9
  157. package/frontend/build/client/_app/immutable/chunks/BqJQeI8K.js +0 -8
  158. package/frontend/build/client/_app/immutable/chunks/BqJQeI8K.js.br +0 -0
  159. package/frontend/build/client/_app/immutable/chunks/BqJQeI8K.js.gz +0 -0
  160. package/frontend/build/client/_app/immutable/chunks/CUWTHbZi.js.br +0 -0
  161. package/frontend/build/client/_app/immutable/chunks/CUWTHbZi.js.gz +0 -0
  162. package/frontend/build/client/_app/immutable/chunks/htkwR9b-.js +0 -6
  163. package/frontend/build/client/_app/immutable/chunks/htkwR9b-.js.br +0 -0
  164. package/frontend/build/client/_app/immutable/chunks/htkwR9b-.js.gz +0 -0
  165. package/frontend/build/client/_app/immutable/entry/app.CfdgGRnJ.js.br +0 -0
  166. package/frontend/build/client/_app/immutable/entry/app.CfdgGRnJ.js.gz +0 -0
  167. package/frontend/build/client/_app/immutable/entry/start.CDN4Yr-S.js.br +0 -0
  168. package/frontend/build/client/_app/immutable/nodes/0.Owx2-FyO.js.br +0 -0
  169. package/frontend/build/client/_app/immutable/nodes/0.Owx2-FyO.js.gz +0 -0
  170. package/frontend/build/client/_app/immutable/nodes/1.ClH1FMY8.js.br +0 -0
  171. package/frontend/build/client/_app/immutable/nodes/1.ClH1FMY8.js.gz +0 -0
  172. package/frontend/build/client/_app/immutable/nodes/10.CXqf0Rbs.js.br +0 -0
  173. package/frontend/build/client/_app/immutable/nodes/10.CXqf0Rbs.js.gz +0 -0
  174. package/frontend/build/client/_app/immutable/nodes/11.Dv1VqvOV.js.br +0 -0
  175. package/frontend/build/client/_app/immutable/nodes/11.Dv1VqvOV.js.gz +0 -0
  176. package/frontend/build/client/_app/immutable/nodes/12.BfLHpcG7.js.br +0 -0
  177. package/frontend/build/client/_app/immutable/nodes/12.BfLHpcG7.js.gz +0 -0
  178. package/frontend/build/client/_app/immutable/nodes/2.Bno00fr8.js +0 -6
  179. package/frontend/build/client/_app/immutable/nodes/2.Bno00fr8.js.br +0 -0
  180. package/frontend/build/client/_app/immutable/nodes/2.Bno00fr8.js.gz +0 -0
  181. package/frontend/build/client/_app/immutable/nodes/3.ConeF9qP.js.br +0 -0
  182. package/frontend/build/client/_app/immutable/nodes/3.ConeF9qP.js.gz +0 -0
  183. package/frontend/build/client/_app/immutable/nodes/4.BhAoYx0d.js.br +0 -0
  184. package/frontend/build/client/_app/immutable/nodes/4.BhAoYx0d.js.gz +0 -0
  185. package/frontend/build/client/_app/immutable/nodes/5.BXasF8ka.js.br +0 -0
  186. package/frontend/build/client/_app/immutable/nodes/5.BXasF8ka.js.gz +0 -0
  187. package/frontend/build/client/_app/immutable/nodes/6.CDEJGi13.js.br +0 -0
  188. package/frontend/build/client/_app/immutable/nodes/6.CDEJGi13.js.gz +0 -0
  189. package/frontend/build/client/_app/immutable/nodes/7.B_XntBZ1.js.br +0 -0
  190. package/frontend/build/client/_app/immutable/nodes/7.B_XntBZ1.js.gz +0 -0
  191. package/frontend/build/client/_app/immutable/nodes/8.DL5gzc5s.js +0 -9
  192. package/frontend/build/client/_app/immutable/nodes/8.DL5gzc5s.js.br +0 -0
  193. package/frontend/build/client/_app/immutable/nodes/8.DL5gzc5s.js.gz +0 -0
  194. package/frontend/build/client/_app/immutable/nodes/9.Bv15cDh1.js.br +0 -0
  195. package/frontend/build/client/_app/immutable/nodes/9.Bv15cDh1.js.gz +0 -0
  196. package/frontend/build/server/chunks/2-Dalgd2D4.js.map +0 -5
  197. package/frontend/build/server/chunks/8-BvQ3XjdA.js.map +0 -5
package/README.md CHANGED
@@ -63,18 +63,18 @@ Full documentation is available at:
63
63
 
64
64
  **[https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd)**
65
65
 
66
- | Guide | What it covers |
67
- | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------- |
68
- | [Installation](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/installation-JftwFX9csC) | Requirements, global install, first-user setup, plugins |
69
- | [Initializing the Project](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/initializing-the-project-ilfc8LUyO7) | What `plum init` generates, config files explained |
70
- | [Writing Tests](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/writing-tests-XeHJQdtH49) | Feature files, page objects, step definitions, best practices |
71
- | [Running Tests Locally](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/running-tests-locally-GGhFcqaAQ8) | `plum run-test` flags, parallel runs, debugging tips |
72
- | [Reports & Session Replay](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/reports-session-replay-EfhxJXaaDD) | The report page, session replay, step rail, inspector, export |
73
- | [Retrying Flaky Tests](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/retrying-flaky-tests-NXwRF5SXru) | Auto-retry failed scenarios, global setting, report badges |
74
- | [Setting Up the Server](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/setting-up-the-server-vj0Ab1kJVs) | Production server setup, reverse proxy (Nginx/Caddy), Docker |
75
- | [Setting Up Nodes](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/setting-up-nodes-dtmekJGJia) | Nodes, systemd service, managing nodes |
76
- | [Integrations](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/integrations-qfiqfmdP0j) | Discord & Slack webhook notifications, CI/external triggers |
77
- | [Backup](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/backup-RNNObJfct9) | Backup strategy |
66
+ | Guide | What it covers |
67
+ | ------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------- |
68
+ | [Installation](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/installation-JftwFX9csC) | Requirements, global install, first-user setup, plugins |
69
+ | [Initializing the Project](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/initializing-the-project-ilfc8LUyO7) | What `plum init` generates, config files explained |
70
+ | [Writing Tests](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/writing-tests-XeHJQdtH49) | Feature files, step definitions, optional page objects, best practices |
71
+ | [Running Tests Locally](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/running-tests-locally-GGhFcqaAQ8) | `plum run-test` flags, parallel runs, debugging tips |
72
+ | [Reports & Session Replay](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/reports-session-replay-EfhxJXaaDD) | The report page, session replay, step rail, inspector, export |
73
+ | [Retrying Flaky Tests](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/retrying-flaky-tests-NXwRF5SXru) | Auto-retry failed scenarios, global setting, report badges |
74
+ | [Setting Up the Server](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/setting-up-the-server-vj0Ab1kJVs) | Production server setup, reverse proxy (Nginx/Caddy), Docker |
75
+ | [Setting Up Nodes](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/setting-up-nodes-dtmekJGJia) | Nodes, systemd service, managing nodes |
76
+ | [Integrations](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/integrations-qfiqfmdP0j) | Discord & Slack webhook notifications, CI/external triggers |
77
+ | [Backup](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/backup-RNNObJfct9) | Backup strategy |
78
78
 
79
79
  ---
80
80
 
@@ -143,7 +143,7 @@ npm run manage-nodes # open the node management menu
143
143
  backend/tests/
144
144
  features/ — Gherkin .feature files
145
145
  step_definitions/ — TypeScript step implementations
146
- pages/ — Page Object Models
146
+ pages/ — Page Object Models (optional)
147
147
  utils/ — Browser setup, hooks, helpers
148
148
  ```
149
149
 
@@ -259,7 +259,8 @@ async function addNode() {
259
259
  if (mode === 'production') {
260
260
  primary = await clack.text({
261
261
  message:
262
- 'Plum server backend URL or IP address, including the port (with http:// or https://)',
262
+ 'Public URL or IP of the Plum backend / API — include the scheme (http:// or https://). ' +
263
+ 'Add the :port unless a reverse proxy terminates it on 80/443.',
263
264
  placeholder: 'https://plum.example.com'
264
265
  });
265
266
  if (cancelled(primary)) return;
@@ -293,7 +294,9 @@ async function addNode() {
293
294
  let url;
294
295
  if (mode === 'production') {
295
296
  url = await clack.text({
296
- message: 'URL your Plum server uses to reach this node (e.g. https://node-1.example.com)',
297
+ message:
298
+ 'Public URL or IP the Plum server uses to reach this node — include the scheme ' +
299
+ '(http:// or https://). Add the :port unless a reverse proxy terminates it on 80/443.',
297
300
  placeholder: `https://${name}.example.com`
298
301
  });
299
302
  if (cancelled(url)) return;
package/bin/plum.js CHANGED
@@ -152,7 +152,7 @@ async function promptPublicUrl(message, initial) {
152
152
  const v = await clack.text({
153
153
  message:
154
154
  `${message} — include the scheme (http:// or https://). ` +
155
- 'Add the :port from above unless a reverse proxy terminates it on 80/443.',
155
+ 'Add the :port unless a reverse proxy terminates it on 80/443.',
156
156
  placeholder: initial,
157
157
  defaultValue: initial
158
158
  });
@@ -755,7 +755,7 @@ async function configureNode({ force, name: nameArg }) {
755
755
 
756
756
  if (mode === 'production') {
757
757
  primary = await promptPublicUrl(
758
- 'Plum server backend URL or IP address (include the port)',
758
+ 'Public URL or IP of the Plum backend / API',
759
759
  primary || 'https://plum.example.com'
760
760
  );
761
761
  } else {
@@ -782,7 +782,7 @@ async function configureNode({ force, name: nameArg }) {
782
782
 
783
783
  if (mode === 'production') {
784
784
  url = await promptPublicUrl(
785
- 'URL your Plum server uses to reach this node (e.g. https://node-1.example.com)',
785
+ 'Public URL or IP the Plum server uses to reach this node',
786
786
  url && !url.includes('host.docker.internal') ? url : 'https://node-1.example.com'
787
787
  );
788
788
  } else {
@@ -1220,10 +1220,12 @@ switch (command) {
1220
1220
  'tests/',
1221
1221
  ' features/ — Gherkin .feature files (write your scenarios here)',
1222
1222
  ' step_definitions/ — TypeScript step implementations',
1223
- ' pages/ — Page Object Models',
1223
+ ' pages/ — Page Object Models (optional)',
1224
1224
  ' utils/ — Browser setup, hooks, shared helpers',
1225
1225
  '```',
1226
1226
  '',
1227
+ 'Feature files and step definitions are the two required layers. Page objects are optional — keep the Playwright calls in your steps if you prefer — but recommended once a page grows past a few interactions.',
1228
+ '',
1227
1229
  'Each scenario needs a unique tag so you can run it by itself:',
1228
1230
  '',
1229
1231
  '```gherkin',
@@ -641,7 +641,7 @@ const options = {
641
641
  <div class="error">
642
642
  <span class="status">` + status + '</span>\n <div class="message">\n <h1>' + message + "</h1>\n </div>\n </div>\n </body>\n</html>\n"
643
643
  },
644
- version_hash: "1kecx86"
644
+ version_hash: "7hrr1b"
645
645
  };
646
646
  async function get_hooks() {
647
647
  let handle;
@@ -15,7 +15,7 @@ return {
15
15
  assets: new Set(["favicon-32x32.png","favicon.ico"]),
16
16
  mimeTypes: {".png":"image/png"},
17
17
  _: {
18
- client: {start:"_app/immutable/entry/start.CDN4Yr-S.js",app:"_app/immutable/entry/app.CfdgGRnJ.js",imports:["_app/immutable/entry/start.CDN4Yr-S.js","_app/immutable/chunks/BqJQeI8K.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/entry/app.CfdgGRnJ.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/BCh31ecr.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
18
+ client: {start:"_app/immutable/entry/start.BWEGCxRW.js",app:"_app/immutable/entry/app.Cd5QqMRU.js",imports:["_app/immutable/entry/start.BWEGCxRW.js","_app/immutable/chunks/7z7jeLBz.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/entry/app.Cd5QqMRU.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/BCh31ecr.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
19
19
  nodes: [
20
20
  __memo(() => import('./nodes/0.js')),
21
21
  __memo(() => import('./nodes/1.js')),
@@ -15,7 +15,7 @@ return {
15
15
  assets: new Set(["favicon-32x32.png","favicon.ico"]),
16
16
  mimeTypes: {".png":"image/png"},
17
17
  _: {
18
- client: {start:"_app/immutable/entry/start.CDN4Yr-S.js",app:"_app/immutable/entry/app.CfdgGRnJ.js",imports:["_app/immutable/entry/start.CDN4Yr-S.js","_app/immutable/chunks/BqJQeI8K.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/entry/app.CfdgGRnJ.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/BCh31ecr.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
18
+ client: {start:"_app/immutable/entry/start.BWEGCxRW.js",app:"_app/immutable/entry/app.Cd5QqMRU.js",imports:["_app/immutable/entry/start.BWEGCxRW.js","_app/immutable/chunks/7z7jeLBz.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/entry/app.Cd5QqMRU.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/BCh31ecr.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
19
19
  nodes: [
20
20
  __memo(() => import('./nodes/0.js')),
21
21
  __memo(() => import('./nodes/1.js')),
@@ -10,6 +10,6 @@ let component_cache;
10
10
  export const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js')).default;
11
11
  export { universal };
12
12
  export const universal_id = "src/routes/+layout.js";
13
- export const imports = ["_app/immutable/nodes/0.Owx2-FyO.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/BTV7EXZb.js","_app/immutable/chunks/BqJQeI8K.js","_app/immutable/chunks/CUWTHbZi.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/kFFd6Oo5.js","_app/immutable/chunks/htkwR9b-.js","_app/immutable/chunks/B2lVGNml.js","_app/immutable/chunks/Dn1b1Jgc.js","_app/immutable/chunks/BIDsfWFz.js","_app/immutable/chunks/B74j8LrV.js","_app/immutable/chunks/gCgJ3Cwu.js","_app/immutable/chunks/BWGoOYU0.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/CUPWZLIN.js","_app/immutable/chunks/DeiVAbyn.js","_app/immutable/chunks/BDb8hZHu.js","_app/immutable/chunks/DDx3no2z.js"];
13
+ export const imports = ["_app/immutable/nodes/0.DU9D7D1n.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/BTV7EXZb.js","_app/immutable/chunks/7z7jeLBz.js","_app/immutable/chunks/ChvVsiZ9.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/kFFd6Oo5.js","_app/immutable/chunks/DrfshNlX.js","_app/immutable/chunks/B2lVGNml.js","_app/immutable/chunks/Dn1b1Jgc.js","_app/immutable/chunks/BIDsfWFz.js","_app/immutable/chunks/B74j8LrV.js","_app/immutable/chunks/gCgJ3Cwu.js","_app/immutable/chunks/BWGoOYU0.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/CUPWZLIN.js","_app/immutable/chunks/DeiVAbyn.js","_app/immutable/chunks/BDb8hZHu.js","_app/immutable/chunks/DDx3no2z.js"];
14
14
  export const stylesheets = ["_app/immutable/assets/0.DbhNvxzA.css","_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css","_app/immutable/assets/Modal.BZpm0HP8.css","_app/immutable/assets/Badge.D1SV0Gv7.css"];
15
15
  export const fonts = [];
@@ -8,6 +8,6 @@
8
8
  export const index = 1;
9
9
  let component_cache;
10
10
  export const component = async () => component_cache ??= (await import('../entries/fallbacks/error.svelte.js')).default;
11
- export const imports = ["_app/immutable/nodes/1.ClH1FMY8.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/BqJQeI8K.js"];
11
+ export const imports = ["_app/immutable/nodes/1.BrDYA30C.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/7z7jeLBz.js"];
12
12
  export const stylesheets = [];
13
13
  export const fonts = [];
@@ -8,6 +8,6 @@
8
8
  export const index = 10;
9
9
  let component_cache;
10
10
  export const component = async () => component_cache ??= (await import('../entries/pages/test-repository/_page.svelte.js')).default;
11
- export const imports = ["_app/immutable/nodes/10.CXqf0Rbs.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/BTV7EXZb.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/BnXsGCy3.js","_app/immutable/chunks/qvxlSGpD.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/tsOANt55.js","_app/immutable/chunks/B74j8LrV.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/BIDsfWFz.js","_app/immutable/chunks/zXSLr47H.js","_app/immutable/chunks/BCh31ecr.js","_app/immutable/chunks/DFZtPGTY.js","_app/immutable/chunks/htkwR9b-.js","_app/immutable/chunks/B2lVGNml.js","_app/immutable/chunks/prk8PJfA.js","_app/immutable/chunks/CNpD-yNH.js","_app/immutable/chunks/BWGoOYU0.js","_app/immutable/chunks/CUPWZLIN.js","_app/immutable/chunks/BDb8hZHu.js"];
11
+ export const imports = ["_app/immutable/nodes/10.IuJh-JP1.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/BTV7EXZb.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/BnXsGCy3.js","_app/immutable/chunks/qvxlSGpD.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/tsOANt55.js","_app/immutable/chunks/B74j8LrV.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/BIDsfWFz.js","_app/immutable/chunks/zXSLr47H.js","_app/immutable/chunks/BCh31ecr.js","_app/immutable/chunks/DFZtPGTY.js","_app/immutable/chunks/DrfshNlX.js","_app/immutable/chunks/B2lVGNml.js","_app/immutable/chunks/prk8PJfA.js","_app/immutable/chunks/CNpD-yNH.js","_app/immutable/chunks/BWGoOYU0.js","_app/immutable/chunks/CUPWZLIN.js","_app/immutable/chunks/BDb8hZHu.js"];
12
12
  export const stylesheets = ["_app/immutable/assets/10.D2ehp3UL.css","_app/immutable/assets/Button.C1zsJAUG.css","_app/immutable/assets/ExportMenu.DsJQ1Qua.css","_app/immutable/assets/Pagination.DZmi2Po-.css","_app/immutable/assets/EmptyState.DUDM4P19.css","_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css","_app/immutable/assets/Modal.BZpm0HP8.css"];
13
13
  export const fonts = [];
@@ -8,6 +8,6 @@
8
8
  export const index = 11;
9
9
  let component_cache;
10
10
  export const component = async () => component_cache ??= (await import('../entries/pages/test-repository/runs/_id_/_page.svelte.js')).default;
11
- export const imports = ["_app/immutable/nodes/11.Dv1VqvOV.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/BTV7EXZb.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/BnXsGCy3.js","_app/immutable/chunks/qvxlSGpD.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/tsOANt55.js","_app/immutable/chunks/CUWTHbZi.js","_app/immutable/chunks/BqJQeI8K.js","_app/immutable/chunks/B74j8LrV.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/BIDsfWFz.js","_app/immutable/chunks/htkwR9b-.js","_app/immutable/chunks/B2lVGNml.js","_app/immutable/chunks/CUPWZLIN.js","_app/immutable/chunks/BDb8hZHu.js","_app/immutable/chunks/CNpD-yNH.js","_app/immutable/chunks/DFZtPGTY.js"];
11
+ export const imports = ["_app/immutable/nodes/11.0vvZmEx6.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/BTV7EXZb.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/BnXsGCy3.js","_app/immutable/chunks/qvxlSGpD.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/tsOANt55.js","_app/immutable/chunks/ChvVsiZ9.js","_app/immutable/chunks/7z7jeLBz.js","_app/immutable/chunks/B74j8LrV.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/BIDsfWFz.js","_app/immutable/chunks/DrfshNlX.js","_app/immutable/chunks/B2lVGNml.js","_app/immutable/chunks/CUPWZLIN.js","_app/immutable/chunks/BDb8hZHu.js","_app/immutable/chunks/CNpD-yNH.js","_app/immutable/chunks/DFZtPGTY.js"];
12
12
  export const stylesheets = ["_app/immutable/assets/11.BWAH0Beh.css","_app/immutable/assets/Button.C1zsJAUG.css","_app/immutable/assets/Modal.BZpm0HP8.css","_app/immutable/assets/EmptyState.DUDM4P19.css"];
13
13
  export const fonts = [];
@@ -8,6 +8,6 @@
8
8
  export const index = 12;
9
9
  let component_cache;
10
10
  export const component = async () => component_cache ??= (await import('../entries/pages/test-repository/suites/_id_/_page.svelte.js')).default;
11
- export const imports = ["_app/immutable/nodes/12.BfLHpcG7.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/BTV7EXZb.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/BnXsGCy3.js","_app/immutable/chunks/qvxlSGpD.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/tsOANt55.js","_app/immutable/chunks/Bfc47y5P.js","_app/immutable/chunks/CUWTHbZi.js","_app/immutable/chunks/BqJQeI8K.js","_app/immutable/chunks/B74j8LrV.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/BIDsfWFz.js","_app/immutable/chunks/zXSLr47H.js","_app/immutable/chunks/BCh31ecr.js","_app/immutable/chunks/DFZtPGTY.js","_app/immutable/chunks/CNpD-yNH.js","_app/immutable/chunks/BWGoOYU0.js","_app/immutable/chunks/CUPWZLIN.js","_app/immutable/chunks/BDb8hZHu.js","_app/immutable/chunks/prk8PJfA.js"];
11
+ export const imports = ["_app/immutable/nodes/12.DwpQ7XoT.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/BTV7EXZb.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/BnXsGCy3.js","_app/immutable/chunks/qvxlSGpD.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/tsOANt55.js","_app/immutable/chunks/Bfc47y5P.js","_app/immutable/chunks/ChvVsiZ9.js","_app/immutable/chunks/7z7jeLBz.js","_app/immutable/chunks/B74j8LrV.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/BIDsfWFz.js","_app/immutable/chunks/zXSLr47H.js","_app/immutable/chunks/BCh31ecr.js","_app/immutable/chunks/DFZtPGTY.js","_app/immutable/chunks/CNpD-yNH.js","_app/immutable/chunks/BWGoOYU0.js","_app/immutable/chunks/CUPWZLIN.js","_app/immutable/chunks/BDb8hZHu.js","_app/immutable/chunks/prk8PJfA.js"];
12
12
  export const stylesheets = ["_app/immutable/assets/12.Dm1nSEgE.css","_app/immutable/assets/Button.C1zsJAUG.css","_app/immutable/assets/ExportMenu.DsJQ1Qua.css","_app/immutable/assets/EmptyState.DUDM4P19.css","_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css","_app/immutable/assets/Modal.BZpm0HP8.css","_app/immutable/assets/Pagination.DZmi2Po-.css"];
13
13
  export const fonts = [];
@@ -8,6 +8,6 @@
8
8
  export const index = 2;
9
9
  let component_cache;
10
10
  export const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js')).default;
11
- export const imports = ["_app/immutable/nodes/2.Bno00fr8.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/BTV7EXZb.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/BnXsGCy3.js","_app/immutable/chunks/htkwR9b-.js","_app/immutable/chunks/B2lVGNml.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/CNpD-yNH.js","_app/immutable/chunks/D72giPTu.js"];
11
+ export const imports = ["_app/immutable/nodes/2.BqNqlmzM.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/BTV7EXZb.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/BnXsGCy3.js","_app/immutable/chunks/DrfshNlX.js","_app/immutable/chunks/B2lVGNml.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/uakY4NHp.js","_app/immutable/chunks/CNpD-yNH.js","_app/immutable/chunks/D72giPTu.js"];
12
12
  export const stylesheets = ["_app/immutable/assets/2.C1TbMUws.css","_app/immutable/assets/EmptyState.DUDM4P19.css"];
13
13
  export const fonts = [];
@@ -8,6 +8,6 @@
8
8
  export const index = 3;
9
9
  let component_cache;
10
10
  export const component = async () => component_cache ??= (await import('../entries/pages/live/_id_/_page.svelte.js')).default;
11
- export const imports = ["_app/immutable/nodes/3.ConeF9qP.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/BTV7EXZb.js","_app/immutable/chunks/BCh31ecr.js","_app/immutable/chunks/BqJQeI8K.js","_app/immutable/chunks/CUWTHbZi.js","_app/immutable/chunks/htkwR9b-.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/B2lVGNml.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/gCgJ3Cwu.js","_app/immutable/chunks/Dn1b1Jgc.js","_app/immutable/chunks/BIDsfWFz.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/3MBVX4Yb.js","_app/immutable/chunks/DeiVAbyn.js"];
11
+ export const imports = ["_app/immutable/nodes/3.D9X7H-y-.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/BTV7EXZb.js","_app/immutable/chunks/BCh31ecr.js","_app/immutable/chunks/7z7jeLBz.js","_app/immutable/chunks/ChvVsiZ9.js","_app/immutable/chunks/DrfshNlX.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/B2lVGNml.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/gCgJ3Cwu.js","_app/immutable/chunks/Dn1b1Jgc.js","_app/immutable/chunks/BIDsfWFz.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/3MBVX4Yb.js","_app/immutable/chunks/DeiVAbyn.js"];
12
12
  export const stylesheets = ["_app/immutable/assets/3.B3djLY18.css","_app/immutable/assets/BackLink.DRrgBGDC.css","_app/immutable/assets/Badge.D1SV0Gv7.css"];
13
13
  export const fonts = [];
@@ -8,6 +8,6 @@
8
8
  export const index = 4;
9
9
  let component_cache;
10
10
  export const component = async () => component_cache ??= (await import('../entries/pages/login/_page.svelte.js')).default;
11
- export const imports = ["_app/immutable/nodes/4.BhAoYx0d.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/BnXsGCy3.js","_app/immutable/chunks/BqJQeI8K.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/DDx3no2z.js","_app/immutable/chunks/iL4SCrvY.js","_app/immutable/chunks/Dlnxgs49.js"];
11
+ export const imports = ["_app/immutable/nodes/4.D-awDnNj.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/BnXsGCy3.js","_app/immutable/chunks/7z7jeLBz.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/DDx3no2z.js","_app/immutable/chunks/iL4SCrvY.js","_app/immutable/chunks/Dlnxgs49.js"];
12
12
  export const stylesheets = ["_app/immutable/assets/4.BR3wgXcZ.css"];
13
13
  export const fonts = [];
@@ -8,6 +8,6 @@
8
8
  export const index = 5;
9
9
  let component_cache;
10
10
  export const component = async () => component_cache ??= (await import('../entries/pages/reports/_page.svelte.js')).default;
11
- export const imports = ["_app/immutable/nodes/5.BXasF8ka.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/BTV7EXZb.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/Dn1b1Jgc.js","_app/immutable/chunks/BIDsfWFz.js","_app/immutable/chunks/htkwR9b-.js","_app/immutable/chunks/B2lVGNml.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/DeiVAbyn.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/prk8PJfA.js","_app/immutable/chunks/BWGoOYU0.js","_app/immutable/chunks/CUPWZLIN.js","_app/immutable/chunks/CNpD-yNH.js"];
11
+ export const imports = ["_app/immutable/nodes/5.DBcQeD2J.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/BTV7EXZb.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/Dn1b1Jgc.js","_app/immutable/chunks/BIDsfWFz.js","_app/immutable/chunks/DrfshNlX.js","_app/immutable/chunks/B2lVGNml.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/DeiVAbyn.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/prk8PJfA.js","_app/immutable/chunks/BWGoOYU0.js","_app/immutable/chunks/CUPWZLIN.js","_app/immutable/chunks/CNpD-yNH.js"];
12
12
  export const stylesheets = ["_app/immutable/assets/5.ClS4XkkN.css","_app/immutable/assets/Badge.D1SV0Gv7.css","_app/immutable/assets/Pagination.DZmi2Po-.css","_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css","_app/immutable/assets/Modal.BZpm0HP8.css","_app/immutable/assets/EmptyState.DUDM4P19.css"];
13
13
  export const fonts = [];
@@ -8,6 +8,6 @@
8
8
  export const index = 6;
9
9
  let component_cache;
10
10
  export const component = async () => component_cache ??= (await import('../entries/pages/reports/_id_/_page.svelte.js')).default;
11
- export const imports = ["_app/immutable/nodes/6.CDEJGi13.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/BTV7EXZb.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/Bfc47y5P.js","_app/immutable/chunks/tsOANt55.js","_app/immutable/chunks/CUWTHbZi.js","_app/immutable/chunks/BqJQeI8K.js","_app/immutable/chunks/Dn1b1Jgc.js","_app/immutable/chunks/BIDsfWFz.js","_app/immutable/chunks/B2lVGNml.js","_app/immutable/chunks/BDb8hZHu.js","_app/immutable/chunks/DeiVAbyn.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/3MBVX4Yb.js","_app/immutable/chunks/zXSLr47H.js","_app/immutable/chunks/BCh31ecr.js"];
11
+ export const imports = ["_app/immutable/nodes/6.CLydZ4sL.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/BTV7EXZb.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/Bfc47y5P.js","_app/immutable/chunks/tsOANt55.js","_app/immutable/chunks/ChvVsiZ9.js","_app/immutable/chunks/7z7jeLBz.js","_app/immutable/chunks/Dn1b1Jgc.js","_app/immutable/chunks/BIDsfWFz.js","_app/immutable/chunks/B2lVGNml.js","_app/immutable/chunks/BDb8hZHu.js","_app/immutable/chunks/DeiVAbyn.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/3MBVX4Yb.js","_app/immutable/chunks/zXSLr47H.js","_app/immutable/chunks/BCh31ecr.js"];
12
12
  export const stylesheets = ["_app/immutable/assets/6.BofiCOMr.css","_app/immutable/assets/Badge.D1SV0Gv7.css","_app/immutable/assets/BackLink.DRrgBGDC.css","_app/immutable/assets/ExportMenu.DsJQ1Qua.css"];
13
13
  export const fonts = [];
@@ -8,6 +8,6 @@
8
8
  export const index = 7;
9
9
  let component_cache;
10
10
  export const component = async () => component_cache ??= (await import('../entries/pages/scheduled-tests/_page.svelte.js')).default;
11
- export const imports = ["_app/immutable/nodes/7.B_XntBZ1.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/BTV7EXZb.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/BnXsGCy3.js","_app/immutable/chunks/qvxlSGpD.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/tsOANt55.js","_app/immutable/chunks/Bfc47y5P.js","_app/immutable/chunks/kFFd6Oo5.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/htkwR9b-.js","_app/immutable/chunks/B2lVGNml.js","_app/immutable/chunks/DeiVAbyn.js","_app/immutable/chunks/CUPWZLIN.js","_app/immutable/chunks/BWGoOYU0.js","_app/immutable/chunks/BDb8hZHu.js","_app/immutable/chunks/CNpD-yNH.js"];
11
+ export const imports = ["_app/immutable/nodes/7.Dgb_D3pO.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/BTV7EXZb.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/BnXsGCy3.js","_app/immutable/chunks/qvxlSGpD.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/tsOANt55.js","_app/immutable/chunks/Bfc47y5P.js","_app/immutable/chunks/kFFd6Oo5.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/DrfshNlX.js","_app/immutable/chunks/B2lVGNml.js","_app/immutable/chunks/DeiVAbyn.js","_app/immutable/chunks/CUPWZLIN.js","_app/immutable/chunks/BWGoOYU0.js","_app/immutable/chunks/BDb8hZHu.js","_app/immutable/chunks/CNpD-yNH.js"];
12
12
  export const stylesheets = ["_app/immutable/assets/7.CBHi6pzT.css","_app/immutable/assets/Button.C1zsJAUG.css","_app/immutable/assets/Badge.D1SV0Gv7.css","_app/immutable/assets/Modal.BZpm0HP8.css","_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css","_app/immutable/assets/EmptyState.DUDM4P19.css"];
13
13
  export const fonts = [];
@@ -8,6 +8,6 @@
8
8
  export const index = 8;
9
9
  let component_cache;
10
10
  export const component = async () => component_cache ??= (await import('../entries/pages/settings/_page.svelte.js')).default;
11
- export const imports = ["_app/immutable/nodes/8.DL5gzc5s.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/BTV7EXZb.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/BnXsGCy3.js","_app/immutable/chunks/qvxlSGpD.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/tsOANt55.js","_app/immutable/chunks/BCh31ecr.js","_app/immutable/chunks/BqJQeI8K.js","_app/immutable/chunks/CUWTHbZi.js","_app/immutable/chunks/kFFd6Oo5.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/B74j8LrV.js","_app/immutable/chunks/BIDsfWFz.js","_app/immutable/chunks/DDx3no2z.js","_app/immutable/chunks/htkwR9b-.js","_app/immutable/chunks/B2lVGNml.js","_app/immutable/chunks/iL4SCrvY.js","_app/immutable/chunks/BDb8hZHu.js","_app/immutable/chunks/BWGoOYU0.js","_app/immutable/chunks/CUPWZLIN.js","_app/immutable/chunks/DeiVAbyn.js"];
11
+ export const imports = ["_app/immutable/nodes/8.BpS2myvx.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/BTV7EXZb.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/BnXsGCy3.js","_app/immutable/chunks/qvxlSGpD.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/tsOANt55.js","_app/immutable/chunks/BCh31ecr.js","_app/immutable/chunks/7z7jeLBz.js","_app/immutable/chunks/ChvVsiZ9.js","_app/immutable/chunks/kFFd6Oo5.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/B74j8LrV.js","_app/immutable/chunks/BIDsfWFz.js","_app/immutable/chunks/DDx3no2z.js","_app/immutable/chunks/DrfshNlX.js","_app/immutable/chunks/B2lVGNml.js","_app/immutable/chunks/iL4SCrvY.js","_app/immutable/chunks/uakY4NHp.js","_app/immutable/chunks/BDb8hZHu.js","_app/immutable/chunks/BWGoOYU0.js","_app/immutable/chunks/CUPWZLIN.js","_app/immutable/chunks/DeiVAbyn.js"];
12
12
  export const stylesheets = ["_app/immutable/assets/8.DOC8fPSI.css","_app/immutable/assets/Button.C1zsJAUG.css","_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css","_app/immutable/assets/Modal.BZpm0HP8.css","_app/immutable/assets/Badge.D1SV0Gv7.css"];
13
13
  export const fonts = [];
@@ -8,6 +8,6 @@
8
8
  export const index = 9;
9
9
  let component_cache;
10
10
  export const component = async () => component_cache ??= (await import('../entries/pages/setup/_page.svelte.js')).default;
11
- export const imports = ["_app/immutable/nodes/9.Bv15cDh1.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/BnXsGCy3.js","_app/immutable/chunks/BqJQeI8K.js","_app/immutable/chunks/DDx3no2z.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/iL4SCrvY.js","_app/immutable/chunks/Dlnxgs49.js"];
11
+ export const imports = ["_app/immutable/nodes/9.CsZT3pCm.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/CtgCYzu5.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/C4Z3p6jE.js","_app/immutable/chunks/BnXsGCy3.js","_app/immutable/chunks/7z7jeLBz.js","_app/immutable/chunks/DDx3no2z.js","_app/immutable/chunks/CXQhSK1T.js","_app/immutable/chunks/iL4SCrvY.js","_app/immutable/chunks/Dlnxgs49.js"];
12
12
  export const stylesheets = ["_app/immutable/assets/9._h2o67kg.css"];
13
13
  export const fonts = [];
@@ -26,7 +26,7 @@ export const options = {
26
26
  app: ({ head, body, assets, nonce, env }) => "<!--\nThis file is part of Plum.\nLicensed under the MIT License. See LICENSE file in the project root for details.\n-->\n<!doctype html>\n<html lang=\"en\" data-theme=\"light\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<link rel=\"icon\" href=\"" + assets + "/favicon.ico\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n\t\t<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\" />\n\t\t<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin />\n\t\t<link\n\t\t\thref=\"https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;500&family=DM+Sans:wght@300;400;500&display=swap\"\n\t\t\trel=\"stylesheet\"\n\t\t/>\n\t\t<!-- Prevent theme flash before Svelte hydrates -->\n\t\t<script>\n\t\t\ttry {\n\t\t\t\tconst t = localStorage.getItem('plum-theme');\n\t\t\t\tif (t) document.documentElement.setAttribute('data-theme', t);\n\t\t\t} catch (e) {}\n\t\t</script>\n\t\t" + head + "\n\t</head>\n\t<body data-sveltekit-preload-data=\"hover\">\n\t\t<div style=\"display: contents\">" + body + "</div>\n\t</body>\n</html>\n",
27
27
  error: ({ status, message }) => "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>" + message + "</title>\n\n\t\t<style>\n\t\t\tbody {\n\t\t\t\t--bg: white;\n\t\t\t\t--fg: #222;\n\t\t\t\t--divider: #ccc;\n\t\t\t\tbackground: var(--bg);\n\t\t\t\tcolor: var(--fg);\n\t\t\t\tfont-family:\n\t\t\t\t\tsystem-ui,\n\t\t\t\t\t-apple-system,\n\t\t\t\t\tBlinkMacSystemFont,\n\t\t\t\t\t'Segoe UI',\n\t\t\t\t\tRoboto,\n\t\t\t\t\tOxygen,\n\t\t\t\t\tUbuntu,\n\t\t\t\t\tCantarell,\n\t\t\t\t\t'Open Sans',\n\t\t\t\t\t'Helvetica Neue',\n\t\t\t\t\tsans-serif;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\theight: 100vh;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t.error {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tmax-width: 32rem;\n\t\t\t\tmargin: 0 1rem;\n\t\t\t}\n\n\t\t\t.status {\n\t\t\t\tfont-weight: 200;\n\t\t\t\tfont-size: 3rem;\n\t\t\t\tline-height: 1;\n\t\t\t\tposition: relative;\n\t\t\t\ttop: -0.05rem;\n\t\t\t}\n\n\t\t\t.message {\n\t\t\t\tborder-left: 1px solid var(--divider);\n\t\t\t\tpadding: 0 0 0 1rem;\n\t\t\t\tmargin: 0 0 0 1rem;\n\t\t\t\tmin-height: 2.5rem;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.message h1 {\n\t\t\t\tfont-weight: 400;\n\t\t\t\tfont-size: 1em;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t@media (prefers-color-scheme: dark) {\n\t\t\t\tbody {\n\t\t\t\t\t--bg: #222;\n\t\t\t\t\t--fg: #ddd;\n\t\t\t\t\t--divider: #666;\n\t\t\t\t}\n\t\t\t}\n\t\t</style>\n\t</head>\n\t<body>\n\t\t<div class=\"error\">\n\t\t\t<span class=\"status\">" + status + "</span>\n\t\t\t<div class=\"message\">\n\t\t\t\t<h1>" + message + "</h1>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>\n"
28
28
  },
29
- version_hash: "1kecx86"
29
+ version_hash: "7hrr1b"
30
30
  };
31
31
 
32
32
  export async function get_hooks() {