From 206a877cea1157cbe4422c3f972bddf7efb725ac Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Tue, 23 Nov 2021 11:36:18 -0800 Subject: [PATCH] fix(trace-viewer): multiple iframe and UX fixes (#10486) --- .../trace/recorder/snapshotterInjected.ts | 6 ++++++ .../src/web/traceViewer/snapshotRenderer.ts | 17 +++++++++++++---- .../src/web/traceViewer/snapshotServer.ts | 4 +++- .../src/web/traceViewer/ui/snapshotTab.css | 6 ++++-- .../src/web/traceViewer/ui/snapshotTab.tsx | 13 ++++++------- .../src/web/traceViewer/ui/workbench.tsx | 3 +-- tests/snapshotter.spec.ts | 2 +- 7 files changed, 34 insertions(+), 17 deletions(-) diff --git a/packages/playwright-core/src/server/trace/recorder/snapshotterInjected.ts b/packages/playwright-core/src/server/trace/recorder/snapshotterInjected.ts index 31c9712992..176b9a7e28 100644 --- a/packages/playwright-core/src/server/trace/recorder/snapshotterInjected.ts +++ b/packages/playwright-core/src/server/trace/recorder/snapshotterInjected.ts @@ -265,6 +265,12 @@ export function frameSnapshotStreamer(snapshotStreamer: string) { return; if (nodeName === 'SCRIPT') return; + // Don't preload resources. + if (nodeName === 'LINK' && nodeType === Node.ELEMENT_NODE) { + const rel = (node as Element).getAttribute('rel')?.toLowerCase(); + if (rel === 'preload' || rel === 'prefetch') + return; + } if (this._removeNoScript && nodeName === 'NOSCRIPT') return; if (nodeName === 'META' && (node as HTMLMetaElement).httpEquiv.toLowerCase() === 'content-security-policy') diff --git a/packages/playwright-core/src/web/traceViewer/snapshotRenderer.ts b/packages/playwright-core/src/web/traceViewer/snapshotRenderer.ts index e64aab763b..17661e27bc 100644 --- a/packages/playwright-core/src/web/traceViewer/snapshotRenderer.ts +++ b/packages/playwright-core/src/web/traceViewer/snapshotRenderer.ts @@ -59,8 +59,12 @@ export class SnapshotRenderer { // Element node. const builder: string[] = []; builder.push('<', n[0]); - for (const [attr, value] of Object.entries(n[1] || {})) - builder.push(' ', attr, '="', escapeAttribute(value as string), '"'); + // Never set relative URLs as ') + if (text === '') break; await page.waitForTimeout(250); }