@glubean/sdk 0.8.4 → 0.9.1

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 (46) hide show
  1. package/dist/contract-http/adapter.d.ts +9 -1
  2. package/dist/contract-http/adapter.d.ts.map +1 -1
  3. package/dist/contract-http/adapter.js +142 -6
  4. package/dist/contract-http/adapter.js.map +1 -1
  5. package/dist/contract-http/openapi.d.ts +37 -0
  6. package/dist/contract-http/openapi.d.ts.map +1 -1
  7. package/dist/contract-http/openapi.js +83 -2
  8. package/dist/contract-http/openapi.js.map +1 -1
  9. package/dist/contract-types.d.ts +5 -0
  10. package/dist/contract-types.d.ts.map +1 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +4 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/load/artifact.d.ts +40 -2
  15. package/dist/load/artifact.d.ts.map +1 -1
  16. package/dist/load/artifact.js +0 -12
  17. package/dist/load/artifact.js.map +1 -1
  18. package/dist/load/context.d.ts +5 -1
  19. package/dist/load/context.d.ts.map +1 -1
  20. package/dist/load/events.d.ts +11 -0
  21. package/dist/load/events.d.ts.map +1 -1
  22. package/dist/load/index.d.ts +3 -1
  23. package/dist/load/index.d.ts.map +1 -1
  24. package/dist/load/index.js +1 -0
  25. package/dist/load/index.js.map +1 -1
  26. package/dist/load/metrics.d.ts +71 -0
  27. package/dist/load/metrics.d.ts.map +1 -0
  28. package/dist/load/metrics.js +42 -0
  29. package/dist/load/metrics.js.map +1 -0
  30. package/dist/load/runner.d.ts +19 -1
  31. package/dist/load/runner.d.ts.map +1 -1
  32. package/dist/load/runner.js.map +1 -1
  33. package/dist/test/each-builder.d.ts.map +1 -1
  34. package/dist/test/each-builder.js +3 -1
  35. package/dist/test/each-builder.js.map +1 -1
  36. package/dist/test/extend.d.ts.map +1 -1
  37. package/dist/test/extend.js +4 -1
  38. package/dist/test/extend.js.map +1 -1
  39. package/dist/test/utils.d.ts +33 -1
  40. package/dist/test/utils.d.ts.map +1 -1
  41. package/dist/test/utils.js +100 -5
  42. package/dist/test/utils.js.map +1 -1
  43. package/dist/types.d.ts +133 -24
  44. package/dist/types.d.ts.map +1 -1
  45. package/dist/types.js.map +1 -1
  46. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"each-builder.d.ts","sourceRoot":"","sources":["../../src/test/each-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,WAAW,EAGX,QAAQ,EAER,IAAI,EACJ,WAAW,EACX,QAAQ,EACT,MAAM,aAAa,CAAC;AAKrB;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,WAAW,GAAG,WAAW,IAAI,CAC1E,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,CAAC,EACR,GAAG,EAAE,CAAC,KACH,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAEvB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,WAAW,GAAG,WAAW,IAAI,CAC3E,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,CAAC,KACH,OAAO,CAAC,CAAC,CAAC,CAAC;AAEhB;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,oBAAoB,CAC9B,CAAC,EACD,CAAC,EACD,GAAG,SAAS,WAAW,GAAG,WAAW,IACnC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,WAAW,CACtB,CAAC,GAAG,OAAO,EACX,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,GAAG,SAAS,WAAW,GAAG,WAAW;IAErC,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAC,CAA+B;IAC9C,OAAO,CAAC,SAAS,CAAC,CAAkC;IAEpD,OAAO,CAAC,MAAM,CAA+D;IAC7E,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAU;IAE3B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAE7C;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAG,cAAc,CAAU;gBAGhD,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,EAC3C,QAAQ,UAAQ;IAUlB;;;;;;;;;OASG;IACH,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IAKxD;;;OAGG;IACH,IAAI,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IAK9B;;;OAGG;IACH,IAAI,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IAK9B;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,IAAI,EACR,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GACtC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC;IAK5B;;;;;;;;;;;;OAYG;IACH,QAAQ,CACN,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAChD,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IAKzB;;;;;;;;;;;OAWG;IACH,IAAI,CACF,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAChD,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACzB;;OAEG;IACH,IAAI,CAAC,IAAI,EACP,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAChD,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC;IAC5B;;OAEG;IACH,IAAI,CACF,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC/B,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAChD,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACzB;;OAEG;IACH,IAAI,CAAC,IAAI,EACP,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC/B,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAChD,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC;IAmB5B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,GAAG,CAAC,IAAI,EACN,EAAE,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,GACjE,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC;IAI5B;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,IAAI,EACR,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,GACjE,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC;IAS5B,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAMtB,gBAAgB;IAChB,OAAO,CAAC,WAAW;IAYnB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAgCjB;;;;;OAKG;IACH,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;CAkCnB"}
1
+ {"version":3,"file":"each-builder.d.ts","sourceRoot":"","sources":["../../src/test/each-builder.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { registerTest } from "../internal.js";
2
2
  import { toArray } from "../data.js";
3
- import { interpolateTemplate } from "./utils.js";
3
+ import { buildEachRowMeta, interpolateTemplate } from "./utils.js";
4
4
  /**
5
5
  * Builder for data-driven tests with multi-step workflow support.
6
6
  *
@@ -225,6 +225,7 @@ export class EachBuilder {
225
225
  hasSetup: !!this._setup,
226
226
  hasTeardown: !!this._teardown,
227
227
  rowIndex: i,
228
+ each: buildEachRowMeta(this._baseMeta.id, row, i),
228
229
  ...(hasGroup ? { groupId: this._baseMeta.id } : {}),
229
230
  ...(this._parallel ? { parallel: true } : {}),
230
231
  });
@@ -262,6 +263,7 @@ export class EachBuilder {
262
263
  meta: s.meta,
263
264
  fn: ((ctx, state) => s.fn(ctx, state, row)),
264
265
  })),
266
+ each: buildEachRowMeta(this._baseMeta.id, row, index),
265
267
  ...(this._fixtures ? { fixtures: this._fixtures } : {}),
266
268
  };
267
269
  });
@@ -1 +1 @@
1
- {"version":3,"file":"each-builder.js","sourceRoot":"","sources":["../../src/test/each-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"each-builder.js","sourceRoot":"","sources":["../../src/test/each-builder.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../src/test/extend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EAEjB,IAAI,EACJ,WAAW,EACX,QAAQ,EACT,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,aAAuC,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY,CAAC,GAAG,SAAS,WAAW;IACnD,+DAA+D;IAC/D,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACrE,4DAA4D;IAC5D,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEhE;;;OAGG;IACH,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,EACnD,UAAU,EAAE,CAAC,GACZ,YAAY,CAAC,GAAG,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5C,gDAAgD;IAChD,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,OAAO,CAAC,EAAE,WAAW,GACpB;QACD,CACE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAC3B,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GACvC,IAAI,EAAE,CAAC;QACV,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;KAC7D,CAAC;IAEF,sDAAsD;IACtD,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAC3B,KAAK,CAAC,EAAE,MAAM,GACb;QACD,CACE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAC3B,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAC3D,IAAI,EAAE,CAAC;QACV,CACE,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAC1B,WAAW,CAAC,OAAO,EAAE,CAAC,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,GAAG,CAAC,CAAC;KACrD,CAAC;CACH;AAED,sDAAsD;AACtD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,SAAS,WAAW,EACxD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,GAC5C,YAAY,CAAC,GAAG,CAAC,CAgInB"}
1
+ {"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../src/test/extend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EAEjB,IAAI,EACJ,WAAW,EACX,QAAQ,EACT,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,aAAuC,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY,CAAC,GAAG,SAAS,WAAW;IACnD,+DAA+D;IAC/D,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACrE,4DAA4D;IAC5D,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEhE;;;OAGG;IACH,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,EACnD,UAAU,EAAE,CAAC,GACZ,YAAY,CAAC,GAAG,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5C,gDAAgD;IAChD,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,OAAO,CAAC,EAAE,WAAW,GACpB;QACD,CACE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAC3B,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GACvC,IAAI,EAAE,CAAC;QACV,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;KAC7D,CAAC;IAEF,sDAAsD;IACtD,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAC3B,KAAK,CAAC,EAAE,MAAM,GACb;QACD,CACE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAC3B,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAC3D,IAAI,EAAE,CAAC;QACV,CACE,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAC1B,WAAW,CAAC,OAAO,EAAE,CAAC,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,GAAG,CAAC,CAAC;KACrD,CAAC;CACH;AAED,sDAAsD;AACtD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,SAAS,WAAW,EACxD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,GAC5C,YAAY,CAAC,GAAG,CAAC,CAoInB"}
@@ -2,7 +2,7 @@ import { registerTest } from "../internal.js";
2
2
  import { toArray } from "../data.js";
3
3
  import { TestBuilder } from "./builder.js";
4
4
  import { EachBuilder } from "./each-builder.js";
5
- import { normalizeEachTable, resolveBaseMeta, interpolateTemplate, selectPickExamples } from "./utils.js";
5
+ import { normalizeEachTable, resolveBaseMeta, interpolateTemplate, buildEachRowMeta, selectPickExamples } from "./utils.js";
6
6
  /** Keys that cannot be used as extension names (they shadow core TestContext). */
7
7
  export const EXTEND_RESERVED_KEYS = new Set(["vars", "secrets", "http"]);
8
8
  /**
@@ -84,11 +84,13 @@ export function createExtendedTest(allFixtures) {
84
84
  tags: allTags.length > 0 ? allTags : undefined,
85
85
  rowIndex: index,
86
86
  };
87
+ const eachMeta = buildEachRowMeta(baseMeta.id, row, index);
87
88
  const testDef = {
88
89
  meta,
89
90
  type: "simple",
90
91
  fn: (async (ctx) => await fn(ctx, row)),
91
92
  fixtures: allFixtures,
93
+ each: eachMeta,
92
94
  };
93
95
  registerTest({
94
96
  id: meta.id,
@@ -97,6 +99,7 @@ export function createExtendedTest(allFixtures) {
97
99
  tags: allTags.length > 0 ? allTags : undefined,
98
100
  description: meta.description,
99
101
  rowIndex: index,
102
+ each: eachMeta,
100
103
  ...(hasGroup ? { groupId: baseMeta.id } : {}),
101
104
  ...(parallel ? { parallel: true } : {}),
102
105
  });
@@ -1 +1 @@
1
- {"version":3,"file":"extend.js","sourceRoot":"","sources":["../../src/test/extend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extend.js","sourceRoot":"","sources":["../../src/test/extend.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@
9
9
  * - `selectPickExamples` — picks examples from a named map (respects `GLUBEAN_PICK` env)
10
10
  * - `globToRegExp` — converts `*` glob patterns to RegExp (used by selectPickExamples)
11
11
  */
12
- import type { TestMeta } from "../types.js";
12
+ import type { EachRowMeta, TestMeta } from "../types.js";
13
13
  /**
14
14
  * Interpolate `$key` placeholders in a template string with data values.
15
15
  * Supports `$index` for the row index and `$key` for any key in the data object.
@@ -17,6 +17,38 @@ import type { TestMeta } from "../types.js";
17
17
  * @internal
18
18
  */
19
19
  export declare function interpolateTemplate(template: string, data: Record<string, unknown>, index: number): string;
20
+ /**
21
+ * True when an id/name template references the positional `$index` placeholder.
22
+ * `$index` makes the interpolated id reorder-unstable; this is the SDK's
23
+ * authoritative check (it owns interpolation, where the reserved `$index`
24
+ * shadows a data field literally named `index`). Word-boundary checked so
25
+ * `$indexed` (a data placeholder) does NOT count — mirrors the tokenizer.
26
+ *
27
+ * @internal
28
+ */
29
+ export declare function templateUsesIndex(template: string): boolean;
30
+ /**
31
+ * Build the reorder-stable per-row key: `interpolateTemplate` with the data
32
+ * fields ONLY, leaving the positional `$index` placeholder literal so an
33
+ * `$index`-based template stays detectable downstream. Same tokenizer as
34
+ * `interpolateTemplate` (a data field named `index` is shadowed by the
35
+ * reserved `$index` placeholder), minus the index substitution — so for a
36
+ * template that never references `$index`, `rowKey === id` exactly.
37
+ *
38
+ * @internal
39
+ */
40
+ export declare function interpolateRowKey(template: string, data: Record<string, unknown>): string;
41
+ /**
42
+ * Build the data-driven row provenance (`EachRowMeta`) for one generated
43
+ * per-row test — `idTemplate` + a reorder-stable `rowKey` + the `$index`
44
+ * stability flag — so Cloud derive can resolve a stable cross-run identity
45
+ * instead of only the final interpolated id. Shared by `test.each`,
46
+ * `test.pick`, and `EachBuilder`. `index` MUST be the same row index passed to
47
+ * `interpolateTemplate` for this row (i.e. the index into the filtered table).
48
+ *
49
+ * @internal
50
+ */
51
+ export declare function buildEachRowMeta(idTemplate: string, data: Record<string, unknown>, index: number): EachRowMeta;
20
52
  /**
21
53
  * Resolve baseMeta from string or TestMeta input.
22
54
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/test/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,MAAM,GACZ,MAAM,CAMR;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAErE;AAQD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GACtC,CAAC,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,CAM5B;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAalF;AAaD,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAC3B,KAAK,EAAE,MAAM,GACZ,CAAC,CAAC,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,CAuB3B"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/test/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA+DzD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,MAAM,GACZ,MAAM,CAER;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAER;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,MAAM,GACZ,WAAW,CAOb;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAErE;AAQD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GACtC,CAAC,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,CAM5B;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAalF;AAaD,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAC3B,KAAK,EAAE,MAAM,GACZ,CAAC,CAAC,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,CAuB3B"}
@@ -1,3 +1,59 @@
1
+ /**
2
+ * Single-pass `$placeholder` tokenizer shared by `interpolateTemplate` and
3
+ * `interpolateRowKey` so the interpolated id and the row key NEVER disagree on
4
+ * how a data field is substituted (the `rowKey === id` contract for stable
5
+ * templates depends on this).
6
+ *
7
+ * Semantics (matching the documented template contract, but collision-safe):
8
+ * - The reserved positional `$index` placeholder wins at every `$` position
9
+ * where the placeholder word is EXACTLY `index` (word-boundary checked, so
10
+ * `$indexed` is a normal data placeholder). It shadows a data field
11
+ * literally named `index`. `index === undefined` leaves it literal (the
12
+ * row-key mode).
13
+ * - Data keys match LONGEST-FIRST, so a key that is a prefix of another
14
+ * (`$id` vs `$id2`) or of a later placeholder can never corrupt it.
15
+ * - Substituted values are emitted verbatim in one pass — a value containing
16
+ * `$something` is never re-scanned (no value injection).
17
+ * - A `$` matching nothing stays literal.
18
+ */
19
+ /** Placeholder-name character class — used only to word-boundary the reserved
20
+ * `$index` token (data keys themselves may contain any characters). */
21
+ const PLACEHOLDER_WORD = /[A-Za-z0-9_]/;
22
+ function interpolatePlaceholders(template, data, index) {
23
+ // Longest-first so a key that prefixes another key never wins the match.
24
+ const keys = Object.keys(data)
25
+ .filter((k) => k.length > 0 && k !== "index")
26
+ .sort((a, b) => b.length - a.length);
27
+ let out = "";
28
+ let i = 0;
29
+ while (i < template.length) {
30
+ const ch = template[i];
31
+ if (ch !== "$") {
32
+ out += ch;
33
+ i++;
34
+ continue;
35
+ }
36
+ const rest = template.slice(i + 1);
37
+ // Reserved positional placeholder — wins over data keys (documented
38
+ // shadowing), but only when the placeholder word is exactly `index`
39
+ // (word-boundary: `$indexed` is a data placeholder, not `$index` + "ed").
40
+ if (rest.startsWith("index") && !PLACEHOLDER_WORD.test(rest.charAt("index".length))) {
41
+ out += index === undefined ? "$index" : String(index);
42
+ i += "$index".length;
43
+ continue;
44
+ }
45
+ const key = keys.find((k) => rest.startsWith(k));
46
+ if (key !== undefined) {
47
+ out += String(data[key]);
48
+ i += 1 + key.length;
49
+ }
50
+ else {
51
+ out += "$";
52
+ i++;
53
+ }
54
+ }
55
+ return out;
56
+ }
1
57
  /**
2
58
  * Interpolate `$key` placeholders in a template string with data values.
3
59
  * Supports `$index` for the row index and `$key` for any key in the data object.
@@ -5,11 +61,50 @@
5
61
  * @internal
6
62
  */
7
63
  export function interpolateTemplate(template, data, index) {
8
- let result = template.replace(/\$index/g, String(index));
9
- for (const [key, value] of Object.entries(data)) {
10
- result = result.replaceAll(`$${key}`, String(value));
11
- }
12
- return result;
64
+ return interpolatePlaceholders(template, data, index);
65
+ }
66
+ /**
67
+ * True when an id/name template references the positional `$index` placeholder.
68
+ * `$index` makes the interpolated id reorder-unstable; this is the SDK's
69
+ * authoritative check (it owns interpolation, where the reserved `$index`
70
+ * shadows a data field literally named `index`). Word-boundary checked so
71
+ * `$indexed` (a data placeholder) does NOT count — mirrors the tokenizer.
72
+ *
73
+ * @internal
74
+ */
75
+ export function templateUsesIndex(template) {
76
+ return /\$index(?![A-Za-z0-9_])/.test(template);
77
+ }
78
+ /**
79
+ * Build the reorder-stable per-row key: `interpolateTemplate` with the data
80
+ * fields ONLY, leaving the positional `$index` placeholder literal so an
81
+ * `$index`-based template stays detectable downstream. Same tokenizer as
82
+ * `interpolateTemplate` (a data field named `index` is shadowed by the
83
+ * reserved `$index` placeholder), minus the index substitution — so for a
84
+ * template that never references `$index`, `rowKey === id` exactly.
85
+ *
86
+ * @internal
87
+ */
88
+ export function interpolateRowKey(template, data) {
89
+ return interpolatePlaceholders(template, data, undefined);
90
+ }
91
+ /**
92
+ * Build the data-driven row provenance (`EachRowMeta`) for one generated
93
+ * per-row test — `idTemplate` + a reorder-stable `rowKey` + the `$index`
94
+ * stability flag — so Cloud derive can resolve a stable cross-run identity
95
+ * instead of only the final interpolated id. Shared by `test.each`,
96
+ * `test.pick`, and `EachBuilder`. `index` MUST be the same row index passed to
97
+ * `interpolateTemplate` for this row (i.e. the index into the filtered table).
98
+ *
99
+ * @internal
100
+ */
101
+ export function buildEachRowMeta(idTemplate, data, index) {
102
+ return {
103
+ idTemplate,
104
+ index,
105
+ rowKey: interpolateRowKey(idTemplate, data),
106
+ stable: !templateUsesIndex(idTemplate),
107
+ };
13
108
  }
14
109
  /**
15
110
  * Resolve baseMeta from string or TestMeta input.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/test/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/test/utils.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -907,10 +907,10 @@ export interface TestContext {
907
907
  * @example
908
908
  * ```ts
909
909
  * const { vars, secrets, http } = configure({
910
- * vars: { baseUrl: "BASE_URL", orgId: "ORG_ID" },
911
- * secrets: { apiKey: "API_KEY" },
910
+ * vars: { baseUrl: "{{BASE_URL}}", orgId: "{{ORG_ID}}" },
911
+ * secrets: { apiKey: "{{API_KEY}}" },
912
912
  * http: {
913
- * prefixUrl: "BASE_URL",
913
+ * prefixUrl: "{{BASE_URL}}",
914
914
  * headers: { Authorization: "Bearer {{API_KEY}}" },
915
915
  * },
916
916
  * });
@@ -918,28 +918,28 @@ export interface TestContext {
918
918
  */
919
919
  export interface ConfigureOptions {
920
920
  /**
921
- * Map of friendly property names to var keys.
921
+ * Map of friendly property names to `{{key}}` templates.
922
922
  * Each key becomes a property on the returned `vars` object.
923
923
  * All declared vars are **required** — missing values throw at runtime.
924
924
  *
925
925
  * @example
926
926
  * ```ts
927
927
  * const { vars } = configure({
928
- * vars: { baseUrl: "BASE_URL", orgId: "ORG_ID" },
928
+ * vars: { baseUrl: "{{BASE_URL}}", orgId: "{{ORG_ID}}" },
929
929
  * });
930
930
  * vars.baseUrl; // string (required, never undefined)
931
931
  * ```
932
932
  */
933
933
  vars?: Record<string, string>;
934
934
  /**
935
- * Map of friendly property names to secret keys.
935
+ * Map of friendly property names to `{{key}}` templates.
936
936
  * Each key becomes a property on the returned `secrets` object.
937
937
  * All declared secrets are **required** — missing values throw at runtime.
938
938
  *
939
939
  * @example
940
940
  * ```ts
941
941
  * const { secrets } = configure({
942
- * secrets: { apiKey: "API_KEY" },
942
+ * secrets: { apiKey: "{{API_KEY}}" },
943
943
  * });
944
944
  * secrets.apiKey; // string (required, never undefined)
945
945
  * ```
@@ -948,7 +948,7 @@ export interface ConfigureOptions {
948
948
  /**
949
949
  * Pre-configure an HTTP client with shared defaults.
950
950
  *
951
- * - `prefixUrl`: A var key (string) whose runtime value becomes the base URL.
951
+ * - `prefixUrl`: Can use `{{key}}` syntax to interpolate a var/secret as the base URL.
952
952
  * - `headers`: Header values can use `{{key}}` syntax to interpolate secrets.
953
953
  * - `timeout`, `retry`, `throwHttpErrors`: Passed through to ky.
954
954
  *
@@ -959,7 +959,7 @@ export interface ConfigureOptions {
959
959
  * ```ts
960
960
  * const { http } = configure({
961
961
  * http: {
962
- * prefixUrl: "base_url",
962
+ * prefixUrl: "{{base_url}}",
963
963
  * headers: { Authorization: "Bearer {{api_key}}" },
964
964
  * },
965
965
  * });
@@ -978,10 +978,10 @@ export interface ConfigureOptions {
978
978
  * import { graphql } from "@glubean/graphql";
979
979
  *
980
980
  * const { http, graphql: gql } = configure({
981
- * http: { prefixUrl: "base_url" },
981
+ * http: { prefixUrl: "{{base_url}}" },
982
982
  * plugins: {
983
983
  * graphql: graphql({
984
- * endpoint: "graphql_url",
984
+ * endpoint: "{{graphql_url}}",
985
985
  * headers: { Authorization: "Bearer {{api_key}}" },
986
986
  * }),
987
987
  * },
@@ -993,16 +993,21 @@ export interface ConfigureOptions {
993
993
  /**
994
994
  * HTTP configuration for `configure()`.
995
995
  *
996
- * `prefixUrl` is a **var key** (resolved at runtime), not a literal URL.
997
- * Header values can contain `{{key}}` placeholders that are resolved from
998
- * the combined vars + secrets at runtime.
996
+ * `prefixUrl` goes through the same `{{key}}` template resolution as
997
+ * `headers` and `searchParams`: any `{{key}}` placeholders are resolved from
998
+ * vars + secrets + session at runtime, and a string with no placeholders is
999
+ * used as-is (so a literal URL works). A **bare key name** with no `{{...}}`
1000
+ * (e.g. `"BASE_URL"`) is NOT resolved against vars/secrets — it is used as
1001
+ * a literal string, which is very unlikely to be a valid URL.
999
1002
  */
1000
1003
  export interface ConfigureHttpOptions {
1001
1004
  /**
1002
- * Var key whose runtime value is used as the base URL (ky `prefixUrl`).
1003
- * This is a var key name, not the URL itself.
1005
+ * Base URL used as ky's `prefixUrl`. Either a literal URL, or a string
1006
+ * containing `{{key}}` placeholder(s) resolved from vars, secrets, or
1007
+ * session at runtime.
1004
1008
  *
1005
- * @example "BASE_URL" → resolved to ctx.vars.require("BASE_URL")
1009
+ * @example "{{BASE_URL}}" → resolves to the value of var/secret "BASE_URL"
1010
+ * @example "https://api.example.com" → used as-is (no placeholder to resolve)
1006
1011
  */
1007
1012
  prefixUrl?: string;
1008
1013
  /**
@@ -1068,10 +1073,10 @@ export interface ConfigureHttpOptions {
1068
1073
  *
1069
1074
  * const { http } = configure({
1070
1075
  * http: oauth2.clientCredentials({
1071
- * prefixUrl: "base_url",
1072
- * tokenUrl: "token_url",
1073
- * clientId: "client_id",
1074
- * clientSecret: "client_secret",
1076
+ * prefixUrl: "{{base_url}}",
1077
+ * tokenUrl: "{{token_url}}",
1078
+ * clientId: "{{client_id}}",
1079
+ * clientSecret: "{{client_secret}}",
1075
1080
  * }),
1076
1081
  * });
1077
1082
  * ```
@@ -1090,9 +1095,9 @@ export interface ConfigureHttpOptions {
1090
1095
  * @example
1091
1096
  * ```ts
1092
1097
  * const { vars, secrets, http } = configure({
1093
- * vars: { baseUrl: "BASE_URL" },
1094
- * secrets: { apiKey: "API_KEY" },
1095
- * http: { prefixUrl: "BASE_URL", headers: { Authorization: "Bearer {{API_KEY}}" } },
1098
+ * vars: { baseUrl: "{{BASE_URL}}" },
1099
+ * secrets: { apiKey: "{{API_KEY}}" },
1100
+ * http: { prefixUrl: "{{BASE_URL}}", headers: { Authorization: "Bearer {{API_KEY}}" } },
1096
1101
  * });
1097
1102
  *
1098
1103
  * export const myTest = test("my-test", async (ctx) => {
@@ -1619,6 +1624,45 @@ export interface SchemaLike<T> {
1619
1624
  };
1620
1625
  /** Fallback — throws on failure, returns parsed value on success. */
1621
1626
  parse?: (data: unknown) => T;
1627
+ /**
1628
+ * Optional JSON Schema companion (GLU-90). Schema-library instances (Zod
1629
+ * v4, Valibot, …) project via their own `toJSONSchema()` method — this
1630
+ * field is for **hand-rolled** `SchemaLike` objects (safeParse/parse-only,
1631
+ * no schema library backing them). Without it, the projector has no
1632
+ * structural information to derive a JSON Schema from an opaque validator
1633
+ * function, so the schema is recorded as unprojectable
1634
+ * (`ExtractedContractProjection.unprojectableSchemas`) and contract-sync /
1635
+ * OpenAPI generation silently drop it — the picker on Glubean Cloud then
1636
+ * treats the contract as incomplete.
1637
+ *
1638
+ * Declare `jsonSchema` alongside `safeParse` to document the shape your
1639
+ * validator enforces; it is used **verbatim** (never re-derived from
1640
+ * `safeParse`/`parse` by introspection or sampling) and is **not
1641
+ * validated** — the same trust model as authoring a plain JSON Schema
1642
+ * object directly for `expect.schema`. It is also consulted as a recovery
1643
+ * path when a schema-library instance's own `toJSONSchema()` throws
1644
+ * (e.g. an unrepresentable zod type), letting you supply a manual
1645
+ * override for shapes the library itself can't project.
1646
+ *
1647
+ * Every protocol adapter that ships with the SDK (HTTP, GraphQL, gRPC)
1648
+ * honors this field via its `schemaToJsonSchema()`.
1649
+ *
1650
+ * @example
1651
+ * ```ts
1652
+ * const ItemsResponse: SchemaLike<{ items: Item[]; total: number }> = {
1653
+ * safeParse(data) { ... },
1654
+ * jsonSchema: {
1655
+ * type: "object",
1656
+ * properties: {
1657
+ * items: { type: "array", items: { type: "object" } },
1658
+ * total: { type: "number" },
1659
+ * },
1660
+ * required: ["items", "total"],
1661
+ * },
1662
+ * };
1663
+ * ```
1664
+ */
1665
+ jsonSchema?: Record<string, unknown>;
1622
1666
  }
1623
1667
  /**
1624
1668
  * A single issue reported by schema validation.
@@ -1866,6 +1910,21 @@ export interface Trace {
1866
1910
  * The load runner uses it for an exact endpoint routeKey instead of the heuristic
1867
1911
  * URL-normalization fallback. Absent → fall back. */
1868
1912
  routeKey?: string;
1913
+ /** HTTP only. The relative URL string EXACTLY as the test author wrote it (e.g.
1914
+ * `ctx.http.get("todos/1")` → `"todos/1"`), captured before the host resolves it
1915
+ * to an absolute URL. Present only when the call site passed a plain relative
1916
+ * string (an already-absolute string, or a `Request`/`URL` object, leaves this
1917
+ * unset — nothing to recover).
1918
+ *
1919
+ * Why: inside a browser Web Worker, `Request` has an IMPLICIT base — the worker
1920
+ * SCRIPT's own URL — so a bare relative path silently resolves against the
1921
+ * worker's script directory (e.g. "todos/1" → ".../assets/todos/1"), NOT the
1922
+ * intended API. That pollutes `url`/`target` above; `requestedUrl` is the clean
1923
+ * form a re-anchoring host can fall back to (GLU-81, F11 residual — see cloud
1924
+ * dd38fcc / GLU-46 comment). Node has no implicit base — a bare relative URL
1925
+ * there throws immediately (unchanged), so this field is browser/Worker-specific
1926
+ * in practice. */
1927
+ requestedUrl?: string;
1869
1928
  /** @deprecated Use `target` and `metadata` instead. HTTP method. */
1870
1929
  method?: string;
1871
1930
  /** @deprecated Use `target` and `metadata` instead. Request URL. */
@@ -2381,6 +2440,15 @@ export interface Test<S = unknown> {
2381
2440
  * before invoking the test function / steps.
2382
2441
  */
2383
2442
  fixtures?: Record<string, ExtensionFn<any>>;
2443
+ /**
2444
+ * Data-driven row provenance (`idTemplate` + reorder-stable `rowKey` +
2445
+ * `$index` stability flag). Present ONLY on `test.each` / `test.pick` rows;
2446
+ * absent for plain `test(...)` definitions. Mirrors the registry's
2447
+ * {@link RegisteredTestMeta.each} on the RUNTIME test object the runner
2448
+ * executes, so the run path can carry it to Cloud derive's row axis (B3,
2449
+ * `run-evidence-identity-model.md` §7). See {@link EachRowMeta}.
2450
+ */
2451
+ each?: EachRowMeta;
2384
2452
  }
2385
2453
  /**
2386
2454
  * Factory function for a context extension (fixture).
@@ -2431,6 +2499,37 @@ export type ResolveExtension<F> = F extends (ctx: TestContext, use: (instance: i
2431
2499
  export type ResolveExtensions<E> = {
2432
2500
  [K in keyof E]: ResolveExtension<E[K]>;
2433
2501
  };
2502
+ /**
2503
+ * Data-driven row provenance — set by `test.each` / `test.pick` for each
2504
+ * generated per-row test.
2505
+ *
2506
+ * Cloud derive otherwise sees only the final interpolated `id` (e.g. `user-1`,
2507
+ * `case-0`) and cannot tell a reorder-STABLE data-driven id from a positional
2508
+ * `$index`-based one: reordering the table keeps `user-$userId` pinned to its
2509
+ * row but shifts every `$index` id. The SDK owns id interpolation, so it is the
2510
+ * source of truth for whether the template referenced the positional `$index`
2511
+ * placeholder — this carries that truth to derive (B3 assertion-identity row
2512
+ * axis, `run-evidence-identity-model.md` §7).
2513
+ */
2514
+ export interface EachRowMeta {
2515
+ /** Raw id template before interpolation, e.g. `"user-$userId"` or `"case-$index"`. */
2516
+ idTemplate: string;
2517
+ /** 0-based position of this row within the (filtered) data table. */
2518
+ index: number;
2519
+ /**
2520
+ * Reorder-stable per-row key: `idTemplate` interpolated with DATA fields only,
2521
+ * leaving the positional `$index` placeholder literal. For a purely
2522
+ * data-driven template this equals `id` and is a stable cross-run key; for a
2523
+ * `$index`-based template it retains the literal `$index` token (and `stable`
2524
+ * is `false`), so derive falls back to `index` to disambiguate rows.
2525
+ */
2526
+ rowKey: string;
2527
+ /**
2528
+ * `true` when `idTemplate` does NOT reference `$index` — i.e. `rowKey` is a
2529
+ * reorder-stable cross-run identity. `false` flags a positional (unstable) id.
2530
+ */
2531
+ stable: boolean;
2532
+ }
2434
2533
  /**
2435
2534
  * Metadata registered to the global registry (for scanning).
2436
2535
  */
@@ -2475,6 +2574,16 @@ export interface RegisteredTestMeta {
2475
2574
  * undefined for non-each tests.
2476
2575
  */
2477
2576
  rowIndex?: number;
2577
+ /**
2578
+ * Data-driven row provenance (`idTemplate` + reorder-stable `rowKey` +
2579
+ * `$index` stability flag). Present ONLY for tests generated by
2580
+ * `test.each` / `test.pick`; absent for plain `test(...)` declarations.
2581
+ * Lets Cloud derive resolve a stable cross-run row identity instead of only
2582
+ * the final interpolated `id` (B3 row axis, see {@link EachRowMeta}).
2583
+ * `each.index` always equals {@link rowIndex} (B2 M3 selector protocol)
2584
+ * when both are present.
2585
+ */
2586
+ each?: EachRowMeta;
2478
2587
  /** Physical capability required by this test. */
2479
2588
  requires?: "headless" | "browser" | "out-of-band";
2480
2589
  /** Default run policy for this test. */