doc-detective 4.8.0 → 4.9.0

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/common/src/detectTests.d.ts +16 -1
  2. package/dist/common/src/detectTests.d.ts.map +1 -1
  3. package/dist/common/src/detectTests.js +93 -14
  4. package/dist/common/src/detectTests.js.map +1 -1
  5. package/dist/common/src/schemas/schemas.json +1700 -4
  6. package/dist/common/src/types/generated/config_v3.d.ts +5 -1
  7. package/dist/common/src/types/generated/config_v3.d.ts.map +1 -1
  8. package/dist/common/src/types/generated/report_v3.d.ts +12 -0
  9. package/dist/common/src/types/generated/report_v3.d.ts.map +1 -1
  10. package/dist/common/src/types/generated/resolvedTests_v3.d.ts +9 -1
  11. package/dist/common/src/types/generated/resolvedTests_v3.d.ts.map +1 -1
  12. package/dist/common/src/types/generated/spec_v3.d.ts +4 -0
  13. package/dist/common/src/types/generated/spec_v3.d.ts.map +1 -1
  14. package/dist/common/src/types/generated/step_v3.d.ts +64 -0
  15. package/dist/common/src/types/generated/step_v3.d.ts.map +1 -1
  16. package/dist/common/src/types/generated/test_v3.d.ts +132 -0
  17. package/dist/common/src/types/generated/test_v3.d.ts.map +1 -1
  18. package/dist/core/detectTests.d.ts +7 -1
  19. package/dist/core/detectTests.d.ts.map +1 -1
  20. package/dist/core/detectTests.js +53 -10
  21. package/dist/core/detectTests.js.map +1 -1
  22. package/dist/core/resolveTests.d.ts.map +1 -1
  23. package/dist/core/resolveTests.js +54 -6
  24. package/dist/core/resolveTests.js.map +1 -1
  25. package/dist/core/tests.d.ts +6 -1
  26. package/dist/core/tests.d.ts.map +1 -1
  27. package/dist/core/tests.js +141 -7
  28. package/dist/core/tests.js.map +1 -1
  29. package/dist/core/utils.d.ts +2 -1
  30. package/dist/core/utils.d.ts.map +1 -1
  31. package/dist/core/utils.js +51 -3
  32. package/dist/core/utils.js.map +1 -1
  33. package/dist/hints/context.d.ts +1 -0
  34. package/dist/hints/context.d.ts.map +1 -1
  35. package/dist/hints/context.js +8 -0
  36. package/dist/hints/context.js.map +1 -1
  37. package/dist/hints/hints.d.ts.map +1 -1
  38. package/dist/hints/hints.js +20 -0
  39. package/dist/hints/hints.js.map +1 -1
  40. package/dist/hints/types.d.ts +6 -0
  41. package/dist/hints/types.d.ts.map +1 -1
  42. package/dist/index.cjs +1916 -36
  43. package/dist/utils.d.ts.map +1 -1
  44. package/dist/utils.js +87 -2
  45. package/dist/utils.js.map +1 -1
  46. package/package.json +1 -1
@@ -9,11 +9,11 @@ import os from "node:os";
9
9
  import crypto from "node:crypto";
10
10
  import YAML from "yaml";
11
11
  import { validate } from "../common/src/validate.js";
12
- import { detectTests as parseContent, getLineNumber, getLineStarts } from "../common/src/detectTests.js";
12
+ import { detectTests as parseContent, getLineNumber, getLineStarts, contentHash } from "../common/src/detectTests.js";
13
13
  import { readFile, resolvePaths } from "./files.js";
14
14
  import { log, fetchFile, spawnCommand } from "./utils.js";
15
15
  import { loadHerettoContent, createApiClient, createRestApiClient, findScenario, getResourceDependencies, DEFAULT_SCENARIO_NAME } from "./integrations/heretto.js";
16
- export { detectTests, parseTests };
16
+ export { detectTests, parseTests, generateSpecId };
17
17
  /**
18
18
  * Detects tests from files based on config.
19
19
  * Assumes config has already been processed by setConfig.
@@ -40,13 +40,14 @@ async function detectTests({ config }) {
40
40
  function generateSpecId(filePath) {
41
41
  const absolutePath = path.resolve(filePath);
42
42
  const cwd = process.cwd();
43
- let relativePath;
44
- if (absolutePath.startsWith(cwd)) {
45
- relativePath = path.relative(cwd, absolutePath);
46
- }
47
- else {
48
- relativePath = absolutePath;
49
- }
43
+ // Relativize only when the path is genuinely inside cwd. A bare
44
+ // startsWith(cwd) check would misclassify siblings that share a prefix
45
+ // (/repo vs /repo-other), producing unstable `../`-laden IDs.
46
+ const candidate = path.relative(cwd, absolutePath);
47
+ const isInsideCwd = candidate.length > 0 &&
48
+ !candidate.startsWith("..") &&
49
+ !path.isAbsolute(candidate);
50
+ const relativePath = isInsideCwd ? candidate : absolutePath;
50
51
  const normalizedPath = relativePath
51
52
  .split(path.sep)
52
53
  .join("/")
@@ -341,6 +342,45 @@ async function parseTests({ config, files }) {
341
342
  content = await readFile({ fileURLOrPath: file });
342
343
  }
343
344
  if (typeof content === "object") {
345
+ // Stable IDs for JSON/YAML specs, assigned before any path resolution
346
+ // or before/after-spec merging so the IDs hash the spec as authored:
347
+ // - specId derives from the file path (mirroring the text-content
348
+ // branch below) instead of getting a fresh UUID at resolution.
349
+ // - testId fallbacks are `<specId>~<contentHash>` so the same test
350
+ // keeps the same ID across runs and machines.
351
+ if (!content.specId)
352
+ content.specId = generateSpecId(file);
353
+ if (!content.contentPath)
354
+ content.contentPath = file;
355
+ if (Array.isArray(content.tests)) {
356
+ const usedTestIds = new Set(content.tests
357
+ .map((test) => test?.testId)
358
+ .filter((id) => id));
359
+ for (const test of content.tests) {
360
+ if (!test || typeof test !== "object" || test.testId)
361
+ continue;
362
+ // v2-shaped tests (`id`, `setup`/`cleanup`, action-keyed steps) are
363
+ // validated against the strict test_v2 schema before the v2→v3
364
+ // transform runs — injecting an unknown `testId` property would
365
+ // fail that validation. Leave them to resolveTest's fallback.
366
+ if (typeof test.id !== "undefined" ||
367
+ test.file ||
368
+ test.setup ||
369
+ test.cleanup ||
370
+ (Array.isArray(test.steps) &&
371
+ test.steps.some((step) => step && typeof step === "object" && "action" in step))) {
372
+ continue;
373
+ }
374
+ const baseId = `${content.specId}~${contentHash(test)}`;
375
+ let id = baseId;
376
+ let suffix = 2;
377
+ while (usedTestIds.has(id)) {
378
+ id = `${baseId}-${suffix++}`;
379
+ }
380
+ usedTestIds.add(id);
381
+ test.testId = id;
382
+ }
383
+ }
344
384
  // Collect step location data from YAML AST before validation/transformation.
345
385
  // Location must be applied AFTER resolvePaths (which may transform v2→v3 steps).
346
386
  const stepLocations = new Map();
@@ -501,12 +541,15 @@ async function parseTests({ config, files }) {
501
541
  spec.tests.push(test);
502
542
  continue;
503
543
  }
504
- // Parse content using common's detectTests
544
+ // Parse content using common's detectTests. testIdBase keys generated
545
+ // testIds to the spec's stable path-derived ID instead of the absolute
546
+ // file path.
505
547
  const tests = await parseContent({
506
548
  config: config,
507
549
  content: content,
508
550
  fileType: fileType,
509
551
  filePath: file,
552
+ testIdBase: id,
510
553
  });
511
554
  spec.tests.push(...tests);
512
555
  // Remove tests with no steps
@@ -1 +1 @@
1
- {"version":3,"file":"detectTests.js","sourceRoot":"","sources":["../../src/core/detectTests.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detectTests.js","sourceRoot":"","sources":["../../src/core/detectTests.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolveTests.d.ts","sourceRoot":"","sources":["../../src/core/resolveTests.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH,iBAAS,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,GAAG,CAAA;CAAE,WAShD;AAED,iBAAS,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,SA2E/F;AA2GD;;;;;;;GAOG;AACH,iBAAe,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,aAAa,EAAE,GAAG,EAAE,CAAA;CAAE;;;WAM3E,GAAG,EAAE;GAWrB;AAED,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,GACjB,CAAC"}
1
+ {"version":3,"file":"resolveTests.d.ts","sourceRoot":"","sources":["../../src/core/resolveTests.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAsBH,iBAAS,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,GAAG,CAAA;CAAE,WAShD;AAED,iBAAS,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,SAkF/F;AAsJD;;;;;;;GAOG;AACH,iBAAe,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,aAAa,EAAE,GAAG,EAAE,CAAA;CAAE;;;WAM3E,GAAG,EAAE;GAWrB;AAED,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,GACjB,CAAC"}
@@ -5,6 +5,8 @@
5
5
  */
6
6
  import crypto from "node:crypto";
7
7
  import { log } from "./utils.js";
8
+ import { generateSpecId } from "./detectTests.js";
9
+ import { contentHash } from "../common/src/detectTests.js";
8
10
  import { loadDescription } from "./openapi.js";
9
11
  // Doc Detective actions that require a driver.
10
12
  const driverActions = [
@@ -69,14 +71,21 @@ function resolveContexts({ contexts, test, config }) {
69
71
  // Resolve to final contexts. Each context should include a single platform and at most a single browser.
70
72
  contexts.forEach((context) => {
71
73
  const staticContexts = [];
74
+ // Carry forward authored fields (e.g. an explicit `contextId`) onto each
75
+ // expanded static context — rebuilding as a bare `{ platform, browser }`
76
+ // would silently drop a user-supplied contextId. `platforms`/`browsers`
77
+ // are the array forms we're expanding away, so strip them.
78
+ const carry = { ...context };
79
+ delete carry.platforms;
80
+ delete carry.browsers;
72
81
  context.platforms.forEach((platform) => {
73
82
  if (!browserRequired) {
74
- const staticContext = { platform };
83
+ const staticContext = { ...carry, platform };
75
84
  staticContexts.push(staticContext);
76
85
  }
77
86
  else {
78
87
  context.browsers.forEach((browser) => {
79
- const staticContext = { platform, browser };
88
+ const staticContext = { ...carry, platform, browser };
80
89
  staticContexts.push(staticContext);
81
90
  });
82
91
  }
@@ -125,8 +134,38 @@ async function fetchOpenApiDocuments({ config, documentArray }) {
125
134
  log(config, "debug", `Fetched OpenAPI documents:\n${JSON.stringify(openApiDocuments, null, 2)}`);
126
135
  return openApiDocuments;
127
136
  }
128
- async function resolveContext({ config, test, context }) {
129
- const contextId = context.contextId || crypto.randomUUID();
137
+ // Make `base` unique within `usedIds` by appending an ordinal suffix on
138
+ // collision (`base`, `base-2`, `base-3`, …).
139
+ function uniqueId(base, usedIds) {
140
+ let id = base;
141
+ let suffix = 2;
142
+ while (usedIds.has(id)) {
143
+ id = `${base}-${suffix++}`;
144
+ }
145
+ return id;
146
+ }
147
+ // Deterministic fallback IDs: when a spec/test/context doesn't declare its
148
+ // own ID, derive one from stable inputs (file path, content hash, platform +
149
+ // browser) instead of a random UUID. Same inputs → same IDs on every run,
150
+ // which is what makes run-over-run result comparison possible. Explicitly
151
+ // declared IDs always win.
152
+ function deriveContextId({ context, usedIds }) {
153
+ const base = [context.platform, context.browser?.name].filter(Boolean).join("-") ||
154
+ "default";
155
+ return uniqueId(base, usedIds);
156
+ }
157
+ async function resolveContext({ config, test, context, usedContextIds }) {
158
+ // Normalize the resolved ID back onto the context so any downstream reader
159
+ // of `context.contextId` (not just the resolved copy) sees the same value.
160
+ // Explicit IDs win, but are still de-duplicated: one authored context with
161
+ // `platforms`/`browsers` arrays expands into several contexts that all carry
162
+ // the same authored `contextId`, so the 2nd+ must be suffixed or they'd
163
+ // collide in `metaValues` and other contextId-keyed structures.
164
+ context.contextId = context.contextId
165
+ ? uniqueId(context.contextId, usedContextIds)
166
+ : deriveContextId({ context, usedIds: usedContextIds });
167
+ const contextId = context.contextId;
168
+ usedContextIds.add(contextId);
130
169
  log(config, "debug", `RESOLVING CONTEXT ID ${contextId}:\n${JSON.stringify(context, null, 2)}`);
131
170
  const resolvedContext = {
132
171
  ...context,
@@ -139,7 +178,10 @@ async function resolveContext({ config, test, context }) {
139
178
  return resolvedContext;
140
179
  }
141
180
  async function resolveTest({ config, spec, test }) {
142
- const testId = test.testId || crypto.randomUUID();
181
+ // Last-resort content-hash fallback (detection already assigns
182
+ // `<specId>~<hash>` IDs for both inline and JSON/YAML tests); covers
183
+ // programmatic callers that hand resolveTests raw specs.
184
+ const testId = test.testId || `${spec.specId}~${contentHash(test)}`;
143
185
  log(config, "debug", `RESOLVING TEST ID ${testId}:\n${JSON.stringify(test, null, 2)}`);
144
186
  const resolvedTest = {
145
187
  ...test,
@@ -157,11 +199,13 @@ async function resolveTest({ config, spec, test }) {
157
199
  contexts: resolvedTest.runOn,
158
200
  config: config,
159
201
  });
202
+ const usedContextIds = new Set();
160
203
  for (const context of testContexts) {
161
204
  const resolvedContext = await resolveContext({
162
205
  config,
163
206
  test: test,
164
207
  context,
208
+ usedContextIds,
165
209
  });
166
210
  resolvedTest.contexts.push(resolvedContext);
167
211
  }
@@ -169,7 +213,11 @@ async function resolveTest({ config, spec, test }) {
169
213
  return resolvedTest;
170
214
  }
171
215
  async function resolveSpec({ config, spec }) {
172
- const specId = spec.specId || crypto.randomUUID();
216
+ // Prefer a path-derived specId over a random UUID so the same spec file
217
+ // keeps the same ID across runs. UUIDs remain only for programmatic specs
218
+ // with neither a specId nor a content path.
219
+ const specId = spec.specId ||
220
+ (spec.contentPath ? generateSpecId(spec.contentPath) : crypto.randomUUID());
173
221
  log(config, "debug", `RESOLVING SPEC ID ${specId}:\n${JSON.stringify(spec, null, 2)}`);
174
222
  const resolvedSpec = {
175
223
  ...spec,
@@ -1 +1 @@
1
- {"version":3,"file":"resolveTests.js","sourceRoot":"","sources":["../../src/core/resolveTests.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,+CAA+C;AAC/C,MAAM,aAAa,GAAG;IACpB,OAAO;IACP,aAAa;IACb,MAAM;IACN,MAAM;IACN,YAAY;IACZ,QAAQ;IACR,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,MAAM;CACP,CAAC;AAEF,SAAS,gBAAgB,CAAC,EAAE,IAAI,EAAiB;IAC/C,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;QAC/B,wDAAwD;QACxD,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC/B,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,WAAW;gBAAE,cAAc,GAAG,IAAI,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAA+C;IAC9F,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,2CAA2C,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/E,MAAM,gBAAgB,GAAU,EAAE,CAAC;IAEnC,2CAA2C;IAC3C,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;QAC/B,wDAAwD;QACxD,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC/B,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,WAAW;gBAAE,eAAe,GAAG,IAAI,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,6BAA6B;IAC7B,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,IACE,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;gBACpC,CAAC,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;oBACnC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EACnC,CAAC;gBACD,yDAAyD;gBACzD,OAAO,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAY,EAAE,EAAE;gBACvD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;oBAChC,OAAO,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gBAC9B,CAAC;gBACD,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ;oBAAE,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;gBACvD,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAC1C,OAAO,CAAC,SAAS,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,yGAAyG;IACzG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,MAAM,cAAc,GAAU,EAAE,CAAC;QACjC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAa,EAAE,EAAE;YAC1C,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,aAAa,GAAG,EAAE,QAAQ,EAAE,CAAC;gBACnC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAY,EAAE,EAAE;oBACxC,MAAM,aAAa,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;oBAC5C,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACrC,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QACH,0FAA0F;QAC1F,cAAc,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;YACvC,MAAM,eAAe,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,EAAE;gBAChE,OAAO,CACL,eAAe,CAAC,QAAQ,KAAK,aAAa,CAAC,QAAQ;oBACnD,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC;wBACrC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CACxC,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACvC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,mDAAmD;IACnD,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,8BAA8B,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACjH,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,EAAE,MAAM,EAAE,aAAa,EAAyC;IACnG,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,gCAAgC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/F,MAAM,gBAAgB,GAAU,EAAE,CAAC;IACnC,IAAI,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC;QAC3C,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,aAAa,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,MAAM,UAAU,IAAI,aAAa,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,iBAAiB,GAAG,MAAM,eAAe,CAC7C,UAAU,CAAC,eAAe,CAC3B,CAAC;gBACF,UAAU,CAAC,UAAU,GAAG,iBAAiB,CAAC;YAC5C,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,GAAG,CACD,MAAM,EACN,OAAO,EACP,0CAA0C,UAAU,CAAC,eAAe,KAAK,KAAK,CAAC,OAAO,EAAE,CACzF,CAAC;gBACF,SAAS;YACX,CAAC;YACD,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,SAAS,CACxD,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CAC3C,CAAC;YACF,IAAI,uBAAuB,GAAG,CAAC,CAAC,EAAE,CAAC;gBACjC,gBAAgB,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;YACtD,CAAC;YACD,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IACD,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,+BAA+B,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACjG,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAA4C;IAC/F,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;IAC3D,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,wBAAwB,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAChG,MAAM,eAAe,GAAG;QACtB,GAAG,OAAO;QACV,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;QAC5B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;QAC3B,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACtB,SAAS,EAAE,SAAS;KACrB,CAAC;IACF,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,oBAAoB,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACpG,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAyC;IACtF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;IAClD,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,qBAAqB,MAAM,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACvF,MAAM,YAAY,GAAG;QACnB,GAAG,IAAI;QACP,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK;QAC/B,OAAO,EAAE,MAAM,qBAAqB,CAAC;YACnC,MAAM;YACN,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;SAC1D,CAAC;QACF,QAAQ,EAAE,EAAW;KACtB,CAAC;IACF,OAAO,YAAY,CAAC,KAAK,CAAC;IAE1B,MAAM,YAAY,GAAG,eAAe,CAAC;QACnC,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,YAAY,CAAC,KAAK;QAC5B,MAAM,EAAE,MAAM;KACf,CAAC,CAAC;IAEH,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC;YAC3C,MAAM;YACN,IAAI,EAAE,IAAI;YACV,OAAO;SACR,CAAC,CAAC;QACH,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9C,CAAC;IACD,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,MAAM,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3F,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAA8B;IACrE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;IAClD,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,qBAAqB,MAAM,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACvF,MAAM,YAAY,GAAG;QACnB,GAAG,IAAI;QACP,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE;QACvC,OAAO,EAAE,MAAM,qBAAqB,CAAC;YACnC,MAAM;YACN,aAAa,EAAE,IAAI,CAAC,OAAO;SAC5B,CAAC;QACF,KAAK,EAAE,EAAW;KACnB,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC;YACrC,MAAM;YACN,IAAI,EAAE,YAAY;YAClB,IAAI;SACL,CAAC,CAAC;QACH,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IACD,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,MAAM,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3F,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,EAAyC;IAC1F,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,mCAAmC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAElG,MAAM,aAAa,GAAG;QACpB,eAAe,EAAE,MAAM,CAAC,UAAU,EAAE;QACpC,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,EAAW;KACnB,CAAC;IAEF,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAED,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,yBAAyB,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACxF,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,GACjB,CAAC"}
1
+ {"version":3,"file":"resolveTests.js","sourceRoot":"","sources":["../../src/core/resolveTests.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type BrowserAssetName } from "../runtime/browsers.js";
2
- export { runSpecs, runViaApi, getRunner, ensureChromeAvailable, ensureContextBrowserInstalled, combinationKey, warmUpDecision, selectWarmUpTargets, getDriverCapabilities, getDefaultBrowser, isSupportedContext, };
2
+ export { runSpecs, runViaApi, getRunner, ensureChromeAvailable, ensureContextBrowserInstalled, combinationKey, warmUpDecision, selectWarmUpTargets, getDriverCapabilities, getDefaultBrowser, isSupportedContext, resolveAutoScreenshot, };
3
3
  /**
4
4
  * Stable identity for a "context combination" — the platform + browser pairing
5
5
  * that determines whether a driver session can be created. The runner memoizes
@@ -71,6 +71,11 @@ declare function selectWarmUpTargets(jobs: any[], runnerDetails: any): Array<{
71
71
  context: any;
72
72
  combo: string;
73
73
  }>;
74
+ declare function resolveAutoScreenshot({ config, spec, test, }: {
75
+ config: any;
76
+ spec: any;
77
+ test: any;
78
+ }): boolean;
74
79
  declare function runStep({ config, context, step, driver, metaValues, options, }: {
75
80
  config?: any;
76
81
  context?: any;
@@ -1 +1 @@
1
- {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../src/core/tests.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../src/core/tests.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ import kill from "tree-kill";
8
8
  import { loadHeavyDep, resolveHeavyDepPath } from "../runtime/loader.js";
9
9
  import { requiredBrowserAssets, ensureBrowserInstalled, } from "../runtime/browsers.js";
10
10
  import os from "node:os";
11
- import { log, replaceEnvs, selectSpecsForRun, findFreePort, runConcurrent, rollUpResults, createAppiumPool, } from "./utils.js";
11
+ import { log, replaceEnvs, selectSpecsForRun, findFreePort, runConcurrent, rollUpResults, createAppiumPool, getRunOutputDir, sanitizeFilesystemName, } from "./utils.js";
12
12
  import axios from "axios";
13
13
  import { instantiateCursor } from "./tests/moveTo.js";
14
14
  import { goTo } from "./tests/goTo.js";
@@ -31,6 +31,7 @@ import path from "node:path";
31
31
  import { spawn } from "node:child_process";
32
32
  import { randomUUID } from "node:crypto";
33
33
  import { setAppiumHome } from "./appium.js";
34
+ import { contentHash } from "../common/src/detectTests.js";
34
35
  import { resolveExpression } from "./expressions.js";
35
36
  import { getEnvironment, getAvailableApps, clearAppCache, resolveConcurrentRunners, } from "./config.js";
36
37
  import { uploadChangedFiles } from "./integrations/index.js";
@@ -38,7 +39,7 @@ import http from "node:http";
38
39
  import https from "node:https";
39
40
  import { fileURLToPath } from "node:url";
40
41
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
41
- export { runSpecs, runViaApi, getRunner, ensureChromeAvailable, ensureContextBrowserInstalled, combinationKey, warmUpDecision, selectWarmUpTargets, getDriverCapabilities, getDefaultBrowser, isSupportedContext, };
42
+ export { runSpecs, runViaApi, getRunner, ensureChromeAvailable, ensureContextBrowserInstalled, combinationKey, warmUpDecision, selectWarmUpTargets, getDriverCapabilities, getDefaultBrowser, isSupportedContext, resolveAutoScreenshot, };
42
43
  // exports.appiumStart = appiumStart;
43
44
  // exports.appiumIsReady = appiumIsReady;
44
45
  // exports.driverStart = driverStart;
@@ -455,7 +456,15 @@ async function runSpecs({ resolvedTests }) {
455
456
  // backoff) for the rest of the run.
456
457
  const installAttempts = new Map();
457
458
  const warmUpResults = new Map();
459
+ // Per-run artifact folder and ID, stamped on the report so the runFolder
460
+ // reporter archives results beside any auto screenshots from the same run,
461
+ // and so consumers can correlate results over time. Created after the
462
+ // filter short-circuit above so a run that matched nothing leaves no folder.
463
+ const runDir = getRunOutputDir(config);
464
+ const runId = path.basename(runDir).replace(/^run-/, "");
458
465
  const report = {
466
+ runId,
467
+ runDir,
459
468
  summary: {
460
469
  specs: {
461
470
  pass: 0,
@@ -518,8 +527,29 @@ async function runSpecs({ resolvedTests }) {
518
527
  contexts: new Array(test.contexts.length),
519
528
  };
520
529
  specReport.tests.push(testReport);
530
+ // Track contextIds within this test so the deterministic fallback below
531
+ // can suffix collisions, mirroring resolveTests' deriveContextId.
532
+ const usedContextIds = new Set(test.contexts.map((c) => c.contextId).filter(Boolean));
521
533
  test.contexts.forEach((context, slot) => {
522
- context.contextId = context.contextId || randomUUID();
534
+ // Derive a stable contextId from platform/browser when unset (the
535
+ // resolver normally assigns one) so the same context keeps the same
536
+ // ID across runs for comparison — `default` when neither is known,
537
+ // with an ordinal suffix on collision. No randomness, so two
538
+ // otherwise-identical runs produce identical reports. Normalized onto
539
+ // the context so runContext's metaValues keys and the report all read
540
+ // the same value.
541
+ if (!context.contextId) {
542
+ const base = [context.platform, context.browser?.name]
543
+ .filter(Boolean)
544
+ .join("-") || "default";
545
+ let id = base;
546
+ let suffix = 2;
547
+ while (usedContextIds.has(id)) {
548
+ id = `${base}-${suffix++}`;
549
+ }
550
+ usedContextIds.add(id);
551
+ context.contextId = id;
552
+ }
523
553
  jobs.push({ spec, test, context, contexts: testReport.contexts, slot });
524
554
  });
525
555
  }
@@ -840,6 +870,74 @@ async function warmUpContexts({ jobs, config, runnerDetails, appiumPool, install
840
870
  }
841
871
  }
842
872
  }
873
+ // Effective autoScreenshot setting for a test: the test level wins over the
874
+ // spec level, which wins over the global config. Levels left unset defer
875
+ // down the chain.
876
+ function resolveAutoScreenshot({ config, spec, test, }) {
877
+ return Boolean(test?.autoScreenshot ?? spec?.autoScreenshot ?? config?.autoScreenshot);
878
+ }
879
+ // Directory/file segments built from IDs are capped so deeply nested doc
880
+ // trees can't push the full screenshot path past Windows' MAX_PATH. Keep the
881
+ // tail — content hashes live at the end of generated IDs.
882
+ function capPathSegment(segment, max = 64) {
883
+ return segment.length <= max ? segment : segment.slice(segment.length - max);
884
+ }
885
+ // Capture a post-step screenshot for `autoScreenshot` runs. The relative
886
+ // path is derived from stable IDs (spec/test/context) plus the step's
887
+ // order, action, and ID (e.g. screenshots/docs_guide.md/
888
+ // docs_guide.md~3f9a2c1b/windows-chrome/01-goTo-s4f2a91c.png), so the same
889
+ // step lands on the same relative path inside every run's folder — that's
890
+ // what makes run-over-run image comparison possible. Failures are logged as
891
+ // warnings, never thrown: a missed capture must not fail the step it
892
+ // documents.
893
+ async function captureAutoScreenshot({ config, driver, spec, test, context, step, stepIndex, stepCount, }) {
894
+ try {
895
+ const action = driverActions.find((key) => typeof step[key] !== "undefined") || "step";
896
+ const sanitizedTestId = sanitizeFilesystemName(String(test.testId ?? ""), "test");
897
+ const runDir = getRunOutputDir(config);
898
+ const dir = path.join(runDir, "screenshots", capPathSegment(sanitizeFilesystemName(String(spec.specId ?? ""), "spec")), capPathSegment(sanitizedTestId), capPathSegment(sanitizeFilesystemName(String(context.contextId ?? ""), "context")));
899
+ // The stepId usually embeds the testId (its parent folder) — strip that
900
+ // prefix so filenames stay short while still carrying the step's ID.
901
+ const stepIdString = sanitizeFilesystemName(String(step.stepId ?? ""), "step");
902
+ const stepRef = capPathSegment(stepIdString.startsWith(`${sanitizedTestId}~`)
903
+ ? stepIdString.slice(sanitizedTestId.length + 1)
904
+ : stepIdString);
905
+ // Zero-pad the step ordinal to the width of the context's step count
906
+ // (min 2), so file listings sort naturally even past 99 steps (100 would
907
+ // otherwise sort before 11).
908
+ const pad = Math.max(2, String(stepCount).length);
909
+ const fileName = `${String(stepIndex + 1).padStart(pad, "0")}-${action}-${stepRef}.png`;
910
+ const screenshotStep = {
911
+ stepId: `${step.stepId}_auto`,
912
+ description: "Automatic post-step screenshot",
913
+ screenshot: {
914
+ path: path.join(dir, fileName),
915
+ overwrite: "true",
916
+ },
917
+ };
918
+ const captureResult = await saveScreenshot({
919
+ config,
920
+ step: screenshotStep,
921
+ driver,
922
+ });
923
+ if (captureResult.status !== "PASS") {
924
+ log(config, "warning", `Auto screenshot failed after step ${step.stepId}: ${captureResult.description}`);
925
+ return null;
926
+ }
927
+ // Report the path relative to the run folder (normalized to forward
928
+ // slashes) so the same step produces an identical report value in every
929
+ // run — absolute, timestamped paths would defeat run-over-run diffing.
930
+ // Consumers resolve it against the report's `runDir`.
931
+ return path
932
+ .relative(runDir, screenshotStep.screenshot.path)
933
+ .split(path.sep)
934
+ .join("/");
935
+ }
936
+ catch (error) {
937
+ log(config, "warning", `Auto screenshot failed after step ${step.stepId}: ${error?.message ?? error}`);
938
+ return null;
939
+ }
940
+ }
843
941
  /**
844
942
  * Runs a single resolved context to completion and returns its finished
845
943
  * contextReport (steps array + rolled-up result). Never touches the shared
@@ -1053,12 +1151,27 @@ async function runContext({ config, spec, test, context, runnerDetails, appiumPo
1053
1151
  await driver.setWindowSize(context.browser?.window?.width || windowSize.width, context.browser?.window?.height || windowSize.height);
1054
1152
  }
1055
1153
  }
1154
+ // Effective autoScreenshot for this context (test > spec > config).
1155
+ const autoScreenshotEnabled = resolveAutoScreenshot({ config, spec, test });
1056
1156
  // Iterates steps
1057
1157
  let stepExecutionFailed = false;
1058
- for (let step of context.steps) {
1059
- // Set step id if not defined
1060
- if (!step.stepId)
1061
- step.stepId = randomUUID();
1158
+ const usedStepIds = new Set(context.steps.map((s) => s.stepId).filter(Boolean));
1159
+ for (const [stepIndex, step] of context.steps.entries()) {
1160
+ // Set step id if not defined. Derived from the test ID and a hash of
1161
+ // the step's authored definition so the same step keeps the same ID
1162
+ // (and any `screenshot: true` default filename) across runs.
1163
+ // Sanitized because the ID doubles as a screenshot filename; identical
1164
+ // steps in one test get an ordinal suffix.
1165
+ if (!step.stepId) {
1166
+ const baseId = sanitizeFilesystemName(`${test.testId}~s${contentHash(step)}`, `step-${randomUUID()}`);
1167
+ let stepId = baseId;
1168
+ let suffix = 2;
1169
+ while (usedStepIds.has(stepId)) {
1170
+ stepId = `${baseId}-${suffix++}`;
1171
+ }
1172
+ step.stepId = stepId;
1173
+ }
1174
+ usedStepIds.add(step.stepId);
1062
1175
  clog("debug", `STEP:\n${JSON.stringify(step, null, 2)}`);
1063
1176
  if (step.unsafe && runnerDetails.allowUnsafeSteps === false) {
1064
1177
  clog("warning", `Skipping unsafe step: ${step.description} in test ${test.testId} context ${context.contextId}`);
@@ -1104,6 +1217,27 @@ async function runContext({ config, spec, test, context, runnerDetails, appiumPo
1104
1217
  ...step,
1105
1218
  ...stepResult,
1106
1219
  };
1220
+ // Capture a post-step screenshot for autoScreenshot runs. Applies to
1221
+ // browser steps (explicit `screenshot` steps already produce an image);
1222
+ // failed steps are captured too — the failure frame is often the most
1223
+ // useful. A capture failure logs a warning and never fails the step.
1224
+ if (autoScreenshotEnabled &&
1225
+ driver &&
1226
+ typeof step.screenshot === "undefined" &&
1227
+ isDriverRequired({ test: { steps: [step] } })) {
1228
+ const capturedPath = await captureAutoScreenshot({
1229
+ config,
1230
+ driver,
1231
+ spec,
1232
+ test,
1233
+ context,
1234
+ step,
1235
+ stepIndex,
1236
+ stepCount: context.steps.length,
1237
+ });
1238
+ if (capturedPath)
1239
+ stepReport.autoScreenshot = capturedPath;
1240
+ }
1107
1241
  contextReport.steps.push(stepReport);
1108
1242
  // If this step failed, set flag to skip remaining steps
1109
1243
  if (stepReport.result === "FAIL") {