@hasna/testers 0.0.60 → 0.0.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +23 -5
- package/dist/index.js +20 -2
- package/dist/lib/browser.d.ts +3 -1
- package/dist/lib/browser.d.ts.map +1 -1
- package/dist/mcp/index.js +21 -3
- package/dist/server/index.js +21 -3
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -13997,14 +13997,15 @@ async function launchBrowserEngine(engine, config) {
|
|
|
13997
13997
|
}
|
|
13998
13998
|
return launchPlaywright({ headless: config.headless, viewport: config.viewport });
|
|
13999
13999
|
}
|
|
14000
|
-
async function installBrowser(engine) {
|
|
14000
|
+
async function installBrowser(engine, options = {}) {
|
|
14001
14001
|
if (engine === "lightpanda") {
|
|
14002
14002
|
const { installLightpanda: installLightpanda2 } = await Promise.resolve().then(() => (init_browser_lightpanda(), exports_browser_lightpanda));
|
|
14003
14003
|
return installLightpanda2();
|
|
14004
14004
|
}
|
|
14005
14005
|
const browserName = engine === "playwright-firefox" ? "firefox" : engine === "playwright-webkit" ? "webkit" : "chromium";
|
|
14006
|
+
const dependencyFlag = options.withDeps ? " --with-deps" : "";
|
|
14006
14007
|
try {
|
|
14007
|
-
execSync(`bunx playwright install ${browserName}`, {
|
|
14008
|
+
execSync(`bunx playwright install${dependencyFlag} ${browserName}`, {
|
|
14008
14009
|
stdio: "inherit"
|
|
14009
14010
|
});
|
|
14010
14011
|
} catch (error) {
|
|
@@ -27425,6 +27426,14 @@ function buildSandboxCommand(input) {
|
|
|
27425
27426
|
"--no-auto-generate",
|
|
27426
27427
|
"--json"
|
|
27427
27428
|
];
|
|
27429
|
+
const installBrowserArgs = [
|
|
27430
|
+
"bunx",
|
|
27431
|
+
input.packageSpec,
|
|
27432
|
+
"install-browser",
|
|
27433
|
+
"--engine",
|
|
27434
|
+
"playwright",
|
|
27435
|
+
"--with-deps"
|
|
27436
|
+
];
|
|
27428
27437
|
return [
|
|
27429
27438
|
"set -euo pipefail",
|
|
27430
27439
|
buildBunBootstrapCommand(),
|
|
@@ -27434,6 +27443,7 @@ function buildSandboxCommand(input) {
|
|
|
27434
27443
|
`cd ${shellQuote(input.appRemoteDir ?? input.remoteDir)}`,
|
|
27435
27444
|
input.setupCommand,
|
|
27436
27445
|
buildAppStartCommand(input),
|
|
27446
|
+
buildSandboxBrowserInstallCommand(installBrowserArgs),
|
|
27437
27447
|
`HASNA_TESTERS_DB_PATH=${shellQuote(input.dbPath)} ${args.map(shellQuote).join(" ")}`
|
|
27438
27448
|
].filter(Boolean).join(`
|
|
27439
27449
|
`);
|
|
@@ -27449,6 +27459,14 @@ function buildBunBootstrapCommand() {
|
|
|
27449
27459
|
].join(`
|
|
27450
27460
|
`);
|
|
27451
27461
|
}
|
|
27462
|
+
function buildSandboxBrowserInstallCommand(args) {
|
|
27463
|
+
return [
|
|
27464
|
+
'if [ "${TESTERS_SANDBOX_SKIP_BROWSER_INSTALL:-}" != "1" ]; then',
|
|
27465
|
+
` ${args.map(shellQuote).join(" ")}`,
|
|
27466
|
+
"fi"
|
|
27467
|
+
].join(`
|
|
27468
|
+
`);
|
|
27469
|
+
}
|
|
27452
27470
|
function buildAppStartCommand(input) {
|
|
27453
27471
|
if (!input.appStartCommand)
|
|
27454
27472
|
return;
|
|
@@ -95735,7 +95753,7 @@ import chalk6 from "chalk";
|
|
|
95735
95753
|
// package.json
|
|
95736
95754
|
var package_default = {
|
|
95737
95755
|
name: "@hasna/testers",
|
|
95738
|
-
version: "0.0.
|
|
95756
|
+
version: "0.0.62",
|
|
95739
95757
|
description: "AI-powered QA testing CLI \u2014 spawns cheap AI agents to test web apps with headless browsers",
|
|
95740
95758
|
type: "module",
|
|
95741
95759
|
main: "dist/index.js",
|
|
@@ -99950,11 +99968,11 @@ program2.command("status").description("Show database and auth status").action((
|
|
|
99950
99968
|
process.exit(1);
|
|
99951
99969
|
}
|
|
99952
99970
|
});
|
|
99953
|
-
program2.command("install-browser").description("Install browser engine").option("--engine <engine>", "Engine to install: playwright, lightpanda, or all", "playwright").action(async (opts) => {
|
|
99971
|
+
program2.command("install-browser").description("Install browser engine").option("--engine <engine>", "Engine to install: playwright, lightpanda, or all", "playwright").option("--with-deps", "Install Playwright OS dependencies for fresh Linux sandboxes", false).action(async (opts) => {
|
|
99954
99972
|
try {
|
|
99955
99973
|
if (opts.engine === "all" || opts.engine === "playwright") {
|
|
99956
99974
|
log(chalk6.blue("Installing Playwright Chromium..."));
|
|
99957
|
-
await installBrowser("playwright");
|
|
99975
|
+
await installBrowser("playwright", { withDeps: opts.withDeps });
|
|
99958
99976
|
log(chalk6.green("Playwright Chromium installed."));
|
|
99959
99977
|
}
|
|
99960
99978
|
if (opts.engine === "all" || opts.engine === "lightpanda") {
|
package/dist/index.js
CHANGED
|
@@ -11546,14 +11546,15 @@ async function launchBrowserEngine(engine, config) {
|
|
|
11546
11546
|
}
|
|
11547
11547
|
return launchPlaywright({ headless: config.headless, viewport: config.viewport });
|
|
11548
11548
|
}
|
|
11549
|
-
async function installBrowser(engine) {
|
|
11549
|
+
async function installBrowser(engine, options = {}) {
|
|
11550
11550
|
if (engine === "lightpanda") {
|
|
11551
11551
|
const { installLightpanda: installLightpanda2 } = await Promise.resolve().then(() => (init_browser_lightpanda(), exports_browser_lightpanda));
|
|
11552
11552
|
return installLightpanda2();
|
|
11553
11553
|
}
|
|
11554
11554
|
const browserName = engine === "playwright-firefox" ? "firefox" : engine === "playwright-webkit" ? "webkit" : "chromium";
|
|
11555
|
+
const dependencyFlag = options.withDeps ? " --with-deps" : "";
|
|
11555
11556
|
try {
|
|
11556
|
-
execSync(`bunx playwright install ${browserName}`, {
|
|
11557
|
+
execSync(`bunx playwright install${dependencyFlag} ${browserName}`, {
|
|
11557
11558
|
stdio: "inherit"
|
|
11558
11559
|
});
|
|
11559
11560
|
} catch (error) {
|
|
@@ -17541,6 +17542,14 @@ function buildSandboxCommand(input) {
|
|
|
17541
17542
|
"--no-auto-generate",
|
|
17542
17543
|
"--json"
|
|
17543
17544
|
];
|
|
17545
|
+
const installBrowserArgs = [
|
|
17546
|
+
"bunx",
|
|
17547
|
+
input.packageSpec,
|
|
17548
|
+
"install-browser",
|
|
17549
|
+
"--engine",
|
|
17550
|
+
"playwright",
|
|
17551
|
+
"--with-deps"
|
|
17552
|
+
];
|
|
17544
17553
|
return [
|
|
17545
17554
|
"set -euo pipefail",
|
|
17546
17555
|
buildBunBootstrapCommand(),
|
|
@@ -17550,6 +17559,7 @@ function buildSandboxCommand(input) {
|
|
|
17550
17559
|
`cd ${shellQuote(input.appRemoteDir ?? input.remoteDir)}`,
|
|
17551
17560
|
input.setupCommand,
|
|
17552
17561
|
buildAppStartCommand(input),
|
|
17562
|
+
buildSandboxBrowserInstallCommand(installBrowserArgs),
|
|
17553
17563
|
`HASNA_TESTERS_DB_PATH=${shellQuote(input.dbPath)} ${args.map(shellQuote).join(" ")}`
|
|
17554
17564
|
].filter(Boolean).join(`
|
|
17555
17565
|
`);
|
|
@@ -17565,6 +17575,14 @@ function buildBunBootstrapCommand() {
|
|
|
17565
17575
|
].join(`
|
|
17566
17576
|
`);
|
|
17567
17577
|
}
|
|
17578
|
+
function buildSandboxBrowserInstallCommand(args) {
|
|
17579
|
+
return [
|
|
17580
|
+
'if [ "${TESTERS_SANDBOX_SKIP_BROWSER_INSTALL:-}" != "1" ]; then',
|
|
17581
|
+
` ${args.map(shellQuote).join(" ")}`,
|
|
17582
|
+
"fi"
|
|
17583
|
+
].join(`
|
|
17584
|
+
`);
|
|
17585
|
+
}
|
|
17568
17586
|
function buildAppStartCommand(input) {
|
|
17569
17587
|
if (!input.appStartCommand)
|
|
17570
17588
|
return;
|
package/dist/lib/browser.d.ts
CHANGED
|
@@ -73,6 +73,8 @@ export declare function launchBrowserEngine(engine: import("../types/index.js").
|
|
|
73
73
|
/**
|
|
74
74
|
* Installs Chromium for Playwright using bunx.
|
|
75
75
|
*/
|
|
76
|
-
export declare function installBrowser(engine?: import("../types/index.js").BrowserEngine
|
|
76
|
+
export declare function installBrowser(engine?: import("../types/index.js").BrowserEngine, options?: {
|
|
77
|
+
withDeps?: boolean;
|
|
78
|
+
}): Promise<void>;
|
|
77
79
|
export {};
|
|
78
80
|
//# sourceMappingURL=browser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/lib/browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAYhD,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,mBAAmB,EAAE,aAAa,CAAC;CACpD;AAED,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AASD;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAoE7E;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,mBAAmB,EAAE,aAAa,CAAA;CAAE,GAC7E,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,mBAAmB,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBtH;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IAExC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4C;gBAGjE,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,mBAAmB,EAAE,aAAa,CAAA;KAAE;IAQ/G;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC;IAqC1D;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAO/B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAShC;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,OAAO,mBAAmB,EAAE,aAAa,EACjD,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,OAAO,CAAC,CAalB;AAED;;GAEG;AACH,wBAAsB,cAAc,
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/lib/browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAYhD,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,mBAAmB,EAAE,aAAa,CAAC;CACpD;AAED,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AASD;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAoE7E;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,mBAAmB,EAAE,aAAa,CAAA;CAAE,GAC7E,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,mBAAmB,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBtH;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IAExC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4C;gBAGjE,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,mBAAmB,EAAE,aAAa,CAAA;KAAE;IAQ/G;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC;IAqC1D;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAO/B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAShC;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,OAAO,mBAAmB,EAAE,aAAa,EACjD,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,OAAO,CAAC,CAalB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,CAAC,EAAE,OAAO,mBAAmB,EAAE,aAAa,EAClD,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,OAAO,CAAC,IAAI,CAAC,CAiBf"}
|
package/dist/mcp/index.js
CHANGED
|
@@ -52,7 +52,7 @@ var package_default;
|
|
|
52
52
|
var init_package = __esm(() => {
|
|
53
53
|
package_default = {
|
|
54
54
|
name: "@hasna/testers",
|
|
55
|
-
version: "0.0.
|
|
55
|
+
version: "0.0.62",
|
|
56
56
|
description: "AI-powered QA testing CLI \u2014 spawns cheap AI agents to test web apps with headless browsers",
|
|
57
57
|
type: "module",
|
|
58
58
|
main: "dist/index.js",
|
|
@@ -16592,14 +16592,15 @@ async function launchBrowserEngine(engine, config) {
|
|
|
16592
16592
|
}
|
|
16593
16593
|
return launchPlaywright({ headless: config.headless, viewport: config.viewport });
|
|
16594
16594
|
}
|
|
16595
|
-
async function installBrowser(engine) {
|
|
16595
|
+
async function installBrowser(engine, options = {}) {
|
|
16596
16596
|
if (engine === "lightpanda") {
|
|
16597
16597
|
const { installLightpanda: installLightpanda2 } = await Promise.resolve().then(() => (init_browser_lightpanda(), exports_browser_lightpanda));
|
|
16598
16598
|
return installLightpanda2();
|
|
16599
16599
|
}
|
|
16600
16600
|
const browserName = engine === "playwright-firefox" ? "firefox" : engine === "playwright-webkit" ? "webkit" : "chromium";
|
|
16601
|
+
const dependencyFlag = options.withDeps ? " --with-deps" : "";
|
|
16601
16602
|
try {
|
|
16602
|
-
execSync(`bunx playwright install ${browserName}`, {
|
|
16603
|
+
execSync(`bunx playwright install${dependencyFlag} ${browserName}`, {
|
|
16603
16604
|
stdio: "inherit"
|
|
16604
16605
|
});
|
|
16605
16606
|
} catch (error) {
|
|
@@ -23816,6 +23817,14 @@ function buildSandboxCommand(input) {
|
|
|
23816
23817
|
"--no-auto-generate",
|
|
23817
23818
|
"--json"
|
|
23818
23819
|
];
|
|
23820
|
+
const installBrowserArgs = [
|
|
23821
|
+
"bunx",
|
|
23822
|
+
input.packageSpec,
|
|
23823
|
+
"install-browser",
|
|
23824
|
+
"--engine",
|
|
23825
|
+
"playwright",
|
|
23826
|
+
"--with-deps"
|
|
23827
|
+
];
|
|
23819
23828
|
return [
|
|
23820
23829
|
"set -euo pipefail",
|
|
23821
23830
|
buildBunBootstrapCommand(),
|
|
@@ -23825,6 +23834,7 @@ function buildSandboxCommand(input) {
|
|
|
23825
23834
|
`cd ${shellQuote(input.appRemoteDir ?? input.remoteDir)}`,
|
|
23826
23835
|
input.setupCommand,
|
|
23827
23836
|
buildAppStartCommand(input),
|
|
23837
|
+
buildSandboxBrowserInstallCommand(installBrowserArgs),
|
|
23828
23838
|
`HASNA_TESTERS_DB_PATH=${shellQuote(input.dbPath)} ${args.map(shellQuote).join(" ")}`
|
|
23829
23839
|
].filter(Boolean).join(`
|
|
23830
23840
|
`);
|
|
@@ -23840,6 +23850,14 @@ function buildBunBootstrapCommand() {
|
|
|
23840
23850
|
].join(`
|
|
23841
23851
|
`);
|
|
23842
23852
|
}
|
|
23853
|
+
function buildSandboxBrowserInstallCommand(args) {
|
|
23854
|
+
return [
|
|
23855
|
+
'if [ "${TESTERS_SANDBOX_SKIP_BROWSER_INSTALL:-}" != "1" ]; then',
|
|
23856
|
+
` ${args.map(shellQuote).join(" ")}`,
|
|
23857
|
+
"fi"
|
|
23858
|
+
].join(`
|
|
23859
|
+
`);
|
|
23860
|
+
}
|
|
23843
23861
|
function buildAppStartCommand(input) {
|
|
23844
23862
|
if (!input.appStartCommand)
|
|
23845
23863
|
return;
|
package/dist/server/index.js
CHANGED
|
@@ -15306,14 +15306,15 @@ async function launchBrowserEngine(engine, config) {
|
|
|
15306
15306
|
}
|
|
15307
15307
|
return launchPlaywright({ headless: config.headless, viewport: config.viewport });
|
|
15308
15308
|
}
|
|
15309
|
-
async function installBrowser(engine) {
|
|
15309
|
+
async function installBrowser(engine, options = {}) {
|
|
15310
15310
|
if (engine === "lightpanda") {
|
|
15311
15311
|
const { installLightpanda: installLightpanda2 } = await Promise.resolve().then(() => (init_browser_lightpanda(), exports_browser_lightpanda));
|
|
15312
15312
|
return installLightpanda2();
|
|
15313
15313
|
}
|
|
15314
15314
|
const browserName = engine === "playwright-firefox" ? "firefox" : engine === "playwright-webkit" ? "webkit" : "chromium";
|
|
15315
|
+
const dependencyFlag = options.withDeps ? " --with-deps" : "";
|
|
15315
15316
|
try {
|
|
15316
|
-
execSync(`bunx playwright install ${browserName}`, {
|
|
15317
|
+
execSync(`bunx playwright install${dependencyFlag} ${browserName}`, {
|
|
15317
15318
|
stdio: "inherit"
|
|
15318
15319
|
});
|
|
15319
15320
|
} catch (error) {
|
|
@@ -47090,7 +47091,7 @@ import { join as join14 } from "path";
|
|
|
47090
47091
|
// package.json
|
|
47091
47092
|
var package_default = {
|
|
47092
47093
|
name: "@hasna/testers",
|
|
47093
|
-
version: "0.0.
|
|
47094
|
+
version: "0.0.62",
|
|
47094
47095
|
description: "AI-powered QA testing CLI \u2014 spawns cheap AI agents to test web apps with headless browsers",
|
|
47095
47096
|
type: "module",
|
|
47096
47097
|
main: "dist/index.js",
|
|
@@ -51657,6 +51658,14 @@ function buildSandboxCommand(input) {
|
|
|
51657
51658
|
"--no-auto-generate",
|
|
51658
51659
|
"--json"
|
|
51659
51660
|
];
|
|
51661
|
+
const installBrowserArgs = [
|
|
51662
|
+
"bunx",
|
|
51663
|
+
input.packageSpec,
|
|
51664
|
+
"install-browser",
|
|
51665
|
+
"--engine",
|
|
51666
|
+
"playwright",
|
|
51667
|
+
"--with-deps"
|
|
51668
|
+
];
|
|
51660
51669
|
return [
|
|
51661
51670
|
"set -euo pipefail",
|
|
51662
51671
|
buildBunBootstrapCommand(),
|
|
@@ -51666,6 +51675,7 @@ function buildSandboxCommand(input) {
|
|
|
51666
51675
|
`cd ${shellQuote(input.appRemoteDir ?? input.remoteDir)}`,
|
|
51667
51676
|
input.setupCommand,
|
|
51668
51677
|
buildAppStartCommand(input),
|
|
51678
|
+
buildSandboxBrowserInstallCommand(installBrowserArgs),
|
|
51669
51679
|
`HASNA_TESTERS_DB_PATH=${shellQuote(input.dbPath)} ${args.map(shellQuote).join(" ")}`
|
|
51670
51680
|
].filter(Boolean).join(`
|
|
51671
51681
|
`);
|
|
@@ -51681,6 +51691,14 @@ function buildBunBootstrapCommand() {
|
|
|
51681
51691
|
].join(`
|
|
51682
51692
|
`);
|
|
51683
51693
|
}
|
|
51694
|
+
function buildSandboxBrowserInstallCommand(args) {
|
|
51695
|
+
return [
|
|
51696
|
+
'if [ "${TESTERS_SANDBOX_SKIP_BROWSER_INSTALL:-}" != "1" ]; then',
|
|
51697
|
+
` ${args.map(shellQuote).join(" ")}`,
|
|
51698
|
+
"fi"
|
|
51699
|
+
].join(`
|
|
51700
|
+
`);
|
|
51701
|
+
}
|
|
51684
51702
|
function buildAppStartCommand(input) {
|
|
51685
51703
|
if (!input.appStartCommand)
|
|
51686
51704
|
return;
|