From bd505ed07c74f0a244900164fad330f7d5ce6b3b Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Sat, 30 Oct 2021 11:26:38 -0800 Subject: [PATCH] fix(tracing): fall back to protocol naming in ports w/o apiName (#9896) --- packages/playwright-core/src/client/connection.ts | 2 +- packages/playwright-core/src/dispatchers/dispatcher.ts | 1 + packages/playwright-core/src/protocol/callMetadata.ts | 1 + packages/playwright-core/src/protocol/channels.ts | 1 + packages/playwright-core/src/protocol/protocol.yml | 1 + packages/playwright-core/src/protocol/validator.ts | 1 + packages/playwright-core/src/web/traceViewer/traceModel.ts | 7 +++++-- 7 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/playwright-core/src/client/connection.ts b/packages/playwright-core/src/client/connection.ts index 4a11fef924..7deabaabeb 100644 --- a/packages/playwright-core/src/client/connection.ts +++ b/packages/playwright-core/src/client/connection.ts @@ -99,7 +99,7 @@ export class Connection extends EventEmitter { const converted = { id, guid, method, params }; // Do not include metadata in debug logs to avoid noise. debugLogger.log('channel:command', converted); - const metadata: channels.Metadata = { stack: frames, apiName }; + const metadata: channels.Metadata = { stack: frames, apiName, internal: !apiName }; this.onmessage({ ...converted, metadata }); return await new Promise((resolve, reject) => this._callbacks.set(id, { resolve, reject, stackTrace })); diff --git a/packages/playwright-core/src/dispatchers/dispatcher.ts b/packages/playwright-core/src/dispatchers/dispatcher.ts index 45ba25afea..10a4b06493 100644 --- a/packages/playwright-core/src/dispatchers/dispatcher.ts +++ b/packages/playwright-core/src/dispatchers/dispatcher.ts @@ -224,6 +224,7 @@ export class DispatcherConnection { id: `call@${id}`, stack: validMetadata.stack, apiName: validMetadata.apiName, + internal: validMetadata.internal, objectId: sdkObject?.guid, pageId: sdkObject?.attribution?.page?.guid, frameId: sdkObject?.attribution?.frame?.guid, diff --git a/packages/playwright-core/src/protocol/callMetadata.ts b/packages/playwright-core/src/protocol/callMetadata.ts index 65a159fec7..f6dd2f6a2a 100644 --- a/packages/playwright-core/src/protocol/callMetadata.ts +++ b/packages/playwright-core/src/protocol/callMetadata.ts @@ -26,6 +26,7 @@ export type CallMetadata = { method: string; params: any; apiName?: string; + internal?: boolean; stack?: StackFrame[]; log: string[]; afterSnapshot?: string; diff --git a/packages/playwright-core/src/protocol/channels.ts b/packages/playwright-core/src/protocol/channels.ts index 4cbd5a1c80..353d5af358 100644 --- a/packages/playwright-core/src/protocol/channels.ts +++ b/packages/playwright-core/src/protocol/channels.ts @@ -33,6 +33,7 @@ export type StackFrame = { export type Metadata = { stack?: StackFrame[], apiName?: string, + internal?: boolean, }; export type Point = { diff --git a/packages/playwright-core/src/protocol/protocol.yml b/packages/playwright-core/src/protocol/protocol.yml index 1e607e8a06..1f40e01b97 100644 --- a/packages/playwright-core/src/protocol/protocol.yml +++ b/packages/playwright-core/src/protocol/protocol.yml @@ -29,6 +29,7 @@ Metadata: type: array? items: StackFrame apiName: string? + internal: boolean? Point: diff --git a/packages/playwright-core/src/protocol/validator.ts b/packages/playwright-core/src/protocol/validator.ts index 57af3d49e1..af4114e5a1 100644 --- a/packages/playwright-core/src/protocol/validator.ts +++ b/packages/playwright-core/src/protocol/validator.ts @@ -42,6 +42,7 @@ export function createScheme(tChannel: (name: string) => Validator): Scheme { scheme.Metadata = tObject({ stack: tOptional(tArray(tType('StackFrame'))), apiName: tOptional(tString), + internal: tOptional(tBoolean), }); scheme.Point = tObject({ x: tNumber, diff --git a/packages/playwright-core/src/web/traceViewer/traceModel.ts b/packages/playwright-core/src/web/traceViewer/traceModel.ts index 14ab4c759f..320633aa37 100644 --- a/packages/playwright-core/src/web/traceViewer/traceModel.ts +++ b/packages/playwright-core/src/web/traceViewer/traceModel.ts @@ -111,9 +111,12 @@ export class TraceModel { break; } case 'action': { - const include = !!event.metadata.apiName && !isTracing(event.metadata); - if (include) + const include = !isTracing(event.metadata) && (!event.metadata.internal || event.metadata.apiName); + if (include) { + if (!event.metadata.apiName) + event.metadata.apiName = event.metadata.type + '.' + event.metadata.method; this.contextEntry!.actions.push(event); + } break; } case 'event': {