From 58c51f1be2ebe68f9c2fc97feb15aced9b47adee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rene=CC=81?= Date: Sun, 13 Oct 2024 22:38:24 +0200 Subject: [PATCH] fixed Location MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: René --- packages/playwright-core/src/client/tracing.ts | 2 +- .../playwright-core/src/protocol/validator.ts | 13 +++++++------ .../src/server/trace/recorder/tracing.ts | 13 ++++++++----- packages/protocol/src/channels.ts | 14 ++++++++------ packages/protocol/src/protocol.yml | 16 +++++++++------- 5 files changed, 33 insertions(+), 25 deletions(-) diff --git a/packages/playwright-core/src/client/tracing.ts b/packages/playwright-core/src/client/tracing.ts index 9692943f6a..5c7796c103 100644 --- a/packages/playwright-core/src/client/tracing.ts +++ b/packages/playwright-core/src/client/tracing.ts @@ -51,7 +51,7 @@ export class Tracing extends ChannelOwner implements ap await this._startCollectingStacks(traceName); } - async group(name: string, options: { location?: string } = {}) { + async group(name: string, options: { location?: { file: string, line?: number, column?: number } } = {}) { await this._channel.tracingGroup({ name, options }); } diff --git a/packages/playwright-core/src/protocol/validator.ts b/packages/playwright-core/src/protocol/validator.ts index 0453a43481..8b9ea68cdf 100644 --- a/packages/playwright-core/src/protocol/validator.ts +++ b/packages/playwright-core/src/protocol/validator.ts @@ -26,12 +26,13 @@ scheme.StackFrame = tObject({ column: tNumber, function: tOptional(tString), }); +scheme.Location = tObject({ + file: tString, + line: tOptional(tNumber), + column: tOptional(tNumber), +}); scheme.Metadata = tObject({ - location: tOptional(tObject({ - file: tString, - line: tOptional(tNumber), - column: tOptional(tNumber), - })), + location: tOptional(tType('Location')), apiName: tOptional(tString), internal: tOptional(tBoolean), stepId: tOptional(tString), @@ -2281,7 +2282,7 @@ scheme.DialogAcceptResult = tOptional(tObject({})); scheme.DialogDismissParams = tOptional(tObject({})); scheme.DialogDismissResult = tOptional(tObject({})); scheme.TracingGroupOptions = tObject({ - location: tString, + location: tOptional(tType('Location')), }); scheme.TracingInitializer = tOptional(tObject({})); scheme.TracingTracingStartParams = tObject({ diff --git a/packages/playwright-core/src/server/trace/recorder/tracing.ts b/packages/playwright-core/src/server/trace/recorder/tracing.ts index 9e8e5fd642..6a770ad2fa 100644 --- a/packages/playwright-core/src/server/trace/recorder/tracing.ts +++ b/packages/playwright-core/src/server/trace/recorder/tracing.ts @@ -18,7 +18,7 @@ import fs from 'fs'; import os from 'os'; import path from 'path'; import type { NameValue } from '../../../common/types'; -import type { TracingTracingStopChunkParams } from '@protocol/channels'; +import type { TracingTracingStopChunkParams, StackFrame } from '@protocol/channels'; import { commandsWithTracingSnapshots } from '../../../protocol/debug'; import { assert, createGuid, monotonicTime, SerializedFS, removeFolders, eventsHelper, type RegisteredListener } from '../../../utils'; import { Artifact } from '../../artifact'; @@ -196,9 +196,12 @@ export class Tracing extends SdkObject implements InstrumentationListener, Snaps return { traceName: this._state.traceName }; } - async group(name: string, options: { location?: string } = {}): Promise { - const location = options.location?.split(':', 2); - const file = location?.[0], line = location?.[1]; + async group(name: string, options: { location?: { file: string, line?: number, column?: number } } = {}): Promise { + const stackFrame: StackFrame = { + file: options.location?.file || '', + line: options.location?.line || 0, + column: options.location?.column || 0, + }; const event: trace.BeforeActionTraceEvent = { type: 'before', callId: `group-${this._groupId++}`, @@ -207,7 +210,7 @@ export class Tracing extends SdkObject implements InstrumentationListener, Snaps class: 'Tracing', method: 'group', params: { }, - stack: [{ file: file || '', line: line ? parseInt(line, 10) : 0, column: 0 }], + stack: [stackFrame], }; this._groupStack.push(event.callId); this._appendTraceEvent(event); diff --git a/packages/protocol/src/channels.ts b/packages/protocol/src/channels.ts index 9308c74261..cf0bfa7caa 100644 --- a/packages/protocol/src/channels.ts +++ b/packages/protocol/src/channels.ts @@ -144,12 +144,14 @@ export type StackFrame = { function?: string, }; +export type Location = { + file: string, + line?: number, + column?: number, +}; + export type Metadata = { - location?: { - file: string, - line?: number, - column?: number, - }, + location?: Location, apiName?: string, internal?: boolean, stepId?: string, @@ -4078,7 +4080,7 @@ export interface DialogEvents { } export type TracingGroupOptions = { - location: string, + location?: Location, }; // ----------- Tracing ----------- diff --git a/packages/protocol/src/protocol.yml b/packages/protocol/src/protocol.yml index b722401dd3..faf0f458a1 100644 --- a/packages/protocol/src/protocol.yml +++ b/packages/protocol/src/protocol.yml @@ -20,17 +20,19 @@ StackFrame: column: number function: string? +Location: + type: object + properties: + file: string + line: number? + column: number? + # This object can be send with any rpc call in the "metadata" field. Metadata: type: object properties: - location: - type: object? - properties: - file: string - line: number? - column: number? + location: Location? apiName: string? internal: boolean? # Test runner step id. @@ -3180,7 +3182,7 @@ Dialog: TracingGroupOptions: type: object properties: - location: string + location: Location? Tracing: type: interface