craftdriver 1.3.0 → 1.5.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/CHANGELOG.md +17 -3
- package/README.md +4 -1
- package/dist/cli/dispatcher.js +1 -1
- package/dist/cli/dispatcher.js.map +1 -1
- package/dist/cli/parseArgs.d.ts +2 -2
- package/dist/cli/parseArgs.d.ts.map +1 -1
- package/dist/cli/parseArgs.js +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/bidi/storage.d.ts +13 -0
- package/dist/lib/bidi/storage.d.ts.map +1 -1
- package/dist/lib/bidi/storage.js +81 -32
- package/dist/lib/bidi/storage.js.map +1 -1
- package/dist/lib/browser.d.ts +173 -21
- package/dist/lib/browser.d.ts.map +1 -1
- package/dist/lib/browser.js +519 -210
- package/dist/lib/browser.js.map +1 -1
- package/dist/lib/browserContext.d.ts +2 -2
- package/dist/lib/browserContext.d.ts.map +1 -1
- package/dist/lib/browserContext.js +1 -1
- package/dist/lib/builder.d.ts +4 -1
- package/dist/lib/builder.d.ts.map +1 -1
- package/dist/lib/builder.js +20 -2
- package/dist/lib/builder.js.map +1 -1
- package/dist/lib/capabilities.d.ts +45 -0
- package/dist/lib/capabilities.d.ts.map +1 -0
- package/dist/lib/capabilities.js +103 -0
- package/dist/lib/capabilities.js.map +1 -0
- package/dist/lib/chrome.d.ts +7 -2
- package/dist/lib/chrome.d.ts.map +1 -1
- package/dist/lib/chrome.js +10 -1
- package/dist/lib/chrome.js.map +1 -1
- package/dist/lib/driver.d.ts +16 -1
- package/dist/lib/driver.d.ts.map +1 -1
- package/dist/lib/driver.js +64 -0
- package/dist/lib/driver.js.map +1 -1
- package/dist/lib/driverManager.d.ts +120 -0
- package/dist/lib/driverManager.d.ts.map +1 -1
- package/dist/lib/driverManager.js +289 -10
- package/dist/lib/driverManager.js.map +1 -1
- package/dist/lib/electron.d.ts +60 -0
- package/dist/lib/electron.d.ts.map +1 -0
- package/dist/lib/electron.js +85 -0
- package/dist/lib/electron.js.map +1 -0
- package/dist/lib/electronDeeplink.d.ts +22 -0
- package/dist/lib/electronDeeplink.d.ts.map +1 -0
- package/dist/lib/electronDeeplink.js +118 -0
- package/dist/lib/electronDeeplink.js.map +1 -0
- package/dist/lib/electronDiagnostics.d.ts +49 -0
- package/dist/lib/electronDiagnostics.d.ts.map +1 -0
- package/dist/lib/electronDiagnostics.js +195 -0
- package/dist/lib/electronDiagnostics.js.map +1 -0
- package/dist/lib/electronDialogMock.d.ts +51 -0
- package/dist/lib/electronDialogMock.d.ts.map +1 -0
- package/dist/lib/electronDialogMock.js +106 -0
- package/dist/lib/electronDialogMock.js.map +1 -0
- package/dist/lib/electronFuses.d.ts +13 -0
- package/dist/lib/electronFuses.d.ts.map +1 -0
- package/dist/lib/electronFuses.js +118 -0
- package/dist/lib/electronFuses.js.map +1 -0
- package/dist/lib/electronMainBridge.d.ts +28 -0
- package/dist/lib/electronMainBridge.d.ts.map +1 -0
- package/dist/lib/electronMainBridge.js +270 -0
- package/dist/lib/electronMainBridge.js.map +1 -0
- package/dist/lib/electronMainLogs.d.ts +81 -0
- package/dist/lib/electronMainLogs.d.ts.map +1 -0
- package/dist/lib/electronMainLogs.js +176 -0
- package/dist/lib/electronMainLogs.js.map +1 -0
- package/dist/lib/electronMock.d.ts +52 -0
- package/dist/lib/electronMock.d.ts.map +1 -0
- package/dist/lib/electronMock.js +96 -0
- package/dist/lib/electronMock.js.map +1 -0
- package/dist/lib/electronRemote.d.ts +106 -0
- package/dist/lib/electronRemote.d.ts.map +1 -0
- package/dist/lib/electronRemote.js +406 -0
- package/dist/lib/electronRemote.js.map +1 -0
- package/dist/lib/electronVersions.d.ts +34 -0
- package/dist/lib/electronVersions.d.ts.map +1 -0
- package/dist/lib/electronVersions.js +90 -0
- package/dist/lib/electronVersions.js.map +1 -0
- package/dist/lib/errors.d.ts +27 -0
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +27 -0
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/launchTarget.d.ts +30 -0
- package/dist/lib/launchTarget.d.ts.map +1 -0
- package/dist/lib/launchTarget.js +174 -0
- package/dist/lib/launchTarget.js.map +1 -0
- package/dist/lib/page.d.ts +1 -0
- package/dist/lib/page.d.ts.map +1 -1
- package/dist/lib/page.js +1 -1
- package/dist/lib/page.js.map +1 -1
- package/dist/lib/safari.d.ts +90 -0
- package/dist/lib/safari.d.ts.map +1 -0
- package/dist/lib/safari.js +136 -0
- package/dist/lib/safari.js.map +1 -0
- package/dist/lib/service.d.ts +21 -0
- package/dist/lib/service.d.ts.map +1 -1
- package/dist/lib/service.js +94 -6
- package/dist/lib/service.js.map +1 -1
- package/dist/lib/tracing.d.ts +1 -1
- package/dist/lib/tracing.d.ts.map +1 -1
- package/dist/lib/tracing.js.map +1 -1
- package/dist/lib/types.d.ts +41 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/vibiumTrace.d.ts +1 -1
- package/dist/lib/vibiumTrace.d.ts.map +1 -1
- package/dist/lib/webelement.d.ts.map +1 -1
- package/dist/lib/webelement.js +118 -2
- package/dist/lib/webelement.js.map +1 -1
- package/docs/api-reference.md +39 -2
- package/docs/browser-api.md +7 -1
- package/docs/driver-configuration.md +54 -0
- package/docs/electron.md +419 -0
- package/docs/error-codes.md +5 -0
- package/docs/getting-started.md +30 -10
- package/docs/index.md +5 -1
- package/docs/public/examples/displayed.html +86 -0
- package/docs/recipes/electron-app-from-another-repo.md +136 -0
- package/docs/recipes/electron-deep-link.md +117 -0
- package/docs/recipes/electron-mock-apis.md +88 -0
- package/docs/recipes/electron-native-dialog.md +105 -0
- package/docs/recipes.md +28 -9
- package/docs/safari.md +118 -0
- package/docs/standards.md +13 -0
- package/docs/why-craftdriver.md +1 -1
- package/docs/zero-config-drivers.md +12 -0
- package/package.json +7 -1
- package/skills/craftdriver/SKILL.md +4 -1
- package/skills/craftdriver/cheatsheet.md +4 -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
|
|
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
|
-
})
|
|
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
|
|
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
|
-
})
|
|
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',
|
|
200
|
+
'-NoProfile',
|
|
201
|
+
'-Command',
|
|
195
202
|
'Expand-Archive',
|
|
196
203
|
'-Force',
|
|
197
|
-
'-Path',
|
|
198
|
-
|
|
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 [
|
|
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
|
|
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.
|
|
@@ -605,4 +824,64 @@ export async function resolveFirefoxDriver(options) {
|
|
|
605
824
|
}
|
|
606
825
|
return downloadGeckodriver();
|
|
607
826
|
}
|
|
827
|
+
/** The fixed location Apple installs `safaridriver` at on every real macOS. */
|
|
828
|
+
const SYSTEM_SAFARIDRIVER_PATH = '/usr/bin/safaridriver';
|
|
829
|
+
/**
|
|
830
|
+
* Resolves the path to a `safaridriver` binary.
|
|
831
|
+
*
|
|
832
|
+
* Unlike {@link resolveChromeDriver}/{@link resolveFirefoxDriver}, this chain
|
|
833
|
+
* has **no download step and never fetches anything**. Safari's WebDriver
|
|
834
|
+
* remote end ships with macOS/Safari itself (there is no separate driver to
|
|
835
|
+
* download, and nothing licensed to fetch even if we wanted to — Apple bundles
|
|
836
|
+
* a version-matched `safaridriver` with each Safari build). So resolution can
|
|
837
|
+
* only ever *locate* an already-installed binary, and its terminal step is a
|
|
838
|
+
* clear, actionable error rather than an auto-download.
|
|
839
|
+
*
|
|
840
|
+
* Resolution chain (first match wins):
|
|
841
|
+
* 1. `options.binaryPath` (explicit — e.g. `SafariService`'s `binaryPath`,
|
|
842
|
+
* also how Safari Technology Preview's own `safaridriver` is selected)
|
|
843
|
+
* 2. `CRAFTDRIVER_SAFARIDRIVER_PATH` env var
|
|
844
|
+
* 3. `CRAFTDRIVER_DRIVER_PATH` generic env var
|
|
845
|
+
* 4. `/usr/bin/safaridriver` (the fixed system location on every real macOS)
|
|
846
|
+
* 5. `safaridriver` on `PATH`
|
|
847
|
+
* 6. Throw with actionable guidance (never a silent hang or a bare `ENOENT`).
|
|
848
|
+
*
|
|
849
|
+
* This function only finds the *binary*. Whether Safari's "Allow Remote
|
|
850
|
+
* Automation" is enabled is a separate, session-creation-time concern (see the
|
|
851
|
+
* lifecycle task): detecting it needs a real `safaridriver` response, so it is
|
|
852
|
+
* deliberately not attempted here.
|
|
853
|
+
*/
|
|
854
|
+
export async function resolveSafariDriver(options) {
|
|
855
|
+
// 1. Explicit constructor argument.
|
|
856
|
+
if (options?.binaryPath && fs.existsSync(options.binaryPath)) {
|
|
857
|
+
return options.binaryPath;
|
|
858
|
+
}
|
|
859
|
+
// 2 & 3. craftdriver-specific env vars (Safari-specific first, then generic).
|
|
860
|
+
for (const envVar of ['CRAFTDRIVER_SAFARIDRIVER_PATH', 'CRAFTDRIVER_DRIVER_PATH']) {
|
|
861
|
+
const p = process.env[envVar];
|
|
862
|
+
if (p && fs.existsSync(p))
|
|
863
|
+
return p;
|
|
864
|
+
}
|
|
865
|
+
// 4. The fixed system location Apple installs safaridriver at on macOS.
|
|
866
|
+
if (fs.existsSync(SYSTEM_SAFARIDRIVER_PATH))
|
|
867
|
+
return SYSTEM_SAFARIDRIVER_PATH;
|
|
868
|
+
// 5. PATH probe (skipped when CRAFTDRIVER_SKIP_PATH_PROBE is set, matching
|
|
869
|
+
// resolveChromeDriver/resolveFirefoxDriver). Covers Safari Technology
|
|
870
|
+
// Preview installs that put their safaridriver on PATH, or unusual layouts.
|
|
871
|
+
if (!process.env.CRAFTDRIVER_SKIP_PATH_PROBE && commandOnPath('safaridriver')) {
|
|
872
|
+
return 'safaridriver';
|
|
873
|
+
}
|
|
874
|
+
// 6. Nothing resolved. There is no download fallback: safaridriver ships with
|
|
875
|
+
// macOS/Safari, so a missing binary means Safari/macOS itself is absent or
|
|
876
|
+
// the environment isn't macOS — not something craftdriver can fetch. Match
|
|
877
|
+
// the plain-`Error` shape resolveChromeDriver/resolveFirefoxDriver use for
|
|
878
|
+
// their own terminal "nothing resolved" case, with actionable guidance.
|
|
879
|
+
throw new Error("Could not find 'safaridriver'. Safari's WebDriver support ships with " +
|
|
880
|
+
`macOS/Safari itself — it is not downloaded — and is normally at ${SYSTEM_SAFARIDRIVER_PATH}.\n` +
|
|
881
|
+
'Safari automation must also be enabled once per machine, via ' +
|
|
882
|
+
'`safaridriver --enable` or Safari → Develop → Allow Remote Automation ' +
|
|
883
|
+
'(craftdriver does not run this for you — it changes a security setting).\n' +
|
|
884
|
+
'For Safari Technology Preview, or a non-standard install, point ' +
|
|
885
|
+
'SafariService({ binaryPath }) or CRAFTDRIVER_SAFARIDRIVER_PATH at its safaridriver binary.');
|
|
886
|
+
}
|
|
608
887
|
//# sourceMappingURL=driverManager.js.map
|
|
@@ -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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"}
|