From ec76a817ed1a32109780a13583e0e942ee5b38f9 Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Sun, 19 Mar 2023 12:04:45 -0700 Subject: [PATCH] cherry-pick(#21782): chore: do not pass chromium args when running carlo-alike apps --- packages/playwright-core/src/server/browserType.ts | 2 +- packages/playwright-core/src/server/chromium/chromium.ts | 2 +- packages/playwright-core/src/server/recorder/recorderApp.ts | 5 ++++- .../playwright-core/src/server/trace/viewer/traceViewer.ts | 5 ++++- packages/playwright-core/src/server/types.ts | 2 +- 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/playwright-core/src/server/browserType.ts b/packages/playwright-core/src/server/browserType.ts index 1ae07171be..e3e871c884 100644 --- a/packages/playwright-core/src/server/browserType.ts +++ b/packages/playwright-core/src/server/browserType.ts @@ -75,7 +75,7 @@ export abstract class BrowserType extends SdkObject { return browser; } - async launchPersistentContext(metadata: CallMetadata, userDataDir: string, options: channels.BrowserTypeLaunchPersistentContextOptions & { useWebSocket?: boolean }): Promise { + async launchPersistentContext(metadata: CallMetadata, userDataDir: string, options: channels.BrowserTypeLaunchPersistentContextOptions & { useWebSocket?: boolean, ignoreChromiumSwitches?: boolean }): Promise { options = this._validateLaunchOptions(options); const controller = new ProgressController(metadata, this); const persistent: channels.BrowserNewContextParams = options; diff --git a/packages/playwright-core/src/server/chromium/chromium.ts b/packages/playwright-core/src/server/chromium/chromium.ts index af72f730fe..8306044c93 100644 --- a/packages/playwright-core/src/server/chromium/chromium.ts +++ b/packages/playwright-core/src/server/chromium/chromium.ts @@ -283,7 +283,7 @@ export class Chromium extends BrowserType { throw new Error('Playwright manages remote debugging connection itself.'); if (args.find(arg => !arg.startsWith('-'))) throw new Error('Arguments can not specify page to be opened'); - const chromeArguments = [...chromiumSwitches]; + const chromeArguments = options.ignoreChromiumSwitches ? [] : [...chromiumSwitches]; if (os.platform() === 'darwin') { // See https://github.com/microsoft/playwright/issues/7362 diff --git a/packages/playwright-core/src/server/recorder/recorderApp.ts b/packages/playwright-core/src/server/recorder/recorderApp.ts index 790b1e24d0..883506e5d2 100644 --- a/packages/playwright-core/src/server/recorder/recorderApp.ts +++ b/packages/playwright-core/src/server/recorder/recorderApp.ts @@ -129,7 +129,10 @@ export class RecorderApp extends EventEmitter implements IRecorderApp { args, noDefaultViewport: true, colorScheme: 'no-override', - ignoreDefaultArgs: ['--enable-automation'], + // Moving the mouse while starting Chromium on macOS kills the mouse. + // There is no exact switch that we can blame, but removing all reduces the + // probability of this happening by a couple of orders. + ignoreChromiumSwitches: true, headless: !!process.env.PWTEST_CLI_HEADLESS || (isUnderTest() && !headed), useWebSocket: !!process.env.PWTEST_RECORDER_PORT, handleSIGINT, diff --git a/packages/playwright-core/src/server/trace/viewer/traceViewer.ts b/packages/playwright-core/src/server/trace/viewer/traceViewer.ts index 67bbf264ae..2b9d40de6b 100644 --- a/packages/playwright-core/src/server/trace/viewer/traceViewer.ts +++ b/packages/playwright-core/src/server/trace/viewer/traceViewer.ts @@ -86,7 +86,10 @@ export async function showTraceViewer(traceUrls: string[], browserName: string, channel: findChromiumChannel(traceViewerPlaywright.options.sdkLanguage), args, noDefaultViewport: true, - ignoreDefaultArgs: ['--enable-automation'], + // Moving the mouse while starting Chromium on macOS kills the mouse. + // There is no exact switch that we can blame, but removing all reduces the + // probability of this happening by a couple of orders. + ignoreChromiumSwitches: true, headless, colorScheme: 'no-override', useWebSocket: isUnderTest(), diff --git a/packages/playwright-core/src/server/types.ts b/packages/playwright-core/src/server/types.ts index 319b774839..c1a23ba253 100644 --- a/packages/playwright-core/src/server/types.ts +++ b/packages/playwright-core/src/server/types.ts @@ -149,7 +149,7 @@ export type NormalizedContinueOverrides = { export type EmulatedSize = { viewport: Size, screen: Size }; -export type LaunchOptions = channels.BrowserTypeLaunchOptions & { useWebSocket?: boolean }; +export type LaunchOptions = channels.BrowserTypeLaunchOptions & { useWebSocket?: boolean, ignoreChromiumSwitches?: boolean }; export type ProtocolLogger = (direction: 'send' | 'receive', message: object) => void;