From 472602475f7e98bdd22e0b79b20fa1ccbeacdf63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rene=CC=81?= Date: Mon, 14 Oct 2024 09:47:27 +0200 Subject: [PATCH] added StackTrace filtering to core MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: René --- .../playwright-core/src/client/tracing.ts | 3 +-- .../server/dispatchers/tracingDispatcher.ts | 5 ----- .../playwright-core/src/utils/stackTrace.ts | 19 +++++++++++++++++++ 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/packages/playwright-core/src/client/tracing.ts b/packages/playwright-core/src/client/tracing.ts index 1911d60d48..a5746aed5b 100644 --- a/packages/playwright-core/src/client/tracing.ts +++ b/packages/playwright-core/src/client/tracing.ts @@ -18,8 +18,7 @@ import type * as api from '../../types/types'; import type * as channels from '@protocol/channels'; import { Artifact } from './artifact'; import { ChannelOwner } from './channelOwner'; -import { captureRawStack } from '../utils'; -import { filteredStackTrace } from 'playwright/lib/util'; +import { captureRawStack, filteredStackTrace } from '../utils'; export class Tracing extends ChannelOwner implements api.Tracing { private _includeSources = false; diff --git a/packages/playwright-core/src/server/dispatchers/tracingDispatcher.ts b/packages/playwright-core/src/server/dispatchers/tracingDispatcher.ts index 0a1e39aa68..fc1ea3c1ad 100644 --- a/packages/playwright-core/src/server/dispatchers/tracingDispatcher.ts +++ b/packages/playwright-core/src/server/dispatchers/tracingDispatcher.ts @@ -33,24 +33,19 @@ export class TracingDispatcher extends Dispatcher { await this._object.start(params); } - // async startChunk(options: { name?: string, title?: string } = {}): Promise<{ traceName: string }> { async tracingStartChunk(params: channels.TracingTracingStartChunkParams): Promise { return await this._object.startChunk(params); } - - // async group(name: string, options: { location?: string } = {}): Promise { async tracingGroup(params: channels.TracingTracingGroupParams): Promise { const { name, options } = params; await this._object.group(name, options); } - // async groupEnd(): Promise { async tracingGroupEnd(params: channels.TracingTracingGroupEndParams): Promise { await this._object.groupEnd(); } diff --git a/packages/playwright-core/src/utils/stackTrace.ts b/packages/playwright-core/src/utils/stackTrace.ts index 77e1365b3f..4317ab6159 100644 --- a/packages/playwright-core/src/utils/stackTrace.ts +++ b/packages/playwright-core/src/utils/stackTrace.ts @@ -47,6 +47,25 @@ export function captureRawStack(): RawStack { return stack.split('\n'); } +export function filterStackFile(file: string) { + if (!process.env.PWDEBUGIMPL && file.startsWith(CORE_DIR)) + return false; + return true; +} + +export function filteredStackTrace(rawStack: RawStack): StackFrame[] { + const frames: StackFrame[] = []; + for (const line of rawStack) { + const frame = parseStackTraceLine(line); + if (!frame || !frame.file) + continue; + if (!filterStackFile(frame.file)) + continue; + frames.push(frame); + } + return frames; +} + export function captureLibraryStackTrace(): { frames: StackFrame[], apiName: string } { const stack = captureRawStack();