@c9up/helix 0.1.3 → 0.1.5

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 (235) hide show
  1. package/dist/cli/coverage/aggregate.d.ts +24 -0
  2. package/dist/cli/coverage/aggregate.d.ts.map +1 -0
  3. package/dist/cli/coverage/aggregate.js +215 -0
  4. package/dist/cli/coverage/aggregate.js.map +1 -0
  5. package/dist/cli/coverage/collect.d.ts +13 -0
  6. package/dist/cli/coverage/collect.d.ts.map +1 -0
  7. package/dist/cli/coverage/collect.js +66 -0
  8. package/dist/cli/coverage/collect.js.map +1 -0
  9. package/dist/cli/coverage/diff/base.d.ts +17 -0
  10. package/dist/cli/coverage/diff/base.d.ts.map +1 -0
  11. package/dist/cli/coverage/diff/base.js +44 -0
  12. package/dist/cli/coverage/diff/base.js.map +1 -0
  13. package/dist/cli/coverage/diff/index.d.ts +25 -0
  14. package/dist/cli/coverage/diff/index.d.ts.map +1 -0
  15. package/dist/cli/coverage/diff/index.js +119 -0
  16. package/dist/cli/coverage/diff/index.js.map +1 -0
  17. package/dist/cli/coverage/diff/overlay.d.ts +19 -0
  18. package/dist/cli/coverage/diff/overlay.d.ts.map +1 -0
  19. package/dist/cli/coverage/diff/overlay.js +58 -0
  20. package/dist/cli/coverage/diff/overlay.js.map +1 -0
  21. package/dist/cli/coverage/diff/parse.d.ts +27 -0
  22. package/dist/cli/coverage/diff/parse.d.ts.map +1 -0
  23. package/dist/cli/coverage/diff/parse.js +105 -0
  24. package/dist/cli/coverage/diff/parse.js.map +1 -0
  25. package/dist/cli/coverage/diff/reporters.d.ts +12 -0
  26. package/dist/cli/coverage/diff/reporters.d.ts.map +1 -0
  27. package/dist/cli/coverage/diff/reporters.js +59 -0
  28. package/dist/cli/coverage/diff/reporters.js.map +1 -0
  29. package/dist/cli/coverage/diff/types.d.ts +46 -0
  30. package/dist/cli/coverage/diff/types.d.ts.map +1 -0
  31. package/dist/cli/coverage/diff/types.js +15 -0
  32. package/dist/cli/coverage/diff/types.js.map +1 -0
  33. package/dist/cli/coverage/filter.d.ts +13 -0
  34. package/dist/cli/coverage/filter.d.ts.map +1 -0
  35. package/dist/cli/coverage/filter.js +60 -0
  36. package/dist/cli/coverage/filter.js.map +1 -0
  37. package/dist/cli/coverage/glob.d.ts +4 -0
  38. package/dist/cli/coverage/glob.d.ts.map +1 -0
  39. package/dist/cli/coverage/glob.js +0 -0
  40. package/dist/cli/coverage/glob.js.map +1 -0
  41. package/dist/cli/coverage/index.d.ts +40 -0
  42. package/dist/cli/coverage/index.d.ts.map +1 -0
  43. package/dist/cli/coverage/index.js +85 -0
  44. package/dist/cli/coverage/index.js.map +1 -0
  45. package/dist/cli/coverage/reporters/json.d.ts +13 -0
  46. package/dist/cli/coverage/reporters/json.d.ts.map +1 -0
  47. package/dist/cli/coverage/reporters/json.js +37 -0
  48. package/dist/cli/coverage/reporters/json.js.map +1 -0
  49. package/dist/cli/coverage/reporters/lcov.d.ts +13 -0
  50. package/dist/cli/coverage/reporters/lcov.d.ts.map +1 -0
  51. package/dist/cli/coverage/reporters/lcov.js +51 -0
  52. package/dist/cli/coverage/reporters/lcov.js.map +1 -0
  53. package/dist/cli/coverage/reporters/text.d.ts +8 -0
  54. package/dist/cli/coverage/reporters/text.d.ts.map +1 -0
  55. package/dist/cli/coverage/reporters/text.js +39 -0
  56. package/dist/cli/coverage/reporters/text.js.map +1 -0
  57. package/dist/cli/coverage/thresholds.d.ts +14 -0
  58. package/dist/cli/coverage/thresholds.d.ts.map +1 -0
  59. package/dist/cli/coverage/thresholds.js +58 -0
  60. package/dist/cli/coverage/thresholds.js.map +1 -0
  61. package/dist/cli/coverage/types.d.ts +118 -0
  62. package/dist/cli/coverage/types.d.ts.map +1 -0
  63. package/dist/cli/coverage/types.js +8 -0
  64. package/dist/cli/coverage/types.js.map +1 -0
  65. package/dist/cli/discover.d.ts +27 -0
  66. package/dist/cli/discover.d.ts.map +1 -0
  67. package/dist/cli/discover.js +142 -0
  68. package/dist/cli/discover.js.map +1 -0
  69. package/dist/cli/native.d.ts +43 -0
  70. package/dist/cli/native.d.ts.map +1 -0
  71. package/dist/cli/native.js +64 -0
  72. package/dist/cli/native.js.map +1 -0
  73. package/dist/cli/pool.d.ts +55 -0
  74. package/dist/cli/pool.d.ts.map +1 -0
  75. package/dist/cli/pool.js +404 -0
  76. package/dist/cli/pool.js.map +1 -0
  77. package/dist/cli/reporter.d.ts +51 -0
  78. package/dist/cli/reporter.d.ts.map +1 -0
  79. package/dist/cli/reporter.js +124 -0
  80. package/dist/cli/reporter.js.map +1 -0
  81. package/dist/cli/run.d.ts +61 -0
  82. package/dist/cli/run.d.ts.map +1 -0
  83. package/dist/cli/run.js +302 -0
  84. package/dist/cli/run.js.map +1 -0
  85. package/dist/cli/summary.d.ts +18 -0
  86. package/dist/cli/summary.d.ts.map +1 -0
  87. package/dist/cli/summary.js +20 -0
  88. package/dist/cli/summary.js.map +1 -0
  89. package/dist/cli/watch/loop.d.ts +26 -0
  90. package/dist/cli/watch/loop.d.ts.map +1 -0
  91. package/dist/cli/watch/loop.js +133 -0
  92. package/dist/cli/watch/loop.js.map +1 -0
  93. package/dist/cli/watch/types.d.ts +22 -0
  94. package/dist/cli/watch/types.d.ts.map +1 -0
  95. package/dist/cli/watch/types.js +6 -0
  96. package/dist/cli/watch/types.js.map +1 -0
  97. package/dist/cli/watch/watcher.d.ts +25 -0
  98. package/dist/cli/watch/watcher.d.ts.map +1 -0
  99. package/dist/cli/watch/watcher.js +122 -0
  100. package/dist/cli/watch/watcher.js.map +1 -0
  101. package/dist/container/index.d.ts +7 -0
  102. package/dist/container/index.d.ts.map +1 -0
  103. package/dist/container/index.js +6 -0
  104. package/dist/container/index.js.map +1 -0
  105. package/{src/container/override.ts → dist/container/override.d.ts} +6 -46
  106. package/dist/container/override.d.ts.map +1 -0
  107. package/dist/container/override.js +67 -0
  108. package/dist/container/override.js.map +1 -0
  109. package/{src/container/spy.ts → dist/container/spy.d.ts} +2 -6
  110. package/dist/container/spy.d.ts.map +1 -0
  111. package/dist/container/spy.js +23 -0
  112. package/dist/container/spy.js.map +1 -0
  113. package/dist/index.d.ts +20 -0
  114. package/dist/index.d.ts.map +1 -0
  115. package/{src/index.ts → dist/index.js} +2 -25
  116. package/dist/index.js.map +1 -0
  117. package/dist/runtime/assertion-error.d.ts +20 -0
  118. package/dist/runtime/assertion-error.d.ts.map +1 -0
  119. package/dist/runtime/assertion-error.js +23 -0
  120. package/dist/runtime/assertion-error.js.map +1 -0
  121. package/dist/runtime/cli-worker.d.ts +25 -0
  122. package/dist/runtime/cli-worker.d.ts.map +1 -0
  123. package/dist/runtime/cli-worker.js +128 -0
  124. package/dist/runtime/cli-worker.js.map +1 -0
  125. package/dist/runtime/equals.d.ts +25 -0
  126. package/dist/runtime/equals.d.ts.map +1 -0
  127. package/dist/runtime/equals.js +343 -0
  128. package/dist/runtime/equals.js.map +1 -0
  129. package/dist/runtime/expect.d.ts +32 -0
  130. package/dist/runtime/expect.d.ts.map +1 -0
  131. package/dist/runtime/expect.js +121 -0
  132. package/dist/runtime/expect.js.map +1 -0
  133. package/{src/runtime/index.ts → dist/runtime/index.d.ts} +5 -27
  134. package/dist/runtime/index.d.ts.map +1 -0
  135. package/dist/runtime/index.js +17 -0
  136. package/dist/runtime/index.js.map +1 -0
  137. package/{src/runtime/lifecycle.ts → dist/runtime/lifecycle.d.ts} +2 -8
  138. package/dist/runtime/lifecycle.d.ts.map +1 -0
  139. package/dist/runtime/lifecycle.js +10 -0
  140. package/dist/runtime/lifecycle.js.map +1 -0
  141. package/dist/runtime/matchers.d.ts +42 -0
  142. package/dist/runtime/matchers.d.ts.map +1 -0
  143. package/dist/runtime/matchers.js +375 -0
  144. package/dist/runtime/matchers.js.map +1 -0
  145. package/dist/runtime/run.d.ts +55 -0
  146. package/dist/runtime/run.d.ts.map +1 -0
  147. package/dist/runtime/run.js +456 -0
  148. package/dist/runtime/run.js.map +1 -0
  149. package/dist/runtime/suite.d.ts +91 -0
  150. package/dist/runtime/suite.d.ts.map +1 -0
  151. package/dist/runtime/suite.js +206 -0
  152. package/dist/runtime/suite.js.map +1 -0
  153. package/dist/runtime/test-context.d.ts +25 -0
  154. package/dist/runtime/test-context.d.ts.map +1 -0
  155. package/dist/runtime/test-context.js +52 -0
  156. package/dist/runtime/test-context.js.map +1 -0
  157. package/dist/runtime/vi/fake-timers.d.ts +48 -0
  158. package/dist/runtime/vi/fake-timers.d.ts.map +1 -0
  159. package/dist/runtime/vi/fake-timers.js +317 -0
  160. package/dist/runtime/vi/fake-timers.js.map +1 -0
  161. package/dist/runtime/vi/index.d.ts +70 -0
  162. package/dist/runtime/vi/index.d.ts.map +1 -0
  163. package/dist/runtime/vi/index.js +209 -0
  164. package/dist/runtime/vi/index.js.map +1 -0
  165. package/dist/runtime/vi/spy.d.ts +54 -0
  166. package/dist/runtime/vi/spy.d.ts.map +1 -0
  167. package/dist/runtime/vi/spy.js +159 -0
  168. package/dist/runtime/vi/spy.js.map +1 -0
  169. package/dist/runtime/vi/spyOn.d.ts +28 -0
  170. package/dist/runtime/vi/spyOn.d.ts.map +1 -0
  171. package/dist/runtime/vi/spyOn.js +121 -0
  172. package/dist/runtime/vi/spyOn.js.map +1 -0
  173. package/dist/runtime/vi/system-time.d.ts +30 -0
  174. package/dist/runtime/vi/system-time.d.ts.map +1 -0
  175. package/dist/runtime/vi/system-time.js +100 -0
  176. package/dist/runtime/vi/system-time.js.map +1 -0
  177. package/dist/runtime/worker.d.ts +26 -0
  178. package/dist/runtime/worker.d.ts.map +1 -0
  179. package/dist/runtime/worker.js +195 -0
  180. package/dist/runtime/worker.js.map +1 -0
  181. package/dist/time/freeze.d.ts +80 -0
  182. package/dist/time/freeze.d.ts.map +1 -0
  183. package/dist/time/freeze.js +184 -0
  184. package/dist/time/freeze.js.map +1 -0
  185. package/{src/time/index.ts → dist/time/index.d.ts} +1 -1
  186. package/dist/time/index.d.ts.map +1 -0
  187. package/dist/time/index.js +15 -0
  188. package/dist/time/index.js.map +1 -0
  189. package/index.darwin-arm64.node +0 -0
  190. package/index.darwin-x64.node +0 -0
  191. package/index.linux-arm64-gnu.node +0 -0
  192. package/index.linux-x64-gnu.node +0 -0
  193. package/index.win32-x64-msvc.node +0 -0
  194. package/package.json +2 -2
  195. package/src/cli/coverage/aggregate.ts +0 -231
  196. package/src/cli/coverage/collect.ts +0 -63
  197. package/src/cli/coverage/diff/base.ts +0 -46
  198. package/src/cli/coverage/diff/index.ts +0 -160
  199. package/src/cli/coverage/diff/overlay.ts +0 -62
  200. package/src/cli/coverage/diff/parse.ts +0 -121
  201. package/src/cli/coverage/diff/reporters.ts +0 -82
  202. package/src/cli/coverage/diff/types.ts +0 -46
  203. package/src/cli/coverage/filter.ts +0 -71
  204. package/src/cli/coverage/glob.ts +0 -0
  205. package/src/cli/coverage/index.ts +0 -126
  206. package/src/cli/coverage/reporters/json.ts +0 -40
  207. package/src/cli/coverage/reporters/lcov.ts +0 -54
  208. package/src/cli/coverage/reporters/text.ts +0 -48
  209. package/src/cli/coverage/thresholds.ts +0 -73
  210. package/src/cli/coverage/types.ts +0 -93
  211. package/src/cli/discover.ts +0 -174
  212. package/src/cli/native.ts +0 -104
  213. package/src/cli/pool.ts +0 -486
  214. package/src/cli/reporter.ts +0 -155
  215. package/src/cli/run.ts +0 -440
  216. package/src/cli/summary.ts +0 -42
  217. package/src/cli/watch/loop.ts +0 -159
  218. package/src/cli/watch/types.ts +0 -22
  219. package/src/cli/watch/watcher.ts +0 -145
  220. package/src/container/index.ts +0 -16
  221. package/src/runtime/assertion-error.ts +0 -38
  222. package/src/runtime/cli-worker.ts +0 -140
  223. package/src/runtime/equals.ts +0 -400
  224. package/src/runtime/expect.ts +0 -173
  225. package/src/runtime/matchers.ts +0 -452
  226. package/src/runtime/run.ts +0 -573
  227. package/src/runtime/suite.ts +0 -310
  228. package/src/runtime/test-context.ts +0 -59
  229. package/src/runtime/vi/fake-timers.ts +0 -410
  230. package/src/runtime/vi/index.ts +0 -254
  231. package/src/runtime/vi/spy.ts +0 -224
  232. package/src/runtime/vi/spyOn.ts +0 -155
  233. package/src/runtime/vi/system-time.ts +0 -121
  234. package/src/runtime/worker.ts +0 -239
  235. package/src/time/freeze.ts +0 -229
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchers.js","sourceRoot":"","sources":["../../src/runtime/matchers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Execution engine — walks the suite tree collected by `suite.ts`,
3
+ * runs each test with its inherited hook chain, and produces a structured
4
+ * `FileResult` for the orchestrator.
5
+ *
6
+ * `.only` handling: if any test or suite is marked `only` anywhere in the
7
+ * tree, non-`only` paths are downgraded to `skip` before execution.
8
+ */
9
+ import type { SuiteNode } from "./suite.js";
10
+ export interface TestResult {
11
+ name: string;
12
+ fullName: string;
13
+ status: "pass" | "fail" | "skip" | "todo";
14
+ durationMs: number;
15
+ error?: SerializedError;
16
+ }
17
+ export interface SuiteResult {
18
+ name: string;
19
+ fullName: string;
20
+ children: Array<SuiteResult | TestResult>;
21
+ status: "pass" | "fail" | "skip";
22
+ durationMs: number;
23
+ /** Hook errors attributed to this suite (beforeAll/afterAll). */
24
+ hookErrors: SerializedError[];
25
+ }
26
+ export interface SerializedError {
27
+ name: string;
28
+ message: string;
29
+ stack?: string;
30
+ actual?: unknown;
31
+ expected?: unknown;
32
+ operator?: string;
33
+ }
34
+ export interface FileResult {
35
+ file: string;
36
+ suites: SuiteResult[];
37
+ tests: TestResult[];
38
+ totals: {
39
+ pass: number;
40
+ fail: number;
41
+ skip: number;
42
+ todo: number;
43
+ };
44
+ durationMs: number;
45
+ }
46
+ export interface ExecuteOptions {
47
+ /**
48
+ * Per-test timeout in ms. `0` disables (default). When exceeded, the
49
+ * test is marked failed with a timeout error; the hanging promise is not
50
+ * awaited further.
51
+ */
52
+ timeoutMs?: number;
53
+ }
54
+ export declare function executeRoot(root: SuiteNode, file: string, options?: ExecuteOptions): Promise<FileResult>;
55
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/runtime/run.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,YAAY,CAAC;AAG9D,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC;IAC1C,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,UAAU,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACb,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC9B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAsaD,wBAAsB,WAAW,CAChC,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC1B,OAAO,CAAC,UAAU,CAAC,CAsFrB"}
@@ -0,0 +1,456 @@
1
+ /**
2
+ * Execution engine — walks the suite tree collected by `suite.ts`,
3
+ * runs each test with its inherited hook chain, and produces a structured
4
+ * `FileResult` for the orchestrator.
5
+ *
6
+ * `.only` handling: if any test or suite is marked `only` anywhere in the
7
+ * tree, non-`only` paths are downgraded to `skip` before execution.
8
+ */
9
+ import { AssertionError } from "./assertion-error.js";
10
+ import { withTestContext } from "./test-context.js";
11
+ function serializeError(err) {
12
+ if (err instanceof AssertionError) {
13
+ return {
14
+ name: err.name,
15
+ message: err.message,
16
+ stack: err.stack,
17
+ actual: err.actual,
18
+ expected: err.expected,
19
+ operator: err.operator,
20
+ };
21
+ }
22
+ if (err instanceof Error) {
23
+ return { name: err.name, message: err.message, stack: err.stack };
24
+ }
25
+ return { name: "NonError", message: String(err) };
26
+ }
27
+ function hasOnly(node) {
28
+ if (node.mode === "only")
29
+ return true;
30
+ if (node.kind === "test")
31
+ return false;
32
+ return node.children.some(hasOnly);
33
+ }
34
+ function ancestorHasOnly(node) {
35
+ let cursor = node.parent;
36
+ while (cursor) {
37
+ if (cursor.mode === "only")
38
+ return true;
39
+ cursor = cursor.parent;
40
+ }
41
+ return false;
42
+ }
43
+ function pathLeadsToOnly(node) {
44
+ if (node.mode === "only")
45
+ return true;
46
+ if (ancestorHasOnly(node))
47
+ return true;
48
+ if (node.kind === "suite") {
49
+ return node.children.some(hasOnly);
50
+ }
51
+ return false;
52
+ }
53
+ function collectHookChain(leaf, type) {
54
+ // beforeEach: outermost first; afterEach: innermost first.
55
+ const suites = [];
56
+ let cursor = leaf;
57
+ while (cursor) {
58
+ suites.push(cursor);
59
+ cursor = cursor.parent;
60
+ }
61
+ const ordered = type === "beforeEach" ? [...suites].reverse() : suites;
62
+ const chain = [];
63
+ for (const s of ordered) {
64
+ for (const h of s.hooks) {
65
+ if (h.type === type)
66
+ chain.push(h.fn);
67
+ }
68
+ }
69
+ return chain;
70
+ }
71
+ async function runHooks(hooks) {
72
+ for (const h of hooks) {
73
+ try {
74
+ await h();
75
+ }
76
+ catch (err) {
77
+ return serializeError(err);
78
+ }
79
+ }
80
+ return undefined;
81
+ }
82
+ function joinName(parent, name) {
83
+ if (!parent)
84
+ return name;
85
+ if (!name)
86
+ return parent;
87
+ return `${parent} > ${name}`;
88
+ }
89
+ function combineErrors(primary, secondary) {
90
+ if (!primary)
91
+ return secondary;
92
+ if (!secondary)
93
+ return primary;
94
+ return {
95
+ name: primary.name,
96
+ message: `${primary.message}\n+ teardown also failed: ${secondary.message}`,
97
+ stack: primary.stack,
98
+ actual: primary.actual,
99
+ expected: primary.expected,
100
+ operator: primary.operator,
101
+ };
102
+ }
103
+ async function withTimeout(p, ms, label) {
104
+ if (ms <= 0)
105
+ return await p;
106
+ let timer;
107
+ const timeout = new Promise((_, reject) => {
108
+ timer = setTimeout(() => {
109
+ reject(new Error(`${label} exceeded ${ms}ms timeout`));
110
+ }, ms);
111
+ // Don't keep the event loop alive just for this watchdog.
112
+ timer.unref?.();
113
+ });
114
+ try {
115
+ return await Promise.race([Promise.resolve(p), timeout]);
116
+ }
117
+ finally {
118
+ if (timer)
119
+ clearTimeout(timer);
120
+ }
121
+ }
122
+ async function runTest(node, parentFullName, ctx) {
123
+ const fullName = joinName(parentFullName, node.name);
124
+ if (node.mode === "todo") {
125
+ const r = {
126
+ name: node.name,
127
+ fullName,
128
+ status: "todo",
129
+ durationMs: 0,
130
+ };
131
+ ctx.flatTests.push(r);
132
+ return r;
133
+ }
134
+ if (node.mode === "skip" || (ctx.onlyActive && !pathLeadsToOnly(node))) {
135
+ const r = {
136
+ name: node.name,
137
+ fullName,
138
+ status: "skip",
139
+ durationMs: 0,
140
+ };
141
+ ctx.flatTests.push(r);
142
+ return r;
143
+ }
144
+ const before = collectHookChain(node.parent, "beforeEach");
145
+ const after = collectHookChain(node.parent, "afterEach");
146
+ const start = Date.now();
147
+ // Wrap the whole cycle (beforeEach + body + afterEach) in a per-test
148
+ // frame so test-scoped cleanups (e.g. container overrides registered
149
+ // via `helix.override`) drain at the right time. Frame closes AFTER
150
+ // afterEach so user teardown can still observe test-scoped state.
151
+ const r = await withTestContext(async () => {
152
+ const beforeErr = await runHooks(before);
153
+ if (beforeErr) {
154
+ const afterErrBE = await runHooks(after);
155
+ return {
156
+ name: node.name,
157
+ fullName,
158
+ status: "fail",
159
+ durationMs: Date.now() - start,
160
+ error: combineErrors(beforeErr, afterErrBE),
161
+ };
162
+ }
163
+ let testErr;
164
+ try {
165
+ const result = node.fn?.();
166
+ if (result &&
167
+ typeof result.then === "function") {
168
+ await withTimeout(result, ctx.timeoutMs, `test "${fullName}"`);
169
+ }
170
+ }
171
+ catch (err) {
172
+ testErr = serializeError(err);
173
+ }
174
+ const afterErr = await runHooks(after);
175
+ const finalErr = combineErrors(testErr, afterErr);
176
+ return {
177
+ name: node.name,
178
+ fullName,
179
+ status: finalErr ? "fail" : "pass",
180
+ durationMs: Date.now() - start,
181
+ error: finalErr,
182
+ };
183
+ });
184
+ ctx.flatTests.push(r);
185
+ return r;
186
+ }
187
+ /**
188
+ * Recursively mark every descendant test as failed due to an ancestor
189
+ * hook error. Ensures `flatTests` is complete and reporters can navigate
190
+ * the whole tree.
191
+ */
192
+ function attributeHookFailure(node, parentFullName, err, ctx) {
193
+ const children = [];
194
+ const fullName = joinName(parentFullName, node.name);
195
+ for (const child of node.children) {
196
+ if (child.kind === "test") {
197
+ const r = {
198
+ name: child.name,
199
+ fullName: joinName(fullName, child.name),
200
+ status: child.mode === "todo" ? "todo" : "fail",
201
+ durationMs: 0,
202
+ error: child.mode === "todo" ? undefined : err,
203
+ };
204
+ children.push(r);
205
+ ctx.flatTests.push(r);
206
+ }
207
+ else {
208
+ const innerChildren = attributeHookFailure(child, fullName, err, ctx);
209
+ children.push({
210
+ name: child.name,
211
+ fullName: joinName(fullName, child.name),
212
+ children: innerChildren,
213
+ status: "fail",
214
+ durationMs: 0,
215
+ hookErrors: [],
216
+ });
217
+ }
218
+ }
219
+ return children;
220
+ }
221
+ async function runSuite(node, parentFullName, ctx) {
222
+ const fullName = joinName(parentFullName, node.name);
223
+ const start = Date.now();
224
+ // `.skip` takes precedence over descendant `.only` — matches Vitest.
225
+ // `.todo` likewise.
226
+ const skipEntire = node.mode === "skip" ||
227
+ node.mode === "todo" ||
228
+ (ctx.onlyActive && !pathLeadsToOnly(node));
229
+ if (skipEntire)
230
+ return runSkippedSuite(node, fullName, ctx);
231
+ const hookErrors = [];
232
+ // beforeAll: when one throws, every descendant test inherits the failure
233
+ // and the children list is replaced with those attributed results.
234
+ const attributed = await runBeforeAllHooks(node, parentFullName, ctx, hookErrors);
235
+ const beforeAllFailed = attributed !== null;
236
+ const children = attributed ?? [];
237
+ if (!beforeAllFailed) {
238
+ for (const child of node.children) {
239
+ children.push(child.kind === "test"
240
+ ? await runTest(child, fullName, ctx)
241
+ : await runSuite(child, fullName, ctx));
242
+ }
243
+ }
244
+ await runAfterAllHooks(node, hookErrors);
245
+ // Surface afterAll failures as a synthetic test so `totals.fail` reflects
246
+ // them and CI exits nonzero.
247
+ if (!beforeAllFailed && hookErrors.length > 0) {
248
+ const synthetic = {
249
+ name: "afterAll",
250
+ fullName: joinName(fullName, "afterAll"),
251
+ status: "fail",
252
+ durationMs: 0,
253
+ error: hookErrors[hookErrors.length - 1],
254
+ };
255
+ children.push(synthetic);
256
+ ctx.flatTests.push(synthetic);
257
+ }
258
+ return {
259
+ name: node.name,
260
+ fullName,
261
+ children,
262
+ status: suiteStatus(children, hookErrors),
263
+ durationMs: Date.now() - start,
264
+ hookErrors,
265
+ };
266
+ }
267
+ /** Build skip/todo results for an entirely-skipped suite (no hooks run). */
268
+ async function runSkippedSuite(node, fullName, ctx) {
269
+ const children = [];
270
+ for (const child of node.children) {
271
+ if (child.kind === "test") {
272
+ const r = {
273
+ name: child.name,
274
+ fullName: joinName(fullName, child.name),
275
+ status: child.mode === "todo" ? "todo" : "skip",
276
+ durationMs: 0,
277
+ };
278
+ children.push(r);
279
+ ctx.flatTests.push(r);
280
+ }
281
+ else {
282
+ children.push(await runSuiteSkip(child, fullName, ctx));
283
+ }
284
+ }
285
+ return {
286
+ name: node.name,
287
+ fullName,
288
+ children,
289
+ status: "skip",
290
+ durationMs: 0,
291
+ hookErrors: [],
292
+ };
293
+ }
294
+ /**
295
+ * Run the suite's `beforeAll` hooks. On the first failure, push the serialized
296
+ * error to `hookErrors` and return the descendant tests attributed with that
297
+ * failure; return `null` when all hooks pass.
298
+ */
299
+ async function runBeforeAllHooks(node, parentFullName, ctx, hookErrors) {
300
+ for (const h of node.hooks) {
301
+ if (h.type !== "beforeAll")
302
+ continue;
303
+ try {
304
+ await h.fn();
305
+ }
306
+ catch (err) {
307
+ const serialized = serializeError(err);
308
+ hookErrors.push(serialized);
309
+ // Attribute the error to every descendant test (direct AND nested).
310
+ return attributeHookFailure(node, parentFullName, serialized, ctx);
311
+ }
312
+ }
313
+ return null;
314
+ }
315
+ /**
316
+ * Run `afterAll` hooks unconditionally so partial setup from a failed beforeAll
317
+ * can be released. Errors are captured into `hookErrors`, not thrown.
318
+ */
319
+ async function runAfterAllHooks(node, hookErrors) {
320
+ for (const h of node.hooks) {
321
+ if (h.type !== "afterAll")
322
+ continue;
323
+ try {
324
+ await h.fn();
325
+ }
326
+ catch (err) {
327
+ hookErrors.push(serializeError(err));
328
+ }
329
+ }
330
+ }
331
+ /** Roll a suite's child statuses + hook errors up into its own status. */
332
+ function suiteStatus(children, hookErrors) {
333
+ if (hookErrors.length > 0 || children.some((c) => c.status === "fail")) {
334
+ return "fail";
335
+ }
336
+ if (children.length > 0 && children.every((c) => c.status === "skip")) {
337
+ return "skip";
338
+ }
339
+ return "pass";
340
+ }
341
+ async function runSuiteSkip(node, parentFullName, ctx) {
342
+ const fullName = joinName(parentFullName, node.name);
343
+ const children = [];
344
+ for (const child of node.children) {
345
+ if (child.kind === "test") {
346
+ const r = {
347
+ name: child.name,
348
+ fullName: joinName(fullName, child.name),
349
+ status: child.mode === "todo" ? "todo" : "skip",
350
+ durationMs: 0,
351
+ };
352
+ children.push(r);
353
+ ctx.flatTests.push(r);
354
+ }
355
+ else {
356
+ children.push(await runSuiteSkip(child, fullName, ctx));
357
+ }
358
+ }
359
+ return {
360
+ name: node.name,
361
+ fullName,
362
+ children,
363
+ status: "skip",
364
+ durationMs: 0,
365
+ hookErrors: [],
366
+ };
367
+ }
368
+ export async function executeRoot(root, file, options = {}) {
369
+ const start = Date.now();
370
+ const onlyActive = root.children.some(hasOnly);
371
+ const ctx = {
372
+ onlyActive,
373
+ flatTests: [],
374
+ timeoutMs: options.timeoutMs ?? 0,
375
+ };
376
+ const suites = [];
377
+ // Root-level beforeAll: run once before anything, root-level afterAll:
378
+ // once after everything. Errors attribute to a synthetic test entry so
379
+ // they show up in totals.
380
+ const rootHookErrors = [];
381
+ let rootBeforeAllFailed = false;
382
+ for (const h of root.hooks) {
383
+ if (h.type !== "beforeAll")
384
+ continue;
385
+ try {
386
+ await h.fn();
387
+ }
388
+ catch (err) {
389
+ const serialized = serializeError(err);
390
+ rootHookErrors.push(serialized);
391
+ const synthetic = {
392
+ name: "beforeAll",
393
+ fullName: "beforeAll",
394
+ status: "fail",
395
+ durationMs: 0,
396
+ error: serialized,
397
+ };
398
+ ctx.flatTests.push(synthetic);
399
+ rootBeforeAllFailed = true;
400
+ break;
401
+ }
402
+ }
403
+ if (!rootBeforeAllFailed) {
404
+ for (const child of root.children) {
405
+ if (child.kind === "test") {
406
+ const tr = await runTest(child, "", ctx);
407
+ suites.push({
408
+ name: "",
409
+ fullName: "",
410
+ children: [tr],
411
+ status: tr.status === "fail"
412
+ ? "fail"
413
+ : tr.status === "pass"
414
+ ? "pass"
415
+ : "skip",
416
+ durationMs: tr.durationMs,
417
+ hookErrors: [],
418
+ });
419
+ }
420
+ else {
421
+ suites.push(await runSuite(child, "", ctx));
422
+ }
423
+ }
424
+ }
425
+ // Root afterAll — always try.
426
+ for (const h of root.hooks) {
427
+ if (h.type !== "afterAll")
428
+ continue;
429
+ try {
430
+ await h.fn();
431
+ }
432
+ catch (err) {
433
+ const serialized = serializeError(err);
434
+ rootHookErrors.push(serialized);
435
+ const synthetic = {
436
+ name: "afterAll",
437
+ fullName: "afterAll",
438
+ status: "fail",
439
+ durationMs: 0,
440
+ error: serialized,
441
+ };
442
+ ctx.flatTests.push(synthetic);
443
+ }
444
+ }
445
+ const totals = { pass: 0, fail: 0, skip: 0, todo: 0 };
446
+ for (const t of ctx.flatTests)
447
+ totals[t.status] += 1;
448
+ return {
449
+ file,
450
+ suites,
451
+ tests: ctx.flatTests,
452
+ totals,
453
+ durationMs: Date.now() - start,
454
+ };
455
+ }
456
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/runtime/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * `describe` / `test` / `it` DSL — builds a suite tree during module load.
3
+ *
4
+ * Collection phase: `describe(name, fn)` runs `fn` synchronously with an
5
+ * active suite on a per-invocation stack. `withCollection(...)` scopes the
6
+ * collection to one `runTestFile` call via AsyncLocalStorage, so parallel
7
+ * invocations never share state.
8
+ */
9
+ import { AsyncLocalStorage } from "node:async_hooks";
10
+ export type TestFn = () => void | Promise<void>;
11
+ export type SuiteFn = () => void;
12
+ export type HookType = "beforeAll" | "afterAll" | "beforeEach" | "afterEach";
13
+ export interface Hook {
14
+ type: HookType;
15
+ fn: TestFn;
16
+ }
17
+ export type RunMode = "run" | "skip" | "only" | "todo";
18
+ export interface TestNode {
19
+ kind: "test";
20
+ name: string;
21
+ fn: TestFn | undefined;
22
+ mode: RunMode;
23
+ parent: SuiteNode;
24
+ location?: string;
25
+ }
26
+ export interface SuiteNode {
27
+ kind: "suite";
28
+ name: string;
29
+ mode: RunMode;
30
+ parent: SuiteNode | undefined;
31
+ children: Array<SuiteNode | TestNode>;
32
+ hooks: Hook[];
33
+ }
34
+ interface CollectionContext {
35
+ root: SuiteNode;
36
+ stack: SuiteNode[];
37
+ }
38
+ /**
39
+ * Collection registry. Holds the `AsyncLocalStorage` scope used per test-file
40
+ * run plus a fallback root for direct DSL use.
41
+ *
42
+ * CRITICAL (H5): this state is pinned to `globalThis`, NOT held as module-local
43
+ * variables. A consumer's test does `import { describe } from '@c9up/helix'`
44
+ * while the runner drives collection via `@c9up/helix/runtime/worker`. If those
45
+ * two specifiers resolve to DISTINCT module instances of this file (src vs dist,
46
+ * or an ESM/CJS dual instance under the tsx loader), a module-local registry
47
+ * means the test's `describe`/`test` register into one instance while the worker
48
+ * opens its collection scope on the other — so the worker collects 0 tests.
49
+ * A single globalThis-backed registry removes that hazard entirely.
50
+ */
51
+ interface CollectionRegistry {
52
+ storage: AsyncLocalStorage<CollectionContext>;
53
+ fallbackRoot: SuiteNode;
54
+ fallbackStack: SuiteNode[];
55
+ }
56
+ declare global {
57
+ var __helixCollectionRegistry: CollectionRegistry | undefined;
58
+ }
59
+ export declare function resetRoot(): SuiteNode;
60
+ export declare function getRoot(): SuiteNode;
61
+ /**
62
+ * Run `body` inside a fresh, isolated collection context. Returns the root
63
+ * populated by its DSL calls. Safe under concurrent invocation.
64
+ */
65
+ export declare function withCollection(body: () => Promise<void> | void): Promise<SuiteNode>;
66
+ type SuiteApi = {
67
+ (name: string, fn: SuiteFn): void;
68
+ skip(name: string, fn: SuiteFn): void;
69
+ only(name: string, fn: SuiteFn): void;
70
+ todo(name: string): void;
71
+ };
72
+ type ArrayRow = readonly unknown[];
73
+ type ObjectRow = Readonly<Record<string, unknown>>;
74
+ type EachRow = ArrayRow | ObjectRow | null | undefined | string | number | boolean | bigint | symbol;
75
+ type TestApi = {
76
+ (name: string, fn: TestFn): void;
77
+ skip(name: string, fn?: TestFn): void;
78
+ only(name: string, fn: TestFn): void;
79
+ todo(name: string): void;
80
+ each<Row extends EachRow>(rows: readonly Row[]): (name: string, fn: (row: Row) => void | Promise<void>) => void;
81
+ };
82
+ export declare const describe: SuiteApi;
83
+ export declare const test: TestApi;
84
+ export declare const it: TestApi;
85
+ export declare function addHook(type: HookType, fn: TestFn): void;
86
+ export declare const beforeAll: (fn: TestFn) => void;
87
+ export declare const afterAll: (fn: TestFn) => void;
88
+ export declare const beforeEach: (fn: TestFn) => void;
89
+ export declare const afterEach: (fn: TestFn) => void;
90
+ export {};
91
+ //# sourceMappingURL=suite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suite.d.ts","sourceRoot":"","sources":["../../src/runtime/suite.ts"],"names":[],"mappings":"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"}