"use strict";
|
|
// packages/playwright-core/src/server/electron/loader.ts
|
var import_electron = require("electron");
|
|
// packages/playwright-core/src/server/chromium/chromiumSwitches.ts
|
var disabledFeatures = [
|
// See https://github.com/microsoft/playwright/issues/14047
|
"AvoidUnnecessaryBeforeUnloadCheckSync",
|
// See https://github.com/microsoft/playwright/issues/38568
|
"BoundaryEventDispatchTracksNodeRemoval",
|
"DestroyProfileOnBrowserClose",
|
// See https://github.com/microsoft/playwright/pull/13854
|
"DialMediaRouteProvider",
|
"GlobalMediaControls",
|
// See https://github.com/microsoft/playwright/pull/27605
|
"HttpsUpgrades",
|
// Hides the Lens feature in the URL address bar. Its not working in unofficial builds.
|
"LensOverlay",
|
// See https://github.com/microsoft/playwright/pull/8162
|
"MediaRouter",
|
// See https://github.com/microsoft/playwright/issues/28023
|
"PaintHolding",
|
// See https://github.com/microsoft/playwright/issues/32230
|
"ThirdPartyStoragePartitioning",
|
// See https://github.com/microsoft/playwright/issues/16126
|
"Translate",
|
// See https://issues.chromium.org/u/1/issues/435410220
|
"AutoDeElevate",
|
// See https://github.com/microsoft/playwright/issues/37714
|
"RenderDocument",
|
// Prevents downloading optimization hints on startup.
|
"OptimizationHints",
|
// Disables forced sign-in in Edge.
|
"msForceBrowserSignIn",
|
// Disables updating the preferred version in LaunchServices preferences on mac.
|
"msEdgeUpdateLaunchServicesPreferredVersion"
|
].filter(Boolean);
|
var chromiumSwitches = (options) => [
|
"--disable-field-trial-config",
|
// https://source.chromium.org/chromium/chromium/src/+/main:testing/variations/README.md
|
"--disable-background-networking",
|
"--disable-background-timer-throttling",
|
"--disable-backgrounding-occluded-windows",
|
"--disable-back-forward-cache",
|
// Avoids surprises like main request not being intercepted during page.goBack().
|
"--disable-breakpad",
|
"--disable-client-side-phishing-detection",
|
"--disable-component-extensions-with-background-pages",
|
"--disable-component-update",
|
// Avoids unneeded network activity after startup.
|
"--no-default-browser-check",
|
"--disable-default-apps",
|
"--disable-dev-shm-usage",
|
"--disable-edgeupdater",
|
// Disables Edge-specific updater on mac.
|
"--disable-extensions",
|
"--disable-features=" + disabledFeatures.join(","),
|
process.env.PLAYWRIGHT_LEGACY_SCREENSHOT ? "" : "--enable-features=CDPScreenshotNewSurface",
|
"--allow-pre-commit-input",
|
"--disable-hang-monitor",
|
"--disable-ipc-flooding-protection",
|
"--disable-popup-blocking",
|
"--disable-prompt-on-repost",
|
"--disable-renderer-backgrounding",
|
"--force-color-profile=srgb",
|
"--metrics-recording-only",
|
"--no-first-run",
|
"--password-store=basic",
|
"--use-mock-keychain",
|
// See https://chromium-review.googlesource.com/c/chromium/src/+/2436773
|
"--no-service-autorun",
|
"--export-tagged-pdf",
|
// https://chromium-review.googlesource.com/c/chromium/src/+/4853540
|
"--disable-search-engine-choice-screen",
|
// https://issues.chromium.org/41491762
|
"--unsafely-disable-devtools-self-xss-warnings",
|
// Edge can potentially restart on Windows (msRelaunchNoCompatLayer) which looses its file descriptors (stdout/stderr) and CDP (3/4). Disable until fixed upstream.
|
"--edge-skip-compat-layer-relaunch",
|
// This disables Chrome for Testing infobar that is visible in the persistent context.
|
// The switch is ignored everywhere else, including Chromium/Chrome/Edge.
|
"--disable-infobars",
|
// Less annoying popups.
|
"--disable-search-engine-choice-screen",
|
// Prevents the "three dots" menu crash in IdentityManager::HasPrimaryAccount for ephemeral contexts.
|
options?.android ? "" : "--disable-sync"
|
].filter(Boolean);
|
|
// packages/playwright-core/src/server/electron/loader.ts
|
process.argv.splice(1, process.argv.indexOf("--remote-debugging-port=0"));
|
for (const arg of chromiumSwitches()) {
|
const match = arg.match(/--([^=]*)=?(.*)/);
|
import_electron.app.commandLine.appendSwitch(match[1], match[2]);
|
}
|
var originalWhenReady = import_electron.app.whenReady();
|
var originalEmit = import_electron.app.emit.bind(import_electron.app);
|
var readyEventArgs;
|
import_electron.app.emit = (event, ...args) => {
|
if (event === "ready") {
|
readyEventArgs = args;
|
return import_electron.app.listenerCount("ready") > 0;
|
}
|
return originalEmit(event, ...args);
|
};
|
var isReady = false;
|
var whenReadyCallback;
|
var whenReadyPromise = new Promise((f) => whenReadyCallback = f);
|
import_electron.app.isReady = () => isReady;
|
import_electron.app.whenReady = () => whenReadyPromise;
|
globalThis.__playwright_run = async () => {
|
const event = await originalWhenReady;
|
isReady = true;
|
whenReadyCallback(event);
|
originalEmit("ready", ...readyEventArgs);
|
};
|