diff --git a/packages/playwright-core/src/server/frames.ts b/packages/playwright-core/src/server/frames.ts index 3f7f2cc5fd88b..038d3a56ac5fd 100644 --- a/packages/playwright-core/src/server/frames.ts +++ b/packages/playwright-core/src/server/frames.ts @@ -29,7 +29,6 @@ import { isAbortError, ProgressController } from './progress'; import * as types from './types'; import { LongStandingScope, asLocator, assert, constructURLBasedOnBaseURL, makeWaitForNextTask, renderTitleForCall } from '../utils'; import { isSessionClosedError } from './protocolError'; -import { debugLogger } from './utils/debugLogger'; import { eventsHelper } from './utils/eventsHelper'; import { isInvalidSelectorError } from '../utils/isomorphic/selectorParser'; import { ManualPromise } from '../utils/isomorphic/manualPromise'; @@ -244,7 +243,7 @@ export class FrameManager { const navigationEvent: NavigationEvent = { url, name, newDocument: frame._currentDocument, isPublic: true }; this._fireInternalFrameNavigation(frame, navigationEvent); if (!initial) { - debugLogger.log('api', ` navigated to "${url}"`); + frame.apiLog(` navigated to "${url}"`); this._page.frameNavigatedToNewDocument(frame); } // Restore pending if any - see comments above about keepPending. @@ -263,7 +262,7 @@ export class FrameManager { frame._url = url; const navigationEvent: NavigationEvent = { url, name: frame._name, isPublic: true }; this._fireInternalFrameNavigation(frame, navigationEvent); - debugLogger.log('api', ` navigated to "${url}"`); + frame.apiLog(` navigated to "${url}"`); } frameAbortedNavigation(frameId: string, errorText: string, documentId?: string) { @@ -509,7 +508,7 @@ export class Frame extends SdkObject { this._firedLifecycleEvents.add(event); this.emit(Frame.Events.AddLifecycle, event); if (this === this._page.mainFrame() && this._url !== 'about:blank') - debugLogger.log('api', ` "${event}" event fired`); + this.apiLog(` "${event}" event fired`); this._page.mainFrame()._recalculateNetworkIdle(); } @@ -592,7 +591,7 @@ export class Frame extends SdkObject { this._firedLifecycleEvents.add('networkidle'); this.emit(Frame.Events.AddLifecycle, 'networkidle'); if (this === this._page.mainFrame() && this._url !== 'about:blank') - debugLogger.log('api', ` "networkidle" event fired`); + this.apiLog(` "networkidle" event fired`); } if (frameThatAllowsRemovingNetworkIdle !== this && this._firedLifecycleEvents.has('networkidle') && !isNetworkIdle) { // Usually, networkidle is fired once and not removed after that. @@ -755,7 +754,7 @@ export class Frame extends SdkObject { } async querySelector(selector: string, options: types.StrictOptions): Promise | null> { - debugLogger.log('api', ` finding element using the selector "${selector}"`); + this.apiLog(` finding element using the selector "${selector}"`); return this.selectors.query(selector, options); } diff --git a/packages/playwright-core/src/server/instrumentation.ts b/packages/playwright-core/src/server/instrumentation.ts index f468e312ed8f1..569c1f1638eef 100644 --- a/packages/playwright-core/src/server/instrumentation.ts +++ b/packages/playwright-core/src/server/instrumentation.ts @@ -17,6 +17,7 @@ import { EventEmitter } from 'events'; import { createGuid } from './utils/crypto'; +import { debugLogger } from './utils/debugLogger'; import type { Browser } from './browser'; import type { BrowserContext } from './browserContext'; @@ -57,6 +58,11 @@ export class SdkObject extends EventEmitter this.instrumentation = parent.instrumentation; } + apiLog(message: string) { + if (!this.attribution.playwright.options.isInternalPlaywright) + debugLogger.log('api', message); + } + closeReason(): string | undefined { return this.attribution.page?._closeReason || this.attribution.context?._closeReason || diff --git a/packages/playwright-core/src/server/progress.ts b/packages/playwright-core/src/server/progress.ts index b94ef285fdfb1..b4c4c90381082 100644 --- a/packages/playwright-core/src/server/progress.ts +++ b/packages/playwright-core/src/server/progress.ts @@ -42,6 +42,8 @@ export class ProgressController { static createForSdkObject(sdkObject: SdkObject, callMetadata: CallMetadata) { const logName = sdkObject.logName || 'api'; return new ProgressController(callMetadata, message => { + if (logName === 'api' && sdkObject.attribution.playwright.options.isInternalPlaywright) + return; debugLogger.log(logName, message); sdkObject.instrumentation.onCallLog(sdkObject, callMetadata, logName, message); });