@c9up/helix 0.1.7 → 0.1.9

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 (124) hide show
  1. package/README.md +282 -11
  2. package/bin/helix.js +329 -13
  3. package/dist/cli/failed-cache.d.ts +27 -0
  4. package/dist/cli/failed-cache.d.ts.map +1 -0
  5. package/dist/cli/failed-cache.js +64 -0
  6. package/dist/cli/failed-cache.js.map +1 -0
  7. package/dist/cli/glob.d.ts +36 -0
  8. package/dist/cli/glob.d.ts.map +1 -0
  9. package/dist/cli/glob.js +185 -0
  10. package/dist/cli/glob.js.map +1 -0
  11. package/dist/cli/native.d.ts +4 -0
  12. package/dist/cli/native.d.ts.map +1 -1
  13. package/dist/cli/native.js.map +1 -1
  14. package/dist/cli/pool.d.ts +11 -0
  15. package/dist/cli/pool.d.ts.map +1 -1
  16. package/dist/cli/pool.js +12 -0
  17. package/dist/cli/pool.js.map +1 -1
  18. package/dist/cli/reporter.d.ts +11 -0
  19. package/dist/cli/reporter.d.ts.map +1 -1
  20. package/dist/cli/reporter.js +53 -0
  21. package/dist/cli/reporter.js.map +1 -1
  22. package/dist/cli/run.d.ts +41 -0
  23. package/dist/cli/run.d.ts.map +1 -1
  24. package/dist/cli/run.js +181 -21
  25. package/dist/cli/run.js.map +1 -1
  26. package/dist/cli/runner.d.ts +19 -0
  27. package/dist/cli/runner.d.ts.map +1 -0
  28. package/dist/cli/runner.js +15 -0
  29. package/dist/cli/runner.js.map +1 -0
  30. package/dist/cli/suites.d.ts +102 -0
  31. package/dist/cli/suites.d.ts.map +1 -0
  32. package/dist/cli/suites.js +226 -0
  33. package/dist/cli/suites.js.map +1 -0
  34. package/dist/index.d.ts +10 -9
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +9 -8
  37. package/dist/index.js.map +1 -1
  38. package/dist/japa/core.d.ts +106 -0
  39. package/dist/japa/core.d.ts.map +1 -0
  40. package/dist/japa/core.js +128 -0
  41. package/dist/japa/core.js.map +1 -0
  42. package/dist/runtime/assert.d.ts +174 -0
  43. package/dist/runtime/assert.d.ts.map +1 -0
  44. package/dist/runtime/assert.js +591 -0
  45. package/dist/runtime/assert.js.map +1 -0
  46. package/dist/runtime/asymmetric.d.ts +34 -0
  47. package/dist/runtime/asymmetric.d.ts.map +1 -0
  48. package/dist/runtime/asymmetric.js +78 -0
  49. package/dist/runtime/asymmetric.js.map +1 -0
  50. package/dist/runtime/bootstrap.d.ts +47 -0
  51. package/dist/runtime/bootstrap.d.ts.map +1 -0
  52. package/dist/runtime/bootstrap.js +166 -0
  53. package/dist/runtime/bootstrap.js.map +1 -0
  54. package/dist/runtime/cli-args.d.ts +77 -0
  55. package/dist/runtime/cli-args.d.ts.map +1 -0
  56. package/dist/runtime/cli-args.js +85 -0
  57. package/dist/runtime/cli-args.js.map +1 -0
  58. package/dist/runtime/configure.d.ts +214 -0
  59. package/dist/runtime/configure.d.ts.map +1 -0
  60. package/dist/runtime/configure.js +164 -0
  61. package/dist/runtime/configure.js.map +1 -0
  62. package/dist/runtime/context.d.ts +84 -0
  63. package/dist/runtime/context.d.ts.map +1 -0
  64. package/dist/runtime/context.js +146 -0
  65. package/dist/runtime/context.js.map +1 -0
  66. package/dist/runtime/emitter.d.ts +141 -0
  67. package/dist/runtime/emitter.d.ts.map +1 -0
  68. package/dist/runtime/emitter.js +79 -0
  69. package/dist/runtime/emitter.js.map +1 -0
  70. package/dist/runtime/equals.d.ts.map +1 -1
  71. package/dist/runtime/equals.js +21 -0
  72. package/dist/runtime/equals.js.map +1 -1
  73. package/dist/runtime/expect.d.ts +22 -1
  74. package/dist/runtime/expect.d.ts.map +1 -1
  75. package/dist/runtime/expect.js +15 -1
  76. package/dist/runtime/expect.js.map +1 -1
  77. package/dist/runtime/global-hooks.d.ts +31 -0
  78. package/dist/runtime/global-hooks.d.ts.map +1 -0
  79. package/dist/runtime/global-hooks.js +126 -0
  80. package/dist/runtime/global-hooks.js.map +1 -0
  81. package/dist/runtime/index.d.ts +16 -3
  82. package/dist/runtime/index.d.ts.map +1 -1
  83. package/dist/runtime/index.js +7 -1
  84. package/dist/runtime/index.js.map +1 -1
  85. package/dist/runtime/matchers.d.ts +5 -0
  86. package/dist/runtime/matchers.d.ts.map +1 -1
  87. package/dist/runtime/matchers.js +117 -0
  88. package/dist/runtime/matchers.js.map +1 -1
  89. package/dist/runtime/run.d.ts +63 -1
  90. package/dist/runtime/run.d.ts.map +1 -1
  91. package/dist/runtime/run.js +696 -79
  92. package/dist/runtime/run.js.map +1 -1
  93. package/dist/runtime/runner.d.ts +97 -0
  94. package/dist/runtime/runner.d.ts.map +1 -0
  95. package/dist/runtime/runner.js +160 -0
  96. package/dist/runtime/runner.js.map +1 -0
  97. package/dist/runtime/suite-config.d.ts +23 -0
  98. package/dist/runtime/suite-config.d.ts.map +1 -0
  99. package/dist/runtime/suite-config.js +52 -0
  100. package/dist/runtime/suite-config.js.map +1 -0
  101. package/dist/runtime/suite-taps.d.ts +122 -0
  102. package/dist/runtime/suite-taps.d.ts.map +1 -0
  103. package/dist/runtime/suite-taps.js +218 -0
  104. package/dist/runtime/suite-taps.js.map +1 -0
  105. package/dist/runtime/suite.d.ts +316 -10
  106. package/dist/runtime/suite.d.ts.map +1 -1
  107. package/dist/runtime/suite.js +307 -8
  108. package/dist/runtime/suite.js.map +1 -1
  109. package/dist/runtime/test-context.d.ts +88 -1
  110. package/dist/runtime/test-context.d.ts.map +1 -1
  111. package/dist/runtime/test-context.js +170 -2
  112. package/dist/runtime/test-context.js.map +1 -1
  113. package/dist/runtime/vi/fake-timers.d.ts.map +1 -1
  114. package/dist/runtime/vi/fake-timers.js +3 -4
  115. package/dist/runtime/vi/fake-timers.js.map +1 -1
  116. package/dist/runtime/worker.d.ts.map +1 -1
  117. package/dist/runtime/worker.js +87 -5
  118. package/dist/runtime/worker.js.map +1 -1
  119. package/index.darwin-arm64.node +0 -0
  120. package/index.darwin-x64.node +0 -0
  121. package/index.linux-arm64-gnu.node +0 -0
  122. package/index.linux-x64-gnu.node +0 -0
  123. package/index.win32-x64-msvc.node +0 -0
  124. package/package.json +10 -1
@@ -0,0 +1,218 @@
1
+ /**
2
+ * `suite.onTest()` / `suite.onGroup()` — the taps Japa's `Suite` exposes to
3
+ * `configureSuite`, so a bootstrap can configure every test or group of a suite
4
+ * without touching the test files.
5
+ *
6
+ * export const configureSuite = (suite) => {
7
+ * if (suite.name === "e2e") suite.onTest((test) => test.timeout(30_000))
8
+ * }
9
+ *
10
+ * `configureSuite` runs before the test file is imported, so the callbacks are
11
+ * stored and applied to the collected tree just before execution — the same
12
+ * point at which Japa's taps fire (each test, once, before it runs).
13
+ *
14
+ * Each method maps onto a field the collection tree already carries; nothing
15
+ * here is a facade over behaviour helix does not have. Japa `Test` members that
16
+ * belong to EXECUTION rather than configuration — `run`, `exec`, `context`,
17
+ * `executed`, `failed`, `options` — are absent: helix owns execution, and a
18
+ * handle that pretended otherwise would be lying about what a callback can do.
19
+ */
20
+ export function testHandle(node) {
21
+ const handle = {
22
+ get title() {
23
+ return node.name;
24
+ },
25
+ skip(skip = true, reason) {
26
+ if (typeof skip === "function")
27
+ node.skipCondition = skip;
28
+ else
29
+ node.mode = skip ? "skip" : "run";
30
+ if (reason !== undefined)
31
+ node.reason = reason;
32
+ return handle;
33
+ },
34
+ fails(reason) {
35
+ node.failing = true;
36
+ if (reason !== undefined)
37
+ node.reason = reason;
38
+ return handle;
39
+ },
40
+ timeout(ms) {
41
+ node.timeoutMs = ms;
42
+ return handle;
43
+ },
44
+ disableTimeout() {
45
+ node.timeoutMs = 0;
46
+ return handle;
47
+ },
48
+ resetTimeout(ms) {
49
+ node.timeoutMs = ms ?? 0;
50
+ return handle;
51
+ },
52
+ tags(tags, strategy = "replace") {
53
+ const current = node.tags ?? [];
54
+ node.tags =
55
+ strategy === "append"
56
+ ? [...current, ...tags]
57
+ : strategy === "prepend"
58
+ ? [...tags, ...current]
59
+ : [...tags];
60
+ return handle;
61
+ },
62
+ retry(retries) {
63
+ node.retries = retries;
64
+ return handle;
65
+ },
66
+ waitForDone() {
67
+ node.waitForDone = true;
68
+ return handle;
69
+ },
70
+ pin() {
71
+ node.pinned = true;
72
+ return handle;
73
+ },
74
+ setup(fn) {
75
+ node.setups ??= [];
76
+ node.setups.push(fn);
77
+ return handle;
78
+ },
79
+ teardown(fn) {
80
+ node.teardowns ??= [];
81
+ node.teardowns.push(fn);
82
+ return handle;
83
+ },
84
+ };
85
+ return handle;
86
+ }
87
+ export function groupHandle(node) {
88
+ const handle = {
89
+ get title() {
90
+ return node.name;
91
+ },
92
+ tap(callback) {
93
+ for (const child of node.children) {
94
+ if (child.kind === "test")
95
+ callback(testHandle(child));
96
+ }
97
+ return handle;
98
+ },
99
+ setup(fn) {
100
+ node.hooks.push({ type: "beforeAll", fn });
101
+ return handle;
102
+ },
103
+ teardown(fn) {
104
+ node.hooks.push({ type: "afterAll", fn });
105
+ return handle;
106
+ },
107
+ each: {
108
+ setup(fn) {
109
+ node.hooks.push({ type: "beforeEach", fn });
110
+ },
111
+ teardown(fn) {
112
+ node.hooks.push({ type: "afterEach", fn });
113
+ },
114
+ timeout(ms) {
115
+ node.eachTimeout = ms;
116
+ },
117
+ retry(retries) {
118
+ node.eachRetries = retries;
119
+ },
120
+ },
121
+ };
122
+ return handle;
123
+ }
124
+ /**
125
+ * A handle whose `setup`/`teardown` append to the given arrays — the caller
126
+ * owns when those hooks run, so the same handle serves the bootstrap's
127
+ * `configureSuite` and a plugin's `runner.onSuite`.
128
+ */
129
+ export function makeSuiteHandle(name, setup, teardown) {
130
+ const handle = {
131
+ name,
132
+ setup(fn) {
133
+ setup.push(fn);
134
+ return handle;
135
+ },
136
+ teardown(fn) {
137
+ teardown.push(fn);
138
+ return handle;
139
+ },
140
+ onTest(callback) {
141
+ registerTestTap(callback);
142
+ return handle;
143
+ },
144
+ onGroup(callback) {
145
+ registerGroupTap(callback);
146
+ return handle;
147
+ },
148
+ bail(toggle = true) {
149
+ setBail(toggle);
150
+ return handle;
151
+ },
152
+ };
153
+ return handle;
154
+ }
155
+ /**
156
+ * The suite the current `configure()` call is running for. Set before plugins
157
+ * run so `runner.onSuite` has something to hand back — a worker runs exactly
158
+ * one suite, so Japa's "called once per suite" is "called once".
159
+ */
160
+ let current;
161
+ export function setCurrentSuite(handle) {
162
+ current = handle;
163
+ }
164
+ export function currentSuite() {
165
+ return current;
166
+ }
167
+ /**
168
+ * Callbacks registered before the file is imported (`configureSuite`, and a
169
+ * plugin reaching for `runner.bail`), applied once the tree exists. Process-wide,
170
+ * like the rest of the bootstrap state.
171
+ */
172
+ const taps = { onTest: [], onGroup: [] };
173
+ /** Register a per-test tap (Japa `Suite#onTest`). */
174
+ export function registerTestTap(callback) {
175
+ taps.onTest.push(callback);
176
+ }
177
+ /** Register a per-group tap (Japa `Suite#onGroup`). */
178
+ export function registerGroupTap(callback) {
179
+ taps.onGroup.push(callback);
180
+ }
181
+ /** Ask this suite to stop at the first failure (Japa `Suite#bail`). */
182
+ export function setBail(toggle) {
183
+ taps.bail = toggle;
184
+ }
185
+ /** Whether a tap asked for bail; `undefined` leaves the CLI flag in charge. */
186
+ export function tappedBail() {
187
+ return taps.bail;
188
+ }
189
+ /** Test seam: drop every registered tap. */
190
+ export function resetTaps() {
191
+ taps.onTest.length = 0;
192
+ taps.onGroup.length = 0;
193
+ taps.bail = undefined;
194
+ current = undefined;
195
+ }
196
+ /**
197
+ * Walk the collected tree, handing every test to the `onTest` taps and every
198
+ * group to the `onGroup` ones. Depth-first in declaration order, so a tap sees
199
+ * the tests in the order they will run.
200
+ */
201
+ export function applyTaps(root) {
202
+ if (taps.onTest.length === 0 && taps.onGroup.length === 0)
203
+ return;
204
+ const walk = (node) => {
205
+ for (const child of node.children) {
206
+ if (child.kind === "test") {
207
+ for (const callback of taps.onTest)
208
+ callback(testHandle(child));
209
+ continue;
210
+ }
211
+ for (const callback of taps.onGroup)
212
+ callback(groupHandle(child));
213
+ walk(child);
214
+ }
215
+ };
216
+ walk(root);
217
+ }
218
+ //# sourceMappingURL=suite-taps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suite-taps.js","sourceRoot":"","sources":["../../src/runtime/suite-taps.ts"],"names":[],"mappings":"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"}
@@ -7,12 +7,36 @@
7
7
  * invocations never share state.
8
8
  */
9
9
  import { AsyncLocalStorage } from "node:async_hooks";
10
- export type TestFn = () => void | Promise<void>;
10
+ import type { TestContext } from "./context.js";
11
+ import { type TestCleanup } from "./test-context.js";
12
+ /**
13
+ * Signals completion of a `waitForDone()` test. Call `done()` to pass, or
14
+ * `done(error)` to fail (Japa parity). Ignored unless `test.waitForDone()`.
15
+ */
16
+ export type DoneFn = (error?: unknown) => void;
17
+ /**
18
+ * A test body. Receives the injected {@link TestContext} as its first argument
19
+ * and a `done` callback as its second (Japa parity). Existing zero/one-argument
20
+ * bodies stay valid — they simply ignore the extra parameters.
21
+ */
22
+ export type TestFn = (ctx: TestContext, done: DoneFn) => void | Promise<void>;
11
23
  export type SuiteFn = () => void;
24
+ /**
25
+ * Teardown a hook may return (Vitest/Japa parity). Receives `(hasError, subject)`
26
+ * — whether the test/group errored, and the Test or Group instance. Both params
27
+ * are optional so plain `() => …` cleanups stay valid.
28
+ */
29
+ export type CleanupFn = (hasError?: boolean, subject?: TestInstance | GroupInstance) => void | Promise<void>;
30
+ /**
31
+ * A lifecycle hook. Receives the Test instance (test hooks) or Group instance
32
+ * (group hooks) as its argument (Japa parity); may return a {@link CleanupFn}.
33
+ * Existing zero-argument hooks stay valid.
34
+ */
35
+ export type HookFn = ((subject?: TestInstance | GroupInstance) => void | Promise<void>) | ((subject?: TestInstance | GroupInstance) => CleanupFn | Promise<CleanupFn>);
12
36
  export type HookType = "beforeAll" | "afterAll" | "beforeEach" | "afterEach";
13
37
  export interface Hook {
14
38
  type: HookType;
15
- fn: TestFn;
39
+ fn: HookFn;
16
40
  }
17
41
  export type RunMode = "run" | "skip" | "only" | "todo";
18
42
  export interface TestNode {
@@ -22,6 +46,174 @@ export interface TestNode {
22
46
  mode: RunMode;
23
47
  parent: SuiteNode;
24
48
  location?: string;
49
+ /** Extra attempts on failure (`0` = run once). `test.retry(n)` / `{ retry }`. */
50
+ retries?: number;
51
+ /** Per-test timeout in ms. `0` disables. `test.timeout(ms)` / `{ timeout }`. */
52
+ timeoutMs?: number;
53
+ /** Tags for `--tags` filtering. `test.tags(...)` / `{ tags }`. */
54
+ tags?: string[];
55
+ /** When `true`, the test is expected to throw — `test.fails()`. */
56
+ failing?: boolean;
57
+ /** Reason attached to `test.fails(reason)` / `test.skip(cond, reason)`. */
58
+ reason?: string;
59
+ /** Marked via `test.pin()` — reported as pinned; runs like `.only`. */
60
+ pinned?: boolean;
61
+ /** Per-test setup hooks — `test.setup(fn)` (run just before this test). */
62
+ setups?: HookFn[];
63
+ /** Per-test teardown hooks — `test.teardown(fn)` (run just after this test). */
64
+ teardowns?: HookFn[];
65
+ /** Resolved dataset rows backing this test — `test(name, fn).with(rows)` (Japa `ctx.test.dataset`). */
66
+ dataset?: readonly unknown[];
67
+ /**
68
+ * Deferred dataset source — `test(name, fn).with(rows)`. An array OR a
69
+ * (possibly async) function returning one (Japa parity). Resolved at RUN time
70
+ * so async datasets work; the node then expands into one result per row.
71
+ */
72
+ datasetFn?: DatasetSource<unknown>;
73
+ /**
74
+ * The dataset test body — receives `(ctx, row)`. Set by `.with().run()` or
75
+ * re-homed from `test(name, fn).with()`. Declared as a METHOD signature so its
76
+ * `row` param is bivariant: a caller's `(ctx, row: Row) => …` assigns here
77
+ * without a cast (the type-erasure boundary between the generic `.with<Row>`
78
+ * surface and this untyped node storage).
79
+ */
80
+ datasetBody?(ctx: TestContext, row: unknown): void | Promise<void>;
81
+ /** Wait for the `done()` callback before completing — `test.waitForDone()`. */
82
+ waitForDone?: boolean;
83
+ /**
84
+ * Deferred skip condition — `test.skip(fn)` where `fn` may be async (Japa
85
+ * parity). Evaluated at RUN time. A static boolean sets `mode` at collection
86
+ * instead, so this only ever holds a function.
87
+ */
88
+ skipCondition?: () => boolean | Promise<boolean>;
89
+ }
90
+ /** A group's instance, passed to `group.setup`/`teardown` hooks (Japa parity). */
91
+ export interface GroupInstance {
92
+ /** The group's own name. */
93
+ title: string;
94
+ /** Fully-qualified dotted name (suite path). */
95
+ fullName: string;
96
+ }
97
+ /**
98
+ * The running test's own instance, injected as `ctx.test` (Japa parity). Read
99
+ * access to the test's identity + resolved options + dataset.
100
+ */
101
+ export interface TestInstance {
102
+ /** The test's own name (leaf). */
103
+ title: string;
104
+ /** Fully-qualified dotted name (suite path + title). */
105
+ fullName: string;
106
+ /** Resolved options in effect for this run (Japa `test.options` parity). */
107
+ options: {
108
+ /** The test's title (leaf name). */
109
+ title: string;
110
+ timeout: number;
111
+ retries: number;
112
+ tags: readonly string[];
113
+ /** Whether this is a `todo` test. Always `false` inside a running test. */
114
+ isTodo: boolean;
115
+ /** Whether the test is expected to throw — `test.fails()` (Japa parity). */
116
+ isFailing: boolean;
117
+ /**
118
+ * Free-form metadata bag (Japa `options.meta`): `fileName`, `group` (the
119
+ * enclosing {@link Group} instance, or `undefined` outside a group),
120
+ * `suite` (`{ name }` — `"default"` unless `configure({ suite })` or
121
+ * `--suite` names it, exactly like Japa's implicit suite), and `abort`.
122
+ */
123
+ meta: Record<string, unknown>;
124
+ };
125
+ /** The full dataset when created via `test(name, fn).with(rows)`, else undefined. */
126
+ dataset?: readonly unknown[];
127
+ /**
128
+ * The injected {@link TestContext} for this run — Japa's `$test.context`. Set
129
+ * before the `beforeEach` chain, so lifecycle hooks can reach it; the same
130
+ * context is passed to the test body as its first argument. Undefined only
131
+ * outside an active run.
132
+ */
133
+ context?: TestContext;
134
+ /** Whether the test was pinned via `test.pin()`. */
135
+ isPinned: boolean;
136
+ /**
137
+ * Re-arm the running test's timeout (Japa `ctx.test.resetTimeout`). With no
138
+ * argument, restarts the current timeout; with `ms`, sets a new one. Useful
139
+ * for long polling steps that shouldn't count against a single deadline.
140
+ */
141
+ resetTimeout(ms?: number): void;
142
+ /**
143
+ * Register a teardown that runs at the end of THIS test regardless of outcome
144
+ * (Japa `test.cleanup`). This is the same registry as `ctx.cleanup`; it is
145
+ * exposed here so a resource macro's `t` (see `test.macro`) can register
146
+ * cleanups — `test.macro((t) => { t.cleanup(() => …) })`.
147
+ */
148
+ cleanup(fn: TestCleanup): void;
149
+ }
150
+ /** Vitest-style per-test options (3rd argument to `test`). */
151
+ export interface TestOptions {
152
+ /** Extra attempts on failure. */
153
+ retry?: number;
154
+ /** Per-test timeout in ms (`0` disables). */
155
+ timeout?: number;
156
+ /** Tags for `--tags` filtering. */
157
+ tags?: string[];
158
+ /** Expect the test to fail. */
159
+ fails?: boolean;
160
+ }
161
+ /**
162
+ * Chainable handle returned by `test(...)` — Japa-style fluent modifiers that
163
+ * mutate the just-registered node. Ignoring the return keeps Vitest's
164
+ * `test(name, fn)` ergonomics; chaining adds `@japa/runner` parity.
165
+ */
166
+ /** How `tags()` merges with any tags already on the test (Japa parity). */
167
+ export type TagStrategy = "replace" | "append" | "prepend";
168
+ export interface TestHandle {
169
+ retry(n: number): TestHandle;
170
+ timeout(ms: number): TestHandle;
171
+ disableTimeout(): TestHandle;
172
+ /**
173
+ * Attach tags. Japa parity: `tags(['@slow'], 'append')`. `strategy` defaults
174
+ * to `'replace'`. A single string is accepted as a shorthand.
175
+ */
176
+ tags(tags: string | string[], strategy?: TagStrategy): TestHandle;
177
+ /** Expect the test to throw. Optional `reason` documents why (Japa parity). */
178
+ fails(reason?: string): TestHandle;
179
+ /** Run a hook just before THIS test (Japa `test.setup`). */
180
+ setup(fn: HookFn): TestHandle;
181
+ /** Run a hook just after THIS test (Japa `test.teardown`). */
182
+ teardown(fn: HookFn): TestHandle;
183
+ /** Pin the test: when any test is pinned, only pinned tests run (Japa `test.pin`). */
184
+ pin(): TestHandle;
185
+ /**
186
+ * Skip the test, optionally only when `condition` (a boolean OR a function
187
+ * returning one — which may be async, Japa parity) is true, with a `reason`.
188
+ * A function condition is evaluated at RUN time, not at collection.
189
+ */
190
+ skip(condition?: boolean | (() => boolean | Promise<boolean>), reason?: string): TestHandle;
191
+ /** Complete only once the body calls its `done` callback (Japa `waitForDone`). */
192
+ waitForDone(): TestHandle;
193
+ /**
194
+ * Attach a dataset (Japa parity). Two forms:
195
+ * - `test('title', (ctx, row) => …).with([...])` — the body from `test()`
196
+ * is re-homed and runs once per row (row typed as the 2nd body arg).
197
+ * - `test('title').with([...]).run((ctx, row) => …)` — the fully-typed
198
+ * form; `row` is inferred as the dataset element type.
199
+ * `rows` may be an array OR a (possibly async) function returning one,
200
+ * resolved at run time. Title tokens: `{prop}` (object rows), `{$i}`
201
+ * (1-based index), `{$self}` (the row itself).
202
+ */
203
+ with<Row>(rows: DatasetSource<Row>): DatasetHandle<Row>;
204
+ }
205
+ /**
206
+ * The handle returned by `test(...).with(rows)` — carries the dataset element
207
+ * type so `.run((ctx, row) => …)` types `row` precisely (Japa parity).
208
+ */
209
+ export interface DatasetHandle<Row> {
210
+ /**
211
+ * Provide the per-row body when `test('title')` had none —
212
+ * `test('title').with([...]).run((ctx, row) => …)`. Takes only the body (no
213
+ * name); the name came from `test()`. Returns the base handle for further
214
+ * chaining.
215
+ */
216
+ run(fn: (ctx: TestContext, row: Row) => void | Promise<void>): TestHandle;
25
217
  }
26
218
  export interface SuiteNode {
27
219
  kind: "suite";
@@ -30,6 +222,18 @@ export interface SuiteNode {
30
222
  parent: SuiteNode | undefined;
31
223
  children: Array<SuiteNode | TestNode>;
32
224
  hooks: Hook[];
225
+ /** Default per-test timeout for tests in this group — `group.each.timeout(ms)`. */
226
+ eachTimeout?: number;
227
+ /** Default per-test retries for tests in this group — `group.each.retry(n)`. */
228
+ eachRetries?: number;
229
+ /** Opened via `test.group()` (vs `describe`) — Japa forbids nesting these. */
230
+ isGroup?: boolean;
231
+ /**
232
+ * The single {@link Group} instance built by `test.group()` for this node —
233
+ * the body handle, the value returned, AND the `self` its hooks receive
234
+ * (Japa `self === group`). Absent on plain `describe` suites.
235
+ */
236
+ groupInstance?: Group;
33
237
  }
34
238
  interface CollectionContext {
35
239
  root: SuiteNode;
@@ -72,20 +276,122 @@ type SuiteApi = {
72
276
  type ArrayRow = readonly unknown[];
73
277
  type ObjectRow = Readonly<Record<string, unknown>>;
74
278
  type EachRow = ArrayRow | ObjectRow | null | undefined | string | number | boolean | bigint | symbol;
279
+ /** Source of `each` rows: a static array or a (sync) function returning one. */
280
+ type EachRows<Row extends EachRow> = readonly Row[] | (() => readonly Row[]);
281
+ /**
282
+ * Source of dataset rows (`test(name, fn).with(...)`): a static array OR a
283
+ * function returning one — the function may be async (Japa parity). Resolved at
284
+ * RUN time so async sources work.
285
+ */
286
+ export type DatasetSource<Row> = readonly Row[] | (() => readonly Row[] | Promise<readonly Row[]>);
287
+ /**
288
+ * The `group` handle passed to `test.group(name, (group) => …)` (Japa parity).
289
+ * `setup`/`teardown` run once for the whole group; `each.setup`/`each.teardown`
290
+ * run around every test in it. Hook bodies may return a cleanup function.
291
+ */
292
+ export interface Group extends GroupInstance {
293
+ /** Run once before all tests in the group (≈ `beforeAll`). */
294
+ setup(fn: HookFn): void;
295
+ /** Run once after all tests in the group (≈ `afterAll`). */
296
+ teardown(fn: HookFn): void;
297
+ /** Per-test hooks + defaults for this group (≈ `beforeEach`/`afterEach`). */
298
+ each: {
299
+ setup(fn: HookFn): void;
300
+ teardown(fn: HookFn): void;
301
+ /** Default timeout (ms) for every test in the group — `group.each.timeout(ms)`. */
302
+ timeout(ms: number): void;
303
+ /** Disable the timeout for every test in the group. */
304
+ disableTimeout(): void;
305
+ /** Default retries for every test in the group — `group.each.retry(n)`. */
306
+ retry(n: number): void;
307
+ };
308
+ /**
309
+ * Configure every test in the group — `group.tap(t => t.tags('@slow'))` or
310
+ * `group.tap(t => { t.options.title = t.options.title.toUpperCase() })`.
311
+ * Applied to all tests registered in the group body. The callback receives a
312
+ * {@link TapHandle}: the chainable modifiers PLUS a mutable `options` view
313
+ * (Japa `test.options.title` parity).
314
+ */
315
+ tap(fn: (test: TapHandle) => void): void;
316
+ }
317
+ /** The mutable, resolved options of a test, exposed to `group.tap` (Japa parity). */
318
+ export interface TapOptions {
319
+ /** The test's title — assignable to rename it (Japa `test.options.title`). */
320
+ title: string;
321
+ /** The test's tags — assignable to replace them. */
322
+ tags: string[];
323
+ /** Per-test timeout in ms (`undefined` = inherit). */
324
+ timeout: number | undefined;
325
+ /** Extra attempts on failure (`undefined` = inherit). */
326
+ retries: number | undefined;
327
+ }
328
+ /**
329
+ * The handle passed to `group.tap` — a {@link TestHandle} (chainable modifiers)
330
+ * augmented with a mutable {@link TapOptions} view, matching Japa's `test`
331
+ * instance whose `options` are directly assignable.
332
+ */
333
+ export interface TapHandle extends TestHandle {
334
+ readonly options: TapOptions;
335
+ }
75
336
  type TestApi = {
76
- (name: string, fn: TestFn): void;
337
+ /**
338
+ * Register a test. Omitting `fn` marks it `todo` (Japa parity) — reported as
339
+ * pending and never executed — unless a dataset body is supplied later via
340
+ * `.with(...).run(fn)`.
341
+ */
342
+ (name: string, fn?: TestFn, options?: TestOptions | number): TestHandle;
77
343
  skip(name: string, fn?: TestFn): void;
78
- only(name: string, fn: TestFn): void;
344
+ only(name: string, fn: TestFn, options?: TestOptions | number): TestHandle;
79
345
  todo(name: string): void;
80
- each<Row extends EachRow>(rows: readonly Row[]): (name: string, fn: (row: Row) => void | Promise<void>) => void;
346
+ each<Row extends EachRow>(rows: EachRows<Row>): (name: string, fn: (row: Row) => void | Promise<void>) => void;
347
+ /**
348
+ * Japa-style grouping: `test.group(name, (group) => { … })`. Returns the
349
+ * {@link Group} — the SAME instance passed to the body and to the group's
350
+ * hooks as `self` (Japa's current release returns the group; `self === group`).
351
+ */
352
+ group(name: string, fn: (group: Group) => void): Group;
353
+ /**
354
+ * Create a resource macro (Japa `test.macro`). The callback receives the
355
+ * running test instance `t` (carrying `t.cleanup`) followed by any arguments;
356
+ * `macro` returns a function that, called inside a test body, invokes the
357
+ * callback against the active test and returns its value:
358
+ *
359
+ * const useFile = test.macro((t, path: string) => {
360
+ * t.cleanup(() => rm(path))
361
+ * return writeFile(path, '…')
362
+ * })
363
+ * // inside a test: await useFile('tmp/a.txt')
364
+ *
365
+ * To add a chainable method to every handle instead, use {@link Test.macro}.
366
+ */
367
+ macro<Args extends unknown[], R>(callback: (test: TestInstance, ...args: Args) => R): (...args: Args) => R;
368
+ };
369
+ /**
370
+ * Interpolate a dataset test title (Japa parity). Tokens:
371
+ * - `{$i}` → the 1-based row index
372
+ * - `{$self}`→ the row itself (stringified) — for primitive/array rows
373
+ * - `{prop}` / `{a.b}` → a (dotted) property lookup on an object row
374
+ * Unknown `{tokens}` are left verbatim. A template with no token at all is
375
+ * returned unchanged and therefore repeats for every row — Japa's behaviour,
376
+ * and what the golden dataset spec pins down.
377
+ */
378
+ export declare function interpolateDatasetTitle(template: string, row: unknown, index: number): string;
379
+ /**
380
+ * Class-level extension surface (Japa `Test.macro`). Registers a named method
381
+ * available on every test handle; `this` inside it is the handle, so it can
382
+ * chain (`Test.macro('slow', function () { this.tags(['@slow']); return this })`).
383
+ * Pair with a `declare module` augmentation for the types.
384
+ */
385
+ export declare const Test: {
386
+ macro(name: string, fn: (this: TestHandle, ...args: unknown[]) => unknown): void;
81
387
  };
82
388
  export declare const describe: SuiteApi;
83
389
  export declare const test: TestApi;
84
390
  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;
391
+ export declare function addHook(type: HookType, fn: HookFn): void;
392
+ export declare const beforeAll: (fn: HookFn) => void;
393
+ export declare const afterAll: (fn: HookFn) => void;
394
+ export declare const beforeEach: (fn: HookFn) => void;
395
+ export declare const afterEach: (fn: HookFn) => void;
90
396
  export {};
91
397
  //# sourceMappingURL=suite.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"suite.d.ts","sourceRoot":"","sources":["../../src/runtime/suite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"suite.d.ts","sourceRoot":"","sources":["../../src/runtime/suite.ts"],"names":[],"mappings":"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"}