@@ -47,7 +47,9 @@ export default class httpClient {
47
47
48
48
49
49
this . axiosInstance . interceptors . request . use ( ( config ) => {
50
- config . headers [ 'projectToken' ] = this . projectToken ;
50
+ if ( ! config . headers [ 'projectToken' ] ) {
51
+ config . headers [ 'projectToken' ] = this . projectToken ;
52
+ }
51
53
config . headers [ 'projectName' ] = this . projectName ;
52
54
config . headers [ 'username' ] = this . username ;
53
55
config . headers [ 'accessKey' ] = this . accessKey ;
@@ -155,11 +157,12 @@ export default class httpClient {
155
157
} , log )
156
158
}
157
159
158
- getScreenshotData ( buildId : string , baseline : boolean , log : Logger ) {
160
+ getScreenshotData ( buildId : string , baseline : boolean , log : Logger , projectToken : string ) {
159
161
return this . request ( {
160
162
url : '/screenshot' ,
161
163
method : 'GET' ,
162
- params : { buildId, baseline }
164
+ params : { buildId, baseline } ,
165
+ headers : { projectToken : projectToken }
163
166
} , log ) ;
164
167
}
165
168
@@ -174,6 +177,26 @@ export default class httpClient {
174
177
}
175
178
176
179
180
+ getSmartUICapabilities ( sessionId : string , config : any , git : any , log : Logger ) {
181
+ return this . request ( {
182
+ url : '/sessions/capabilities' ,
183
+ method : 'GET' ,
184
+ params : {
185
+ sessionId : sessionId ,
186
+ } ,
187
+ data : {
188
+ git,
189
+ config
190
+ } ,
191
+ headers : {
192
+ projectToken : '' ,
193
+ projectName : '' ,
194
+ username : '' ,
195
+ accessKey : ''
196
+ } ,
197
+ } , log ) ;
198
+ }
199
+
177
200
finalizeBuild ( buildId : string , totalSnapshots : number , log : Logger ) {
178
201
let params : Record < string , string | number > = { buildId } ;
179
202
if ( totalSnapshots > - 1 ) params . totalSnapshots = totalSnapshots ;
@@ -185,7 +208,22 @@ export default class httpClient {
185
208
} , log )
186
209
}
187
210
211
+ finalizeBuildForCapsWithToken ( buildId : string , totalSnapshots : number , projectToken : string , log : Logger ) {
212
+ let params : Record < string , string | number > = { buildId } ;
213
+ if ( totalSnapshots > - 1 ) params . totalSnapshots = totalSnapshots ;
214
+ return this . request ( {
215
+ url : '/build' ,
216
+ method : 'DELETE' ,
217
+ params : params ,
218
+ headers : {
219
+ projectToken : projectToken , // Use projectToken dynamically
220
+ } ,
221
+ } , log ) ;
222
+ }
223
+
224
+
188
225
uploadSnapshot ( ctx : Context , snapshot : ProcessedSnapshot ) {
226
+ // Use capsBuildId if provided, otherwise fallback to ctx.build.id
189
227
return this . request ( {
190
228
url : `/builds/${ ctx . build . id } /snapshot` ,
191
229
method : 'POST' ,
@@ -218,6 +256,50 @@ export default class httpClient {
218
256
} , ctx . log )
219
257
}
220
258
259
+ processSnapshotCaps ( ctx : Context , snapshot : ProcessedSnapshot , snapshotUuid : string , capsBuildId : string , capsProjectToken : string ) {
260
+ return this . request ( {
261
+ url : `/build/${ capsBuildId } /snapshot` ,
262
+ method : 'POST' ,
263
+ headers : {
264
+ 'Content-Type' : 'application/json' ,
265
+ projectToken : capsProjectToken !== '' ? capsProjectToken : this . projectToken
266
+ } ,
267
+ data : {
268
+ name : snapshot . name ,
269
+ url : snapshot . url ,
270
+ snapshotUuid : snapshotUuid ,
271
+ test : {
272
+ type : ctx . testType ,
273
+ source : 'cli'
274
+ } ,
275
+ async : false ,
276
+ }
277
+ } , ctx . log )
278
+ }
279
+
280
+ uploadSnapshotForCaps ( ctx : Context , snapshot : ProcessedSnapshot , capsBuildId : string , capsProjectToken : string ) {
281
+ // Use capsBuildId if provided, otherwise fallback to ctx.build.id
282
+ const buildId = capsBuildId !== '' ? capsBuildId : ctx . build . id ;
283
+
284
+ return this . request ( {
285
+ url : `/builds/${ buildId } /snapshot` ,
286
+ method : 'POST' ,
287
+ headers : {
288
+ 'Content-Type' : 'application/json' ,
289
+ projectToken : capsProjectToken !== '' ? capsProjectToken : this . projectToken // Use capsProjectToken dynamically
290
+ } ,
291
+ data : {
292
+ snapshot,
293
+ test : {
294
+ type : ctx . testType ,
295
+ source : 'cli'
296
+ }
297
+ }
298
+ } , ctx . log ) ;
299
+ }
300
+
301
+
302
+
221
303
uploadScreenshot (
222
304
{ id : buildId , name : buildName , baseline } : Build ,
223
305
ssPath : string , ssName : string , browserName : string , viewport : string , log : Logger
@@ -311,6 +393,22 @@ export default class httpClient {
311
393
} , ctx . log )
312
394
}
313
395
396
+ getS3PresignedURLForSnapshotUploadCaps ( ctx : Context , snapshotName : string , snapshotUuid : string , capsBuildId : string , capsProjectToken : string ) {
397
+ return this . request ( {
398
+ url : `/snapshotuploadurl` ,
399
+ method : 'POST' ,
400
+ headers : {
401
+ 'Content-Type' : 'application/json' ,
402
+ projectToken : capsProjectToken !== '' ? capsProjectToken : this . projectToken
403
+ } ,
404
+ data : {
405
+ buildId : capsBuildId ,
406
+ snapshotName : snapshotName ,
407
+ snapshotUuid : snapshotUuid
408
+ }
409
+ } , ctx . log )
410
+ }
411
+
314
412
uploadLogs ( ctx : Context , uploadURL : string ) {
315
413
const fileStream = fs . createReadStream ( constants . LOG_FILE_PATH ) ;
316
414
const { size } = fs . statSync ( constants . LOG_FILE_PATH ) ;
@@ -341,6 +439,20 @@ export default class httpClient {
341
439
} , ctx . log )
342
440
}
343
441
442
+ uploadSnapshotToS3Caps ( ctx : Context , uploadURL : string , snapshot : Snapshot , capsProjectToken : string ) {
443
+ return this . request ( {
444
+ url : uploadURL ,
445
+ method : 'PUT' ,
446
+ headers : {
447
+ 'Content-Type' : 'application/json' ,
448
+ projectToken : capsProjectToken !== '' ? capsProjectToken : this . projectToken
449
+ } ,
450
+ data : snapshot ,
451
+ maxBodyLength : Infinity , // prevent axios from limiting the body size
452
+ maxContentLength : Infinity , // prevent axios from limiting the content size
453
+ } , ctx . log )
454
+ }
455
+
344
456
processWebFigma ( requestBody : any , log : Logger ) {
345
457
return this . request ( {
346
458
url : "figma-web/upload" ,
0 commit comments