diff --git a/package.json b/package.json index ec9d3c7..8ca6ef5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lambdatest/smartui-cli", - "version": "4.1.46", + "version": "4.1.47", "description": "A command line interface (CLI) to run SmartUI tests on LambdaTest", "files": [ "dist/**/*" diff --git a/src/lib/httpClient.ts b/src/lib/httpClient.ts index 89e70ee..cc8281d 100644 --- a/src/lib/httpClient.ts +++ b/src/lib/httpClient.ts @@ -539,6 +539,19 @@ export default class httpClient { }, ctx.log) } + getS3PreSignedURLForCaps(ctx: Context, capsBuildId: string, capsProjectToken: string) { + return this.request({ + url: `/loguploadurl`, + method: 'POST', + headers: { 'Content-Type': 'application/json', + projectToken: capsProjectToken !== '' ? capsProjectToken : this.projectToken + }, + data: { + buildId: capsBuildId + } + }, ctx.log) + } + getS3PresignedURLForSnapshotUpload(ctx: Context, snapshotName: string, snapshotUuid: string) { return this.request({ url: `/snapshotuploadurl`, @@ -601,7 +614,7 @@ export default class httpClient { } uploadLogs(ctx: Context, uploadURL: string) { - const fileStream = fs.createReadStream(constants.LOG_FILE_PATH); + const logContent = fs.readFileSync(constants.LOG_FILE_PATH); const { size } = fs.statSync(constants.LOG_FILE_PATH); return this.request({ @@ -611,7 +624,7 @@ export default class httpClient { 'Content-Type': 'text/plain', 'Content-Length': size, }, - data: fileStream, + data: logContent, maxBodyLength: Infinity, // prevent axios from limiting the body size maxContentLength: Infinity, // prevent axios from limiting the content size }, ctx.log) @@ -631,6 +644,22 @@ export default class httpClient { }, ctx.log); } + sendCliLogsToLSRSForCaps(ctx: Context, capsBuildId: string, capsProjectToken: string) { + const logContent = fs.readFileSync(constants.LOG_FILE_PATH, 'utf-8'); + return this.request({ + url: `/upload/logs`, + method: 'POST', + headers: { 'Content-Type': 'application/json', + projectToken: capsProjectToken !== '' ? capsProjectToken : this.projectToken + }, + data: { + buildId: capsBuildId, + logContent: logContent, + skipLogging: true + } + }, ctx.log); + } + uploadSnapshotToS3(ctx: Context, uploadURL: string, snapshot: Snapshot) { return this.request({ url: uploadURL, diff --git a/src/tasks/finalizeBuild.ts b/src/tasks/finalizeBuild.ts index 247a004..1e6243a 100644 --- a/src/tasks/finalizeBuild.ts +++ b/src/tasks/finalizeBuild.ts @@ -33,6 +33,9 @@ export default (ctx: Context): ListrTask(); + for (const [sessionId, capabilities] of ctx.sessionCapabilitiesMap.entries()) { try { const buildId = capabilities?.buildId || ''; @@ -56,6 +59,18 @@ export default (ctx: Context): ListrTask