Skip to content

Commit d1100cc

Browse files
add fetch results in finalize build for LT Caps
1 parent b804f07 commit d1100cc

File tree

6 files changed

+30
-26
lines changed

6 files changed

+30
-26
lines changed

src/lib/ctx.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ export default (options: Record<string, string>): Context => {
136136
sessionCapabilitiesMap: new Map<string, any[]>(),
137137
sessionToBuildMap: new Map<string, string>(),
138138
buildToSnapshotCountMap: new Map<string, number>(),
139-
buildToProjectTokenMap: new Map<string, string>()
139+
buildToProjectTokenMap: new Map<string, string>(),
140+
fetchResultsForBuild: new Array<string>
140141
}
141142
}

src/lib/server.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,6 @@ export default async (ctx: Context): Promise<FastifyInstance<Server, IncomingMes
6262
ctx.sessionCapabilitiesMap.set(sessionId, fetchedCapabilitiesResp);
6363
ctx.sessionToBuildMap.set(sessionId, capsBuildId);
6464
ctx.buildToProjectTokenMap.set(capsBuildId, fetchedCapabilitiesResp?.projectToken || '');
65-
if (ctx.options.fetchResults) {
66-
let is_baseline;
67-
if (fetchedCapabilitiesResp.baseline) {
68-
is_baseline = true;
69-
} else {
70-
is_baseline = false
71-
}
72-
startPolling(ctx, capsBuildId, is_baseline, fetchedCapabilitiesResp.projectToken)
73-
}
7465
}
7566
ctx.log.debug(`fetch caps for sessionId: ${sessionId} are ${JSON.stringify(fetchedCapabilitiesResp)}`)
7667
} catch (error: any) {

src/lib/snapshotQueue.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ export default class Queue {
308308
capsBuildId = cachedCapabilities?.buildId || '';
309309
useKafkaFlowCaps = cachedCapabilities?.useKafkaFlow || false;
310310
if (capsBuildId != '' && capsProjectToken != '') {
311-
useCapsBuildId = true; // Set to true if capsBuildId is not empty
311+
useCapsBuildId = true;
312312
}
313313
}
314314

src/lib/utils.ts

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import fs from 'fs'
21
import { Context } from '../types.js'
32
import { chromium, firefox, webkit, Browser } from '@playwright/test'
43
import constants from './constants.js';
54
import chalk from 'chalk';
65
import axios from 'axios';
6+
import fs from 'fs/promises';
77

88
import { globalAgent } from 'http';
99
import { promisify } from 'util'
@@ -229,17 +229,10 @@ export function getRenderViewportsForOptions(options: any): Array<Record<string,
229229

230230
// Background polling function
231231
export async function startPolling(ctx: Context, build_id: string, baseline: boolean, projectToken: string): Promise<void> {
232-
let filename = '';
233232
let isPollingActive = true;
234233
if (build_id) {
235-
filename = `${build_id}.json`
236234
ctx.log.info(`Fetching results for buildId ${build_id} in progress....`);
237235
} else if (ctx.build && ctx.build.id) {
238-
if (ctx.options.fetchResultsFileName) {
239-
filename = ctx.options.fetchResultsFileName
240-
} else {
241-
filename = `${ctx.build.id}.json`
242-
}
243236
ctx.log.info(`Fetching results for buildId ${ctx.build.id} in progress....`);
244237
}
245238

@@ -262,16 +255,19 @@ export async function startPolling(ctx: Context, build_id: string, baseline: boo
262255
if (!resp.build) {
263256
ctx.log.info("Error: Build data is null.");
264257
clearInterval(intervalId);
265-
// isPollingActive = false;
258+
return;
266259
}
267260

268-
fs.writeFileSync(filename, JSON.stringify(resp, null, 2));
269-
ctx.log.debug(`Updated results in ${filename}`);
261+
let fileName = `${resp.build.build_id}.json`
262+
if (ctx.options.fetchResults && ctx.options.fetchResultsFileName && ctx.build && ctx.build.id && resp.build.build_id === ctx.build.id) {
263+
fileName = `${ctx.options.fetchResultsFileName}`
264+
}
265+
await fs.writeFile(`${fileName}`, JSON.stringify(resp, null, 2));
266+
ctx.log.debug(`Updated results in ${fileName}`);
270267

271268
if (resp.build.build_status_ind === constants.BUILD_COMPLETE || resp.build.build_status_ind === constants.BUILD_ERROR) {
272269
clearInterval(intervalId);
273-
ctx.log.info(`Fetching results completed. Final results written to ${filename}`);
274-
// isPollingActive = false;
270+
ctx.log.info(`Fetching results completed. Final results written to ${fileName}`);
275271

276272

277273
// Evaluating Summary
@@ -309,7 +305,7 @@ export async function startPolling(ctx: Context, build_id: string, baseline: boo
309305
`${chalk.yellow('Project Name:')} ${chalk.white(resp.project.name)}\n` +
310306
`${chalk.yellow('Build ID:')} ${chalk.white(resp.build.build_id)}\n`
311307
)
312-
);
308+
);
313309
}
314310
} catch (error: any) {
315311
if (error.message.includes('ENOTFOUND')) {
@@ -319,7 +315,6 @@ export async function startPolling(ctx: Context, build_id: string, baseline: boo
319315
ctx.log.error(`Error fetching screenshot data: ${error.message}`);
320316
}
321317
clearInterval(intervalId);
322-
// isPollingActive = false;
323318
}
324319
}, 5000);
325320
}

src/tasks/finalizeBuild.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { ListrTask, ListrRendererFactory } from 'listr2';
22
import { Context } from '../types.js'
33
import { updateLogContext } from '../lib/logger.js';
44
import chalk from 'chalk';
5+
import { startPolling } from '../lib/utils.js';
56
import { unlinkSync } from 'fs';
67
import constants from '../lib/constants.js';
78
import fs from 'fs';
@@ -30,6 +31,21 @@ export default (ctx: Context): ListrTask<Context, ListrRendererFactory, ListrRen
3031
const totalSnapshots = capabilities?.snapshotCount || 0;
3132
const sessionBuildUrl = capabilities?.buildURL || '';
3233
const testId = capabilities?.id || '';
34+
35+
if (ctx.options.fetchResults && ctx.fetchResultsForBuild) {
36+
if (!ctx.fetchResultsForBuild.includes(buildId)) {
37+
let is_baseline;
38+
if (capabilities.baseline) {
39+
is_baseline = true;
40+
} else {
41+
is_baseline = false;
42+
}
43+
console.log(`start polling was called at finalize build for buildId: ${buildId}`)
44+
startPolling(ctx, buildId, is_baseline, capabilities.projectToken);
45+
await new Promise(resolve => setTimeout(resolve, 7000));
46+
ctx.fetchResultsForBuild.push(buildId);
47+
}
48+
}
3349

3450
if (buildId && projectToken) {
3551
await ctx.client.finalizeBuildForCapsWithToken(buildId, totalSnapshots, projectToken, ctx.log);

src/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ export interface Context {
6363
buildToSnapshotCountMap?: Map<string, number>;
6464
sessionToBuildMap?: Map<string, string>;
6565
buildToProjectTokenMap?: Map<string, string>;
66+
fetchResultsForBuild?: Array<string>
6667
}
6768

6869
export interface Env {

0 commit comments

Comments
 (0)