@heal-dev/heal-playwright-tracer 1.0.0 → 1.0.8

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 (704) hide show
  1. package/README.md +94 -116
  2. package/dist/application/babel-playwright-tracer-plugin/index.js +16 -2
  3. package/dist/application/commander-cli-adapter/commander-cli-adapter.d.ts +24 -0
  4. package/dist/application/commander-cli-adapter/commander-cli-adapter.js +133 -0
  5. package/dist/application/heal-config/index.d.ts +1 -1
  6. package/dist/application/heal-config/registry.js +2 -1
  7. package/dist/application/heal-config/types.d.ts +187 -6
  8. package/dist/application/playwright-fixture/index.js +247 -48
  9. package/dist/application/playwright-fixture/wire-all-pages.d.ts +37 -0
  10. package/dist/application/playwright-fixture/wire-all-pages.js +71 -0
  11. package/dist/application/trace-event-recorder-runtime/index.d.ts +5 -0
  12. package/dist/application/trace-event-recorder-runtime/index.js +11 -1
  13. package/dist/bin/heal-tracer.d.ts +7 -0
  14. package/dist/bin/heal-tracer.js +16 -0
  15. package/dist/domain/code-hook-injector/service/statement-analysis/async-enclosing-function-detector.d.ts +11 -0
  16. package/dist/domain/code-hook-injector/service/statement-analysis/async-enclosing-function-detector.js +21 -0
  17. package/dist/domain/code-hook-injector/service/trace-hook/preprocess-call.d.ts +10 -0
  18. package/dist/domain/code-hook-injector/service/trace-hook/preprocess-call.js +17 -0
  19. package/dist/domain/persistence/execution-history-schema.d.ts +112 -0
  20. package/dist/domain/persistence/execution-history-schema.js +10 -0
  21. package/dist/domain/persistence/index.d.ts +7 -0
  22. package/dist/domain/persistence/index.js +10 -0
  23. package/dist/domain/persistence/test-status.d.ts +6 -0
  24. package/dist/domain/persistence/test-status.js +7 -0
  25. package/dist/domain/trace-event-recorder/model/console-trace-schema.d.ts +36 -0
  26. package/dist/domain/trace-event-recorder/model/console-trace-schema.js +7 -0
  27. package/dist/domain/trace-event-recorder/model/global-names.d.ts +1 -0
  28. package/dist/domain/trace-event-recorder/model/global-names.js +9 -1
  29. package/dist/domain/trace-event-recorder/model/network-trace-schema.d.ts +105 -0
  30. package/dist/domain/trace-event-recorder/model/network-trace-schema.js +7 -0
  31. package/dist/domain/trace-event-recorder/model/statement-trace-schema.d.ts +68 -2
  32. package/dist/domain/trace-event-recorder/model/statement-trace-schema.js +1 -1
  33. package/dist/domain/trace-event-recorder/model/trace-schema.d.ts +1 -0
  34. package/dist/domain/trace-event-recorder/service/projectors/statement-projector.d.ts +10 -1
  35. package/dist/domain/trace-event-recorder/service/projectors/statement-projector.js +39 -3
  36. package/dist/domain/trace-event-recorder/service/serializers/error-serializer.js +28 -10
  37. package/dist/domain/trace-event-recorder/service/serializers/index.d.ts +7 -0
  38. package/dist/domain/trace-event-recorder/service/serializers/index.js +13 -0
  39. package/dist/domain/trace-event-recorder/service/trace-event-recorder.d.ts +25 -0
  40. package/dist/domain/trace-event-recorder/service/trace-event-recorder.js +33 -0
  41. package/dist/index.d.ts +1 -1
  42. package/dist/infrastructure/artifact-summary-printer/artifact-summary-printer.d.ts +20 -0
  43. package/dist/infrastructure/artifact-summary-printer/artifact-summary-printer.js +24 -0
  44. package/dist/infrastructure/artifact-summary-printer/index.d.ts +7 -0
  45. package/dist/infrastructure/artifact-summary-printer/index.js +10 -0
  46. package/dist/infrastructure/heal-reporter/crash-error-classifier.d.ts +13 -0
  47. package/dist/infrastructure/heal-reporter/crash-error-classifier.js +65 -0
  48. package/dist/infrastructure/heal-reporter/failing-statement-finder.d.ts +14 -0
  49. package/dist/infrastructure/heal-reporter/failing-statement-finder.js +118 -0
  50. package/dist/infrastructure/heal-reporter/heal-tracer-reporter.d.ts +134 -0
  51. package/dist/infrastructure/heal-reporter/heal-tracer-reporter.js +537 -0
  52. package/dist/infrastructure/heal-reporter/index.d.ts +14 -0
  53. package/dist/infrastructure/heal-reporter/index.js +23 -0
  54. package/dist/infrastructure/heal-reporter/ndjson-tail-inspector.d.ts +8 -0
  55. package/dist/infrastructure/heal-reporter/ndjson-tail-inspector.js +75 -0
  56. package/dist/infrastructure/heal-traces-layout/execution-id-resolver.d.ts +14 -0
  57. package/dist/infrastructure/heal-traces-layout/execution-id-resolver.js +52 -0
  58. package/dist/infrastructure/heal-traces-layout/heal-traces-layout.d.ts +37 -0
  59. package/dist/infrastructure/heal-traces-layout/heal-traces-layout.js +116 -0
  60. package/dist/infrastructure/heal-traces-layout/index.d.ts +7 -0
  61. package/dist/infrastructure/heal-traces-layout/index.js +14 -0
  62. package/dist/infrastructure/local-viewer-adapter/discover-traces.d.ts +70 -0
  63. package/dist/infrastructure/local-viewer-adapter/discover-traces.js +280 -0
  64. package/dist/infrastructure/local-viewer-adapter/local-viewer-server.d.ts +44 -0
  65. package/dist/infrastructure/local-viewer-adapter/local-viewer-server.js +398 -0
  66. package/dist/infrastructure/local-viewer-adapter/ndjson-trace-loader.d.ts +25 -0
  67. package/dist/infrastructure/local-viewer-adapter/ndjson-trace-loader.js +74 -0
  68. package/dist/infrastructure/playwright-console-capture-adapter/console-capture-session.d.ts +40 -0
  69. package/dist/infrastructure/playwright-console-capture-adapter/console-capture-session.js +243 -0
  70. package/dist/infrastructure/playwright-console-capture-adapter/index.d.ts +7 -0
  71. package/dist/infrastructure/playwright-console-capture-adapter/index.js +20 -0
  72. package/dist/infrastructure/playwright-locator-screenshot-adapter/assertion-wrapper.js +22 -9
  73. package/dist/infrastructure/playwright-locator-screenshot-adapter/index.d.ts +1 -1
  74. package/dist/infrastructure/playwright-locator-screenshot-adapter/index.js +2 -2
  75. package/dist/infrastructure/playwright-locator-screenshot-adapter/locator-patch.js +19 -7
  76. package/dist/infrastructure/playwright-locator-screenshot-adapter/overlay-helpers.d.ts +2 -2
  77. package/dist/infrastructure/playwright-locator-screenshot-adapter/overlay-helpers.js +22 -9
  78. package/dist/infrastructure/playwright-locator-screenshot-adapter/screenshot-capture-session.d.ts +14 -3
  79. package/dist/infrastructure/playwright-locator-screenshot-adapter/screenshot-capture-session.js +94 -25
  80. package/dist/infrastructure/playwright-network-capture-adapter/body-preview.d.ts +43 -0
  81. package/dist/infrastructure/playwright-network-capture-adapter/body-preview.js +107 -0
  82. package/dist/infrastructure/playwright-network-capture-adapter/index.d.ts +10 -0
  83. package/dist/infrastructure/playwright-network-capture-adapter/index.js +27 -0
  84. package/dist/infrastructure/playwright-network-capture-adapter/network-capture-session.d.ts +55 -0
  85. package/dist/infrastructure/playwright-network-capture-adapter/network-capture-session.js +630 -0
  86. package/dist/infrastructure/playwright-network-capture-adapter/network-coalescer.d.ts +54 -0
  87. package/dist/infrastructure/playwright-network-capture-adapter/network-coalescer.js +96 -0
  88. package/dist/infrastructure/playwright-network-capture-adapter/redaction.d.ts +14 -0
  89. package/dist/infrastructure/playwright-network-capture-adapter/redaction.js +44 -0
  90. package/dist/infrastructure/playwright-test-context-adapter/playwright-test-context-adapter.d.ts +6 -1
  91. package/dist/infrastructure/playwright-test-context-adapter/playwright-test-context-adapter.js +5 -1
  92. package/dist/infrastructure/stdout-capture-adapter/stdout-capture-session.js +1 -1
  93. package/dist/util/logger.d.ts +17 -0
  94. package/dist/util/logger.js +60 -0
  95. package/dist/util/with-timeout.d.ts +6 -0
  96. package/dist/util/with-timeout.js +33 -0
  97. package/package.json +20 -3
  98. package/tracer-viewer-bundle/assets/abap-BdImnpbu.js +13 -0
  99. package/tracer-viewer-bundle/assets/abap-BdImnpbu.js.map +1 -0
  100. package/tracer-viewer-bundle/assets/actionscript-3-CoDkCxhg.js +13 -0
  101. package/tracer-viewer-bundle/assets/actionscript-3-CoDkCxhg.js.map +1 -0
  102. package/tracer-viewer-bundle/assets/ada-bCR0ucgS.js +13 -0
  103. package/tracer-viewer-bundle/assets/ada-bCR0ucgS.js.map +1 -0
  104. package/tracer-viewer-bundle/assets/andromeeda-C4gqWexZ.js +12 -0
  105. package/tracer-viewer-bundle/assets/andromeeda-C4gqWexZ.js.map +1 -0
  106. package/tracer-viewer-bundle/assets/angular-html-DA-rfuFy.js +41 -0
  107. package/tracer-viewer-bundle/assets/angular-html-DA-rfuFy.js.map +1 -0
  108. package/tracer-viewer-bundle/assets/angular-ts-BrjP3tb8.js +30 -0
  109. package/tracer-viewer-bundle/assets/angular-ts-BrjP3tb8.js.map +1 -0
  110. package/tracer-viewer-bundle/assets/apache-Pmp26Uib.js +13 -0
  111. package/tracer-viewer-bundle/assets/apache-Pmp26Uib.js.map +1 -0
  112. package/tracer-viewer-bundle/assets/apex-D8_7TLub.js +13 -0
  113. package/tracer-viewer-bundle/assets/apex-D8_7TLub.js.map +1 -0
  114. package/tracer-viewer-bundle/assets/apl-CORt7UWP.js +19 -0
  115. package/tracer-viewer-bundle/assets/apl-CORt7UWP.js.map +1 -0
  116. package/tracer-viewer-bundle/assets/applescript-Co6uUVPk.js +13 -0
  117. package/tracer-viewer-bundle/assets/applescript-Co6uUVPk.js.map +1 -0
  118. package/tracer-viewer-bundle/assets/ara-BRHolxvo.js +13 -0
  119. package/tracer-viewer-bundle/assets/ara-BRHolxvo.js.map +1 -0
  120. package/tracer-viewer-bundle/assets/asciidoc-Ve4PFQV2.js +13 -0
  121. package/tracer-viewer-bundle/assets/asciidoc-Ve4PFQV2.js.map +1 -0
  122. package/tracer-viewer-bundle/assets/asm-D_Q5rh1f.js +13 -0
  123. package/tracer-viewer-bundle/assets/asm-D_Q5rh1f.js.map +1 -0
  124. package/tracer-viewer-bundle/assets/astro-HNnZUWAn.js +19 -0
  125. package/tracer-viewer-bundle/assets/astro-HNnZUWAn.js.map +1 -0
  126. package/tracer-viewer-bundle/assets/aurora-x-D-2ljcwZ.js +12 -0
  127. package/tracer-viewer-bundle/assets/aurora-x-D-2ljcwZ.js.map +1 -0
  128. package/tracer-viewer-bundle/assets/awk-DMzUqQB5.js +13 -0
  129. package/tracer-viewer-bundle/assets/awk-DMzUqQB5.js.map +1 -0
  130. package/tracer-viewer-bundle/assets/ayu-dark-DYE7WIF3.js +12 -0
  131. package/tracer-viewer-bundle/assets/ayu-dark-DYE7WIF3.js.map +1 -0
  132. package/tracer-viewer-bundle/assets/ayu-light-BA47KaF1.js +12 -0
  133. package/tracer-viewer-bundle/assets/ayu-light-BA47KaF1.js.map +1 -0
  134. package/tracer-viewer-bundle/assets/ayu-mirage-32ctXXKs.js +12 -0
  135. package/tracer-viewer-bundle/assets/ayu-mirage-32ctXXKs.js.map +1 -0
  136. package/tracer-viewer-bundle/assets/ballerina-BFfxhgS-.js +13 -0
  137. package/tracer-viewer-bundle/assets/ballerina-BFfxhgS-.js.map +1 -0
  138. package/tracer-viewer-bundle/assets/bat-BkioyH1T.js +13 -0
  139. package/tracer-viewer-bundle/assets/bat-BkioyH1T.js.map +1 -0
  140. package/tracer-viewer-bundle/assets/beancount-k_qm7-4y.js +13 -0
  141. package/tracer-viewer-bundle/assets/beancount-k_qm7-4y.js.map +1 -0
  142. package/tracer-viewer-bundle/assets/berry-uYugtg8r.js +13 -0
  143. package/tracer-viewer-bundle/assets/berry-uYugtg8r.js.map +1 -0
  144. package/tracer-viewer-bundle/assets/bibtex-CHM0blh-.js +13 -0
  145. package/tracer-viewer-bundle/assets/bibtex-CHM0blh-.js.map +1 -0
  146. package/tracer-viewer-bundle/assets/bicep-Bmn6On1c.js +13 -0
  147. package/tracer-viewer-bundle/assets/bicep-Bmn6On1c.js.map +1 -0
  148. package/tracer-viewer-bundle/assets/bird2-BIv1doCn.js +13 -0
  149. package/tracer-viewer-bundle/assets/bird2-BIv1doCn.js.map +1 -0
  150. package/tracer-viewer-bundle/assets/blade-BjGOyj-B.js +21 -0
  151. package/tracer-viewer-bundle/assets/blade-BjGOyj-B.js.map +1 -0
  152. package/tracer-viewer-bundle/assets/bsl-BO_Y6i37.js +14 -0
  153. package/tracer-viewer-bundle/assets/bsl-BO_Y6i37.js.map +1 -0
  154. package/tracer-viewer-bundle/assets/c-BIGW1oBm.js +13 -0
  155. package/tracer-viewer-bundle/assets/c-BIGW1oBm.js.map +1 -0
  156. package/tracer-viewer-bundle/assets/c3-eo99z4R2.js +13 -0
  157. package/tracer-viewer-bundle/assets/c3-eo99z4R2.js.map +1 -0
  158. package/tracer-viewer-bundle/assets/cadence-Bv_4Rxtq.js +13 -0
  159. package/tracer-viewer-bundle/assets/cadence-Bv_4Rxtq.js.map +1 -0
  160. package/tracer-viewer-bundle/assets/cairo-KRGpt6FW.js +14 -0
  161. package/tracer-viewer-bundle/assets/cairo-KRGpt6FW.js.map +1 -0
  162. package/tracer-viewer-bundle/assets/catppuccin-frappe-DFWUc33u.js +12 -0
  163. package/tracer-viewer-bundle/assets/catppuccin-frappe-DFWUc33u.js.map +1 -0
  164. package/tracer-viewer-bundle/assets/catppuccin-latte-C9dUb6Cb.js +12 -0
  165. package/tracer-viewer-bundle/assets/catppuccin-latte-C9dUb6Cb.js.map +1 -0
  166. package/tracer-viewer-bundle/assets/catppuccin-macchiato-DQyhUUbL.js +12 -0
  167. package/tracer-viewer-bundle/assets/catppuccin-macchiato-DQyhUUbL.js.map +1 -0
  168. package/tracer-viewer-bundle/assets/catppuccin-mocha-D87Tk5Gz.js +12 -0
  169. package/tracer-viewer-bundle/assets/catppuccin-mocha-D87Tk5Gz.js.map +1 -0
  170. package/tracer-viewer-bundle/assets/clarity-D53aC0YG.js +13 -0
  171. package/tracer-viewer-bundle/assets/clarity-D53aC0YG.js.map +1 -0
  172. package/tracer-viewer-bundle/assets/clojure-P80f7IUj.js +13 -0
  173. package/tracer-viewer-bundle/assets/clojure-P80f7IUj.js.map +1 -0
  174. package/tracer-viewer-bundle/assets/cmake-D1j8_8rp.js +13 -0
  175. package/tracer-viewer-bundle/assets/cmake-D1j8_8rp.js.map +1 -0
  176. package/tracer-viewer-bundle/assets/cobol-nBiQ_Alo.js +17 -0
  177. package/tracer-viewer-bundle/assets/cobol-nBiQ_Alo.js.map +1 -0
  178. package/tracer-viewer-bundle/assets/codeowners-Bp6g37R7.js +13 -0
  179. package/tracer-viewer-bundle/assets/codeowners-Bp6g37R7.js.map +1 -0
  180. package/tracer-viewer-bundle/assets/codeql-DsOJ9woJ.js +13 -0
  181. package/tracer-viewer-bundle/assets/codeql-DsOJ9woJ.js.map +1 -0
  182. package/tracer-viewer-bundle/assets/coffee-Ch7k5sss.js +14 -0
  183. package/tracer-viewer-bundle/assets/coffee-Ch7k5sss.js.map +1 -0
  184. package/tracer-viewer-bundle/assets/common-lisp-Cg-RD9OK.js +13 -0
  185. package/tracer-viewer-bundle/assets/common-lisp-Cg-RD9OK.js.map +1 -0
  186. package/tracer-viewer-bundle/assets/coq-DkFqJrB1.js +13 -0
  187. package/tracer-viewer-bundle/assets/coq-DkFqJrB1.js.map +1 -0
  188. package/tracer-viewer-bundle/assets/cpp-CofmeUqb.js +23 -0
  189. package/tracer-viewer-bundle/assets/cpp-CofmeUqb.js.map +1 -0
  190. package/tracer-viewer-bundle/assets/crystal-DNxU26gB.js +19 -0
  191. package/tracer-viewer-bundle/assets/crystal-DNxU26gB.js.map +1 -0
  192. package/tracer-viewer-bundle/assets/csharp-COcwbKMJ.js +13 -0
  193. package/tracer-viewer-bundle/assets/csharp-COcwbKMJ.js.map +1 -0
  194. package/tracer-viewer-bundle/assets/css-CLj8gQPS.js +13 -0
  195. package/tracer-viewer-bundle/assets/css-CLj8gQPS.js.map +1 -0
  196. package/tracer-viewer-bundle/assets/csv-fuZLfV_i.js +13 -0
  197. package/tracer-viewer-bundle/assets/csv-fuZLfV_i.js.map +1 -0
  198. package/tracer-viewer-bundle/assets/cue-D82EKSYY.js +13 -0
  199. package/tracer-viewer-bundle/assets/cue-D82EKSYY.js.map +1 -0
  200. package/tracer-viewer-bundle/assets/cypher-COkxafJQ.js +13 -0
  201. package/tracer-viewer-bundle/assets/cypher-COkxafJQ.js.map +1 -0
  202. package/tracer-viewer-bundle/assets/d-85-TOEBH.js +13 -0
  203. package/tracer-viewer-bundle/assets/d-85-TOEBH.js.map +1 -0
  204. package/tracer-viewer-bundle/assets/dark-plus-C3mMm8J8.js +12 -0
  205. package/tracer-viewer-bundle/assets/dark-plus-C3mMm8J8.js.map +1 -0
  206. package/tracer-viewer-bundle/assets/dart-bE4Kk8sk.js +13 -0
  207. package/tracer-viewer-bundle/assets/dart-bE4Kk8sk.js.map +1 -0
  208. package/tracer-viewer-bundle/assets/dax-CEL-wOlO.js +13 -0
  209. package/tracer-viewer-bundle/assets/dax-CEL-wOlO.js.map +1 -0
  210. package/tracer-viewer-bundle/assets/desktop-BmXAJ9_W.js +13 -0
  211. package/tracer-viewer-bundle/assets/desktop-BmXAJ9_W.js.map +1 -0
  212. package/tracer-viewer-bundle/assets/diff-D97Zzqfu.js +13 -0
  213. package/tracer-viewer-bundle/assets/diff-D97Zzqfu.js.map +1 -0
  214. package/tracer-viewer-bundle/assets/docker-BcOcwvcX.js +13 -0
  215. package/tracer-viewer-bundle/assets/docker-BcOcwvcX.js.map +1 -0
  216. package/tracer-viewer-bundle/assets/dotenv-Da5cRb03.js +13 -0
  217. package/tracer-viewer-bundle/assets/dotenv-Da5cRb03.js.map +1 -0
  218. package/tracer-viewer-bundle/assets/dracula-BzJJZx-M.js +12 -0
  219. package/tracer-viewer-bundle/assets/dracula-BzJJZx-M.js.map +1 -0
  220. package/tracer-viewer-bundle/assets/dracula-soft-BXkSAIEj.js +12 -0
  221. package/tracer-viewer-bundle/assets/dracula-soft-BXkSAIEj.js.map +1 -0
  222. package/tracer-viewer-bundle/assets/dream-maker-BtqSS_iP.js +13 -0
  223. package/tracer-viewer-bundle/assets/dream-maker-BtqSS_iP.js.map +1 -0
  224. package/tracer-viewer-bundle/assets/edge-FbVlp4U3.js +18 -0
  225. package/tracer-viewer-bundle/assets/edge-FbVlp4U3.js.map +1 -0
  226. package/tracer-viewer-bundle/assets/elixir-CkH2-t6x.js +16 -0
  227. package/tracer-viewer-bundle/assets/elixir-CkH2-t6x.js.map +1 -0
  228. package/tracer-viewer-bundle/assets/elm-DbKCFpqz.js +15 -0
  229. package/tracer-viewer-bundle/assets/elm-DbKCFpqz.js.map +1 -0
  230. package/tracer-viewer-bundle/assets/emacs-lisp-CXvaQtF9.js +13 -0
  231. package/tracer-viewer-bundle/assets/emacs-lisp-CXvaQtF9.js.map +1 -0
  232. package/tracer-viewer-bundle/assets/erb-BYCe7drp.js +32 -0
  233. package/tracer-viewer-bundle/assets/erb-BYCe7drp.js.map +1 -0
  234. package/tracer-viewer-bundle/assets/erlang-DsQrWhSR.js +14 -0
  235. package/tracer-viewer-bundle/assets/erlang-DsQrWhSR.js.map +1 -0
  236. package/tracer-viewer-bundle/assets/everforest-dark-BgDCqdQA.js +12 -0
  237. package/tracer-viewer-bundle/assets/everforest-dark-BgDCqdQA.js.map +1 -0
  238. package/tracer-viewer-bundle/assets/everforest-light-C8M2exoo.js +12 -0
  239. package/tracer-viewer-bundle/assets/everforest-light-C8M2exoo.js.map +1 -0
  240. package/tracer-viewer-bundle/assets/favicon-DRSNNJwn.svg +3 -0
  241. package/tracer-viewer-bundle/assets/fennel-BYunw83y.js +13 -0
  242. package/tracer-viewer-bundle/assets/fennel-BYunw83y.js.map +1 -0
  243. package/tracer-viewer-bundle/assets/fish-BvzEVeQv.js +13 -0
  244. package/tracer-viewer-bundle/assets/fish-BvzEVeQv.js.map +1 -0
  245. package/tracer-viewer-bundle/assets/fluent-C4IJs8-o.js +13 -0
  246. package/tracer-viewer-bundle/assets/fluent-C4IJs8-o.js.map +1 -0
  247. package/tracer-viewer-bundle/assets/fortran-fixed-form-CkoXwp7k.js +14 -0
  248. package/tracer-viewer-bundle/assets/fortran-fixed-form-CkoXwp7k.js.map +1 -0
  249. package/tracer-viewer-bundle/assets/fortran-free-form-BxgE0vQu.js +13 -0
  250. package/tracer-viewer-bundle/assets/fortran-free-form-BxgE0vQu.js.map +1 -0
  251. package/tracer-viewer-bundle/assets/fsharp-CXgrBDvD.js +14 -0
  252. package/tracer-viewer-bundle/assets/fsharp-CXgrBDvD.js.map +1 -0
  253. package/tracer-viewer-bundle/assets/gdresource-BOOCDP_w.js +15 -0
  254. package/tracer-viewer-bundle/assets/gdresource-BOOCDP_w.js.map +1 -0
  255. package/tracer-viewer-bundle/assets/gdscript-C5YyOfLZ.js +13 -0
  256. package/tracer-viewer-bundle/assets/gdscript-C5YyOfLZ.js.map +1 -0
  257. package/tracer-viewer-bundle/assets/gdshader-DkwncUOv.js +13 -0
  258. package/tracer-viewer-bundle/assets/gdshader-DkwncUOv.js.map +1 -0
  259. package/tracer-viewer-bundle/assets/genie-D0YGMca9.js +13 -0
  260. package/tracer-viewer-bundle/assets/genie-D0YGMca9.js.map +1 -0
  261. package/tracer-viewer-bundle/assets/gherkin-DyxjwDmM.js +13 -0
  262. package/tracer-viewer-bundle/assets/gherkin-DyxjwDmM.js.map +1 -0
  263. package/tracer-viewer-bundle/assets/git-commit-F4YmCXRG.js +14 -0
  264. package/tracer-viewer-bundle/assets/git-commit-F4YmCXRG.js.map +1 -0
  265. package/tracer-viewer-bundle/assets/git-rebase-r7XF79zn.js +14 -0
  266. package/tracer-viewer-bundle/assets/git-rebase-r7XF79zn.js.map +1 -0
  267. package/tracer-viewer-bundle/assets/github-dark-DHJKELXO.js +12 -0
  268. package/tracer-viewer-bundle/assets/github-dark-DHJKELXO.js.map +1 -0
  269. package/tracer-viewer-bundle/assets/github-dark-default-Cuk6v7N8.js +12 -0
  270. package/tracer-viewer-bundle/assets/github-dark-default-Cuk6v7N8.js.map +1 -0
  271. package/tracer-viewer-bundle/assets/github-dark-dimmed-DH5Ifo-i.js +12 -0
  272. package/tracer-viewer-bundle/assets/github-dark-dimmed-DH5Ifo-i.js.map +1 -0
  273. package/tracer-viewer-bundle/assets/github-dark-high-contrast-E3gJ1_iC.js +12 -0
  274. package/tracer-viewer-bundle/assets/github-dark-high-contrast-E3gJ1_iC.js.map +1 -0
  275. package/tracer-viewer-bundle/assets/github-light-DAi9KRSo.js +12 -0
  276. package/tracer-viewer-bundle/assets/github-light-DAi9KRSo.js.map +1 -0
  277. package/tracer-viewer-bundle/assets/github-light-default-D7oLnXFd.js +12 -0
  278. package/tracer-viewer-bundle/assets/github-light-default-D7oLnXFd.js.map +1 -0
  279. package/tracer-viewer-bundle/assets/github-light-high-contrast-BfjtVDDH.js +12 -0
  280. package/tracer-viewer-bundle/assets/github-light-high-contrast-BfjtVDDH.js.map +1 -0
  281. package/tracer-viewer-bundle/assets/gleam-BspZqrRM.js +13 -0
  282. package/tracer-viewer-bundle/assets/gleam-BspZqrRM.js.map +1 -0
  283. package/tracer-viewer-bundle/assets/glimmer-js-ByusRIyA.js +17 -0
  284. package/tracer-viewer-bundle/assets/glimmer-js-ByusRIyA.js.map +1 -0
  285. package/tracer-viewer-bundle/assets/glimmer-ts-BfAWNZQY.js +17 -0
  286. package/tracer-viewer-bundle/assets/glimmer-ts-BfAWNZQY.js.map +1 -0
  287. package/tracer-viewer-bundle/assets/glsl-DplSGwfg.js +14 -0
  288. package/tracer-viewer-bundle/assets/glsl-DplSGwfg.js.map +1 -0
  289. package/tracer-viewer-bundle/assets/gn-n2N0HUVH.js +13 -0
  290. package/tracer-viewer-bundle/assets/gn-n2N0HUVH.js.map +1 -0
  291. package/tracer-viewer-bundle/assets/gnuplot-DdkO51Og.js +13 -0
  292. package/tracer-viewer-bundle/assets/gnuplot-DdkO51Og.js.map +1 -0
  293. package/tracer-viewer-bundle/assets/go-C27-OAKa.js +13 -0
  294. package/tracer-viewer-bundle/assets/go-C27-OAKa.js.map +1 -0
  295. package/tracer-viewer-bundle/assets/graphql-ChdNCCLP.js +17 -0
  296. package/tracer-viewer-bundle/assets/graphql-ChdNCCLP.js.map +1 -0
  297. package/tracer-viewer-bundle/assets/groovy-gcz8RCvz.js +13 -0
  298. package/tracer-viewer-bundle/assets/groovy-gcz8RCvz.js.map +1 -0
  299. package/tracer-viewer-bundle/assets/gruvbox-dark-hard-CFHQjOhq.js +12 -0
  300. package/tracer-viewer-bundle/assets/gruvbox-dark-hard-CFHQjOhq.js.map +1 -0
  301. package/tracer-viewer-bundle/assets/gruvbox-dark-medium-GsRaNv29.js +12 -0
  302. package/tracer-viewer-bundle/assets/gruvbox-dark-medium-GsRaNv29.js.map +1 -0
  303. package/tracer-viewer-bundle/assets/gruvbox-dark-soft-CVdnzihN.js +12 -0
  304. package/tracer-viewer-bundle/assets/gruvbox-dark-soft-CVdnzihN.js.map +1 -0
  305. package/tracer-viewer-bundle/assets/gruvbox-light-hard-CH1njM8p.js +12 -0
  306. package/tracer-viewer-bundle/assets/gruvbox-light-hard-CH1njM8p.js.map +1 -0
  307. package/tracer-viewer-bundle/assets/gruvbox-light-medium-DRw_LuNl.js +12 -0
  308. package/tracer-viewer-bundle/assets/gruvbox-light-medium-DRw_LuNl.js.map +1 -0
  309. package/tracer-viewer-bundle/assets/gruvbox-light-soft-hJgmCMqR.js +12 -0
  310. package/tracer-viewer-bundle/assets/gruvbox-light-soft-hJgmCMqR.js.map +1 -0
  311. package/tracer-viewer-bundle/assets/hack-i7_Ulhet.js +17 -0
  312. package/tracer-viewer-bundle/assets/hack-i7_Ulhet.js.map +1 -0
  313. package/tracer-viewer-bundle/assets/haml-D5jkg6IW.js +15 -0
  314. package/tracer-viewer-bundle/assets/haml-D5jkg6IW.js.map +1 -0
  315. package/tracer-viewer-bundle/assets/handlebars-BpdQsYii.js +17 -0
  316. package/tracer-viewer-bundle/assets/handlebars-BpdQsYii.js.map +1 -0
  317. package/tracer-viewer-bundle/assets/haskell-Df6bDoY_.js +13 -0
  318. package/tracer-viewer-bundle/assets/haskell-Df6bDoY_.js.map +1 -0
  319. package/tracer-viewer-bundle/assets/haxe-CzTSHFRz.js +13 -0
  320. package/tracer-viewer-bundle/assets/haxe-CzTSHFRz.js.map +1 -0
  321. package/tracer-viewer-bundle/assets/hcl-BWvSN4gD.js +13 -0
  322. package/tracer-viewer-bundle/assets/hcl-BWvSN4gD.js.map +1 -0
  323. package/tracer-viewer-bundle/assets/hjson-D5-asLiD.js +13 -0
  324. package/tracer-viewer-bundle/assets/hjson-D5-asLiD.js.map +1 -0
  325. package/tracer-viewer-bundle/assets/hlsl-D3lLCCz7.js +13 -0
  326. package/tracer-viewer-bundle/assets/hlsl-D3lLCCz7.js.map +1 -0
  327. package/tracer-viewer-bundle/assets/horizon-BUw7H-hv.js +12 -0
  328. package/tracer-viewer-bundle/assets/horizon-BUw7H-hv.js.map +1 -0
  329. package/tracer-viewer-bundle/assets/horizon-bright-CUuTKBJd.js +12 -0
  330. package/tracer-viewer-bundle/assets/horizon-bright-CUuTKBJd.js.map +1 -0
  331. package/tracer-viewer-bundle/assets/houston-DnULxvSX.js +12 -0
  332. package/tracer-viewer-bundle/assets/houston-DnULxvSX.js.map +1 -0
  333. package/tracer-viewer-bundle/assets/html-derivative-DlHx6ybY.js +16 -0
  334. package/tracer-viewer-bundle/assets/html-derivative-DlHx6ybY.js.map +1 -0
  335. package/tracer-viewer-bundle/assets/html-pp8916En.js +15 -0
  336. package/tracer-viewer-bundle/assets/html-pp8916En.js.map +1 -0
  337. package/tracer-viewer-bundle/assets/http-jrhK8wxY.js +22 -0
  338. package/tracer-viewer-bundle/assets/http-jrhK8wxY.js.map +1 -0
  339. package/tracer-viewer-bundle/assets/hurl-irOxFIW8.js +21 -0
  340. package/tracer-viewer-bundle/assets/hurl-irOxFIW8.js.map +1 -0
  341. package/tracer-viewer-bundle/assets/hxml-Bvhsp5Yf.js +14 -0
  342. package/tracer-viewer-bundle/assets/hxml-Bvhsp5Yf.js.map +1 -0
  343. package/tracer-viewer-bundle/assets/hy-DFXneXwc.js +13 -0
  344. package/tracer-viewer-bundle/assets/hy-DFXneXwc.js.map +1 -0
  345. package/tracer-viewer-bundle/assets/imba-DGztddWO.js +13 -0
  346. package/tracer-viewer-bundle/assets/imba-DGztddWO.js.map +1 -0
  347. package/tracer-viewer-bundle/assets/index-CIRSNBm6.css +4792 -0
  348. package/tracer-viewer-bundle/assets/index-DS0dKIBi.js +36912 -0
  349. package/tracer-viewer-bundle/assets/index-DS0dKIBi.js.map +1 -0
  350. package/tracer-viewer-bundle/assets/ini-BEwlwnbL.js +13 -0
  351. package/tracer-viewer-bundle/assets/ini-BEwlwnbL.js.map +1 -0
  352. package/tracer-viewer-bundle/assets/java-CylS5w8V.js +13 -0
  353. package/tracer-viewer-bundle/assets/java-CylS5w8V.js.map +1 -0
  354. package/tracer-viewer-bundle/assets/javascript-wDzz0qaB.js +13 -0
  355. package/tracer-viewer-bundle/assets/javascript-wDzz0qaB.js.map +1 -0
  356. package/tracer-viewer-bundle/assets/jinja-f2NsQr07.js +22 -0
  357. package/tracer-viewer-bundle/assets/jinja-f2NsQr07.js.map +1 -0
  358. package/tracer-viewer-bundle/assets/jison-wvAkD_A8.js +14 -0
  359. package/tracer-viewer-bundle/assets/jison-wvAkD_A8.js.map +1 -0
  360. package/tracer-viewer-bundle/assets/json-Cp-IABpG.js +13 -0
  361. package/tracer-viewer-bundle/assets/json-Cp-IABpG.js.map +1 -0
  362. package/tracer-viewer-bundle/assets/json5-C9tS-k6U.js +13 -0
  363. package/tracer-viewer-bundle/assets/json5-C9tS-k6U.js.map +1 -0
  364. package/tracer-viewer-bundle/assets/jsonc-Des-eS-w.js +13 -0
  365. package/tracer-viewer-bundle/assets/jsonc-Des-eS-w.js.map +1 -0
  366. package/tracer-viewer-bundle/assets/jsonl-DcaNXYhu.js +13 -0
  367. package/tracer-viewer-bundle/assets/jsonl-DcaNXYhu.js.map +1 -0
  368. package/tracer-viewer-bundle/assets/jsonnet-DFQXde-d.js +13 -0
  369. package/tracer-viewer-bundle/assets/jsonnet-DFQXde-d.js.map +1 -0
  370. package/tracer-viewer-bundle/assets/jssm-C2t-YnRu.js +13 -0
  371. package/tracer-viewer-bundle/assets/jssm-C2t-YnRu.js.map +1 -0
  372. package/tracer-viewer-bundle/assets/jsx-g9-lgVsj.js +13 -0
  373. package/tracer-viewer-bundle/assets/jsx-g9-lgVsj.js.map +1 -0
  374. package/tracer-viewer-bundle/assets/julia-CxzCAyBv.js +21 -0
  375. package/tracer-viewer-bundle/assets/julia-CxzCAyBv.js.map +1 -0
  376. package/tracer-viewer-bundle/assets/just-VxiPbLrw.js +34 -0
  377. package/tracer-viewer-bundle/assets/just-VxiPbLrw.js.map +1 -0
  378. package/tracer-viewer-bundle/assets/kanagawa-dragon-CkXjmgJE.js +12 -0
  379. package/tracer-viewer-bundle/assets/kanagawa-dragon-CkXjmgJE.js.map +1 -0
  380. package/tracer-viewer-bundle/assets/kanagawa-lotus-CfQXZHmo.js +12 -0
  381. package/tracer-viewer-bundle/assets/kanagawa-lotus-CfQXZHmo.js.map +1 -0
  382. package/tracer-viewer-bundle/assets/kanagawa-wave-DWedfzmr.js +12 -0
  383. package/tracer-viewer-bundle/assets/kanagawa-wave-DWedfzmr.js.map +1 -0
  384. package/tracer-viewer-bundle/assets/kdl-DV7GczEv.js +13 -0
  385. package/tracer-viewer-bundle/assets/kdl-DV7GczEv.js.map +1 -0
  386. package/tracer-viewer-bundle/assets/kotlin-BdnUsdx6.js +13 -0
  387. package/tracer-viewer-bundle/assets/kotlin-BdnUsdx6.js.map +1 -0
  388. package/tracer-viewer-bundle/assets/kusto-wEQ09or8.js +13 -0
  389. package/tracer-viewer-bundle/assets/kusto-wEQ09or8.js.map +1 -0
  390. package/tracer-viewer-bundle/assets/laserwave-DUszq2jm.js +12 -0
  391. package/tracer-viewer-bundle/assets/laserwave-DUszq2jm.js.map +1 -0
  392. package/tracer-viewer-bundle/assets/latex-CWtU0Tv5.js +15 -0
  393. package/tracer-viewer-bundle/assets/latex-CWtU0Tv5.js.map +1 -0
  394. package/tracer-viewer-bundle/assets/lean-BZvkOJ9d.js +13 -0
  395. package/tracer-viewer-bundle/assets/lean-BZvkOJ9d.js.map +1 -0
  396. package/tracer-viewer-bundle/assets/less-B1dDrJ26.js +13 -0
  397. package/tracer-viewer-bundle/assets/less-B1dDrJ26.js.map +1 -0
  398. package/tracer-viewer-bundle/assets/light-plus-B7mTdjB0.js +12 -0
  399. package/tracer-viewer-bundle/assets/light-plus-B7mTdjB0.js.map +1 -0
  400. package/tracer-viewer-bundle/assets/liquid-C0sCDyMI.js +17 -0
  401. package/tracer-viewer-bundle/assets/liquid-C0sCDyMI.js.map +1 -0
  402. package/tracer-viewer-bundle/assets/llvm-DjAJT7YJ.js +13 -0
  403. package/tracer-viewer-bundle/assets/llvm-DjAJT7YJ.js.map +1 -0
  404. package/tracer-viewer-bundle/assets/log-2UxHyX5q.js +13 -0
  405. package/tracer-viewer-bundle/assets/log-2UxHyX5q.js.map +1 -0
  406. package/tracer-viewer-bundle/assets/logo-BtOb2qkB.js +13 -0
  407. package/tracer-viewer-bundle/assets/logo-BtOb2qkB.js.map +1 -0
  408. package/tracer-viewer-bundle/assets/lua-BaeVxFsk.js +14 -0
  409. package/tracer-viewer-bundle/assets/lua-BaeVxFsk.js.map +1 -0
  410. package/tracer-viewer-bundle/assets/luau-C-HG3fhB.js +13 -0
  411. package/tracer-viewer-bundle/assets/luau-C-HG3fhB.js.map +1 -0
  412. package/tracer-viewer-bundle/assets/make-CHLpvVh8.js +13 -0
  413. package/tracer-viewer-bundle/assets/make-CHLpvVh8.js.map +1 -0
  414. package/tracer-viewer-bundle/assets/markdown-Cvjx9yec.js +13 -0
  415. package/tracer-viewer-bundle/assets/markdown-Cvjx9yec.js.map +1 -0
  416. package/tracer-viewer-bundle/assets/marko-DjSrsDqO.js +17 -0
  417. package/tracer-viewer-bundle/assets/marko-DjSrsDqO.js.map +1 -0
  418. package/tracer-viewer-bundle/assets/material-theme-D5KoaKCx.js +12 -0
  419. package/tracer-viewer-bundle/assets/material-theme-D5KoaKCx.js.map +1 -0
  420. package/tracer-viewer-bundle/assets/material-theme-darker-BfHTSMKl.js +12 -0
  421. package/tracer-viewer-bundle/assets/material-theme-darker-BfHTSMKl.js.map +1 -0
  422. package/tracer-viewer-bundle/assets/material-theme-lighter-B0m2ddpp.js +12 -0
  423. package/tracer-viewer-bundle/assets/material-theme-lighter-B0m2ddpp.js.map +1 -0
  424. package/tracer-viewer-bundle/assets/material-theme-ocean-CyktbL80.js +12 -0
  425. package/tracer-viewer-bundle/assets/material-theme-ocean-CyktbL80.js.map +1 -0
  426. package/tracer-viewer-bundle/assets/material-theme-palenight-Csfq5Kiy.js +12 -0
  427. package/tracer-viewer-bundle/assets/material-theme-palenight-Csfq5Kiy.js.map +1 -0
  428. package/tracer-viewer-bundle/assets/matlab-D7o27uSR.js +13 -0
  429. package/tracer-viewer-bundle/assets/matlab-D7o27uSR.js.map +1 -0
  430. package/tracer-viewer-bundle/assets/mdc-DTYItulj.js +19 -0
  431. package/tracer-viewer-bundle/assets/mdc-DTYItulj.js.map +1 -0
  432. package/tracer-viewer-bundle/assets/mdx-Cmh6b_Ma.js +13 -0
  433. package/tracer-viewer-bundle/assets/mdx-Cmh6b_Ma.js.map +1 -0
  434. package/tracer-viewer-bundle/assets/mermaid-mWjccvbQ.js +13 -0
  435. package/tracer-viewer-bundle/assets/mermaid-mWjccvbQ.js.map +1 -0
  436. package/tracer-viewer-bundle/assets/min-dark-CafNBF8u.js +12 -0
  437. package/tracer-viewer-bundle/assets/min-dark-CafNBF8u.js.map +1 -0
  438. package/tracer-viewer-bundle/assets/min-light-CTRr51gU.js +12 -0
  439. package/tracer-viewer-bundle/assets/min-light-CTRr51gU.js.map +1 -0
  440. package/tracer-viewer-bundle/assets/mipsasm-CKIfxQSi.js +13 -0
  441. package/tracer-viewer-bundle/assets/mipsasm-CKIfxQSi.js.map +1 -0
  442. package/tracer-viewer-bundle/assets/mojo-rZm6bMo-.js +13 -0
  443. package/tracer-viewer-bundle/assets/mojo-rZm6bMo-.js.map +1 -0
  444. package/tracer-viewer-bundle/assets/monokai-D4h5O-jR.js +12 -0
  445. package/tracer-viewer-bundle/assets/monokai-D4h5O-jR.js.map +1 -0
  446. package/tracer-viewer-bundle/assets/moonbit-_H4v1dQx.js +13 -0
  447. package/tracer-viewer-bundle/assets/moonbit-_H4v1dQx.js.map +1 -0
  448. package/tracer-viewer-bundle/assets/move-IF9eRakj.js +13 -0
  449. package/tracer-viewer-bundle/assets/move-IF9eRakj.js.map +1 -0
  450. package/tracer-viewer-bundle/assets/narrat-DRg8JJMk.js +13 -0
  451. package/tracer-viewer-bundle/assets/narrat-DRg8JJMk.js.map +1 -0
  452. package/tracer-viewer-bundle/assets/nextflow-C-mBbutL.js +14 -0
  453. package/tracer-viewer-bundle/assets/nextflow-C-mBbutL.js.map +1 -0
  454. package/tracer-viewer-bundle/assets/nextflow-groovy-vE_lwT2v.js +13 -0
  455. package/tracer-viewer-bundle/assets/nextflow-groovy-vE_lwT2v.js.map +1 -0
  456. package/tracer-viewer-bundle/assets/nginx-BpAMiNFr.js +15 -0
  457. package/tracer-viewer-bundle/assets/nginx-BpAMiNFr.js.map +1 -0
  458. package/tracer-viewer-bundle/assets/night-owl-C39BiMTA.js +12 -0
  459. package/tracer-viewer-bundle/assets/night-owl-C39BiMTA.js.map +1 -0
  460. package/tracer-viewer-bundle/assets/night-owl-light-CMTm3GFP.js +12 -0
  461. package/tracer-viewer-bundle/assets/night-owl-light-CMTm3GFP.js.map +1 -0
  462. package/tracer-viewer-bundle/assets/nim-BIad80T-.js +21 -0
  463. package/tracer-viewer-bundle/assets/nim-BIad80T-.js.map +1 -0
  464. package/tracer-viewer-bundle/assets/nix-CwoSXNpI.js +19 -0
  465. package/tracer-viewer-bundle/assets/nix-CwoSXNpI.js.map +1 -0
  466. package/tracer-viewer-bundle/assets/nord-Ddv68eIx.js +12 -0
  467. package/tracer-viewer-bundle/assets/nord-Ddv68eIx.js.map +1 -0
  468. package/tracer-viewer-bundle/assets/nushell-Cz2AlsmD.js +13 -0
  469. package/tracer-viewer-bundle/assets/nushell-Cz2AlsmD.js.map +1 -0
  470. package/tracer-viewer-bundle/assets/objective-c-DXmwc3jG.js +13 -0
  471. package/tracer-viewer-bundle/assets/objective-c-DXmwc3jG.js.map +1 -0
  472. package/tracer-viewer-bundle/assets/objective-cpp-CLxacb5B.js +13 -0
  473. package/tracer-viewer-bundle/assets/objective-cpp-CLxacb5B.js.map +1 -0
  474. package/tracer-viewer-bundle/assets/ocaml-C0hk2d4L.js +13 -0
  475. package/tracer-viewer-bundle/assets/ocaml-C0hk2d4L.js.map +1 -0
  476. package/tracer-viewer-bundle/assets/odin-BBf5iR-q.js +13 -0
  477. package/tracer-viewer-bundle/assets/odin-BBf5iR-q.js.map +1 -0
  478. package/tracer-viewer-bundle/assets/one-dark-pro-DVMEJ2y_.js +12 -0
  479. package/tracer-viewer-bundle/assets/one-dark-pro-DVMEJ2y_.js.map +1 -0
  480. package/tracer-viewer-bundle/assets/one-light-C3Wv6jpd.js +12 -0
  481. package/tracer-viewer-bundle/assets/one-light-C3Wv6jpd.js.map +1 -0
  482. package/tracer-viewer-bundle/assets/openscad-C4EeE6gA.js +13 -0
  483. package/tracer-viewer-bundle/assets/openscad-C4EeE6gA.js.map +1 -0
  484. package/tracer-viewer-bundle/assets/pascal-D93ZcfNL.js +13 -0
  485. package/tracer-viewer-bundle/assets/pascal-D93ZcfNL.js.map +1 -0
  486. package/tracer-viewer-bundle/assets/perl-NvoQZIq0.js +19 -0
  487. package/tracer-viewer-bundle/assets/perl-NvoQZIq0.js.map +1 -0
  488. package/tracer-viewer-bundle/assets/php-R6g_5hLQ.js +20 -0
  489. package/tracer-viewer-bundle/assets/php-R6g_5hLQ.js.map +1 -0
  490. package/tracer-viewer-bundle/assets/pkl-u5AG7uiY.js +13 -0
  491. package/tracer-viewer-bundle/assets/pkl-u5AG7uiY.js.map +1 -0
  492. package/tracer-viewer-bundle/assets/plastic-3e1v2bzS.js +12 -0
  493. package/tracer-viewer-bundle/assets/plastic-3e1v2bzS.js.map +1 -0
  494. package/tracer-viewer-bundle/assets/plsql-ChMvpjG-.js +13 -0
  495. package/tracer-viewer-bundle/assets/plsql-ChMvpjG-.js.map +1 -0
  496. package/tracer-viewer-bundle/assets/po-BTJTHyun.js +13 -0
  497. package/tracer-viewer-bundle/assets/po-BTJTHyun.js.map +1 -0
  498. package/tracer-viewer-bundle/assets/poimandres-CS3Unz2-.js +12 -0
  499. package/tracer-viewer-bundle/assets/poimandres-CS3Unz2-.js.map +1 -0
  500. package/tracer-viewer-bundle/assets/polar-C0HS_06l.js +13 -0
  501. package/tracer-viewer-bundle/assets/polar-C0HS_06l.js.map +1 -0
  502. package/tracer-viewer-bundle/assets/postcss-CXtECtnM.js +13 -0
  503. package/tracer-viewer-bundle/assets/postcss-CXtECtnM.js.map +1 -0
  504. package/tracer-viewer-bundle/assets/powerquery-CEu0bR-o.js +13 -0
  505. package/tracer-viewer-bundle/assets/powerquery-CEu0bR-o.js.map +1 -0
  506. package/tracer-viewer-bundle/assets/powershell-Dpen1YoG.js +13 -0
  507. package/tracer-viewer-bundle/assets/powershell-Dpen1YoG.js.map +1 -0
  508. package/tracer-viewer-bundle/assets/prisma-Dd19v3D-.js +13 -0
  509. package/tracer-viewer-bundle/assets/prisma-Dd19v3D-.js.map +1 -0
  510. package/tracer-viewer-bundle/assets/prolog-CbFg5uaA.js +13 -0
  511. package/tracer-viewer-bundle/assets/prolog-CbFg5uaA.js.map +1 -0
  512. package/tracer-viewer-bundle/assets/proto-C7zT0LnQ.js +13 -0
  513. package/tracer-viewer-bundle/assets/proto-C7zT0LnQ.js.map +1 -0
  514. package/tracer-viewer-bundle/assets/pug-DKIMFp6K.js +16 -0
  515. package/tracer-viewer-bundle/assets/pug-DKIMFp6K.js.map +1 -0
  516. package/tracer-viewer-bundle/assets/puppet-BMWR74SV.js +13 -0
  517. package/tracer-viewer-bundle/assets/puppet-BMWR74SV.js.map +1 -0
  518. package/tracer-viewer-bundle/assets/purescript-CklMAg4u.js +13 -0
  519. package/tracer-viewer-bundle/assets/purescript-CklMAg4u.js.map +1 -0
  520. package/tracer-viewer-bundle/assets/python-B6aJPvgy.js +13 -0
  521. package/tracer-viewer-bundle/assets/python-B6aJPvgy.js.map +1 -0
  522. package/tracer-viewer-bundle/assets/qml-3beO22l8.js +14 -0
  523. package/tracer-viewer-bundle/assets/qml-3beO22l8.js.map +1 -0
  524. package/tracer-viewer-bundle/assets/qmldir-C8lEn-DE.js +13 -0
  525. package/tracer-viewer-bundle/assets/qmldir-C8lEn-DE.js.map +1 -0
  526. package/tracer-viewer-bundle/assets/qss-IeuSbFQv.js +13 -0
  527. package/tracer-viewer-bundle/assets/qss-IeuSbFQv.js.map +1 -0
  528. package/tracer-viewer-bundle/assets/r-Dspwwk_N.js +13 -0
  529. package/tracer-viewer-bundle/assets/r-Dspwwk_N.js.map +1 -0
  530. package/tracer-viewer-bundle/assets/racket-BqYA7rlc.js +13 -0
  531. package/tracer-viewer-bundle/assets/racket-BqYA7rlc.js.map +1 -0
  532. package/tracer-viewer-bundle/assets/raku-DXvB9xmW.js +13 -0
  533. package/tracer-viewer-bundle/assets/raku-DXvB9xmW.js.map +1 -0
  534. package/tracer-viewer-bundle/assets/razor-BDqjjVU7.js +17 -0
  535. package/tracer-viewer-bundle/assets/razor-BDqjjVU7.js.map +1 -0
  536. package/tracer-viewer-bundle/assets/red-bN70gL4F.js +12 -0
  537. package/tracer-viewer-bundle/assets/red-bN70gL4F.js.map +1 -0
  538. package/tracer-viewer-bundle/assets/reg-C-SQnVFl.js +13 -0
  539. package/tracer-viewer-bundle/assets/reg-C-SQnVFl.js.map +1 -0
  540. package/tracer-viewer-bundle/assets/regexp-CDVJQ6XC.js +13 -0
  541. package/tracer-viewer-bundle/assets/regexp-CDVJQ6XC.js.map +1 -0
  542. package/tracer-viewer-bundle/assets/rel-C3B-1QV4.js +13 -0
  543. package/tracer-viewer-bundle/assets/rel-C3B-1QV4.js.map +1 -0
  544. package/tracer-viewer-bundle/assets/riscv-BM1_JUlF.js +13 -0
  545. package/tracer-viewer-bundle/assets/riscv-BM1_JUlF.js.map +1 -0
  546. package/tracer-viewer-bundle/assets/ron-D8l8udqQ.js +13 -0
  547. package/tracer-viewer-bundle/assets/ron-D8l8udqQ.js.map +1 -0
  548. package/tracer-viewer-bundle/assets/rose-pine-dawn-DHQR4-dF.js +12 -0
  549. package/tracer-viewer-bundle/assets/rose-pine-dawn-DHQR4-dF.js.map +1 -0
  550. package/tracer-viewer-bundle/assets/rose-pine-moon-D4_iv3hh.js +12 -0
  551. package/tracer-viewer-bundle/assets/rose-pine-moon-D4_iv3hh.js.map +1 -0
  552. package/tracer-viewer-bundle/assets/rose-pine-qdsjHGoJ.js +12 -0
  553. package/tracer-viewer-bundle/assets/rose-pine-qdsjHGoJ.js.map +1 -0
  554. package/tracer-viewer-bundle/assets/rosmsg-BJDFO7_C.js +13 -0
  555. package/tracer-viewer-bundle/assets/rosmsg-BJDFO7_C.js.map +1 -0
  556. package/tracer-viewer-bundle/assets/rst-CRjBmOyv.js +35 -0
  557. package/tracer-viewer-bundle/assets/rst-CRjBmOyv.js.map +1 -0
  558. package/tracer-viewer-bundle/assets/ruby-Wjq7vjNf.js +31 -0
  559. package/tracer-viewer-bundle/assets/ruby-Wjq7vjNf.js.map +1 -0
  560. package/tracer-viewer-bundle/assets/rust-B1yitclQ.js +13 -0
  561. package/tracer-viewer-bundle/assets/rust-B1yitclQ.js.map +1 -0
  562. package/tracer-viewer-bundle/assets/sas-cz2c8ADy.js +14 -0
  563. package/tracer-viewer-bundle/assets/sas-cz2c8ADy.js.map +1 -0
  564. package/tracer-viewer-bundle/assets/sass-Cj5Yp3dK.js +13 -0
  565. package/tracer-viewer-bundle/assets/sass-Cj5Yp3dK.js.map +1 -0
  566. package/tracer-viewer-bundle/assets/scala-C151Ov-r.js +13 -0
  567. package/tracer-viewer-bundle/assets/scala-C151Ov-r.js.map +1 -0
  568. package/tracer-viewer-bundle/assets/scheme-C98Dy4si.js +13 -0
  569. package/tracer-viewer-bundle/assets/scheme-C98Dy4si.js.map +1 -0
  570. package/tracer-viewer-bundle/assets/scss-D5BDwBP9.js +14 -0
  571. package/tracer-viewer-bundle/assets/scss-D5BDwBP9.js.map +1 -0
  572. package/tracer-viewer-bundle/assets/sdbl-DVxCFoDh.js +13 -0
  573. package/tracer-viewer-bundle/assets/sdbl-DVxCFoDh.js.map +1 -0
  574. package/tracer-viewer-bundle/assets/shaderlab-Dg9Lc6iA.js +14 -0
  575. package/tracer-viewer-bundle/assets/shaderlab-Dg9Lc6iA.js.map +1 -0
  576. package/tracer-viewer-bundle/assets/shellscript-Yzrsuije.js +13 -0
  577. package/tracer-viewer-bundle/assets/shellscript-Yzrsuije.js.map +1 -0
  578. package/tracer-viewer-bundle/assets/shellsession-BADoaaVG.js +14 -0
  579. package/tracer-viewer-bundle/assets/shellsession-BADoaaVG.js.map +1 -0
  580. package/tracer-viewer-bundle/assets/slack-dark-BthQWCQV.js +12 -0
  581. package/tracer-viewer-bundle/assets/slack-dark-BthQWCQV.js.map +1 -0
  582. package/tracer-viewer-bundle/assets/slack-ochin-DqwNpetd.js +12 -0
  583. package/tracer-viewer-bundle/assets/slack-ochin-DqwNpetd.js.map +1 -0
  584. package/tracer-viewer-bundle/assets/smalltalk-BERRCDM3.js +13 -0
  585. package/tracer-viewer-bundle/assets/smalltalk-BERRCDM3.js.map +1 -0
  586. package/tracer-viewer-bundle/assets/snazzy-light-Bw305WKR.js +12 -0
  587. package/tracer-viewer-bundle/assets/snazzy-light-Bw305WKR.js.map +1 -0
  588. package/tracer-viewer-bundle/assets/solarized-dark-DXbdFlpD.js +12 -0
  589. package/tracer-viewer-bundle/assets/solarized-dark-DXbdFlpD.js.map +1 -0
  590. package/tracer-viewer-bundle/assets/solarized-light-L9t79GZl.js +12 -0
  591. package/tracer-viewer-bundle/assets/solarized-light-L9t79GZl.js.map +1 -0
  592. package/tracer-viewer-bundle/assets/solidity-rGO070M0.js +13 -0
  593. package/tracer-viewer-bundle/assets/solidity-rGO070M0.js.map +1 -0
  594. package/tracer-viewer-bundle/assets/soy-8wufbnw4.js +16 -0
  595. package/tracer-viewer-bundle/assets/soy-8wufbnw4.js.map +1 -0
  596. package/tracer-viewer-bundle/assets/sparql-rVzFXLq3.js +14 -0
  597. package/tracer-viewer-bundle/assets/sparql-rVzFXLq3.js.map +1 -0
  598. package/tracer-viewer-bundle/assets/splunk-BtCnVYZw.js +13 -0
  599. package/tracer-viewer-bundle/assets/splunk-BtCnVYZw.js.map +1 -0
  600. package/tracer-viewer-bundle/assets/sql-BLtJtn59.js +13 -0
  601. package/tracer-viewer-bundle/assets/sql-BLtJtn59.js.map +1 -0
  602. package/tracer-viewer-bundle/assets/ssh-config-_ykCGR6B.js +13 -0
  603. package/tracer-viewer-bundle/assets/ssh-config-_ykCGR6B.js.map +1 -0
  604. package/tracer-viewer-bundle/assets/stata-BH5u7GGu.js +14 -0
  605. package/tracer-viewer-bundle/assets/stata-BH5u7GGu.js.map +1 -0
  606. package/tracer-viewer-bundle/assets/stylus-BEDo0Tqx.js +13 -0
  607. package/tracer-viewer-bundle/assets/stylus-BEDo0Tqx.js.map +1 -0
  608. package/tracer-viewer-bundle/assets/surrealql-Bq5Q-fJD.js +14 -0
  609. package/tracer-viewer-bundle/assets/surrealql-Bq5Q-fJD.js.map +1 -0
  610. package/tracer-viewer-bundle/assets/svelte-Cy7k_4gC.js +17 -0
  611. package/tracer-viewer-bundle/assets/svelte-Cy7k_4gC.js.map +1 -0
  612. package/tracer-viewer-bundle/assets/swift-D82vCrfD.js +13 -0
  613. package/tracer-viewer-bundle/assets/swift-D82vCrfD.js.map +1 -0
  614. package/tracer-viewer-bundle/assets/synthwave-84-CbfX1IO0.js +12 -0
  615. package/tracer-viewer-bundle/assets/synthwave-84-CbfX1IO0.js.map +1 -0
  616. package/tracer-viewer-bundle/assets/system-verilog-CnnmHF94.js +13 -0
  617. package/tracer-viewer-bundle/assets/system-verilog-CnnmHF94.js.map +1 -0
  618. package/tracer-viewer-bundle/assets/systemd-4A_iFExJ.js +13 -0
  619. package/tracer-viewer-bundle/assets/systemd-4A_iFExJ.js.map +1 -0
  620. package/tracer-viewer-bundle/assets/talonscript-CkByrt1z.js +13 -0
  621. package/tracer-viewer-bundle/assets/talonscript-CkByrt1z.js.map +1 -0
  622. package/tracer-viewer-bundle/assets/tasl-QIJgUcNo.js +13 -0
  623. package/tracer-viewer-bundle/assets/tasl-QIJgUcNo.js.map +1 -0
  624. package/tracer-viewer-bundle/assets/tcl-dwOrl1Do.js +13 -0
  625. package/tracer-viewer-bundle/assets/tcl-dwOrl1Do.js.map +1 -0
  626. package/tracer-viewer-bundle/assets/templ-DhtptRzy.js +16 -0
  627. package/tracer-viewer-bundle/assets/templ-DhtptRzy.js.map +1 -0
  628. package/tracer-viewer-bundle/assets/terraform-BETggiCN.js +13 -0
  629. package/tracer-viewer-bundle/assets/terraform-BETggiCN.js.map +1 -0
  630. package/tracer-viewer-bundle/assets/tex-idrVyKtj.js +14 -0
  631. package/tracer-viewer-bundle/assets/tex-idrVyKtj.js.map +1 -0
  632. package/tracer-viewer-bundle/assets/tokyo-night-hegEt444.js +12 -0
  633. package/tracer-viewer-bundle/assets/tokyo-night-hegEt444.js.map +1 -0
  634. package/tracer-viewer-bundle/assets/toml-vGWfd6FD.js +13 -0
  635. package/tracer-viewer-bundle/assets/toml-vGWfd6FD.js.map +1 -0
  636. package/tracer-viewer-bundle/assets/ts-tags-DQrlYJgV.js +52 -0
  637. package/tracer-viewer-bundle/assets/ts-tags-DQrlYJgV.js.map +1 -0
  638. package/tracer-viewer-bundle/assets/tsv-B_m7g4N7.js +13 -0
  639. package/tracer-viewer-bundle/assets/tsv-B_m7g4N7.js.map +1 -0
  640. package/tracer-viewer-bundle/assets/tsx-COt5Ahok.js +13 -0
  641. package/tracer-viewer-bundle/assets/tsx-COt5Ahok.js.map +1 -0
  642. package/tracer-viewer-bundle/assets/turtle-BsS91CYL.js +13 -0
  643. package/tracer-viewer-bundle/assets/turtle-BsS91CYL.js.map +1 -0
  644. package/tracer-viewer-bundle/assets/twig-xg9kU7Mw.js +36 -0
  645. package/tracer-viewer-bundle/assets/twig-xg9kU7Mw.js.map +1 -0
  646. package/tracer-viewer-bundle/assets/typescript-BPQ3VLAy.js +13 -0
  647. package/tracer-viewer-bundle/assets/typescript-BPQ3VLAy.js.map +1 -0
  648. package/tracer-viewer-bundle/assets/typespec-CAFt9gP4.js +13 -0
  649. package/tracer-viewer-bundle/assets/typespec-CAFt9gP4.js.map +1 -0
  650. package/tracer-viewer-bundle/assets/typst-DHCkPAjA.js +13 -0
  651. package/tracer-viewer-bundle/assets/typst-DHCkPAjA.js.map +1 -0
  652. package/tracer-viewer-bundle/assets/v-BcVCzyr7.js +13 -0
  653. package/tracer-viewer-bundle/assets/v-BcVCzyr7.js.map +1 -0
  654. package/tracer-viewer-bundle/assets/vala-CsfeWuGM.js +13 -0
  655. package/tracer-viewer-bundle/assets/vala-CsfeWuGM.js.map +1 -0
  656. package/tracer-viewer-bundle/assets/vb-D17OF-Vu.js +13 -0
  657. package/tracer-viewer-bundle/assets/vb-D17OF-Vu.js.map +1 -0
  658. package/tracer-viewer-bundle/assets/verilog-BQ8w6xss.js +13 -0
  659. package/tracer-viewer-bundle/assets/verilog-BQ8w6xss.js.map +1 -0
  660. package/tracer-viewer-bundle/assets/vesper-DU1UobuO.js +12 -0
  661. package/tracer-viewer-bundle/assets/vesper-DU1UobuO.js.map +1 -0
  662. package/tracer-viewer-bundle/assets/vhdl-CeAyd5Ju.js +13 -0
  663. package/tracer-viewer-bundle/assets/vhdl-CeAyd5Ju.js.map +1 -0
  664. package/tracer-viewer-bundle/assets/viml-CJc9bBzg.js +13 -0
  665. package/tracer-viewer-bundle/assets/viml-CJc9bBzg.js.map +1 -0
  666. package/tracer-viewer-bundle/assets/vitesse-black-Bkuqu6BP.js +12 -0
  667. package/tracer-viewer-bundle/assets/vitesse-black-Bkuqu6BP.js.map +1 -0
  668. package/tracer-viewer-bundle/assets/vitesse-dark-D0r3Knsf.js +12 -0
  669. package/tracer-viewer-bundle/assets/vitesse-dark-D0r3Knsf.js.map +1 -0
  670. package/tracer-viewer-bundle/assets/vitesse-light-CVO1_9PV.js +12 -0
  671. package/tracer-viewer-bundle/assets/vitesse-light-CVO1_9PV.js.map +1 -0
  672. package/tracer-viewer-bundle/assets/vue-D2xRrEX4.js +43 -0
  673. package/tracer-viewer-bundle/assets/vue-D2xRrEX4.js.map +1 -0
  674. package/tracer-viewer-bundle/assets/vue-html-AaS7Mt5G.js +14 -0
  675. package/tracer-viewer-bundle/assets/vue-html-AaS7Mt5G.js.map +1 -0
  676. package/tracer-viewer-bundle/assets/vue-vine-BoDAl6tE.js +19 -0
  677. package/tracer-viewer-bundle/assets/vue-vine-BoDAl6tE.js.map +1 -0
  678. package/tracer-viewer-bundle/assets/vyper-CDx5xZoG.js +13 -0
  679. package/tracer-viewer-bundle/assets/vyper-CDx5xZoG.js.map +1 -0
  680. package/tracer-viewer-bundle/assets/wasm-CG6Dc4jp.js +15 -0
  681. package/tracer-viewer-bundle/assets/wasm-CG6Dc4jp.js.map +1 -0
  682. package/tracer-viewer-bundle/assets/wasm-MzD3tlZU.js +13 -0
  683. package/tracer-viewer-bundle/assets/wasm-MzD3tlZU.js.map +1 -0
  684. package/tracer-viewer-bundle/assets/wenyan-BV7otONQ.js +13 -0
  685. package/tracer-viewer-bundle/assets/wenyan-BV7otONQ.js.map +1 -0
  686. package/tracer-viewer-bundle/assets/wgsl-Dx-B1_4e.js +13 -0
  687. package/tracer-viewer-bundle/assets/wgsl-Dx-B1_4e.js.map +1 -0
  688. package/tracer-viewer-bundle/assets/wikitext-BhOHFoWU.js +13 -0
  689. package/tracer-viewer-bundle/assets/wikitext-BhOHFoWU.js.map +1 -0
  690. package/tracer-viewer-bundle/assets/wit-5i3qLPDT.js +13 -0
  691. package/tracer-viewer-bundle/assets/wit-5i3qLPDT.js.map +1 -0
  692. package/tracer-viewer-bundle/assets/wolfram-lXgVvXCa.js +13 -0
  693. package/tracer-viewer-bundle/assets/wolfram-lXgVvXCa.js.map +1 -0
  694. package/tracer-viewer-bundle/assets/xml-sdJ4AIDG.js +14 -0
  695. package/tracer-viewer-bundle/assets/xml-sdJ4AIDG.js.map +1 -0
  696. package/tracer-viewer-bundle/assets/xsl-CtQFsRM5.js +15 -0
  697. package/tracer-viewer-bundle/assets/xsl-CtQFsRM5.js.map +1 -0
  698. package/tracer-viewer-bundle/assets/yaml-Buea-lGh.js +13 -0
  699. package/tracer-viewer-bundle/assets/yaml-Buea-lGh.js.map +1 -0
  700. package/tracer-viewer-bundle/assets/zenscript-DVFEvuxE.js +13 -0
  701. package/tracer-viewer-bundle/assets/zenscript-DVFEvuxE.js.map +1 -0
  702. package/tracer-viewer-bundle/assets/zig-VOosw3JB.js +13 -0
  703. package/tracer-viewer-bundle/assets/zig-VOosw3JB.js.map +1 -0
  704. package/tracer-viewer-bundle/index.html +25 -0
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Copyright: (c) Myia SAS 2026.
3
+ * This file and its contents are licensed under the AGPLv3 License.
4
+ * Please see the LICENSE file at the root of this repository
5
+ */
6
+ import type { FullConfig, Reporter, TestCase, TestResult } from '@playwright/test/reporter';
7
+ import type { TestResultRecord } from '../../domain/trace-event-recorder/model/statement-trace-schema';
8
+ import { CrashErrorClassifier } from './crash-error-classifier';
9
+ import { FailingStatementFinder } from './failing-statement-finder';
10
+ import { NdjsonTailInspector } from './ndjson-tail-inspector';
11
+ /**
12
+ * Subdirectory under each project's `outputDir` where the fixture
13
+ * writes a registry entry per (testId, attempt). Shared string
14
+ * constant between fixture (writer) and reporter (reader).
15
+ */
16
+ export declare const HEAL_PENDING_SUBDIR = ".heal-pending";
17
+ /**
18
+ * Shape of the per-test registry entry. Minimal: everything else
19
+ * the reporter needs is reachable from `TestCase` / `TestResult`.
20
+ */
21
+ export interface HealTraceContext {
22
+ /** Absolute path to the per-test `heal-traces.ndjson`. */
23
+ ndjsonPath: string;
24
+ /**
25
+ * Absolute path to the per-(test, attempt) directory inside the
26
+ * persistent `heal-traces/` tree — the destination root the reporter
27
+ * copies Playwright artefacts into. Reporter-emitted
28
+ * `test-attachments` paths are relative to this directory.
29
+ */
30
+ rootDir: string;
31
+ /**
32
+ * Absolute `testInfo.outputDir` — the source directory Playwright
33
+ * writes its own attachments into (`trace.zip`, `video.webm`,
34
+ * failure screenshots, user `testInfo.attach()` files).
35
+ */
36
+ playwrightOutputDir: string;
37
+ /** Per-process executionId at the time the fixture wrote the entry. */
38
+ executionId: string;
39
+ }
40
+ /**
41
+ * Context handed to the `onRescue` hook. Extends `HealTraceContext`
42
+ * with the per-test correlation fields the hook needs to route the
43
+ * synthetic record.
44
+ */
45
+ export interface RescueContext extends HealTraceContext {
46
+ /** Playwright `TestCase.id` — stable hash of (file, title, project). */
47
+ testId: string;
48
+ /** 1-indexed attempt number = `TestResult.retry + 1`. */
49
+ attempt: number;
50
+ /** `TestResult.workerIndex` where the crash happened. */
51
+ workerIndex: number;
52
+ }
53
+ /**
54
+ * Invoked after the reporter has appended its synthetic
55
+ * `test-result` to the NDJSON. Intended for extensions that need to
56
+ * forward the rescued record to a live destination the in-worker
57
+ * exporters never got to reach — anything running per-test inside
58
+ * the worker dies with it on a crash.
59
+ *
60
+ * Errors are caught by the reporter and logged to `process.stderr`;
61
+ * a failing hook never breaks the Playwright run or prevents the
62
+ * on-disk append from landing.
63
+ */
64
+ export type RescueHook = (record: TestResultRecord, ctx: RescueContext) => void | Promise<void>;
65
+ export interface HealTracerReporterDeps {
66
+ classifier?: CrashErrorClassifier;
67
+ inspector?: NdjsonTailInspector;
68
+ failingStatementFinder?: FailingStatementFinder;
69
+ /**
70
+ * Seam for tests — defaults to `fs.appendFileSync`. Kept sync so
71
+ * the synthetic line hits disk before the reporter returns, same
72
+ * crash-safety discipline as `NdjsonExporter`.
73
+ */
74
+ appendFile?: (path: string, data: string) => void;
75
+ onRescue?: RescueHook;
76
+ }
77
+ /** Path to the registry file for a given (project, test, attempt). */
78
+ export declare function healPendingRegistryPath(projectOutputDir: string, testId: string, attempt: number): string;
79
+ export declare class HealTracerReporter implements Reporter {
80
+ private readonly classifier;
81
+ private readonly inspector;
82
+ private readonly failingStatementFinder;
83
+ private readonly appendFile;
84
+ private readonly onRescue;
85
+ private readonly stderrByWorker;
86
+ private projectOutputDirs;
87
+ private executionId;
88
+ private executionSource;
89
+ private startedAt;
90
+ private rootDir;
91
+ private playwrightVersion;
92
+ private gitInfo;
93
+ private readonly testEntriesById;
94
+ constructor(deps?: HealTracerReporterDeps);
95
+ printsToStdio(): boolean;
96
+ onBegin(config: FullConfig, _suite: unknown): void;
97
+ onTestBegin(_test: TestCase, result: TestResult): void;
98
+ onStdErr(chunk: string | Buffer, _test: void | TestCase, result: void | TestResult): void;
99
+ onTestEnd(test: TestCase, result: TestResult): void;
100
+ private resolveTraceContext;
101
+ /**
102
+ * Copy each Playwright attachment from its `outputDir` location
103
+ * into the persistent heal-traces tree (under `traceCtx.rootDir`),
104
+ * mapping by `name` / `contentType`:
105
+ *
106
+ * - 'trace' → <rootDir>/trace.zip
107
+ * - contentType: 'video/...' → <rootDir>/videos/<basename>
108
+ * - other (screenshot, user) → <rootDir>/<rel-from-outputDir>
109
+ *
110
+ * Returns a `test-attachments` record whose `path` fields are the
111
+ * destination-relative locations using forward slashes, so the
112
+ * local-viewer-server can serve them via `/api/asset/...`.
113
+ *
114
+ * Attachments whose source path falls outside Playwright's
115
+ * outputDir are dropped — those would not be safely servable.
116
+ */
117
+ private copyAndBuildAttachmentsRecord;
118
+ private placeAttachment;
119
+ private cleanupRegistry;
120
+ private buildSyntheticTestResult;
121
+ private invokeRescueHook;
122
+ /**
123
+ * Upsert the per-test entry for `test` and append an attempt slice
124
+ * built from `result`. When `ndjsonPath` is non-null and the
125
+ * attempt did not pass, scans the file for the deepest threw
126
+ * statement and attaches it as `failingStatement` + `error`. A
127
+ * `rescuedRecord` (synthesized by the rescue path) supplies
128
+ * `error` when no statement-level threw is present.
129
+ */
130
+ private captureAttempt;
131
+ private upsertTestEntry;
132
+ private mapTestStatus;
133
+ onEnd(): void;
134
+ }
@@ -0,0 +1,537 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright: (c) Myia SAS 2026.
4
+ * This file and its contents are licensed under the AGPLv3 License.
5
+ * Please see the LICENSE file at the root of this repository
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.HealTracerReporter = exports.HEAL_PENDING_SUBDIR = void 0;
42
+ exports.healPendingRegistryPath = healPendingRegistryPath;
43
+ // Optional Playwright `Reporter` that runs in the MAIN process and
44
+ // rescues per-test NDJSON files when the worker dies before the
45
+ // fixture's teardown can finalize them.
46
+ //
47
+ // Crash paths the fixture cannot handle on its own (worker OOM,
48
+ // SIGKILL, segfault, `process.exit()`): the fixture's `finally`
49
+ // block never runs, so `projector.finalize(...)` never writes the
50
+ // `test-result` terminator. The NDJSON is left open-ended, and
51
+ // consumers cannot tell whether the test crashed or the file is
52
+ // simply still being written.
53
+ //
54
+ // The reporter subscribes to `onTestEnd` — which fires even when
55
+ // the worker died, because Playwright fabricates the result from
56
+ // the main-process side. It then:
57
+ //
58
+ // 1. Resolves the per-test NDJSON path + outputDir from a
59
+ // filesystem REGISTRY the fixture writes at test setup:
60
+ // `<project.outputDir>/.heal-pending/<testId>-<attempt>.json`.
61
+ // The registry is needed because Playwright's IPC does NOT
62
+ // flush fixture-pushed annotations/attachments on abrupt
63
+ // worker exit (OOM/SIGKILL/`process.exit()`) — exactly the
64
+ // cases we most need to rescue. A file on disk survives any
65
+ // abrupt exit. The fixture deletes the registry entry at
66
+ // teardown, so only crashed tests leave an orphan behind.
67
+ // This reporter is then the only thing that reads the orphan.
68
+ // 2. Early-returns if the registry entry is missing (tracer not
69
+ // wired for this test, or fixture already deleted it on clean
70
+ // teardown) or if the NDJSON already ends with `test-result`
71
+ // (defensive — shouldn't happen given the deletion step).
72
+ // 3. Classifies the crash via `CrashErrorClassifier` using the
73
+ // worker's stderr buffer and `TestResult.errors`, then appends
74
+ // a synthetic `test-result` line with the classified error.
75
+ // 4. If an `onRescue` hook is configured, invokes it (fire-and-
76
+ // forget) so extension code can observe the rescued record.
77
+ //
78
+ // Registration (user-facing, in `playwright.config.ts`):
79
+ //
80
+ // reporter: [['@heal-dev/heal-playwright-tracer/reporter']]
81
+ //
82
+ // Registration is mandatory whenever the Babel plugin is wired —
83
+ // the fixture asserts on the `HEAL_TRACER_REPORTER` env var (set
84
+ // here in `onBegin`) and fails fast if it's missing.
85
+ const child_process_1 = require("child_process");
86
+ const fs = __importStar(require("fs"));
87
+ const path = __importStar(require("path"));
88
+ const persistence_1 = require("../../domain/persistence");
89
+ const heal_traces_layout_1 = require("../heal-traces-layout");
90
+ const crash_error_classifier_1 = require("./crash-error-classifier");
91
+ const failing_statement_finder_1 = require("./failing-statement-finder");
92
+ const ndjson_tail_inspector_1 = require("./ndjson-tail-inspector");
93
+ const logger_1 = require("../../util/logger");
94
+ /**
95
+ * Subdirectory under each project's `outputDir` where the fixture
96
+ * writes a registry entry per (testId, attempt). Shared string
97
+ * constant between fixture (writer) and reporter (reader).
98
+ */
99
+ exports.HEAL_PENDING_SUBDIR = '.heal-pending';
100
+ /** Path to the registry file for a given (project, test, attempt). */
101
+ function healPendingRegistryPath(projectOutputDir, testId, attempt) {
102
+ return path.join(projectOutputDir, exports.HEAL_PENDING_SUBDIR, `${testId}-${attempt}.json`);
103
+ }
104
+ class HealTracerReporter {
105
+ constructor(deps = {}) {
106
+ this.stderrByWorker = new Map();
107
+ this.projectOutputDirs = [];
108
+ // Execution history (P2) — reporter is the only writer of
109
+ // executions.ndjson + execution.json. Resolved at onBegin so the
110
+ // executionId propagates to workers via HEAL_EXECUTION_ID.
111
+ this.executionId = '';
112
+ this.executionSource = 'generated';
113
+ this.startedAt = 0;
114
+ this.rootDir = '';
115
+ // Keyed by playwrightTestId so retries fold into the same test entry.
116
+ // Insertion order = first-seen test order, which the manifest preserves.
117
+ this.testEntriesById = new Map();
118
+ this.classifier = deps.classifier ?? new crash_error_classifier_1.CrashErrorClassifier();
119
+ this.inspector = deps.inspector ?? new ndjson_tail_inspector_1.NdjsonTailInspector();
120
+ this.failingStatementFinder = deps.failingStatementFinder ?? new failing_statement_finder_1.FailingStatementFinder();
121
+ this.appendFile = deps.appendFile ?? ((p, d) => fs.appendFileSync(p, d, { encoding: 'utf8' }));
122
+ this.onRescue = deps.onRescue ?? null;
123
+ }
124
+ printsToStdio() {
125
+ return false;
126
+ }
127
+ onBegin(config, _suite) {
128
+ // Capture every project's outputDir so we know where to look
129
+ // for registry entries regardless of which project a given
130
+ // TestCase belongs to. Deduped — sharded configs sometimes
131
+ // repeat the same outputDir across projects.
132
+ const seen = new Set();
133
+ for (const project of config.projects) {
134
+ if (project.outputDir && !seen.has(project.outputDir)) {
135
+ seen.add(project.outputDir);
136
+ this.projectOutputDirs.push(project.outputDir);
137
+ }
138
+ }
139
+ // Resolve executionId once in main BEFORE workers spawn, then
140
+ // propagate via env so worker fixtures see the same value.
141
+ // Workers' resolver reports `source='env'` after this — that's
142
+ // expected; the truthful source we record on the run is OURS,
143
+ // captured here before we mutate the env var.
144
+ this.executionSource = (0, heal_traces_layout_1.getExecutionIdSource)();
145
+ this.executionId = (0, heal_traces_layout_1.resolveExecutionId)();
146
+ if (this.executionSource === 'generated') {
147
+ process.env.HEAL_EXECUTION_ID = this.executionId;
148
+ }
149
+ // Worker fixtures assert on this env var to detect when a user has
150
+ // wired the Babel plugin but forgotten to register the reporter.
151
+ // Setting it here (before workers spawn) is the handshake; the
152
+ // fixture's check is the enforcement.
153
+ process.env.HEAL_TRACER_REPORTER = '1';
154
+ this.startedAt = Date.now();
155
+ this.rootDir = process.cwd();
156
+ this.playwrightVersion = readPlaywrightVersion();
157
+ this.gitInfo = readGitInfo();
158
+ }
159
+ onTestBegin(_test, result) {
160
+ this.stderrByWorker.delete(result.workerIndex);
161
+ }
162
+ onStdErr(chunk, _test, result) {
163
+ if (!result)
164
+ return;
165
+ const text = typeof chunk === 'string' ? chunk : chunk.toString('utf8');
166
+ const buf = this.stderrByWorker.get(result.workerIndex) ?? [];
167
+ buf.push(text);
168
+ this.stderrByWorker.set(result.workerIndex, buf);
169
+ }
170
+ onTestEnd(test, result) {
171
+ const traceCtx = this.resolveTraceContext(test, result);
172
+ // Tracer not wired for this test (no registry entry) or the
173
+ // worker never started a trace file — record what Playwright
174
+ // already knows and stop. No failing-statement source on disk.
175
+ if (!traceCtx || !fs.existsSync(traceCtx.ndjsonPath)) {
176
+ this.captureAttempt(test, result, null, null);
177
+ if (traceCtx)
178
+ this.cleanupRegistry(test, result);
179
+ return;
180
+ }
181
+ let rescuedRecord = null;
182
+ // Rescue path: file is missing the `test-result` terminator.
183
+ // Synthesize one from the worker's stderr buffer + Playwright's
184
+ // post-mortem `result.errors`.
185
+ if (!this.inspector.endsWithTestResult(traceCtx.ndjsonPath)) {
186
+ const stderr = (this.stderrByWorker.get(result.workerIndex) ?? []).join('');
187
+ const error = this.classifier.classify(result.errors, stderr);
188
+ rescuedRecord = this.buildSyntheticTestResult(result, stderr, error);
189
+ try {
190
+ this.appendFile(traceCtx.ndjsonPath, JSON.stringify(rescuedRecord) + '\n');
191
+ }
192
+ catch (err) {
193
+ logger_1.log.error(`failed to append synthetic test-result to ${traceCtx.ndjsonPath}`, err);
194
+ this.captureAttempt(test, result, null, null);
195
+ this.cleanupRegistry(test, result);
196
+ return;
197
+ }
198
+ }
199
+ // Always-on: copy each Playwright attachment from its outputDir
200
+ // location into the persistent heal-traces tree, then append a
201
+ // `test-attachments` record whose paths are relative to that
202
+ // tree. Keeps the file shape canonical (test-result then
203
+ // test-attachments) and makes the heal-traces dir the single
204
+ // source of truth — Playwright's `outputDir` can be wiped, the
205
+ // history survives.
206
+ const attachmentsRecord = this.copyAndBuildAttachmentsRecord(result, traceCtx);
207
+ try {
208
+ this.appendFile(traceCtx.ndjsonPath, JSON.stringify(attachmentsRecord) + '\n');
209
+ }
210
+ catch (err) {
211
+ logger_1.log.error(`failed to append test-attachments to ${traceCtx.ndjsonPath}`, err);
212
+ }
213
+ this.captureAttempt(test, result, traceCtx.ndjsonPath, rescuedRecord);
214
+ this.cleanupRegistry(test, result);
215
+ if (rescuedRecord) {
216
+ this.invokeRescueHook(rescuedRecord, traceCtx, test, result);
217
+ }
218
+ }
219
+ // Probes each known project outputDir for the per-test registry
220
+ // entry. First match wins — the same (testId, attempt) never
221
+ // spans projects. Returns null when no entry exists, which means
222
+ // either the tracer wasn't wired for this test or the fixture
223
+ // already cleaned up on a clean teardown.
224
+ resolveTraceContext(test, result) {
225
+ const attempt = result.retry + 1;
226
+ for (const outputDir of this.projectOutputDirs) {
227
+ const entryPath = healPendingRegistryPath(outputDir, test.id, attempt);
228
+ let body;
229
+ try {
230
+ body = fs.readFileSync(entryPath, 'utf8');
231
+ }
232
+ catch {
233
+ continue;
234
+ }
235
+ try {
236
+ const parsed = JSON.parse(body);
237
+ if (typeof parsed.ndjsonPath !== 'string' || parsed.ndjsonPath.length === 0)
238
+ continue;
239
+ if (typeof parsed.rootDir !== 'string' || parsed.rootDir.length === 0)
240
+ continue;
241
+ if (typeof parsed.playwrightOutputDir !== 'string' ||
242
+ parsed.playwrightOutputDir.length === 0) {
243
+ continue;
244
+ }
245
+ if (typeof parsed.executionId !== 'string' || parsed.executionId.length === 0) {
246
+ continue;
247
+ }
248
+ return {
249
+ ndjsonPath: parsed.ndjsonPath,
250
+ rootDir: parsed.rootDir,
251
+ playwrightOutputDir: parsed.playwrightOutputDir,
252
+ executionId: parsed.executionId,
253
+ };
254
+ }
255
+ catch {
256
+ continue;
257
+ }
258
+ }
259
+ return null;
260
+ }
261
+ /**
262
+ * Copy each Playwright attachment from its `outputDir` location
263
+ * into the persistent heal-traces tree (under `traceCtx.rootDir`),
264
+ * mapping by `name` / `contentType`:
265
+ *
266
+ * - 'trace' → <rootDir>/trace.zip
267
+ * - contentType: 'video/...' → <rootDir>/videos/<basename>
268
+ * - other (screenshot, user) → <rootDir>/<rel-from-outputDir>
269
+ *
270
+ * Returns a `test-attachments` record whose `path` fields are the
271
+ * destination-relative locations using forward slashes, so the
272
+ * local-viewer-server can serve them via `/api/asset/...`.
273
+ *
274
+ * Attachments whose source path falls outside Playwright's
275
+ * outputDir are dropped — those would not be safely servable.
276
+ */
277
+ copyAndBuildAttachmentsRecord(result, traceCtx) {
278
+ const srcRoot = path.resolve(traceCtx.playwrightOutputDir);
279
+ const dstRoot = path.resolve(traceCtx.rootDir);
280
+ const attachments = [];
281
+ for (const att of result.attachments ?? []) {
282
+ if (!att.path)
283
+ continue;
284
+ const srcResolved = path.resolve(att.path);
285
+ const relFromSrc = path.relative(srcRoot, srcResolved);
286
+ if (relFromSrc.length === 0 || relFromSrc.startsWith('..') || path.isAbsolute(relFromSrc)) {
287
+ continue;
288
+ }
289
+ const dstRel = this.placeAttachment(att.name, att.contentType, relFromSrc);
290
+ const dstAbs = path.resolve(dstRoot, dstRel);
291
+ try {
292
+ fs.mkdirSync(path.dirname(dstAbs), { recursive: true });
293
+ fs.copyFileSync(srcResolved, dstAbs);
294
+ }
295
+ catch (err) {
296
+ logger_1.log.error(`failed to copy attachment ${att.name} (${srcResolved} → ${dstAbs})`, err);
297
+ continue;
298
+ }
299
+ // Forward slashes on all platforms — the local viewer maps
300
+ // these into URLs and Windows paths break URL routing.
301
+ const rel = dstRel.split(path.sep).join('/');
302
+ attachments.push({
303
+ name: att.name,
304
+ path: rel,
305
+ contentType: att.contentType,
306
+ });
307
+ }
308
+ return { kind: 'test-attachments', attachments };
309
+ }
310
+ placeAttachment(name, contentType, relFromSrc) {
311
+ if (name === 'trace') {
312
+ return 'trace.zip';
313
+ }
314
+ if (contentType.toLowerCase().startsWith('video/')) {
315
+ return path.join('videos', path.basename(relFromSrc));
316
+ }
317
+ return relFromSrc;
318
+ }
319
+ cleanupRegistry(test, result) {
320
+ const attempt = result.retry + 1;
321
+ for (const outputDir of this.projectOutputDirs) {
322
+ const entryPath = healPendingRegistryPath(outputDir, test.id, attempt);
323
+ try {
324
+ fs.unlinkSync(entryPath);
325
+ }
326
+ catch {
327
+ /* entry may not exist; ignore */
328
+ }
329
+ }
330
+ }
331
+ buildSyntheticTestResult(result, stderr, error) {
332
+ const record = {
333
+ kind: 'test-result',
334
+ status: result.status,
335
+ duration: result.duration,
336
+ error,
337
+ };
338
+ if (stderr.length > 0)
339
+ record.stderr = [stderr];
340
+ return record;
341
+ }
342
+ invokeRescueHook(record, traceCtx, test, result) {
343
+ if (!this.onRescue)
344
+ return;
345
+ const rescueCtx = {
346
+ ndjsonPath: traceCtx.ndjsonPath,
347
+ rootDir: traceCtx.rootDir,
348
+ playwrightOutputDir: traceCtx.playwrightOutputDir,
349
+ executionId: traceCtx.executionId,
350
+ testId: test.id,
351
+ attempt: result.retry + 1,
352
+ workerIndex: result.workerIndex,
353
+ };
354
+ // Fire-and-forget: Playwright's `onTestEnd` is typed as sync
355
+ // `void`, and the synthetic record is already durably on disk.
356
+ // A slow or failing hook must not block the reporter or
357
+ // propagate errors to the Playwright run.
358
+ void Promise.resolve()
359
+ .then(() => this.onRescue(record, rescueCtx))
360
+ .catch((err) => {
361
+ logger_1.log.error('onRescue hook failed', err);
362
+ });
363
+ }
364
+ /**
365
+ * Upsert the per-test entry for `test` and append an attempt slice
366
+ * built from `result`. When `ndjsonPath` is non-null and the
367
+ * attempt did not pass, scans the file for the deepest threw
368
+ * statement and attaches it as `failingStatement` + `error`. A
369
+ * `rescuedRecord` (synthesized by the rescue path) supplies
370
+ * `error` when no statement-level threw is present.
371
+ */
372
+ captureAttempt(test, result, ndjsonPath, rescuedRecord) {
373
+ const entry = this.upsertTestEntry(test);
374
+ const attempt = {
375
+ attempt: result.retry + 1,
376
+ status: this.mapTestStatus(result.status),
377
+ startedAt: result.startTime instanceof Date ? result.startTime.getTime() : Date.now(),
378
+ durationMs: result.duration,
379
+ };
380
+ if (attempt.status !== 'passed' && attempt.status !== 'skipped') {
381
+ const found = ndjsonPath ? this.failingStatementFinder.find(ndjsonPath) : null;
382
+ if (found) {
383
+ attempt.failingStatement = found.statement;
384
+ attempt.error = found.error;
385
+ }
386
+ else if (rescuedRecord?.error) {
387
+ attempt.error = rescuedRecord.error;
388
+ }
389
+ }
390
+ entry.attempts.push(attempt);
391
+ }
392
+ upsertTestEntry(test) {
393
+ const existing = this.testEntriesById.get(test.id);
394
+ if (existing)
395
+ return existing;
396
+ const titlePath = typeof test.titlePath === 'function'
397
+ ? test.titlePath()
398
+ : [];
399
+ const file = test.location?.file ?? '';
400
+ const project = test.parent?.project?.()
401
+ ?.name ?? '';
402
+ const entry = {
403
+ playwrightTestId: test.id,
404
+ title: test.title,
405
+ titlePath,
406
+ file,
407
+ project,
408
+ attempts: [],
409
+ };
410
+ this.testEntriesById.set(test.id, entry);
411
+ return entry;
412
+ }
413
+ mapTestStatus(s) {
414
+ switch (s) {
415
+ case 'passed':
416
+ case 'failed':
417
+ case 'timedOut':
418
+ case 'skipped':
419
+ case 'interrupted':
420
+ return s;
421
+ default:
422
+ return 'unknown';
423
+ }
424
+ }
425
+ onEnd() {
426
+ if (this.executionId.length === 0)
427
+ return;
428
+ const layout = new heal_traces_layout_1.HealTracesLayout(this.rootDir, this.executionId);
429
+ const endedAt = Date.now();
430
+ const tests = Array.from(this.testEntriesById.values());
431
+ const totals = computeTotals(tests);
432
+ const manifest = {
433
+ executionId: this.executionId,
434
+ source: this.executionSource,
435
+ startedAt: this.startedAt,
436
+ endedAt,
437
+ durationMs: endedAt - this.startedAt,
438
+ ...(this.gitInfo ? { git: this.gitInfo } : {}),
439
+ ...(this.playwrightVersion ? { playwrightVersion: this.playwrightVersion } : {}),
440
+ totals,
441
+ tests,
442
+ };
443
+ const record = {
444
+ kind: persistence_1.EXECUTION_RECORD_KIND,
445
+ executionId: this.executionId,
446
+ source: this.executionSource,
447
+ startedAt: this.startedAt,
448
+ endedAt,
449
+ durationMs: endedAt - this.startedAt,
450
+ ...(this.gitInfo ? { git: this.gitInfo } : {}),
451
+ ...(this.playwrightVersion ? { playwrightVersion: this.playwrightVersion } : {}),
452
+ totals,
453
+ };
454
+ try {
455
+ fs.mkdirSync(layout.executionDir(), { recursive: true });
456
+ fs.writeFileSync(layout.executionManifestPath(), JSON.stringify(manifest, null, 2), 'utf8');
457
+ }
458
+ catch (err) {
459
+ logger_1.log.error('failed to write execution.json', err);
460
+ }
461
+ try {
462
+ fs.mkdirSync(layout.healTracesRoot(), { recursive: true });
463
+ this.appendFile(layout.executionsNdjsonPath(), JSON.stringify(record) + '\n');
464
+ }
465
+ catch (err) {
466
+ logger_1.log.error('failed to append executions.ndjson', err);
467
+ }
468
+ }
469
+ }
470
+ exports.HealTracerReporter = HealTracerReporter;
471
+ // Per-attempt totals: each retry counts as a separate row, matching
472
+ // the pre-grouping semantics. A flaky test that fails-then-passes
473
+ // surfaces as 1 passed + 1 failed against `tests: 2`.
474
+ function computeTotals(entries) {
475
+ const totals = {
476
+ tests: 0,
477
+ passed: 0,
478
+ failed: 0,
479
+ timedOut: 0,
480
+ skipped: 0,
481
+ interrupted: 0,
482
+ };
483
+ for (const e of entries) {
484
+ for (const a of e.attempts) {
485
+ totals.tests += 1;
486
+ if (a.status === 'passed')
487
+ totals.passed += 1;
488
+ else if (a.status === 'failed')
489
+ totals.failed += 1;
490
+ else if (a.status === 'timedOut')
491
+ totals.timedOut += 1;
492
+ else if (a.status === 'skipped')
493
+ totals.skipped += 1;
494
+ else if (a.status === 'interrupted')
495
+ totals.interrupted += 1;
496
+ // 'unknown' counts toward `tests` but not any per-status bucket.
497
+ }
498
+ }
499
+ return totals;
500
+ }
501
+ function readPlaywrightVersion() {
502
+ try {
503
+ const pkg = require('@playwright/test/package.json');
504
+ return typeof pkg.version === 'string' ? pkg.version : undefined;
505
+ }
506
+ catch {
507
+ return undefined;
508
+ }
509
+ }
510
+ function readGitInfo() {
511
+ const sha = tryGit('rev-parse HEAD');
512
+ const branch = tryGit('rev-parse --abbrev-ref HEAD');
513
+ const dirty = tryGit('status --porcelain');
514
+ if (sha === undefined && branch === undefined && dirty === undefined) {
515
+ return undefined;
516
+ }
517
+ const info = {};
518
+ if (sha !== undefined)
519
+ info.sha = sha;
520
+ if (branch !== undefined && branch !== 'HEAD')
521
+ info.branch = branch;
522
+ if (dirty !== undefined)
523
+ info.dirty = dirty.length > 0;
524
+ return info;
525
+ }
526
+ function tryGit(args) {
527
+ try {
528
+ return (0, child_process_1.execSync)(`git ${args}`, {
529
+ stdio: ['ignore', 'pipe', 'ignore'],
530
+ })
531
+ .toString()
532
+ .trim();
533
+ }
534
+ catch {
535
+ return undefined;
536
+ }
537
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Copyright: (c) Myia SAS 2026.
3
+ * This file and its contents are licensed under the AGPLv3 License.
4
+ * Please see the LICENSE file at the root of this repository
5
+ */
6
+ import { HealTracerReporter } from './heal-tracer-reporter';
7
+ export { HealTracerReporter, HEAL_PENDING_SUBDIR, healPendingRegistryPath, } from './heal-tracer-reporter';
8
+ export type { HealTracerReporterDeps, HealTraceContext, RescueContext, RescueHook, } from './heal-tracer-reporter';
9
+ export { CrashErrorClassifier } from './crash-error-classifier';
10
+ export type { TestInfoErrorLike } from './crash-error-classifier';
11
+ export { NdjsonTailInspector } from './ndjson-tail-inspector';
12
+ export { FailingStatementFinder } from './failing-statement-finder';
13
+ export type { FoundFailure } from './failing-statement-finder';
14
+ export default HealTracerReporter;