From 9347c5b67a2c495bb78932c932cdaaced00c3191 Mon Sep 17 00:00:00 2001 From: Zeeshan Date: Mon, 15 Sep 2025 19:24:27 +0530 Subject: [PATCH 1/2] Add support for extended viewport and DOM content loading in configuration --- src/lib/ctx.ts | 10 ++++++++++ src/lib/processSnapshot.ts | 18 +++++++++++++++++- src/lib/schemaValidation.ts | 12 ++++++++++++ src/types.ts | 3 +++ 4 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/lib/ctx.ts b/src/lib/ctx.ts index e6faa1c..7afe0f5 100644 --- a/src/lib/ctx.ts +++ b/src/lib/ctx.ts @@ -25,6 +25,8 @@ export default (options: Record): Context => { let buildNameObj: string; let allowDuplicateSnapshotNames: boolean = false; let useLambdaInternal: boolean = false; + let useExtendedViewport: boolean = false; + let loadDomContent: boolean = false; try { if (options.config) { config = JSON.parse(fs.readFileSync(options.config, 'utf-8')); @@ -100,6 +102,12 @@ export default (options: Record): Context => { if (config.useLambdaInternal) { useLambdaInternal = true; } + if (config.useExtendedViewport) { + useExtendedViewport = true; + } + if (config.loadDomContent) { + loadDomContent = true; + } //if config.waitForPageRender has value and if its less than 30000 then make it to 30000 default if (config.waitForPageRender && config.waitForPageRender < 30000) { @@ -132,6 +140,8 @@ export default (options: Record): Context => { requestHeaders: config.requestHeaders || {}, allowDuplicateSnapshotNames: allowDuplicateSnapshotNames, useLambdaInternal: useLambdaInternal, + useExtendedViewport: useExtendedViewport, + loadDomContent: loadDomContent, }, uploadFilePath: '', webStaticConfig: [], diff --git a/src/lib/processSnapshot.ts b/src/lib/processSnapshot.ts index 7128fcc..1d866b8 100644 --- a/src/lib/processSnapshot.ts +++ b/src/lib/processSnapshot.ts @@ -46,7 +46,9 @@ export async function prepareSnapshot(snapshot: Snapshot, ctx: Context): Promise if (options.loadDomContent) { processedOptions.loadDomContent = true; } - + if (options.useExtendedViewport) { + processedOptions.useExtendedViewport = true; + } if (options.sessionId) { const sessionId = options.sessionId; processedOptions.sessionId = sessionId @@ -145,6 +147,13 @@ export async function prepareSnapshot(snapshot: Snapshot, ctx: Context): Promise } } + if (ctx.config.loadDomContent) { + processedOptions.loadDomContent = true; + } + if (ctx.config.useExtendedViewport) { + processedOptions.useExtendedViewport = true; + } + processedOptions.allowedAssets = ctx.config.allowedAssets; processedOptions.selectors = selectors; @@ -522,6 +531,13 @@ export default async function processSnapshot(snapshot: Snapshot, ctx: Context): } } + if (ctx.config.loadDomContent) { + processedOptions.loadDomContent = true; + } + if (ctx.config.useExtendedViewport) { + processedOptions.useExtendedViewport = true; + } + // process for every viewport let navigated: boolean = false; let previousDeviceType: string | null = null; diff --git a/src/lib/schemaValidation.ts b/src/lib/schemaValidation.ts index cdfc42d..a1e0e8c 100644 --- a/src/lib/schemaValidation.ts +++ b/src/lib/schemaValidation.ts @@ -266,6 +266,14 @@ const ConfigSchema = { useLambdaInternal: { type: "boolean", errorMessage: "Invalid config; useLambdaInternal must be true/false" + }, + useExtendedViewport: { + type: "boolean", + errorMessage: "Invalid config; useExtendedViewport must be true/false" + }, + loadDomContent: { + type: "boolean", + errorMessage: "Invalid config; loadDomContent must be true/false" } }, anyOf: [ @@ -525,6 +533,10 @@ const SnapshotSchema: JSONSchemaType = { timeout: { type: "number", errorMessage: "Invalid snapshot options; timeout must be a number" + }, + useExtendedViewport: { + type: "boolean", + errorMessage: "Invalid snapshot options; useExtendedViewport must be a boolean" } }, additionalProperties: false diff --git a/src/types.ts b/src/types.ts index 28487f0..0bb085b 100644 --- a/src/types.ts +++ b/src/types.ts @@ -38,6 +38,8 @@ export interface Context { requestHeaders?: Array>; allowDuplicateSnapshotNames?: boolean; useLambdaInternal?: boolean; + useExtendedViewport?: boolean; + loadDomContent?: boolean; }; uploadFilePath: string; webStaticConfig: WebStaticConfig; @@ -153,6 +155,7 @@ export interface Snapshot { sessionId?: string sync?: boolean; contextId?: string; + useExtendedViewport?: boolean; } } From e909295e69b4792f39f256e3379535a3368fdf46 Mon Sep 17 00:00:00 2001 From: Zeeshan Date: Wed, 17 Sep 2025 18:42:11 +0530 Subject: [PATCH 2/2] Version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1c2d24a..682de4a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lambdatest/smartui-cli", - "version": "4.1.30", + "version": "4.1.31", "description": "A command line interface (CLI) to run SmartUI tests on LambdaTest", "files": [ "dist/**/*"