From 14a522de8b350790d50349f26a4468c5b3fd4eab Mon Sep 17 00:00:00 2001 From: Wil Wilsman Date: Mon, 19 Oct 2020 17:45:57 -0500 Subject: [PATCH] =?UTF-8?q?=E2=9C=85=20Allow=20mocked=20serialize=20to=20a?= =?UTF-8?q?ccept=20options?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sdk-utils/test/helper.js | 11 +++++++++-- packages/sdk-utils/test/index.test.js | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/sdk-utils/test/helper.js b/packages/sdk-utils/test/helper.js index ee0584e56..7f1f4290e 100644 --- a/packages/sdk-utils/test/helper.js +++ b/packages/sdk-utils/test/helper.js @@ -1,11 +1,18 @@ const createTestServer = require('@percy/core/test/helpers/server'); const sdk = {}; +// mock serialization script +const serializeDOM = (options) => { + let doc = (options.dom || document).documentElement; + if (options.domTransformation) options.domTransformation(doc); + return doc.outerHTML; +}; + sdk.setup = async function setup() { // mock percy server sdk.server = await createTestServer({ '/percy/dom.js': () => [200, 'application/javascript', ( - `window.PercyDOM = { serialize: ${sdk.serialize.toString()} }`)], + `window.PercyDOM = { serialize: ${sdk.serializeDOM.toString()} }`)], '/percy/healthcheck': () => [200, 'application/json', ( { success: true, config: { snapshot: { widths: [1280] } } })], '/percy/snapshot': () => [200, 'application/json', { success: true }] @@ -14,7 +21,7 @@ sdk.setup = async function setup() { // reset things delete process.env.PERCY_CLI_API; delete process.env.PERCY_LOGLEVEL; - sdk.serialize = () => document.documentElement.outerHTML; + sdk.serializeDOM = serializeDOM; sdk.stdio[1] = []; sdk.stdio[2] = []; let utils = require('..'); diff --git a/packages/sdk-utils/test/index.test.js b/packages/sdk-utils/test/index.test.js index c2ab1509c..0ede2ff51 100644 --- a/packages/sdk-utils/test/index.test.js +++ b/packages/sdk-utils/test/index.test.js @@ -205,7 +205,7 @@ describe('SDK Utils', () => { it('fetches @percy/dom from the CLI API and caches the result', async () => { ({ fetchPercyDOM } = sdk.rerequire('..')); await expect(fetchPercyDOM()).resolves.toEqual( - 'window.PercyDOM = { serialize: () => document.documentElement.outerHTML }'); + `window.PercyDOM = { serialize: ${sdk.serializeDOM.toString()} }`); await expect(fetchPercyDOM()).resolves.toBeDefined(); expect(sdk.server.requests).toEqual([['/percy/dom.js']]); });