From c406b233875679e558a1977e9780cb5f4f92b0b6 Mon Sep 17 00:00:00 2001 From: Dmitry Gozman Date: Tue, 3 Aug 2021 13:05:58 -0700 Subject: [PATCH] feat(tracing): do not store scripts in trace (#7970) We do not need them for snapshots. --- src/server/snapshot/snapshotter.ts | 3 +++ tests/tracing.spec.ts | 7 ++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/server/snapshot/snapshotter.ts b/src/server/snapshot/snapshotter.ts index 313933ceea..ad05d36692 100644 --- a/src/server/snapshot/snapshotter.ts +++ b/src/server/snapshot/snapshotter.ts @@ -160,6 +160,9 @@ export class Snapshotter { const isRedirect = response.status() >= 300 && response.status() <= 399; if (isRedirect) return; + // We do not need scripts for snapshots. + if (response.request().resourceType() === 'script') + return; // Shortcut all redirects - we cannot intercept them properly. let original = response.request(); diff --git a/tests/tracing.spec.ts b/tests/tracing.spec.ts index ee40dbb54f..ff97f1c7b8 100644 --- a/tests/tracing.spec.ts +++ b/tests/tracing.spec.ts @@ -18,9 +18,9 @@ import { expect, contextTest as test, browserTest } from './config/browserTest'; import yauzl from 'yauzl'; import jpeg from 'jpeg-js'; -test('should collect trace', async ({ context, page, server }, testInfo) => { +test('should collect trace with resources, but no js', async ({ context, page, server }, testInfo) => { await context.tracing.start({ screenshots: true, snapshots: true }); - await page.goto(server.EMPTY_PAGE); + await page.goto(server.PREFIX + '/frames/frame.html'); await page.setContent(''); await page.click('"Click"'); await page.waitForTimeout(2000); // Give it some time to produce screenshots. @@ -35,7 +35,8 @@ test('should collect trace', async ({ context, page, server }, testInfo) => { expect(events.find(e => e.metadata?.apiName === 'page.close')).toBeTruthy(); expect(events.some(e => e.type === 'frame-snapshot')).toBeTruthy(); - expect(events.some(e => e.type === 'resource-snapshot')).toBeTruthy(); + expect(events.some(e => e.type === 'resource-snapshot' && e.snapshot.url.endsWith('style.css'))).toBeTruthy(); + expect(events.some(e => e.type === 'resource-snapshot' && e.snapshot.url.endsWith('script.js'))).toBeFalsy(); expect(events.some(e => e.type === 'screencast-frame')).toBeTruthy(); });