Lines 1-37javascript
2// BetterWright command-line interface (Node).
4// betterwright setup install the managed Cloak browser
5// betterwright doctor report runtime readiness
6// betterwright run <file|-|-c> execute a Playwright snippet
7// betterwright repl run blank-line-separated snippets from stdin
9import { spawnSync } from "node:child_process";
10import fs from "node:fs";
HighChild Process
Package source references child process execution.
bin/betterwright.mjsView on unpkg · L8 11import { createRequire } from "node:module";
12import path from "node:path";
13import readline from "node:readline";
14import { fileURLToPath, pathToFileURL } from "node:url";
16import { BetterWright, NetworkPolicy } from "../src/index.mjs";
18const require = createRequire(import.meta.url);
19const PINNED_PLAYWRIGHT_VERSION = "1.61.1";
MediumDynamic Require
Package source references dynamic require/import behavior.
bin/betterwright.mjsView on unpkg · L17 20const PINNED_CLOAKBROWSER_VERSION = "0.4.10";
22function resolveCoreDir() {
23 const override = (process.env.BETTERWRIGHT_PLAYWRIGHT_CORE_PATH || "").trim();
24 if (override && fs.existsSync(path.join(override, "package.json"))) return override;
26 return path.dirname(require.resolve("playwright-core/package.json"));
32function resolveCloakDir() {
33 const override = (process.env.BETTERWRIGHT_CLOAKBROWSER_PATH || "").trim();
34 if (override && fs.existsSync(path.join(override, "package.json"))) return override;
37 path.dirname(fileURLToPath(import.meta.resolve("cloakbrowser"))),