From 7a0c7730e77c67d7eb6fecb11bde8b2370bdaf64 Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Wed, 8 May 2024 17:33:31 -0700 Subject: [PATCH] fix(trace-viewer): make call ids unique across trace files (#30720) --- packages/trace-viewer/src/ui/modelUtil.ts | 65 +++++++++++++++++----- tests/assets/test-trace1.zip | Bin 0 -> 12214 bytes tests/assets/test-trace2.zip | Bin 0 -> 12244 bytes tests/library/trace-viewer.spec.ts | 15 +++++ 4 files changed, 66 insertions(+), 14 deletions(-) create mode 100644 tests/assets/test-trace1.zip create mode 100644 tests/assets/test-trace2.zip diff --git a/packages/trace-viewer/src/ui/modelUtil.ts b/packages/trace-viewer/src/ui/modelUtil.ts index d1f1adbb2f..39061c8c10 100644 --- a/packages/trace-viewer/src/ui/modelUtil.ts +++ b/packages/trace-viewer/src/ui/modelUtil.ts @@ -160,6 +160,56 @@ function indexModel(context: ContextEntry) { } function mergeActionsAndUpdateTiming(contexts: ContextEntry[]) { + const traceFileToContexts = new Map(); + for (const context of contexts) { + const traceFile = context.traceUrl; + let list = traceFileToContexts.get(traceFile); + if (!list) { + list = []; + traceFileToContexts.set(traceFile, list); + } + list.push(context); + } + + const result: ActionTraceEventInContext[] = []; + let traceFileId = 0; + for (const [, contexts] of traceFileToContexts) { + // Action ids are unique only within a trace file. If there are + // traces from more than one file we make the ids unique across the + // files. The code does not update snapshot ids as they are always + // retrieved from a particular trace file. + if (traceFileToContexts.size) + makeCallIdsUniqueAcrossTraceFiles(contexts, ++traceFileId); + // Align action times across runner and library contexts within each trace file. + const map = mergeActionsAndUpdateTimingSameTrace(contexts); + result.push(...map.values()); + } + result.sort((a1, a2) => { + if (a2.parentId === a1.callId) + return -1; + if (a1.parentId === a2.callId) + return 1; + return a1.wallTime - a2.wallTime || a1.startTime - a2.startTime; + }); + + for (let i = 1; i < result.length; ++i) + (result[i] as any)[prevInListSymbol] = result[i - 1]; + + return result; +} + +function makeCallIdsUniqueAcrossTraceFiles(contexts: ContextEntry[], traceFileId: number) { + for (const context of contexts) { + for (const action of context.actions) { + if (action.callId) + action.callId = `${traceFileId}:${action.callId}`; + if (action.parentId) + action.parentId = `${traceFileId}:${action.parentId}`; + } + } +} + +function mergeActionsAndUpdateTimingSameTrace(contexts: ContextEntry[]) { const map = new Map(); // Protocol call aka isPrimary contexts have startTime/endTime as server-side times. @@ -219,20 +269,7 @@ function mergeActionsAndUpdateTiming(contexts: ContextEntry[]) { frame.timestamp += timeDelta; } } - - const result = [...map.values()]; - result.sort((a1, a2) => { - if (a2.parentId === a1.callId) - return -1; - if (a1.parentId === a2.callId) - return 1; - return a1.wallTime - a2.wallTime || a1.startTime - a2.startTime; - }); - - for (let i = 1; i < result.length; ++i) - (result[i] as any)[prevInListSymbol] = result[i - 1]; - - return result; + return map; } export function buildActionTree(actions: ActionTraceEventInContext[]): { rootItem: ActionTreeItem, itemMap: Map } { diff --git a/tests/assets/test-trace1.zip b/tests/assets/test-trace1.zip new file mode 100644 index 0000000000000000000000000000000000000000..1a7fdf09aa158b49173d409e5a4f099f9077d532 GIT binary patch literal 12214 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 literal 0 HcmV?d00001 diff --git a/tests/assets/test-trace2.zip b/tests/assets/test-trace2.zip new file mode 100644 index 0000000000000000000000000000000000000000..dbc82631e13d79eda37284407d62ef6a07495d26 GIT binary patch literal 12244 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 Me~RYB_#a>Y4VJJW?EnA( literal 0 HcmV?d00001 diff --git a/tests/library/trace-viewer.spec.ts b/tests/library/trace-viewer.spec.ts index 1cd1d92366..7bba694177 100644 --- a/tests/library/trace-viewer.spec.ts +++ b/tests/library/trace-viewer.spec.ts @@ -804,6 +804,21 @@ test('should open two trace files', async ({ context, page, request, server, sho await expect(callLine.getByText('events')).toHaveText(/events:[\d]+/); }); +test('should open two trace files of the same test', async ({ context, page, request, server, showTraceViewer, asset }, testInfo) => { + const traceViewer = await showTraceViewer([asset('test-trace1.zip'), asset('test-trace2.zip')]); + // Same actions from different test runs should not be merged. + await expect(traceViewer.actionTitles).toHaveText([ + 'Before Hooks', + 'page.gotohttps://playwright.dev/', + 'expect.toBe', + 'After Hooks', + 'Before Hooks', + 'page.gotohttps://playwright.dev/', + 'expect.toBe', + 'After Hooks', + ]); +}); + test('should include requestUrl in route.fulfill', async ({ page, runAndTrace, browserName }) => { await page.route('**/*', route => { void route.fulfill({