From 72734e4c2775216344202b223ef5eb608882ef43 Mon Sep 17 00:00:00 2001 From: Wil Wilsman Date: Wed, 8 Dec 2021 17:40:08 -0600 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20additional=20snapshots=20e?= =?UTF-8?q?xecuting=20string=20functions=20(#655)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/src/page.js | 5 +++-- packages/core/src/snapshot.js | 12 ++++++------ packages/core/test/snapshot.test.js | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/core/src/page.js b/packages/core/src/page.js index 6eaa19563..e29b075f5 100644 --- a/packages/core/src/page.js +++ b/packages/core/src/page.js @@ -182,8 +182,9 @@ export default class Page { } // execute any javascript - await this.evaluate(typeof execute === 'function' - ? execute : execute?.beforeSnapshot); + await this.evaluate( + typeof execute === 'object' && !Array.isArray(execute) + ? execute.beforeSnapshot : execute); // wait for any final network activity before capturing the dom snapshot await this.network.idle(); diff --git a/packages/core/src/snapshot.js b/packages/core/src/snapshot.js index 2f72b540d..1790ae81a 100644 --- a/packages/core/src/snapshot.js +++ b/packages/core/src/snapshot.js @@ -228,16 +228,16 @@ export async function* discoverSnapshotResources(percy, snapshot, callback) { yield waitForDiscoveryNetworkIdle(page, snapshot.discovery); handleSnapshotResources(snapshot, resources, callback); } else { + let { enableJavaScript } = snapshot; + // capture snapshots sequentially for (let snap of allSnapshots) { - // shallow merge snapshot options - let options = { ...snapshot, ...snap }; // will wait for timeouts, selectors, and additional network activity - let { url, dom } = yield page.snapshot(options); - - // handle resources and remove previously captured dom snapshots + let { url, dom } = yield page.snapshot({ enableJavaScript, ...snap }); resources.set(url, createRootResource(url, dom)); - handleSnapshotResources(options, resources, callback); + // shallow merge with root snapshot options + handleSnapshotResources({ ...snapshot, ...snap }, resources, callback); + // remove the previously captured dom snapshot resources.delete(url); } } diff --git a/packages/core/test/snapshot.test.js b/packages/core/test/snapshot.test.js index 6a2a9b59e..0bd78256f 100644 --- a/packages/core/test/snapshot.test.js +++ b/packages/core/test/snapshot.test.js @@ -494,7 +494,7 @@ describe('Snapshot', () => { execute: () => document.querySelector('p').classList.add('eval-1'), additionalSnapshots: [ { suffix: ' 2', execute: () => document.querySelector('p').classList.add('eval-2') }, - { suffix: ' 3', execute: () => document.querySelector('p').classList.add('eval-3') }, + { suffix: ' 3', execute: "document.querySelector('p').classList.add('eval-3')" }, { suffix: ' 4' } ] });