Skip to content

Commit 3f8daf8

Browse files
authored
Merge pull request #372 from parthlambdatest/custom_header_capture
2 parents aa0f6c2 + 2ad9ea7 commit 3f8daf8

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@lambdatest/smartui-cli",
3-
"version": "4.1.32",
3+
"version": "4.1.33",
44
"description": "A command line interface (CLI) to run SmartUI tests on LambdaTest",
55
"files": [
66
"dist/**/*"

src/lib/schemaValidation.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,18 @@ const WebStaticConfigSchema: JSONSchemaType<WebStaticConfig> = {
342342
enum: ['load', 'domcontentloaded'],
343343
errorMessage: "pageEvent can be load, domcontentloaded"
344344
},
345+
requestHeaders: {
346+
type: "array",
347+
items: {
348+
type: "object",
349+
minProperties: 1,
350+
additionalProperties: { type: "string" }
351+
},
352+
uniqueItems: true,
353+
errorMessage: {
354+
uniqueItems: "Invalid config; duplicates in requestHeaders"
355+
}
356+
},
345357
},
346358
required: ["name", "url"],
347359
additionalProperties: false

src/lib/screenshot.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,26 @@ async function captureScreenshotsForConfig(
4444
const browser = browsers[browserName];
4545
context = await browser?.newContext(contextOptions);
4646
page = await context?.newPage();
47+
const headersObject: Record<string, string> = {};
48+
if (ctx.config.requestHeaders && Array.isArray(ctx.config.requestHeaders)) {
49+
ctx.config.requestHeaders.forEach((headerObj) => {
50+
Object.entries(headerObj).forEach(([key, value]) => {
51+
headersObject[key] = value;
52+
});
53+
});
54+
}
55+
if (urlConfig.requestHeaders && Array.isArray(urlConfig.requestHeaders)) {
56+
urlConfig.requestHeaders.forEach((headerObj) => {
57+
Object.entries(headerObj).forEach(([key, value]) => {
58+
headersObject[key] = value;
59+
});
60+
});
61+
}
62+
63+
ctx.log.debug(`Combined headers: ${JSON.stringify(headersObject)}`);
64+
if (Object.keys(headersObject).length > 0) {
65+
await page.setExtraHTTPHeaders(headersObject);
66+
}
4767

4868
await page?.goto(url.trim(), pageOptions);
4969
await executeDocumentScripts(ctx, page, "afterNavigation", afterNavigationScript)

0 commit comments

Comments
 (0)