Skip to content

Commit 4f0673a

Browse files
authored
Merge pull request #273 from parthlambdatest/retry
2 parents b2667b7 + 227461d commit 4f0673a

File tree

2 files changed

+47
-17
lines changed

2 files changed

+47
-17
lines changed

package.json

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

src/lib/processSnapshot.ts

+46-16
Original file line numberDiff line numberDiff line change
@@ -154,25 +154,55 @@ export default async function processSnapshot(snapshot: Snapshot, ctx: Context):
154154
ctx.log.debug(`Handling request ${requestUrl}\n - skipping disallowed resource type [${request.resourceType()}]`);
155155
} else if (!ALLOWED_STATUSES.includes(response.status())) {
156156
ctx.log.debug(`${globalViewport} Handling request ${requestUrl}\n - skipping disallowed status [${response.status()}]`);
157-
let data = {
158-
statusCode: `${response.status()}`,
159-
url: requestUrl,
160-
resourceType: request.resourceType(),
161-
}
162-
163-
if (!discoveryErrors.browsers[globalBrowser]){
164-
discoveryErrors.browsers[globalBrowser] = {}; }
165-
166-
// Check if the discoveryErrors.browsers[globalBrowser] exists, and if not, initialize it
167-
if (discoveryErrors.browsers[globalBrowser] && !discoveryErrors.browsers[globalBrowser][globalViewport]) {
168-
discoveryErrors.browsers[globalBrowser][globalViewport] = [];
169-
}
170157

171-
// Dynamically push the data into the correct browser and viewport
172-
if (discoveryErrors.browsers[globalBrowser]) {
173-
discoveryErrors.browsers[globalBrowser][globalViewport]?.push(data);
158+
if (response && response.headers()) {
159+
const responseHeaders = response.headers();
160+
ctx.log.debug(`Response headers for ${requestUrl}: ${JSON.stringify(responseHeaders, null, 2)}`);
174161
}
175162

163+
let responseOfRetry, bodyOfRetry
164+
ctx.log.debug(`Resource had a disallowed status ${requestUrl} fetching from server again`);
165+
responseOfRetry = await page.request.fetch(request, requestOptions);
166+
bodyOfRetry = await responseOfRetry.body();
167+
168+
if (responseOfRetry && responseOfRetry.status() && ALLOWED_STATUSES.includes(responseOfRetry.status())) {
169+
ctx.log.debug(`Handling request after retry ${requestUrl}\n - content-type ${responseOfRetry.headers()['content-type']}`);
170+
cache[requestUrl] = {
171+
body: bodyOfRetry.toString('base64'),
172+
type: responseOfRetry.headers()['content-type']
173+
}
174+
route.fulfill({
175+
status: responseOfRetry.status(),
176+
headers: responseOfRetry.headers(),
177+
body: bodyOfRetry,
178+
});
179+
} else {
180+
ctx.log.debug(`Resource had a disallowed status for retry as well ${requestUrl} disallowed status [${responseOfRetry.status()}]`);
181+
if (responseOfRetry && responseOfRetry.headers()) {
182+
const responseHeadersRetry = responseOfRetry.headers();
183+
ctx.log.debug(`Response headers for retry ${requestUrl}: ${JSON.stringify(responseHeadersRetry, null, 2)}`);
184+
}
185+
186+
let data = {
187+
statusCode: `${responseOfRetry.status()}`,
188+
url: requestUrl,
189+
resourceType: request.resourceType(),
190+
}
191+
192+
if (!discoveryErrors.browsers[globalBrowser]){
193+
discoveryErrors.browsers[globalBrowser] = {};
194+
}
195+
196+
// Check if the discoveryErrors.browsers[globalBrowser] exists, and if not, initialize it
197+
if (discoveryErrors.browsers[globalBrowser] && !discoveryErrors.browsers[globalBrowser][globalViewport]) {
198+
discoveryErrors.browsers[globalBrowser][globalViewport] = [];
199+
}
200+
201+
// Dynamically push the data into the correct browser and viewport
202+
if (discoveryErrors.browsers[globalBrowser]) {
203+
discoveryErrors.browsers[globalBrowser][globalViewport]?.push(data);
204+
}
205+
}
176206
} else {
177207
ctx.log.debug(`Handling request ${requestUrl}\n - content-type ${response.headers()['content-type']}`);
178208

0 commit comments

Comments
 (0)