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.
- package/dist/common/src/detectTests.d.ts +16 -1
- package/dist/common/src/detectTests.d.ts.map +1 -1
- package/dist/common/src/detectTests.js +93 -14
- package/dist/common/src/detectTests.js.map +1 -1
- package/dist/common/src/schemas/schemas.json +1700 -4
- package/dist/common/src/types/generated/config_v3.d.ts +5 -1
- package/dist/common/src/types/generated/config_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/report_v3.d.ts +12 -0
- package/dist/common/src/types/generated/report_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/resolvedTests_v3.d.ts +9 -1
- package/dist/common/src/types/generated/resolvedTests_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/spec_v3.d.ts +4 -0
- package/dist/common/src/types/generated/spec_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/step_v3.d.ts +64 -0
- package/dist/common/src/types/generated/step_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/test_v3.d.ts +132 -0
- package/dist/common/src/types/generated/test_v3.d.ts.map +1 -1
- package/dist/core/detectTests.d.ts +7 -1
- package/dist/core/detectTests.d.ts.map +1 -1
- package/dist/core/detectTests.js +53 -10
- package/dist/core/detectTests.js.map +1 -1
- package/dist/core/resolveTests.d.ts.map +1 -1
- package/dist/core/resolveTests.js +54 -6
- package/dist/core/resolveTests.js.map +1 -1
- package/dist/core/tests.d.ts +6 -1
- package/dist/core/tests.d.ts.map +1 -1
- package/dist/core/tests.js +141 -7
- package/dist/core/tests.js.map +1 -1
- package/dist/core/utils.d.ts +2 -1
- package/dist/core/utils.d.ts.map +1 -1
- package/dist/core/utils.js +51 -3
- package/dist/core/utils.js.map +1 -1
- package/dist/hints/context.d.ts +1 -0
- package/dist/hints/context.d.ts.map +1 -1
- package/dist/hints/context.js +8 -0
- package/dist/hints/context.js.map +1 -1
- package/dist/hints/hints.d.ts.map +1 -1
- package/dist/hints/hints.js +20 -0
- package/dist/hints/hints.js.map +1 -1
- package/dist/hints/types.d.ts +6 -0
- package/dist/hints/types.d.ts.map +1 -1
- package/dist/index.cjs +1916 -36
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +87 -2
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
package/dist/core/detectTests.js
CHANGED
|
@@ -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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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;
|
|
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
|
-
|
|
129
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":"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
|
|
1
|
+
{"version":3,"file":"resolveTests.js","sourceRoot":"","sources":["../../src/core/resolveTests.ts"],"names":[],"mappings":"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"}
|
package/dist/core/tests.d.ts
CHANGED
|
@@ -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;
|
package/dist/core/tests.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../src/core/tests.ts"],"names":[],"mappings":"AAQA,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../src/core/tests.ts"],"names":[],"mappings":"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"}
|
package/dist/core/tests.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
1059
|
-
|
|
1060
|
-
if
|
|
1061
|
-
|
|
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") {
|