doc-detective 4.5.0 → 4.6.0-next.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/README.md +42 -0
  2. package/dist/cli.js +37 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/common/src/schemas/schemas.json +22 -0
  5. package/dist/common/src/types/generated/config_v3.d.ts +8 -0
  6. package/dist/common/src/types/generated/config_v3.d.ts.map +1 -1
  7. package/dist/common/src/types/generated/resolvedTests_v3.d.ts +8 -0
  8. package/dist/common/src/types/generated/resolvedTests_v3.d.ts.map +1 -1
  9. package/dist/core/appium.d.ts +3 -1
  10. package/dist/core/appium.d.ts.map +1 -1
  11. package/dist/core/appium.js +11 -3
  12. package/dist/core/appium.js.map +1 -1
  13. package/dist/core/config.d.ts +1 -1
  14. package/dist/core/config.d.ts.map +1 -1
  15. package/dist/core/config.js +98 -12
  16. package/dist/core/config.js.map +1 -1
  17. package/dist/core/index.d.ts.map +1 -1
  18. package/dist/core/index.js +85 -1
  19. package/dist/core/index.js.map +1 -1
  20. package/dist/core/tests/saveScreenshot.d.ts.map +1 -1
  21. package/dist/core/tests/saveScreenshot.js +62 -9
  22. package/dist/core/tests/saveScreenshot.js.map +1 -1
  23. package/dist/core/tests/stopRecording.d.ts.map +1 -1
  24. package/dist/core/tests/stopRecording.js +19 -2
  25. package/dist/core/tests/stopRecording.js.map +1 -1
  26. package/dist/core/tests.d.ts.map +1 -1
  27. package/dist/core/tests.js +67 -16
  28. package/dist/core/tests.js.map +1 -1
  29. package/dist/core/utils.d.ts.map +1 -1
  30. package/dist/core/utils.js +25 -5
  31. package/dist/core/utils.js.map +1 -1
  32. package/dist/index.cjs +115068 -113989
  33. package/dist/runtime/browsers.d.ts +64 -0
  34. package/dist/runtime/browsers.d.ts.map +1 -0
  35. package/dist/runtime/browsers.js +311 -0
  36. package/dist/runtime/browsers.js.map +1 -0
  37. package/dist/runtime/cacheDir.d.ts +45 -0
  38. package/dist/runtime/cacheDir.d.ts.map +1 -0
  39. package/dist/runtime/cacheDir.js +207 -0
  40. package/dist/runtime/cacheDir.js.map +1 -0
  41. package/dist/runtime/heavyDeps.d.ts +55 -0
  42. package/dist/runtime/heavyDeps.d.ts.map +1 -0
  43. package/dist/runtime/heavyDeps.js +147 -0
  44. package/dist/runtime/heavyDeps.js.map +1 -0
  45. package/dist/runtime/inferRuntimeNeeds.d.ts +16 -0
  46. package/dist/runtime/inferRuntimeNeeds.d.ts.map +1 -0
  47. package/dist/runtime/inferRuntimeNeeds.js +141 -0
  48. package/dist/runtime/inferRuntimeNeeds.js.map +1 -0
  49. package/dist/runtime/installCommand.d.ts +21 -0
  50. package/dist/runtime/installCommand.d.ts.map +1 -0
  51. package/dist/runtime/installCommand.js +201 -0
  52. package/dist/runtime/installCommand.js.map +1 -0
  53. package/dist/runtime/installer.d.ts +61 -0
  54. package/dist/runtime/installer.d.ts.map +1 -0
  55. package/dist/runtime/installer.js +175 -0
  56. package/dist/runtime/installer.js.map +1 -0
  57. package/dist/runtime/loader.d.ts +54 -0
  58. package/dist/runtime/loader.d.ts.map +1 -0
  59. package/dist/runtime/loader.js +246 -0
  60. package/dist/runtime/loader.js.map +1 -0
  61. package/dist/runtime/selfUpdate.d.ts +60 -0
  62. package/dist/runtime/selfUpdate.d.ts.map +1 -0
  63. package/dist/runtime/selfUpdate.js +222 -0
  64. package/dist/runtime/selfUpdate.js.map +1 -0
  65. package/dist/utils.d.ts.map +1 -1
  66. package/dist/utils.js +22 -0
  67. package/dist/utils.js.map +1 -1
  68. package/package.json +18 -47
  69. package/scripts/postinstall.js +7 -89
  70. package/dist/checkDependencies.d.ts +0 -2
  71. package/dist/checkDependencies.d.ts.map +0 -1
  72. package/dist/checkDependencies.js +0 -72
  73. package/dist/checkDependencies.js.map +0 -1
@@ -61,7 +61,9 @@ async function runTests(config, options = {}) {
61
61
  if (!resolvedTests) {
62
62
  resolvedTests = await detectAndResolveTests({ config });
63
63
  if (!resolvedTests || resolvedTests.specs.length === 0) {
64
- log(config, "warn", "Couldn't resolve any tests.");
64
+ // log() in src/core/utils.ts recognizes "warning", not "warn"
65
+ // see the matching note in the JIT pre-flight catch below.
66
+ log(config, "warning", "Couldn't resolve any tests.");
65
67
  return null;
66
68
  }
67
69
  }
@@ -73,6 +75,88 @@ async function runTests(config, options = {}) {
73
75
  });
74
76
  return resolvedTests;
75
77
  }
78
+ // Just-in-time install: inspect the resolved specs to learn which heavy
79
+ // npm packages and which browser binaries this run will actually use, then
80
+ // install them in one batched step before any test executes. The lazy
81
+ // resolver in src/runtime/loader.js is still defensive for any code path
82
+ // this inference might miss, but the steady-state expectation is that
83
+ // every loadHeavyDep() call below hits the warm-cache fast path.
84
+ //
85
+ // Browser installs are gated by `getAvailableApps()` — if the requested
86
+ // browser is already detectable (e.g., the legacy ./browser-snapshots/
87
+ // pre-warm is still in place), we skip the install entirely.
88
+ //
89
+ // Skipped entirely for API-backed runs: the orchestration API executes
90
+ // tests remotely, so installing browsers/runtime locally would burn
91
+ // network and disk for nothing.
92
+ const willRunViaApi = Boolean(!process.env.DOC_DETECTIVE_API &&
93
+ config.integrations &&
94
+ config.integrations.docDetectiveApi &&
95
+ config.integrations.docDetectiveApi.apiKey);
96
+ if (willRunViaApi) {
97
+ log(config, "debug", "Skipping runtime pre-flight install — run is dispatched via Doc Detective Orchestration API.");
98
+ }
99
+ else
100
+ try {
101
+ const { inferRuntimeNeeds } = await import("../runtime/inferRuntimeNeeds.js");
102
+ const { ensureRuntimeInstalled } = await import("../runtime/loader.js");
103
+ const needs = inferRuntimeNeeds(resolvedTests);
104
+ const ctx = { cacheDir: config.cacheDir };
105
+ // Bridge the runtime modules' logger contract to core/utils.ts:log()
106
+ // so config.logLevel filters npm install stdout/stderr (which the
107
+ // runtime logs at "debug") and prevents flooded output during a
108
+ // routine `doc-detective` run. Map "warn" → "warning" since
109
+ // core/utils.ts uses the latter.
110
+ const preflightLogger = (msg, level = "info") => {
111
+ const mapped = level === "warn" ? "warning" : level;
112
+ log(config, mapped, msg);
113
+ };
114
+ if (needs.npmPackages.size > 0) {
115
+ await ensureRuntimeInstalled([...needs.npmPackages], {
116
+ ctx,
117
+ deps: { logger: preflightLogger },
118
+ });
119
+ }
120
+ if (needs.browsers.size > 0) {
121
+ try {
122
+ const { getAvailableApps, clearAppCache } = await import("./config.js");
123
+ const { ensureBrowserInstalled } = await import("../runtime/browsers.js");
124
+ const available = await getAvailableApps({ config });
125
+ const availableNames = new Set(available.map((a) => a.name));
126
+ let installedAnything = false;
127
+ for (const browser of needs.browsers) {
128
+ if (availableNames.has(browser))
129
+ continue;
130
+ if (browser === "chrome") {
131
+ await ensureBrowserInstalled("chrome", { ctx, deps: { logger: preflightLogger } });
132
+ await ensureBrowserInstalled("chromedriver", { ctx, deps: { logger: preflightLogger } });
133
+ installedAnything = true;
134
+ }
135
+ else if (browser === "firefox") {
136
+ await ensureBrowserInstalled("firefox", { ctx, deps: { logger: preflightLogger } });
137
+ await ensureBrowserInstalled("geckodriver", { ctx, deps: { logger: preflightLogger } });
138
+ installedAnything = true;
139
+ }
140
+ // safari has no installable binary — it ships with the OS.
141
+ }
142
+ // Invalidate the available-apps cache for this cacheDir so a
143
+ // subsequent runSpecs/getRunner call re-detects what the
144
+ // pre-flight just materialized. Without this, the empty
145
+ // `available` snapshot above would stick and downstream
146
+ // browser-presence checks would still see "not installed."
147
+ if (installedAnything)
148
+ clearAppCache(config);
149
+ }
150
+ catch (browserErr) {
151
+ log(config, "debug", `Browser pre-flight check skipped: ${browserErr?.message ?? browserErr}`);
152
+ }
153
+ }
154
+ }
155
+ catch (err) {
156
+ // log() in src/core/utils.ts recognizes "warning", not "warn" — using
157
+ // the wrong key would make this branch silent at every log level.
158
+ log(config, "warning", `Runtime pre-flight install hit an error: ${err?.message ?? err}. Falling back to on-demand resolution.`);
159
+ }
76
160
  // If config.integrations.docDetectiveApi.apiKey is set, run tests via API instead of locally
77
161
  if (!process.env.DOC_DETECTIVE_API && config.integrations && config.integrations.docDetectiveApi && config.integrations.docDetectiveApi.apiKey) {
78
162
  // Run test specs via API
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,qBAAqB,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;AAEzG,MAAM,cAAc,GAAG;;;;;;2EAMoD,CAAC;AAE5E;;;;;;;;GAQG;AACH,KAAK,UAAU,qBAAqB,CAAC,EAAE,MAAM,EAAO;IAClD,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACrC,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACpE,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,sEAAsE;AACtE,KAAK,UAAU,QAAQ,CAAC,MAAW,EAAE,UAAe,EAAE;IACpD,IAAI,aAAkB,CAAC;IACvB,IAAI,OAAY,CAAC;IAEjB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QACtC,sEAAsE;QACtE,wEAAwE;QACxE,oEAAoE;QACpE,sEAAsE;QACtE,wCAAwC;QACxC,MAAM,GAAG,EAAE,GAAG,CAAC,aAAa,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QAChE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC;IAChC,CAAC;IAED,sEAAsE;IACtE,0EAA0E;IAC1E,0EAA0E;IAC1E,oDAAoD;IACpD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC3B,IAAI,aAAa;YAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,aAAa,GAAG,MAAM,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,6BAA6B,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACpD,SAAS,EAAE,CAAC;QACZ,aAAa,CAAC,MAAM,EAAE,iBAAiB,EAAE;YACvC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM;SAClC,CAAC,CAAC;QACH,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,6FAA6F;IAC7F,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,eAAe,IAAI,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAC/I,yBAAyB;QACzB,OAAO,GAAG,MAAM,SAAS,CAAC;YACxB,aAAa;YACb,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM;SACnD,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,yBAAyB;QACzB,OAAO,GAAG,MAAM,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAChC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,4CAA4C,CAAC,CAAC;IAElE,WAAW;IACX,SAAS,EAAE,CAAC;IAEZ,iBAAiB;IACjB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC3C,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAEpC,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"saveScreenshot.d.ts","sourceRoot":"","sources":["../../../src/core/tests/saveScreenshot.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC;AAE5D,KAAK,IAAI,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAOpE,iBAAS,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAiBnE;AAED,iBAAS,iBAAiB,CACxB,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACpC,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnC,OAAO,CAIT;AAED,iBAAe,cAAc,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,gBA0f9F"}
1
+ {"version":3,"file":"saveScreenshot.d.ts","sourceRoot":"","sources":["../../../src/core/tests/saveScreenshot.ts"],"names":[],"mappings":"AAqDA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC;AAE5D,KAAK,IAAI,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAOpE,iBAAS,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAiBnE;AAED,iBAAS,iBAAiB,CACxB,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACpC,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnC,OAAO,CAIT;AAED,iBAAe,cAAc,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,gBA2hB9F"}
@@ -3,15 +3,33 @@ import { findElement } from "./findElement.js";
3
3
  import { log, fetchFile, getOrInitRunTimestamp, redactUrlForOutput, sanitizeFilesystemName, } from "../utils.js";
4
4
  import path from "node:path";
5
5
  import fs from "node:fs";
6
- import { PNG } from "pngjs";
7
- import sharp from "sharp";
8
- // pixelmatch v7+ is ESM-only, so we need dynamic import
9
- let pixelmatch;
10
- async function getPixelmatch() {
11
- if (!pixelmatch) {
12
- pixelmatch = (await import("pixelmatch")).default;
6
+ import { loadHeavyDep } from "../../runtime/loader.js";
7
+ let _pngjs = null;
8
+ let _sharp = null;
9
+ let _pixelmatch = null;
10
+ // Each getter accepts an optional ctx so a user-overridden cacheDir is
11
+ // honored on the first call. Subsequent calls return the memoized module
12
+ // regardless of ctx — the cache dir should be stable within a run, and
13
+ // the JIT pre-flight in runTests() guarantees the install already
14
+ // matched config.cacheDir before any step executes.
15
+ async function getPng(ctx = {}) {
16
+ if (!_pngjs)
17
+ _pngjs = await loadHeavyDep("pngjs", { ctx });
18
+ return _pngjs.PNG;
19
+ }
20
+ async function getSharp(ctx = {}) {
21
+ if (!_sharp) {
22
+ const mod = await loadHeavyDep("sharp", { ctx });
23
+ _sharp = mod && (mod.default ?? mod);
24
+ }
25
+ return _sharp;
26
+ }
27
+ async function getPixelmatch(ctx = {}) {
28
+ if (!_pixelmatch) {
29
+ const mod = await loadHeavyDep("pixelmatch", { ctx });
30
+ _pixelmatch = mod.default ?? mod;
13
31
  }
14
- return pixelmatch;
32
+ return _pixelmatch;
15
33
  }
16
34
  export { saveScreenshot, clampCropRect, aspectRatiosMatch };
17
35
  // Shift the rect into image bounds without shrinking. When the rect fits
@@ -57,6 +75,27 @@ async function saveScreenshot({ config, step, driver }) {
57
75
  },
58
76
  };
59
77
  let element;
78
+ // Lazy-load heavy deps once per saveScreenshot invocation; ensureRuntime
79
+ // already materialized them ahead of step execution. The ctx threads
80
+ // through so a user-overridden cacheDir resolves from the same location
81
+ // the JIT pre-flight installer used.
82
+ //
83
+ // Surface lazy-load failures as a step-level FAIL rather than letting
84
+ // them escape and abort the whole run. A broken runtime cache (the
85
+ // user wiped <cacheDir>/runtime by hand, or npm failed mid-install)
86
+ // should produce a clean failed screenshot report, not a fatal.
87
+ const loadCtx = { cacheDir: config?.cacheDir };
88
+ let sharp;
89
+ let PNG;
90
+ try {
91
+ sharp = await getSharp(loadCtx);
92
+ PNG = await getPng(loadCtx);
93
+ }
94
+ catch (error) {
95
+ result.status = "FAIL";
96
+ result.description = `Couldn't load screenshot runtime dependencies. ${error?.message ?? error}`;
97
+ return result;
98
+ }
60
99
  // Validate step payload
61
100
  const isValidStep = validate({ schemaKey: "step_v3", object: step });
62
101
  if (!isValidStep.valid) {
@@ -430,7 +469,21 @@ async function saveScreenshot({ config, step, driver }) {
430
469
  img1.height = height;
431
470
  }
432
471
  const { width, height } = img1;
433
- const pixelmatchFn = await getPixelmatch();
472
+ let pixelmatchFn;
473
+ try {
474
+ pixelmatchFn = await getPixelmatch(loadCtx);
475
+ }
476
+ catch (error) {
477
+ // Treat a broken pixelmatch install as a step-level failure rather
478
+ // than letting it abort the run. Mirrors the earlier sharp/PNG
479
+ // guard at saveScreenshot entry.
480
+ result.status = "FAIL";
481
+ result.description = `Couldn't load screenshot comparison dependency (pixelmatch). ${error?.message ?? error}`;
482
+ if (!isUrlPath && filePath !== existFilePath && fs.existsSync(filePath)) {
483
+ fs.unlinkSync(filePath);
484
+ }
485
+ return result;
486
+ }
434
487
  const numDiffPixels = pixelmatchFn(img1.data, img2.data, null, width, height, { threshold: 0.0005 });
435
488
  fractionalDiff = numDiffPixels / (width * height);
436
489
  log(config, "debug", {
@@ -1 +1 @@
1
- {"version":3,"file":"saveScreenshot.js","sourceRoot":"","sources":["../../../src/core/tests/saveScreenshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"saveScreenshot.js","sourceRoot":"","sources":["../../../src/core/tests/saveScreenshot.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stopRecording.d.ts","sourceRoot":"","sources":["../../../src/core/tests/stopRecording.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,iBAAe,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,gBAmH7F"}
1
+ {"version":3,"file":"stopRecording.d.ts","sourceRoot":"","sources":["../../../src/core/tests/stopRecording.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,iBAAe,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,gBAoH7F"}
@@ -3,8 +3,24 @@ import { log } from "../utils.js";
3
3
  import { execFile } from "node:child_process";
4
4
  import path from "node:path";
5
5
  import fs from "node:fs";
6
- import ffmpeg from "@ffmpeg-installer/ffmpeg";
7
- const ffmpegPath = ffmpeg.path;
6
+ import { loadHeavyDep } from "../../runtime/loader.js";
7
+ // Resolve the ffmpeg binary path lazily — @ffmpeg-installer/ffmpeg is a
8
+ // heavy runtime dep that should only be loaded when a stopRecording step
9
+ // actually runs. The ctx is threaded through so a user-overridden
10
+ // cacheDir is honored here just as it is by the JIT pre-flight installer.
11
+ async function getFfmpegPath(ctx = {}) {
12
+ const mod = await loadHeavyDep("@ffmpeg-installer/ffmpeg", { ctx });
13
+ // The package's CJS entry exports an object with a .path field; in ESM
14
+ // dynamic import we get { default: { path }, path? } shape depending on
15
+ // bundler. Try both, then guard before handing it to execFile so a
16
+ // malformed install fails with an actionable message instead of a
17
+ // confusing "argument must be of type string" deep in node's exec.
18
+ const candidate = mod && (mod.path ?? mod.default?.path);
19
+ if (typeof candidate !== "string" || candidate.length === 0) {
20
+ throw new Error("ffmpeg binary path is missing or malformed in the installed @ffmpeg-installer/ffmpeg package. Try `doc-detective install runtime --force` to reinstall.");
21
+ }
22
+ return candidate;
23
+ }
8
24
  export { stopRecording };
9
25
  async function stopRecording({ config, step, driver }) {
10
26
  let result = {
@@ -80,6 +96,7 @@ async function stopRecording({ config, step, driver }) {
80
96
  }
81
97
  ffmpegArgs.push(targetPath);
82
98
  // Await transcoding to complete before returning
99
+ const ffmpegPath = await getFfmpegPath({ cacheDir: config?.cacheDir });
83
100
  await new Promise((resolve, reject) => {
84
101
  execFile(ffmpegPath, ffmpegArgs)
85
102
  .on("close", (code) => {
@@ -1 +1 @@
1
- {"version":3,"file":"stopRecording.js","sourceRoot":"","sources":["../../../src/core/tests/stopRecording.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stopRecording.js","sourceRoot":"","sources":["../../../src/core/tests/stopRecording.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../src/core/tests.ts"],"names":[],"mappings":"AAmCA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAmN1C,iBAAe,SAAS,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAW,EAAE,EAAE;IAAE,aAAa,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAwIhI;AAED;;;;;;;;;;;;;;;GAeG;AACH,iBAAe,QAAQ,CAAC,EAAE,aAAa,EAAE,EAAE;IAAE,aAAa,EAAE,GAAG,CAAA;CAAE,gBAwfhE;AAGD,iBAAe,OAAO,CAAC,EACrB,MAAW,EACX,OAAY,EACZ,IAAI,EACJ,MAAM,EACN,UAAe,EACf,OAAY,GACb,EAAE;IACD,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,GAAG,CAAC;IACZ,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,OAAO,CAAC,EAAE,GAAG,CAAC;CACf,GAAG,OAAO,CAAC,GAAG,CAAC,CAuGf;AAqDD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,iBAAe,SAAS,CAAC,OAAO,GAAE,GAAQ;;;;;GAkGzC"}
1
+ {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../src/core/tests.ts"],"names":[],"mappings":"AAyCA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAmN1C,iBAAe,SAAS,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAW,EAAE,EAAE;IAAE,aAAa,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAwIhI;AAED;;;;;;;;;;;;;;;GAeG;AACH,iBAAe,QAAQ,CAAC,EAAE,aAAa,EAAE,EAAE;IAAE,aAAa,EAAE,GAAG,CAAA;CAAE,gBAqhBhE;AAGD,iBAAe,OAAO,CAAC,EACrB,MAAW,EACX,OAAY,EACZ,IAAI,EACJ,MAAM,EACN,UAAe,EACf,OAAY,GACb,EAAE;IACD,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,GAAG,CAAC;IACZ,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,OAAO,CAAC,EAAE,GAAG,CAAC;CACf,GAAG,OAAO,CAAC,GAAG,CAAC,CAuGf;AA8DD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,iBAAe,SAAS,CAAC,OAAO,GAAE,GAAQ;;;;;GAuHzC"}
@@ -1,5 +1,11 @@
1
1
  import kill from "tree-kill";
2
- import * as wdio from "webdriverio";
2
+ // webdriverio is loaded lazily via loadHeavyDep at the driverStart() call
3
+ // site so the shim's CLI startup doesn't pay its ~50MB load cost when the
4
+ // user is only running e.g. install-agents or install status. The type
5
+ // reference uses `typeof import('webdriverio')` directly at the call site
6
+ // so we don't carry a top-level `import type` whose `typeof` would refer
7
+ // to a non-runtime identifier.
8
+ import { loadHeavyDep, resolveHeavyDepPath } from "../runtime/loader.js";
3
9
  import os from "node:os";
4
10
  import { log, replaceEnvs, selectSpecsForRun, findFreePort } from "./utils.js";
5
11
  import axios from "axios";
@@ -429,11 +435,21 @@ async function runSpecs({ resolvedTests }) {
429
435
  // Warm up Appium
430
436
  let appiumPort;
431
437
  if (appiumRequired) {
432
- setAppiumHome();
438
+ setAppiumHome({ cacheDir: config?.cacheDir });
433
439
  appiumPort = await findFreePort();
434
440
  log(config, "debug", `Starting Appium on port ${appiumPort}`);
435
- appium = spawn("npx", ["appium", "-a", "127.0.0.1", "-p", String(appiumPort)], {
436
- shell: true,
441
+ // Resolve appium's actual JS entrypoint via `require.resolve`
442
+ // (shim node_modules first, runtime cache second) and invoke it
443
+ // with `node <entry>`. This sidesteps every shell-injection trap
444
+ // at once: no `.cmd` shim, so no Windows-requires-shell:true; no
445
+ // `npx`, so no PATH lookup; no user-controlled paths in a shell-
446
+ // interpreted string. Works for both `--omit=optional` users
447
+ // (appium in cache only) and default installs (appium in shim).
448
+ const appiumEntry = resolveHeavyDepPath("appium", { cacheDir: config?.cacheDir });
449
+ if (!appiumEntry) {
450
+ throw new Error("appium is not installed. The runtime pre-flight should have installed it; check DOC_DETECTIVE_CACHE_DIR / config.cacheDir or run `doc-detective install runtime appium`.");
451
+ }
452
+ appium = spawn(process.execPath, [appiumEntry, "-a", "127.0.0.1", "-p", String(appiumPort)], {
437
453
  windowsHide: true,
438
454
  cwd: path.join(__dirname, "../.."),
439
455
  });
@@ -446,7 +462,23 @@ async function runSpecs({ resolvedTests }) {
446
462
  appium.stderr.on("data", (data) => {
447
463
  // console.error(`stderr: ${data}`);
448
464
  });
449
- await appiumIsReady(appiumPort);
465
+ try {
466
+ await appiumIsReady(appiumPort);
467
+ }
468
+ catch (error) {
469
+ // appiumIsReady threw or timed out — the spawned child is still
470
+ // alive and would leak (orphan process, port still bound). Tear
471
+ // it down before propagating so subsequent runs don't trip on
472
+ // the stale state.
473
+ try {
474
+ if (appium && appium.pid)
475
+ kill(appium.pid);
476
+ }
477
+ catch {
478
+ // best-effort cleanup; the parent error is what matters
479
+ }
480
+ throw error;
481
+ }
450
482
  log(config, "debug", "Appium is ready.");
451
483
  }
452
484
  // Iterate specs
@@ -542,7 +574,7 @@ async function runSpecs({ resolvedTests }) {
542
574
  }
543
575
  // Instantiate driver
544
576
  try {
545
- driver = await driverStart(caps, appiumPort);
577
+ driver = await driverStart(caps, appiumPort, 4, { cacheDir: config?.cacheDir });
546
578
  }
547
579
  catch (error) {
548
580
  try {
@@ -558,7 +590,7 @@ async function runSpecs({ resolvedTests }) {
558
590
  headless: context.browser?.headless !== false,
559
591
  },
560
592
  });
561
- driver = await driverStart(caps, appiumPort);
593
+ driver = await driverStart(caps, appiumPort, 4, { cacheDir: config?.cacheDir });
562
594
  }
563
595
  catch (error) {
564
596
  let errorMessage = `Failed to start context '${context.browser?.name}' on '${platform}'.`;
@@ -918,11 +950,12 @@ async function appiumIsReady(port, timeoutMs = 120000) {
918
950
  return isReady;
919
951
  }
920
952
  // Start the Appium driver specified in `capabilities`.
921
- async function driverStart(capabilities, port, maxAttempts = 4) {
953
+ async function driverStart(capabilities, port, maxAttempts = 4, ctx = {}) {
922
954
  // POST /session can race a just-spawned-or-still-dying Appium on Windows:
923
955
  // /status may already return 200 from the outgoing process while /session
924
956
  // is no longer accepting. Retry with linear backoff ONLY on ECONNREFUSED --
925
957
  // any other error is a real session-creation failure and propagates.
958
+ const wdio = await loadHeavyDep("webdriverio", { ctx });
926
959
  let lastError;
927
960
  for (let attempt = 1; attempt <= maxAttempts; attempt++) {
928
961
  try {
@@ -992,11 +1025,15 @@ async function getRunner(options = {}) {
992
1025
  throw new Error("Chrome browser is not available. Please ensure Chrome is installed and accessible.");
993
1026
  }
994
1027
  // Set Appium home directory
995
- setAppiumHome();
996
- // Start Appium server on a free ephemeral port
1028
+ setAppiumHome({ cacheDir: config?.cacheDir });
1029
+ // Start Appium server on a free ephemeral port. Same `node <entry>`
1030
+ // pattern as the runSpecs spawn above — see comment there.
997
1031
  const appiumPort = await findFreePort();
998
- const appium = spawn("npx", ["appium", "-a", "127.0.0.1", "-p", String(appiumPort)], {
999
- shell: true,
1032
+ const appiumEntry = resolveHeavyDepPath("appium", { cacheDir: config?.cacheDir });
1033
+ if (!appiumEntry) {
1034
+ throw new Error("appium is not installed. Run `doc-detective install runtime appium` to install it.");
1035
+ }
1036
+ const appium = spawn(process.execPath, [appiumEntry, "-a", "127.0.0.1", "-p", String(appiumPort)], {
1000
1037
  windowsHide: true,
1001
1038
  cwd: path.join(__dirname, "../.."),
1002
1039
  });
@@ -1006,8 +1043,22 @@ async function getRunner(options = {}) {
1006
1043
  appium.on("error", (err) => {
1007
1044
  log(config, "warning", `Appium process error: ${err?.stack ?? err?.message ?? String(err)}`);
1008
1045
  });
1009
- // Wait for Appium to be ready
1010
- await appiumIsReady(appiumPort);
1046
+ // Wait for Appium to be ready. Same kill-on-throw guard as in
1047
+ // runSpecs above — without it, a startup timeout would leave an
1048
+ // orphan Appium child holding the ephemeral port.
1049
+ try {
1050
+ await appiumIsReady(appiumPort);
1051
+ }
1052
+ catch (error) {
1053
+ try {
1054
+ if (appium && appium.pid)
1055
+ kill(appium.pid);
1056
+ }
1057
+ catch {
1058
+ // best-effort cleanup; the parent error is what matters
1059
+ }
1060
+ throw error;
1061
+ }
1011
1062
  log(config, "debug", `Appium is ready for external driver on port ${appiumPort}.`);
1012
1063
  // Get Chrome driver capabilities
1013
1064
  const caps = getDriverCapabilities({
@@ -1022,14 +1073,14 @@ async function getRunner(options = {}) {
1022
1073
  // Start the runner
1023
1074
  let runner;
1024
1075
  try {
1025
- runner = await driverStart(caps, appiumPort);
1076
+ runner = await driverStart(caps, appiumPort, 4, { cacheDir: config?.cacheDir });
1026
1077
  }
1027
1078
  catch (error) {
1028
1079
  // If runner fails, attempt to set headless and retry
1029
1080
  try {
1030
1081
  log(config, "warning", "Failed to start Chrome runner. Retrying as headless.");
1031
1082
  caps["goog:chromeOptions"].args.push("--headless", "--disable-gpu");
1032
- runner = await driverStart(caps, appiumPort);
1083
+ runner = await driverStart(caps, appiumPort, 4, { cacheDir: config?.cacheDir });
1033
1084
  }
1034
1085
  catch (error) {
1035
1086
  // If runner fails, clean up Appium and rethrow