@glubean/runner 0.8.0 → 0.8.4

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.
@@ -0,0 +1,528 @@
1
+ /**
2
+ * Dry-run projection (C2 / P2) — execute a simple test's function body with a
3
+ * SYNTHETIC context that records its SHAPE (assertions made, endpoints hit)
4
+ * without performing any real I/O. Powers `glubean dry-run`, whose output feeds
5
+ * the cloud "test definition" team-review view.
6
+ *
7
+ * This is a SEPARATE execution path from the runner harness and from the
8
+ * scanner: the scanner never executes user code (pure AST), while dry-run DOES
9
+ * import + invoke the test body. The synthetic ctx makes that safe — every
10
+ * effect is intercepted — and a request budget breaks data-dependent loops.
11
+ *
12
+ * Branch completeness: native `if`/`switch` only reveals the one arm the
13
+ * synthetic response happens to take, so authors should use `ctx.when()` /
14
+ * `ctx.switch()`, which the projector runs EXHAUSTIVELY (every arm, branch-
15
+ * tagged). The scanner's `bareBranchCount` is folded in to mark a projection
16
+ * partial when bare branches remain.
17
+ */
18
+ import { AsyncLocalStorage } from "node:async_hooks";
19
+ import { runWithRuntime } from "@glubean/sdk/internal";
20
+ /** Breaker for data-dependent loops (synthetic guards are perpetually truthy). */
21
+ const REQUEST_BUDGET = 50;
22
+ class DryRunBudgetExceeded extends Error {
23
+ }
24
+ class DryRunSkip extends Error {
25
+ }
26
+ /** Branch-local abort thrown by ctx.skip/ctx.fail inside an arm: stops the
27
+ * current arm's remaining code (which the real runner would never reach) but is
28
+ * caught by the when/switch/while arm wrapper so sibling arms still project. */
29
+ class AbortArm extends Error {
30
+ }
31
+ /** Array helpers whose callback should run once (with a representative item)
32
+ * so in-callback assertions/requests are captured, like the for-of path. */
33
+ const ARRAY_CALLBACK_HELPERS = new Set([
34
+ "forEach",
35
+ "map",
36
+ "filter",
37
+ "some",
38
+ "every",
39
+ "find",
40
+ "findIndex",
41
+ "flatMap",
42
+ "reduce",
43
+ "reduceRight",
44
+ ]);
45
+ /**
46
+ * A value that survives arbitrary property access, calls, await, and iteration
47
+ * so a test body can run to completion against it without throwing. Numeric/
48
+ * string coercion yields 0/""; iteration yields one representative item; `then`
49
+ * is absent so awaiting it returns the proxy itself (not a hang).
50
+ */
51
+ function makeSyntheticResponse() {
52
+ const target = function () { };
53
+ const handler = {
54
+ get(_t, prop) {
55
+ if (prop === "then")
56
+ return undefined; // not thenable → await yields the proxy
57
+ if (prop === Symbol.toPrimitive)
58
+ return () => 0;
59
+ // Yield ONE representative item so `for (const x of body.items) { ... }`
60
+ // runs its body once and the in-loop assertions/endpoints are captured
61
+ // (not silently dropped). Single item keeps it finite.
62
+ if (prop === Symbol.iterator)
63
+ return function* () {
64
+ yield makeSyntheticResponse();
65
+ };
66
+ if (prop === Symbol.asyncIterator)
67
+ return async function* () {
68
+ yield makeSyntheticResponse();
69
+ };
70
+ if (prop === "status")
71
+ return 200;
72
+ if (prop === "ok")
73
+ return true;
74
+ if (prop === "statusText")
75
+ return "OK";
76
+ if (prop === "length")
77
+ return 0;
78
+ if (prop === "json" || prop === "text" || prop === "arrayBuffer" || prop === "blob") {
79
+ return () => Promise.resolve(makeSyntheticResponse());
80
+ }
81
+ // Array iteration helpers: invoke the callback ONCE with a representative
82
+ // item so assertions/requests inside `body.items.forEach(...)` / `.map(...)`
83
+ // are captured (mirrors the for-of path). Returns synthetic for chaining.
84
+ if (ARRAY_CALLBACK_HELPERS.has(prop)) {
85
+ return (cb, ..._rest) => {
86
+ if (typeof cb === "function") {
87
+ if (prop === "reduce" || prop === "reduceRight") {
88
+ cb(makeSyntheticResponse(), makeSyntheticResponse(), 0, makeSyntheticResponse());
89
+ }
90
+ else {
91
+ cb(makeSyntheticResponse(), 0, makeSyntheticResponse());
92
+ }
93
+ }
94
+ return makeSyntheticResponse();
95
+ };
96
+ }
97
+ return makeSyntheticResponse();
98
+ },
99
+ apply() {
100
+ return makeSyntheticResponse();
101
+ },
102
+ has() {
103
+ return true;
104
+ },
105
+ };
106
+ return new Proxy(target, handler);
107
+ }
108
+ /** A ky-like ResponsePromise: awaitable AND chainable with `.json()`/`.text()`. */
109
+ function responsePromise(ep) {
110
+ const p = Promise.resolve(makeSyntheticResponse());
111
+ p.json = () => Promise.resolve(makeSyntheticResponse());
112
+ p.text = () => Promise.resolve(makeSyntheticResponse());
113
+ p.arrayBuffer = () => Promise.resolve(makeSyntheticResponse());
114
+ p.blob = () => Promise.resolve(makeSyntheticResponse());
115
+ // `.track(pattern)` — author declares the canonical endpoint this request maps
116
+ // to; record it on the captured endpoint so projection coverage links exactly.
117
+ p.track = (pattern) => {
118
+ if (ep && typeof pattern === "string")
119
+ ep.pattern = pattern;
120
+ return p;
121
+ };
122
+ return p;
123
+ }
124
+ // Per-projection sink for raw global `fetch()` calls (outside ctx.http), carried
125
+ // through AsyncLocalStorage so CONCURRENT dryRunTest() calls each record into
126
+ // their own shape instead of a shared module slot.
127
+ const rawRecordALS = new AsyncLocalStorage();
128
+ // Ref-count the global patch so concurrent/nested installs share one stub and
129
+ // the real fetch is restored only when the last holder releases.
130
+ let patchRefCount = 0;
131
+ let savedFetch;
132
+ /**
133
+ * Patch I/O globals so a dry-run never performs real network I/O even when a
134
+ * test body bypasses `ctx.http` (e.g. raw `fetch`). Raw fetches route into the
135
+ * ALS-carried recorder of the active projection. Returns a release function;
136
+ * the stub is removed when the last holder releases (ref-counted). The worker
137
+ * installs once before imports and never releases (process-wide). (fs/db clients
138
+ * a test imports directly can't be generically stubbed — authoring guidance is
139
+ * to route I/O through `ctx`.)
140
+ */
141
+ export function installDryRunGlobals() {
142
+ const g = globalThis;
143
+ if (patchRefCount === 0) {
144
+ savedFetch = g.fetch;
145
+ g.fetch = ((input, init) => {
146
+ const url = typeof input === "string"
147
+ ? input
148
+ : input instanceof URL
149
+ ? input.href
150
+ : input && typeof input === "object" && typeof input.url === "string"
151
+ ? input.url
152
+ : input && typeof input === "object" && typeof input.href === "string"
153
+ ? input.href
154
+ : "<dynamic>";
155
+ const rawMethod = init?.method ??
156
+ (input && typeof input === "object" ? input.method : undefined);
157
+ const method = (typeof rawMethod === "string" ? rawMethod : "GET").toUpperCase();
158
+ return (async () => {
159
+ // May throw DryRunBudgetExceeded → rejects, breaking a raw-fetch loop.
160
+ rawRecordALS.getStore()?.(method, url);
161
+ // Return the SAME deep synthetic as ctx.http so `await fetch(url).json()`
162
+ // and downstream `body.items.forEach(...)` / `body.user.id` project too.
163
+ return makeSyntheticResponse();
164
+ })();
165
+ });
166
+ }
167
+ patchRefCount++;
168
+ let released = false;
169
+ return () => {
170
+ if (released)
171
+ return;
172
+ released = true;
173
+ patchRefCount--;
174
+ if (patchRefCount === 0 && savedFetch) {
175
+ g.fetch = savedFetch;
176
+ savedFetch = undefined;
177
+ }
178
+ };
179
+ }
180
+ /** Builds a recording TestContext plus a collector for what it recorded. */
181
+ function makeDryRunCtx() {
182
+ const assertions = [];
183
+ const endpoints = [];
184
+ let reqCount = 0;
185
+ let whenCounter = 0;
186
+ let switchCounter = 0;
187
+ let whileCounter = 0;
188
+ const branchStack = [];
189
+ const curBranch = () => branchStack.length ? branchStack.join(">") : undefined;
190
+ const record = (method, url) => {
191
+ if (++reqCount > REQUEST_BUDGET)
192
+ throw new DryRunBudgetExceeded();
193
+ const ep = { method, url, branch: curBranch() };
194
+ endpoints.push(ep);
195
+ // Pass the just-recorded endpoint so a chained `.track(pattern)` can tag it
196
+ // with the author-declared canonical endpoint (collapsing concrete URLs like
197
+ // /users/123 onto /users/:id, exact for endpoint-coverage linking).
198
+ return responsePromise(ep);
199
+ };
200
+ const pushAssertion = (kind, message) => {
201
+ assertions.push({ kind, message, branch: curBranch() });
202
+ };
203
+ // Extract the URL/method from a ky input (string | URL | Request-like).
204
+ const urlOf = (input) => {
205
+ if (typeof input === "string")
206
+ return input;
207
+ if (input instanceof URL)
208
+ return input.href;
209
+ if (input && typeof input === "object") {
210
+ const o = input;
211
+ if (typeof o.url === "string")
212
+ return o.url; // Request
213
+ if (typeof o.href === "string")
214
+ return o.href; // URL-like
215
+ }
216
+ return "<dynamic>";
217
+ };
218
+ const methodOf = (input, opts, fallback) => {
219
+ const fromOpts = opts?.method;
220
+ const fromReq = input && typeof input === "object" ? input.method : undefined;
221
+ const m = typeof fromOpts === "string" ? fromOpts : typeof fromReq === "string" ? fromReq : undefined;
222
+ return m ? m.toUpperCase() : fallback;
223
+ };
224
+ // Join a configured/extended prefixUrl with a request path the way ky does:
225
+ // prepend the prefix unless the path is already absolute. Keeps projected
226
+ // endpoints accurate for `configure({ http: { prefixUrl } })` / `.extend(...)`.
227
+ const joinUrl = (prefix, url) => {
228
+ if (!prefix || /^[a-z][a-z0-9+.-]*:\/\//i.test(url))
229
+ return url;
230
+ return `${prefix.replace(/\/+$/, "")}/${url.replace(/^\/+/, "")}`;
231
+ };
232
+ // Append ky `searchParams` (object | array | string | URLSearchParams) so the
233
+ // projected endpoint reflects the real query, like the runner's trace.
234
+ const applySearchParams = (url, sp) => {
235
+ if (sp == null)
236
+ return url;
237
+ let qs = "";
238
+ if (typeof sp === "string")
239
+ qs = sp.replace(/^\?/, "");
240
+ else if (sp instanceof URLSearchParams)
241
+ qs = sp.toString();
242
+ else if (typeof sp === "object") {
243
+ const pairs = Array.isArray(sp)
244
+ ? sp.map(([k, v]) => [String(k), String(v)])
245
+ : Object.entries(sp).map(([k, v]) => [k, String(v)]);
246
+ qs = new URLSearchParams(pairs).toString();
247
+ }
248
+ if (!qs)
249
+ return url;
250
+ return url + (url.includes("?") ? "&" : "?") + qs;
251
+ };
252
+ // ── http: callable (ky shorthand) + method shortcuts + prefix/searchParams-aware extend ──
253
+ const makeHttp = (prefix, defaultSp) => {
254
+ // method0 === null → derive from opts.method / Request.method (callable form);
255
+ // a fixed string → method shortcut (get/post/...).
256
+ const call = (method0, input, opts) => {
257
+ const o = opts;
258
+ // A per-request prefixUrl overrides the client's prefix (ky semantics).
259
+ const effPrefix = typeof o?.prefixUrl === "string" ? o.prefixUrl : prefix;
260
+ let url = joinUrl(effPrefix, urlOf(input));
261
+ url = applySearchParams(url, defaultSp); // client-level defaults (configure/extend)
262
+ url = applySearchParams(url, o?.searchParams); // per-request
263
+ return record(method0 ?? methodOf(input, opts, "GET"), url);
264
+ };
265
+ const h = (input, opts) => call(null, input, opts);
266
+ h.get = (input, opts) => call("GET", input, opts);
267
+ h.post = (input, opts) => call("POST", input, opts);
268
+ h.put = (input, opts) => call("PUT", input, opts);
269
+ h.patch = (input, opts) => call("PATCH", input, opts);
270
+ h.delete = (input, opts) => call("DELETE", input, opts);
271
+ h.head = (input, opts) => call("HEAD", input, opts);
272
+ h.extend = (opts) => makeHttp(typeof opts?.prefixUrl === "string" ? opts.prefixUrl : prefix, opts?.searchParams ?? defaultSp);
273
+ return h;
274
+ };
275
+ const http = makeHttp("");
276
+ // ── expect: fluent recorder mirroring the real Expectation surface. ──
277
+ // `.not` is a getter modifier (tracked → kind `expect.not.<matcher>`);
278
+ // `.orFail()` is a callable modifier. Async matchers
279
+ // (`await ctx.expect(res).toHaveJsonBody(...)`) work because `then` is absent.
280
+ const makeExpect = () => {
281
+ let negated = false;
282
+ const chain = new Proxy(function () { }, {
283
+ get(_t, prop) {
284
+ if (prop === "then")
285
+ return undefined; // not thenable → await yields chain
286
+ if (typeof prop === "symbol")
287
+ return undefined;
288
+ if (prop === "not") {
289
+ negated = true;
290
+ return chain;
291
+ }
292
+ if (prop === "orFail")
293
+ return () => chain; // callable modifier: `.orFail()`
294
+ return (...args) => {
295
+ // A trailing label is the LAST arg only when there's MORE than the
296
+ // matcher's value(s) — i.e. ≥2 args (`toBe(500, "no server error")`).
297
+ // A single string arg is the expected value (`toContain("ell")`).
298
+ const last = args[args.length - 1];
299
+ const message = args.length >= 2 && typeof last === "string" ? last : undefined;
300
+ pushAssertion(`expect.${negated ? "not." : ""}${String(prop)}`, message);
301
+ negated = false; // negation applies to one matcher
302
+ return chain;
303
+ };
304
+ },
305
+ apply() {
306
+ return chain;
307
+ },
308
+ });
309
+ return chain;
310
+ };
311
+ // vars/secrets/session are strings at runtime. Return a NAMED string
312
+ // placeholder so `${ctx.vars.require("BASE_URL")}/health` projects as
313
+ // `<BASE_URL>/health` (showing which env is used) instead of the numeric
314
+ // coercion of a synthetic proxy (`0/health`).
315
+ const accessor = {
316
+ get: (key) => `<${key}>`,
317
+ require: (key) => `<${key}>`,
318
+ // Return the placeholder proxy so `const { BASE_URL } = ctx.vars.all()`
319
+ // resolves to `<BASE_URL>`, consistent with get()/require().
320
+ all: () => placeholderRecord(),
321
+ set: () => { },
322
+ entries: () => [],
323
+ };
324
+ // Run one branch arm under its label: an AbortArm (from ctx.skip/ctx.fail)
325
+ // stops THIS arm but is swallowed here so sibling arms still project; budget/
326
+ // skip/real errors propagate.
327
+ const runArm = async (label, fn) => {
328
+ branchStack.push(label);
329
+ try {
330
+ await fn();
331
+ }
332
+ catch (e) {
333
+ if (!(e instanceof AbortArm))
334
+ throw e;
335
+ }
336
+ finally {
337
+ branchStack.pop();
338
+ }
339
+ };
340
+ const ctxBase = {
341
+ vars: accessor,
342
+ secrets: accessor,
343
+ session: accessor,
344
+ http,
345
+ log: () => { },
346
+ warn: () => { },
347
+ assert: (_cond, message) => pushAssertion("assert", message),
348
+ expect: () => makeExpect(),
349
+ validate: (data, _schema, label) => {
350
+ // Schema validation IS a verification — record it so schema-only tests
351
+ // don't project as having zero assertions.
352
+ pushAssertion("validate", typeof label === "string" ? label : undefined);
353
+ return data;
354
+ },
355
+ trace: () => { },
356
+ action: () => { },
357
+ event: () => { },
358
+ metric: () => { },
359
+ skip: (reason) => {
360
+ // Inside a when/switch/while arm: record + abort THIS arm (so code after
361
+ // skip, which the real runner never reaches, isn't projected) while
362
+ // sibling arms still project. Top-level: skip the whole test.
363
+ if (branchStack.length > 0) {
364
+ pushAssertion("skip", reason);
365
+ throw new AbortArm();
366
+ }
367
+ throw new DryRunSkip();
368
+ },
369
+ fail: (message) => {
370
+ // Record + abort the current path: the real runner throws here, so
371
+ // subsequent code in this arm/body never runs. The arm wrapper catches
372
+ // AbortArm so sibling arms still project; at top level it ends the body.
373
+ pushAssertion("fail", message);
374
+ throw new AbortArm();
375
+ },
376
+ pollUntil: async (_options, fn) => {
377
+ // Run the predicate once to capture endpoints; ignore its result.
378
+ await fn();
379
+ },
380
+ setTimeout: () => { },
381
+ retryCount: 0,
382
+ getMemoryUsage: () => null,
383
+ // ── projection core: run ALL arms, branch-tagged ──
384
+ when: async (_condition, thenFn, elseFn, describe) => {
385
+ // describe (optional) annotates the opaque condition for reviewers.
386
+ const base = describe ? `when#${whenCounter++} (${describe})` : `when#${whenCounter++}`;
387
+ await runArm(`${base}:then`, thenFn);
388
+ if (elseFn)
389
+ await runArm(`${base}:else`, elseFn);
390
+ },
391
+ switch: async (cases, defaultFn) => {
392
+ const idx = switchCounter++;
393
+ for (let i = 0; i < cases.length; i++) {
394
+ const d = cases[i].describe;
395
+ await runArm(`switch#${idx}:case[${i}]${d ? ` (${d})` : ""}`, () => cases[i].then());
396
+ }
397
+ if (defaultFn)
398
+ await runArm(`switch#${idx}:default`, defaultFn);
399
+ },
400
+ while: async (_condition, body, describe) => {
401
+ // Run the body ONCE — a representative iteration — instead of looping
402
+ // against the synthetic guard (which would spin to the request budget).
403
+ const idx = whileCounter++;
404
+ await runArm(describe ? `while#${idx} (${describe})` : `while#${idx}`, body);
405
+ },
406
+ };
407
+ // Wrap so UNKNOWN properties resolve to a synthetic value instead of throwing.
408
+ // This covers `test.extend()` fixtures (e.g. `ctx.auth`) without replicating
409
+ // the harness's fixture resolution: the body runs and its shape is captured;
410
+ // fixture values are synthetic (projection doesn't need their real values).
411
+ const ctxProxy = new Proxy(ctxBase, {
412
+ get(target, prop) {
413
+ if (prop in target)
414
+ return target[prop];
415
+ if (prop === "then")
416
+ return undefined;
417
+ if (typeof prop === "symbol")
418
+ return undefined;
419
+ return makeSyntheticResponse();
420
+ },
421
+ });
422
+ return { ctx: ctxProxy, assertions, endpoints, http, record };
423
+ }
424
+ /** Named-placeholder record so `configure()` var/secret reads resolve to
425
+ * `<KEY>` (a non-empty string) instead of throwing "missing" or coercing to 0. */
426
+ function placeholderRecord() {
427
+ return new Proxy({}, {
428
+ get: (_t, key) => (typeof key === "string" ? `<${key}>` : undefined),
429
+ });
430
+ }
431
+ /**
432
+ * Project one test's shape by executing its body against a synthetic ctx.
433
+ *
434
+ * @param test The Test object (from importing the test module).
435
+ * @param opts.exportName JS export name (for the shape label).
436
+ * @param opts.bareBranchCount Scanner-reported count of native `if`/`switch` in
437
+ * the body — when > 0 the projection is marked partial.
438
+ */
439
+ export async function dryRunTest(test, opts) {
440
+ const testId = test.meta.id;
441
+ const metaTags = test.meta.tags;
442
+ const base = {
443
+ testId,
444
+ exportName: opts.exportName,
445
+ ...(metaTags && metaTags.length ? { tags: metaTags } : {}),
446
+ assertions: [],
447
+ endpoints: [],
448
+ assertionCount: 0,
449
+ };
450
+ // Only simple tests have a directly-invokable fn body. Builder/workflow tests
451
+ // express shape through steps (already captured statically by the scanner).
452
+ if (test.type !== "simple" || typeof test.fn !== "function") {
453
+ return {
454
+ ...base,
455
+ projectionComplete: false,
456
+ incompleteReason: "not a simple test — dry-run shape projection covers simple tests only",
457
+ };
458
+ }
459
+ const { ctx, assertions, endpoints, http, record } = makeDryRunCtx();
460
+ let complete = true;
461
+ let reason;
462
+ let skipped = false;
463
+ // Install a synthetic runtime carrier so `configure({ http })`, configured
464
+ // vars/secrets, and session reads work during projection instead of throwing
465
+ // "can only be accessed during test execution". The configured http is the
466
+ // SAME recording client as ctx.http, so configured requests are captured too.
467
+ const runtime = {
468
+ vars: placeholderRecord(),
469
+ secrets: placeholderRecord(),
470
+ session: placeholderRecord(),
471
+ http,
472
+ trace: () => { },
473
+ action: () => { },
474
+ event: () => { },
475
+ log: () => { },
476
+ };
477
+ // Install the raw-fetch stub for the direct dryRunTest() API too (the worker
478
+ // installs it permanently before imports). Ref-counted: released in finally,
479
+ // restoring the real global fetch when no projection is still using it.
480
+ const releaseGlobals = installDryRunGlobals();
481
+ // Route raw global fetch() (if a body bypasses ctx.http) into THIS test's
482
+ // recorder via ALS — captured, budget-bounded, never real network, and
483
+ // isolated from any concurrent projection.
484
+ try {
485
+ await rawRecordALS.run((method, url) => {
486
+ record(method, url);
487
+ }, async () => {
488
+ await runWithRuntime(runtime, async () => {
489
+ await test.fn(ctx);
490
+ });
491
+ });
492
+ }
493
+ catch (err) {
494
+ if (err instanceof DryRunSkip) {
495
+ skipped = true;
496
+ }
497
+ else if (err instanceof AbortArm) {
498
+ // A top-level ctx.fail() aborted the body — the real runner stops here too,
499
+ // so the captured shape (up to the fail) is complete, not a failure.
500
+ }
501
+ else if (err instanceof DryRunBudgetExceeded) {
502
+ complete = false;
503
+ reason = `request budget (${REQUEST_BUDGET}) exceeded — likely a data-dependent loop`;
504
+ }
505
+ else {
506
+ complete = false;
507
+ reason = `threw during projection: ${err?.message ?? String(err)}`;
508
+ }
509
+ }
510
+ finally {
511
+ releaseGlobals();
512
+ }
513
+ // Fold in the static signal: bare branches mean only one arm was followed.
514
+ if (complete && opts.bareBranchCount && opts.bareBranchCount > 0) {
515
+ complete = false;
516
+ reason = `${opts.bareBranchCount} bare branch/loop(s) — use ctx.when()/ctx.switch()/ctx.while() for full projection`;
517
+ }
518
+ return {
519
+ ...base,
520
+ assertions,
521
+ endpoints,
522
+ assertionCount: assertions.length,
523
+ projectionComplete: complete,
524
+ ...(reason ? { incompleteReason: reason } : {}),
525
+ ...(skipped ? { skipped: true } : {}),
526
+ };
527
+ }
528
+ //# sourceMappingURL=dry-run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dry-run.js","sourceRoot":"","sources":["../src/dry-run.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"engine-bridge.d.ts","sourceRoot":"","sources":["../src/engine-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,UAAU,EAEV,KAAK,cAAc,EAEnB,KAAK,UAAU,EACf,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAIzC,eAAO,MAAM,UAAU,SAAyC,CAAC;AAajE,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgJ5E;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC;gFAC4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;qFACiF;IACjF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;yFAEqF;IACrF,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,EAC7C,IAAI,EAAE,iBAAiB,GACtB,UAAU,CAsBZ;AAED,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAE1G"}
1
+ {"version":3,"file":"engine-bridge.d.ts","sourceRoot":"","sources":["../src/engine-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,UAAU,EAEV,KAAK,cAAc,EAEnB,KAAK,UAAU,EACf,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAIzC,eAAO,MAAM,UAAU,SAAyC,CAAC;AAajE,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmJ5E;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC;gFAC4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;qFACiF;IACjF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;yFAEqF;IACrF,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,EAC7C,IAAI,EAAE,iBAAiB,GACtB,UAAU,CAsBZ;AAED,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAE1G"}
@@ -49,6 +49,9 @@ export function engineEventToWire(e) {
49
49
  tags: e.tags,
50
50
  testId: e.id,
51
51
  ...(e.retryCount !== undefined ? { retryCount: e.retryCount } : {}),
52
+ // rowIndex (B2 M3): forward the engine def's `.each` row index so the
53
+ // engine path's start wire event carries it just like the legacy path.
54
+ ...(e.rowIndex !== undefined ? { rowIndex: e.rowIndex } : {}),
52
55
  };
53
56
  case "log":
54
57
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"engine-bridge.js","sourceRoot":"","sources":["../src/engine-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine-bridge.js","sourceRoot":"","sources":["../src/engine-bridge.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,8 @@ export type ExecutionEvent = {
15
15
  suiteId?: string;
16
16
  suiteName?: string;
17
17
  retryCount?: number;
18
+ /** 0-based `.each` row index (post-filter); undefined for non-each tests. */
19
+ rowIndex?: number;
18
20
  } | {
19
21
  type: "log";
20
22
  message: string;
@@ -378,6 +380,8 @@ export interface ExecutionResult {
378
380
  success: boolean;
379
381
  testId: string;
380
382
  testName?: string;
383
+ /** 0-based `.each` row index (post-filter); undefined for non-each tests. */
384
+ rowIndex?: number;
381
385
  suiteId?: string;
382
386
  suiteName?: string;
383
387
  events: TimelineEvent[];