craftdriver 1.3.0 → 1.4.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 (91) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +1 -0
  3. package/dist/cli/dispatcher.js +1 -1
  4. package/dist/cli/dispatcher.js.map +1 -1
  5. package/dist/index.d.ts +6 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +4 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/lib/browser.d.ts +147 -21
  10. package/dist/lib/browser.d.ts.map +1 -1
  11. package/dist/lib/browser.js +380 -139
  12. package/dist/lib/browser.js.map +1 -1
  13. package/dist/lib/capabilities.d.ts +35 -0
  14. package/dist/lib/capabilities.d.ts.map +1 -0
  15. package/dist/lib/capabilities.js +58 -0
  16. package/dist/lib/capabilities.js.map +1 -0
  17. package/dist/lib/chrome.d.ts +7 -2
  18. package/dist/lib/chrome.d.ts.map +1 -1
  19. package/dist/lib/chrome.js +10 -1
  20. package/dist/lib/chrome.js.map +1 -1
  21. package/dist/lib/driverManager.d.ts +92 -0
  22. package/dist/lib/driverManager.d.ts.map +1 -1
  23. package/dist/lib/driverManager.js +229 -10
  24. package/dist/lib/driverManager.js.map +1 -1
  25. package/dist/lib/electron.d.ts +60 -0
  26. package/dist/lib/electron.d.ts.map +1 -0
  27. package/dist/lib/electron.js +85 -0
  28. package/dist/lib/electron.js.map +1 -0
  29. package/dist/lib/electronDeeplink.d.ts +22 -0
  30. package/dist/lib/electronDeeplink.d.ts.map +1 -0
  31. package/dist/lib/electronDeeplink.js +118 -0
  32. package/dist/lib/electronDeeplink.js.map +1 -0
  33. package/dist/lib/electronDiagnostics.d.ts +49 -0
  34. package/dist/lib/electronDiagnostics.d.ts.map +1 -0
  35. package/dist/lib/electronDiagnostics.js +195 -0
  36. package/dist/lib/electronDiagnostics.js.map +1 -0
  37. package/dist/lib/electronDialogMock.d.ts +51 -0
  38. package/dist/lib/electronDialogMock.d.ts.map +1 -0
  39. package/dist/lib/electronDialogMock.js +106 -0
  40. package/dist/lib/electronDialogMock.js.map +1 -0
  41. package/dist/lib/electronFuses.d.ts +13 -0
  42. package/dist/lib/electronFuses.d.ts.map +1 -0
  43. package/dist/lib/electronFuses.js +118 -0
  44. package/dist/lib/electronFuses.js.map +1 -0
  45. package/dist/lib/electronMainBridge.d.ts +28 -0
  46. package/dist/lib/electronMainBridge.d.ts.map +1 -0
  47. package/dist/lib/electronMainBridge.js +270 -0
  48. package/dist/lib/electronMainBridge.js.map +1 -0
  49. package/dist/lib/electronMainLogs.d.ts +81 -0
  50. package/dist/lib/electronMainLogs.d.ts.map +1 -0
  51. package/dist/lib/electronMainLogs.js +176 -0
  52. package/dist/lib/electronMainLogs.js.map +1 -0
  53. package/dist/lib/electronMock.d.ts +52 -0
  54. package/dist/lib/electronMock.d.ts.map +1 -0
  55. package/dist/lib/electronMock.js +96 -0
  56. package/dist/lib/electronMock.js.map +1 -0
  57. package/dist/lib/electronRemote.d.ts +106 -0
  58. package/dist/lib/electronRemote.d.ts.map +1 -0
  59. package/dist/lib/electronRemote.js +406 -0
  60. package/dist/lib/electronRemote.js.map +1 -0
  61. package/dist/lib/electronVersions.d.ts +34 -0
  62. package/dist/lib/electronVersions.d.ts.map +1 -0
  63. package/dist/lib/electronVersions.js +90 -0
  64. package/dist/lib/electronVersions.js.map +1 -0
  65. package/dist/lib/errors.d.ts +27 -0
  66. package/dist/lib/errors.d.ts.map +1 -1
  67. package/dist/lib/errors.js +27 -0
  68. package/dist/lib/errors.js.map +1 -1
  69. package/dist/lib/launchTarget.d.ts +30 -0
  70. package/dist/lib/launchTarget.d.ts.map +1 -0
  71. package/dist/lib/launchTarget.js +112 -0
  72. package/dist/lib/launchTarget.js.map +1 -0
  73. package/dist/lib/page.d.ts +1 -0
  74. package/dist/lib/page.d.ts.map +1 -1
  75. package/dist/lib/page.js +1 -1
  76. package/dist/lib/page.js.map +1 -1
  77. package/dist/lib/service.d.ts +21 -0
  78. package/dist/lib/service.d.ts.map +1 -1
  79. package/dist/lib/service.js +94 -6
  80. package/dist/lib/service.js.map +1 -1
  81. package/docs/api-reference.md +37 -2
  82. package/docs/browser-api.md +7 -1
  83. package/docs/electron.md +419 -0
  84. package/docs/error-codes.md +5 -0
  85. package/docs/index.md +4 -0
  86. package/docs/recipes/electron-app-from-another-repo.md +136 -0
  87. package/docs/recipes/electron-deep-link.md +117 -0
  88. package/docs/recipes/electron-mock-apis.md +88 -0
  89. package/docs/recipes/electron-native-dialog.md +105 -0
  90. package/docs/recipes.md +28 -9
  91. package/package.json +5 -1
@@ -26,7 +26,9 @@ import os from 'os';
26
26
  import https from 'https';
27
27
  import { spawnSync } from 'child_process';
28
28
  import { fileURLToPath } from 'url';
29
+ import { createRequire } from 'module';
29
30
  import { VERSION_PROBE_TIMEOUT_MS, PATH_PROBE_TIMEOUT_MS } from './timing.js';
31
+ import { chromiumMajorForElectron, knownElectronMajors } from './electronVersions.js';
30
32
  // ─── Configuration ────────────────────────────────────────────────────────────
31
33
  function cacheDir() {
32
34
  return process.env.CRAFTDRIVER_CACHE_DIR ?? path.join(os.homedir(), '.cache', 'craftdriver');
@@ -143,7 +145,8 @@ function httpsGet(url, depth = 0) {
143
145
  reject(new Error('Too many HTTP redirects'));
144
146
  return;
145
147
  }
146
- https.get(url, { headers: { 'User-Agent': 'craftdriver' } }, (res) => {
148
+ https
149
+ .get(url, { headers: { 'User-Agent': 'craftdriver' } }, (res) => {
147
150
  const location = res.headers.location;
148
151
  if (res.statusCode && res.statusCode >= 300 && res.statusCode < 400 && location) {
149
152
  resolve(httpsGet(location, depth + 1));
@@ -157,7 +160,8 @@ function httpsGet(url, depth = 0) {
157
160
  res.on('data', (c) => chunks.push(c));
158
161
  res.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8')));
159
162
  res.on('error', reject);
160
- }).on('error', reject);
163
+ })
164
+ .on('error', reject);
161
165
  });
162
166
  }
163
167
  function httpsDownload(url, dest, depth = 0) {
@@ -166,7 +170,8 @@ function httpsDownload(url, dest, depth = 0) {
166
170
  reject(new Error('Too many HTTP redirects'));
167
171
  return;
168
172
  }
169
- https.get(url, { headers: { 'User-Agent': 'craftdriver' } }, (res) => {
173
+ https
174
+ .get(url, { headers: { 'User-Agent': 'craftdriver' } }, (res) => {
170
175
  const location = res.headers.location;
171
176
  if (res.statusCode && res.statusCode >= 300 && res.statusCode < 400 && location) {
172
177
  resolve(httpsDownload(location, dest, depth + 1));
@@ -178,10 +183,11 @@ function httpsDownload(url, dest, depth = 0) {
178
183
  }
179
184
  const out = fs.createWriteStream(dest);
180
185
  res.pipe(out);
181
- out.on('finish', () => out.close((err) => err ? reject(err) : resolve()));
186
+ out.on('finish', () => out.close((err) => (err ? reject(err) : resolve())));
182
187
  out.on('error', reject);
183
188
  res.on('error', reject);
184
- }).on('error', reject);
189
+ })
190
+ .on('error', reject);
185
191
  });
186
192
  }
187
193
  // ─── Archive extraction ───────────────────────────────────────────────────────
@@ -191,11 +197,14 @@ function extractZip(zipPath, destDir) {
191
197
  // Pass path and destination as separate arguments to avoid string injection
192
198
  // if the cache path contains special characters.
193
199
  const r = spawnSync('powershell', [
194
- '-NoProfile', '-Command',
200
+ '-NoProfile',
201
+ '-Command',
195
202
  'Expand-Archive',
196
203
  '-Force',
197
- '-Path', zipPath,
198
- '-DestinationPath', destDir,
204
+ '-Path',
205
+ zipPath,
206
+ '-DestinationPath',
207
+ destDir,
199
208
  ], { stdio: ['ignore', 'pipe', 'pipe'] });
200
209
  if (r.status !== 0) {
201
210
  throw new Error(`Zip extraction failed: ${String(r.stderr)}`);
@@ -446,7 +455,12 @@ export function resolveBrowserBinaryPath(kind, explicitPath) {
446
455
  const specificEnvVar = kind === 'chrome' ? 'CRAFTDRIVER_CHROME_PATH' : 'CRAFTDRIVER_FIREFOX_PATH';
447
456
  const legacyBinEnvVar = kind === 'chrome' ? 'CHROME_BIN' : 'FIREFOX_BIN';
448
457
  const legacySeEnvVar = kind === 'chrome' ? 'SE_CHROME_PATH' : 'SE_FIREFOX_PATH';
449
- for (const envVar of [specificEnvVar, 'CRAFTDRIVER_BROWSER_PATH', legacyBinEnvVar, legacySeEnvVar]) {
458
+ for (const envVar of [
459
+ specificEnvVar,
460
+ 'CRAFTDRIVER_BROWSER_PATH',
461
+ legacyBinEnvVar,
462
+ legacySeEnvVar,
463
+ ]) {
450
464
  const p = process.env[envVar];
451
465
  if (!p)
452
466
  continue;
@@ -524,7 +538,9 @@ export async function resolveChromeDriver(options) {
524
538
  // (e.g. Electron), so `browserPath` is documented as Chrome/Chromium-only
525
539
  // for now.
526
540
  const p = os.platform();
527
- const candidates = options?.browserPath ? [options.browserPath] : (CHROME_CANDIDATES[p] ?? ['google-chrome']);
541
+ const candidates = options?.browserPath
542
+ ? [options.browserPath]
543
+ : (CHROME_CANDIDATES[p] ?? ['google-chrome']);
528
544
  const detected = detectBrowserVersion(candidates);
529
545
  if (!detected) {
530
546
  throw new Error(options?.browserPath
@@ -539,6 +555,209 @@ export async function resolveChromeDriver(options) {
539
555
  recordResolvedDriver(cacheKey, detected.version, driverPath);
540
556
  return driverPath;
541
557
  }
558
+ function validateElectronChromeDriver(candidate, label, source) {
559
+ const resolved = path.resolve(candidate);
560
+ let stat;
561
+ try {
562
+ stat = fs.statSync(resolved);
563
+ }
564
+ catch (error) {
565
+ const code = error.code;
566
+ if (code === 'ENOENT')
567
+ throw new Error(`${label} "${candidate}" does not exist.`);
568
+ if (code === 'EACCES')
569
+ throw new Error(`${label} "${candidate}" is not accessible.`);
570
+ throw error;
571
+ }
572
+ if (!stat.isFile())
573
+ throw new Error(`${label} "${candidate}" is not a file.`);
574
+ if (process.platform !== 'win32') {
575
+ try {
576
+ fs.accessSync(resolved, fs.constants.X_OK);
577
+ }
578
+ catch {
579
+ throw new Error(`${label} "${candidate}" is not executable.`);
580
+ }
581
+ }
582
+ return { path: resolved, source };
583
+ }
584
+ /** Resolve an Electron chromedriver and report which source won. */
585
+ export async function resolveElectronChromeDriverInfo(options) {
586
+ // 1. Explicit path — a supplied-but-missing path is an error, not a fallthrough
587
+ // (silently auto-picking a different driver here would defeat the point).
588
+ if (options?.chromedriverPath) {
589
+ return validateElectronChromeDriver(options.chromedriverPath, 'electron.chromedriverPath', 'explicit');
590
+ }
591
+ // 2. Env override.
592
+ const envPath = process.env.CRAFTDRIVER_ELECTRON_CHROMEDRIVER_PATH;
593
+ if (envPath) {
594
+ return validateElectronChromeDriver(envPath, 'CRAFTDRIVER_ELECTRON_CHROMEDRIVER_PATH', 'environment');
595
+ }
596
+ // 3. Explicit Electron version → map to Chromium major → download a matching
597
+ // CfT chromedriver. Like the explicit path above, a supplied-but-unresolvable
598
+ // version is an error, not a fallthrough to the package: the user named a
599
+ // version, so silently driving a different (installed) driver would defeat
600
+ // the point.
601
+ if (options?.version) {
602
+ return resolveElectronDriverFromVersion(options.version);
603
+ }
604
+ // 4. The electron-chromedriver package, resolved from the user's project (not
605
+ // from craftdriver's own location — the package is the user's dependency
606
+ // and is normally hoisted to the project's top-level node_modules).
607
+ try {
608
+ const req = createRequire(path.join(process.cwd(), 'noop.js'));
609
+ const exported = req('electron-chromedriver');
610
+ if (typeof exported === 'string' && fs.existsSync(exported)) {
611
+ return validateElectronChromeDriver(exported, 'electron-chromedriver export', 'package');
612
+ }
613
+ }
614
+ catch {
615
+ // not installed / not resolvable from CWD — fall through to the path probe
616
+ }
617
+ // 5. Conventional install location under the CWD.
618
+ const cwdCandidate = path.join(process.cwd(), 'node_modules', 'electron-chromedriver', 'bin', driverBinName());
619
+ if (fs.existsSync(cwdCandidate)) {
620
+ return validateElectronChromeDriver(cwdCandidate, 'electron-chromedriver conventional path', 'conventional-path');
621
+ }
622
+ // 6. Auto-detected Electron version → CfT. Zero-config convenience when no
623
+ // explicit driver was given. Ranked below an explicitly installed
624
+ // electron-chromedriver (above) so a deliberate install is never shadowed by
625
+ // a surprise download. A packaged app's own version is authoritative: if we
626
+ // can read it, use it or fail clearly rather than falling through to a stray
627
+ // local `electron` dev dependency. A local install remains best-effort: an
628
+ // undetected/unmapped result falls through to the generic guidance below.
629
+ if (!options?.version) {
630
+ // 6a. From the packaged app's own bundle first — for a production app this is
631
+ // the authoritative version, and it must beat a differently-versioned
632
+ // `electron` that happens to sit in the test project's node_modules.
633
+ const fromApp = detectElectronVersionFromApp(options?.appBinaryPath);
634
+ if (fromApp) {
635
+ return resolveElectronDriverFromVersion(fromApp, 'app-bundle-version');
636
+ }
637
+ // 6b. From an installed `electron` (unpackaged/dev projects).
638
+ const detected = detectElectronVersion();
639
+ if (detected && chromiumMajorForElectron(detected) !== undefined) {
640
+ return resolveElectronDriverFromVersion(detected, 'detected-version');
641
+ }
642
+ }
643
+ throw new Error('No chromedriver found for Electron.\n' +
644
+ 'Electron embeds its own Chromium, so it needs a matching chromedriver. Either:\n' +
645
+ " • set `electron.version` (e.g. your app's Electron version) to have " +
646
+ 'craftdriver download a matching Chrome-for-Testing driver,\n' +
647
+ ' • install the `electron-chromedriver` package (its version tracks your ' +
648
+ 'Electron major), or\n' +
649
+ ' • set `electron.chromedriverPath` / CRAFTDRIVER_ELECTRON_CHROMEDRIVER_PATH.\n' +
650
+ 'craftdriver does not auto-detect a system-Chrome driver here because it ' +
651
+ 'would not match your Electron build.');
652
+ }
653
+ /**
654
+ * Resolve an Electron chromedriver purely from an Electron version: map it to
655
+ * the bundled Chromium major (see {@link chromiumMajorForElectron}) and download
656
+ * a matching Chrome-for-Testing driver, reusing the same downloader and on-disk
657
+ * cache as the browser path.
658
+ *
659
+ * Throws — rather than falling back — when the version is unmapped or offline is
660
+ * set, so an explicit version never silently resolves a different driver.
661
+ */
662
+ async function resolveElectronDriverFromVersion(electronVersion, source = 'version') {
663
+ const chromiumMajor = chromiumMajorForElectron(electronVersion);
664
+ if (chromiumMajor === undefined) {
665
+ throw new Error(`Could not map Electron version "${electronVersion}" to a Chromium version.\n` +
666
+ `Known Electron majors: ${knownElectronMajors().join(', ')}.\n` +
667
+ 'Pin `electron-chromedriver` or set `electron.chromedriverPath` for versions ' +
668
+ 'outside this list, or add the mapping in src/lib/electronVersions.ts.');
669
+ }
670
+ if (process.env.CRAFTDRIVER_OFFLINE) {
671
+ throw new Error(`CRAFTDRIVER_OFFLINE is set; cannot download a chromedriver for Electron ` +
672
+ `${electronVersion} (Chromium ${chromiumMajor}).\n` +
673
+ 'Set `electron.chromedriverPath` / CRAFTDRIVER_ELECTRON_CHROMEDRIVER_PATH to a ' +
674
+ 'local chromedriver binary.');
675
+ }
676
+ // downloadChromedriver picks the best driver within the Chromium major and
677
+ // caches it on disk. Passing the bare major is enough — driver selection is
678
+ // major-scoped. On a Chromium major CfT hasn't published yet (a just-released
679
+ // Electron can briefly lead CfT, and anything < 115 is never in CfT), this
680
+ // throws CfT's own "no chromedriver found" error, which points at the explicit
681
+ // paths above.
682
+ const driverPath = await downloadChromedriver(String(chromiumMajor));
683
+ return { path: path.resolve(driverPath), source, version: electronVersion };
684
+ }
685
+ /**
686
+ * Best-effort detection of the app's Electron version from the project's local
687
+ * install — the concrete version in `node_modules/electron/package.json` (then
688
+ * `electron-nightly`), resolved from `cwd`. Returns `undefined` when neither is
689
+ * installed. Zero-config counterpart to an explicit `electron.version`; only
690
+ * works for unpackaged/dev setups that keep `electron` in `node_modules` (a
691
+ * packaged app ships no such install; packaged macOS apps are handled by
692
+ * {@link detectElectronVersionFromApp}).
693
+ */
694
+ export function detectElectronVersion(cwd = process.cwd()) {
695
+ const req = createRequire(path.join(cwd, 'noop.js'));
696
+ const readVersion = (pkgName) => {
697
+ try {
698
+ const pkg = req(`${pkgName}/package.json`);
699
+ return typeof pkg.version === 'string' ? pkg.version : undefined;
700
+ }
701
+ catch {
702
+ return undefined;
703
+ }
704
+ };
705
+ return readVersion('electron') ?? readVersion('electron-nightly');
706
+ }
707
+ /**
708
+ * Best-effort detection of a **packaged/production** app's Electron version
709
+ * straight from its bundle — the cheap counterpart to {@link detectElectronVersion}
710
+ * (which only sees an `electron` install in node_modules, absent from a shipped app).
711
+ *
712
+ * macOS reads the tiny `Electron Framework.framework/Resources/Info.plist`
713
+ * `CFBundleVersion`, which Electron sets to its own version (verified: Fiddler
714
+ * Everywhere → 39.8.6, the example fixture → 43.1.0). It **never** scans the
715
+ * multi-hundred-MB framework binary. Other platforms return undefined for now — no
716
+ * comparably cheap in-bundle source was found — so they stay on explicit
717
+ * `version`/`chromedriverPath`. A non-Electron value degrades safely: it just fails
718
+ * the Electron→Chromium map lookup and falls through.
719
+ */
720
+ export function detectElectronVersionFromApp(appBinaryPath) {
721
+ if (process.platform !== 'darwin' || !appBinaryPath)
722
+ return undefined;
723
+ // <App>.app/Contents/MacOS/<bin> → …/Contents/Frameworks/Electron Framework.framework/Resources/Info.plist
724
+ const plist = path.resolve(path.dirname(appBinaryPath), '..', 'Frameworks', 'Electron Framework.framework', 'Resources', 'Info.plist');
725
+ if (!fs.existsSync(plist))
726
+ return undefined;
727
+ try {
728
+ const res = spawnSync('/usr/libexec/PlistBuddy', ['-c', 'Print CFBundleVersion', plist], {
729
+ encoding: 'utf8',
730
+ timeout: 3000,
731
+ });
732
+ if (res.status !== 0 || typeof res.stdout !== 'string')
733
+ return undefined;
734
+ const version = res.stdout.trim();
735
+ return /^\d+\.\d+/.test(version) ? version : undefined;
736
+ }
737
+ catch {
738
+ return undefined;
739
+ }
740
+ }
741
+ /** Compatibility wrapper returning only the resolved driver path. */
742
+ export async function resolveElectronChromeDriver(options) {
743
+ return (await resolveElectronChromeDriverInfo(options)).path;
744
+ }
745
+ /**
746
+ * Read a chromedriver version for diagnostics without invoking a shell.
747
+ * Failure is deliberately non-fatal: the real driver startup retains the
748
+ * actionable process error and captured stdout/stderr.
749
+ */
750
+ export function readChromeDriverVersion(binaryPath) {
751
+ const result = spawnSync(binaryPath, ['--version'], {
752
+ encoding: 'utf8',
753
+ timeout: PATH_PROBE_TIMEOUT_MS,
754
+ stdio: ['ignore', 'pipe', 'pipe'],
755
+ });
756
+ if (result.error || result.status !== 0)
757
+ return undefined;
758
+ const output = `${result.stdout ?? ''}\n${result.stderr ?? ''}`;
759
+ return /ChromeDriver\s+([^\s]+)/i.exec(output)?.[1];
760
+ }
542
761
  /** Resolves the path to a geckodriver binary, downloading if necessary. */
543
762
  export async function resolveFirefoxDriver(options) {
544
763
  // 1. Explicit constructor argument.
@@ -1 +1 @@
1
- {"version":3,"file":"driverManager.js","sourceRoot":"","sources":["../../src/lib/driverManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"driverManager.js","sourceRoot":"","sources":["../../src/lib/driverManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { ChromeService, type ChromeServiceOptions } from './chrome.js';
2
+ export declare function electronDebugEnabled(): boolean;
3
+ export declare function writeElectronDebug(fields: Record<string, string | undefined>): void;
4
+ /** Driver-process configuration for {@link ElectronService}. */
5
+ export type ElectronServiceOptions = Omit<ChromeServiceOptions, 'binaryPath' | 'browserPath'> & {
6
+ /**
7
+ * Absolute path to a `chromedriver` binary that matches your Electron app's
8
+ * bundled Chromium — normally the one shipped by the `electron-chromedriver`
9
+ * package (its version tracks your Electron major). When omitted, craftdriver
10
+ * falls back to {@link ElectronServiceOptions.version} (if set), then to an
11
+ * `electron-chromedriver` package in your project's `node_modules`.
12
+ *
13
+ * Unlike {@link ChromeService}, this is **never** resolved from a system
14
+ * Chrome install: Electron embeds its own Chromium, so a system-Chrome driver
15
+ * would be the wrong version. See `resolveElectronChromeDriver`.
16
+ */
17
+ chromedriverPath?: string;
18
+ /**
19
+ * The app's Electron version (e.g. `'37.2.0'`). When set — and no explicit
20
+ * `chromedriverPath`/env overrides it — craftdriver maps it to the bundled
21
+ * Chromium major and downloads a matching **Chrome-for-Testing** chromedriver,
22
+ * removing the need for a project-local `electron-chromedriver`.
23
+ *
24
+ * Only Electron majors in craftdriver's vendored map resolve, and only if
25
+ * Chrome for Testing publishes that Chromium major (>= 115). Otherwise pin
26
+ * `chromedriverPath` or `electron-chromedriver`.
27
+ */
28
+ version?: string;
29
+ /**
30
+ * Path to the app executable being launched (the `appBinaryPath` from
31
+ * `Browser.launch`). With no explicit `version`/`chromedriverPath`, craftdriver
32
+ * reads the Electron version straight from a packaged app's bundle to resolve a
33
+ * matching driver — so a production app "just works" from the executable alone.
34
+ * macOS only for now; set automatically by `Browser.launch`.
35
+ */
36
+ appBinaryPath?: string;
37
+ };
38
+ /**
39
+ * Driver service for automating an Electron application renderer. It uses the
40
+ * chromedriver protocol like ChromeService, but resolves the driver only from
41
+ * Electron-specific configuration, never from system Chrome.
42
+ *
43
+ * The Electron **app executable** itself is not set here; pass it as
44
+ * `LaunchOptions.electron.appBinaryPath` (→ `goog:chromeOptions.binary`).
45
+ */
46
+ export declare class ElectronService extends ChromeService {
47
+ private readonly electronVersion;
48
+ private readonly appBinaryPath;
49
+ constructor(options?: ElectronServiceOptions);
50
+ /**
51
+ * chromedriver spawns the Electron app inheriting this env, so scrub
52
+ * `ELECTRON_RUN_AS_NODE`: when it's set the app runs as plain Node.js instead
53
+ * of Electron — it rejects Chromium flags and exits, which chromedriver reports
54
+ * only as "Chrome instance exited". Renderer automation never wants it, and the
55
+ * main-process inspector bridge uses `--inspect`, not this var.
56
+ */
57
+ protected computeSpawnEnv(): NodeJS.ProcessEnv;
58
+ protected resolveDriverCommand(): Promise<string>;
59
+ }
60
+ //# sourceMappingURL=electron.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electron.d.ts","sourceRoot":"","sources":["../../src/lib/electron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAavE,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,CAOnF;AAED,gEAAgE;AAChE,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,EAAE,YAAY,GAAG,aAAa,CAAC,GAAG;IAC9F;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;;;;;GAOG;AACH,qBAAa,eAAgB,SAAQ,aAAa;IAChD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IACrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;gBAEvC,OAAO,GAAE,sBAA2B;IAShD;;;;;;OAMG;IACH,SAAS,CAAC,eAAe,IAAI,MAAM,CAAC,UAAU;cAM9B,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;CAuCxD"}
@@ -0,0 +1,85 @@
1
+ import { ChromeService } from './chrome.js';
2
+ import { detectElectronVersion, detectElectronVersionFromApp, readChromeDriverVersion, resolveElectronChromeDriverInfo, } from './driverManager.js';
3
+ import { assertDriverArchCompatible, assertDriverChromiumMajorCompatible, } from './electronDiagnostics.js';
4
+ import os from 'os';
5
+ export function electronDebugEnabled() {
6
+ return process.env.CRAFTDRIVER_DEBUG === '1' || process.env.CRAFTDRIVER_DEBUG === 'true';
7
+ }
8
+ export function writeElectronDebug(fields) {
9
+ if (!electronDebugEnabled())
10
+ return;
11
+ const details = Object.entries(fields)
12
+ .filter((entry) => entry[1] !== undefined)
13
+ .map(([key, value]) => `${key}=${JSON.stringify(value)}`)
14
+ .join(' ');
15
+ process.stderr.write(`[craftdriver:electron] ${details}\n`);
16
+ }
17
+ /**
18
+ * Driver service for automating an Electron application renderer. It uses the
19
+ * chromedriver protocol like ChromeService, but resolves the driver only from
20
+ * Electron-specific configuration, never from system Chrome.
21
+ *
22
+ * The Electron **app executable** itself is not set here; pass it as
23
+ * `LaunchOptions.electron.appBinaryPath` (→ `goog:chromeOptions.binary`).
24
+ */
25
+ export class ElectronService extends ChromeService {
26
+ electronVersion;
27
+ appBinaryPath;
28
+ constructor(options = {}) {
29
+ const { chromedriverPath, version, appBinaryPath, ...rest } = options;
30
+ // Reuse ChromeService's binaryPath slot to carry the Electron driver path;
31
+ // resolveDriverCommand() below routes it through the Electron resolver.
32
+ super({ ...rest, binaryPath: chromedriverPath });
33
+ this.electronVersion = version;
34
+ this.appBinaryPath = appBinaryPath;
35
+ }
36
+ /**
37
+ * chromedriver spawns the Electron app inheriting this env, so scrub
38
+ * `ELECTRON_RUN_AS_NODE`: when it's set the app runs as plain Node.js instead
39
+ * of Electron — it rejects Chromium flags and exits, which chromedriver reports
40
+ * only as "Chrome instance exited". Renderer automation never wants it, and the
41
+ * main-process inspector bridge uses `--inspect`, not this var.
42
+ */
43
+ computeSpawnEnv() {
44
+ const env = super.computeSpawnEnv();
45
+ delete env.ELECTRON_RUN_AS_NODE;
46
+ return env;
47
+ }
48
+ async resolveDriverCommand() {
49
+ const resolution = await resolveElectronChromeDriverInfo({
50
+ chromedriverPath: this.binaryPath,
51
+ version: this.electronVersion,
52
+ appBinaryPath: this.appBinaryPath,
53
+ });
54
+ // Fail fast, before spawning, on a driver that cannot drive this app.
55
+ // Arch is a cheap header read — always checked. A version/detected driver was
56
+ // just downloaded to match, so only a user-supplied driver (explicit path /
57
+ // env / installed package) can be the wrong major — and only when we can
58
+ // learn the app's Electron version to compare against (explicit, from the app
59
+ // bundle, or from an installed `electron`).
60
+ assertDriverArchCompatible(resolution.path);
61
+ const resolvedByMatch = resolution.source === 'version' ||
62
+ resolution.source === 'detected-version' ||
63
+ resolution.source === 'app-bundle-version';
64
+ if (!resolvedByMatch) {
65
+ const knownVersion = this.electronVersion ??
66
+ detectElectronVersionFromApp(this.appBinaryPath) ??
67
+ detectElectronVersion();
68
+ if (knownVersion)
69
+ assertDriverChromiumMajorCompatible(resolution.path, knownVersion);
70
+ }
71
+ writeElectronDebug({
72
+ // The version that actually drove resolution — the explicit one, or the
73
+ // auto-detected one when `source` is 'detected-version'.
74
+ electronVersion: resolution.version,
75
+ driverPath: resolution.path,
76
+ driverSource: resolution.source,
77
+ driverVersion: electronDebugEnabled()
78
+ ? (readChromeDriverVersion(resolution.path) ?? 'unavailable')
79
+ : undefined,
80
+ platform: `${os.platform()}-${os.arch()}`,
81
+ });
82
+ return resolution.path;
83
+ }
84
+ }
85
+ //# sourceMappingURL=electron.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electron.js","sourceRoot":"","sources":["../../src/lib/electron.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Validate a deep-link URL: it must parse and use a custom scheme (not
3
+ * http/https/file). Returns the URL unchanged on success.
4
+ */
5
+ export declare function validateDeeplinkUrl(url: string): string;
6
+ /**
7
+ * Append (or overwrite) a `userData` query parameter carrying the running app's
8
+ * user-data dir. On Windows and Linux a fresh `open` would spawn a *second*
9
+ * instance; the app reads this parameter to point the second instance at the same
10
+ * user-data dir so the single-instance lock routes the URL to the test instance.
11
+ */
12
+ export declare function appendUserDataDir(url: string, userDataDir: string): string;
13
+ /** OS launcher command + args for a deep-link URL, per platform. */
14
+ export declare function getPlatformCommand(url: string, platform: NodeJS.Platform, appBinaryPath?: string): {
15
+ command: string;
16
+ args: string[];
17
+ };
18
+ /** Spawn the OS launcher detached (fire-and-forget); rejects only if the spawn itself fails. */
19
+ export declare function executeDeeplinkCommand(command: string, args: string[]): Promise<void>;
20
+ /** Resolve the final URL to hand to the OS launcher for the given platform. */
21
+ export declare function resolveDeeplinkUrl(url: string, platform: NodeJS.Platform, userDataDir?: string): string;
22
+ //# sourceMappingURL=electronDeeplink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electronDeeplink.d.ts","sourceRoot":"","sources":["../../src/lib/electronDeeplink.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAsBvD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAI1E;AAED,oEAAoE;AACpE,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,aAAa,CAAC,EAAE,MAAM,GACrB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CA2BrC;AAcD,gGAAgG;AAChG,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCrF;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAQR"}