From 3dcfe61277099125b63e2af60f8d51fc1cdb1afe Mon Sep 17 00:00:00 2001 From: amandeepsingh333 Date: Mon, 3 Feb 2025 12:23:48 +0530 Subject: [PATCH] new apporach --- packages/core/src/page.js | 18 ++++++++++++++++++ packages/dom/src/index.js | 1 + packages/dom/src/serialize-dom.js | 15 +-------------- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/packages/core/src/page.js b/packages/core/src/page.js index f970f0dd6..795cb52e8 100644 --- a/packages/core/src/page.js +++ b/packages/core/src/page.js @@ -208,6 +208,24 @@ export class Page { this.log.debug('Serialize DOM', this.meta); /* istanbul ignore next: no instrumenting injected code */ + await this.eval(async () => { + console.log('Executing pre-serialization command...'); + try { + /* eslint-disable-next-line no-undef */ + if (PercyDOM.checkForLoader()) { + const waitTime = 2000; + await new Promise(resolve => { + setTimeout(() => { + resolve(); + }, waitTime); + }); + } + } catch (err) { + const errorMessage = `Error while checking for loader: ${err.message}`; + console.error(errorMessage); + } + }); + let capture = await this.eval((_, options) => ({ /* eslint-disable-next-line no-undef */ domSnapshot: PercyDOM.serialize(options), diff --git a/packages/dom/src/index.js b/packages/dom/src/index.js index a449d17f3..e93afe55a 100644 --- a/packages/dom/src/index.js +++ b/packages/dom/src/index.js @@ -7,3 +7,4 @@ export { } from './serialize-dom'; export { loadAllSrcsetLinks } from './serialize-image-srcset'; +export { checkForLoader } from './check-dom-loader'; diff --git a/packages/dom/src/serialize-dom.js b/packages/dom/src/serialize-dom.js index 16be798fc..9fda40214 100644 --- a/packages/dom/src/serialize-dom.js +++ b/packages/dom/src/serialize-dom.js @@ -4,7 +4,6 @@ import serializeCSSOM from './serialize-cssom'; import serializeCanvas from './serialize-canvas'; import serializeVideos from './serialize-video'; import { cloneNodeAndShadow, getOuterHTML } from './clone-dom'; -import { checkForLoader } from './check-dom-loader'; // Returns a copy or new doctype for a document. function doctype(dom) { @@ -97,22 +96,10 @@ export function serializeDOM(options) { enableJavaScript, disableShadowDOM }; + ctx.dom = dom; ctx.clone = cloneNodeAndShadow(ctx); - try { - if (checkForLoader()) { - const startTime = Date.now(); - const waitTime = 2000; - while (Date.now() - startTime < waitTime) { - // pass - } - } - } catch (err) { - const errorMessage = `Error while checking for loader: ${err.message}`; - ctx.warnings.add(errorMessage); - console.error(errorMessage); - } serializeElements(ctx); if (domTransformation) {