@@ -47,7 +47,9 @@ export default class httpClient {
4747
4848
4949 this . axiosInstance . interceptors . request . use ( ( config ) => {
50- config . headers [ 'projectToken' ] = this . projectToken ;
50+ if ( ! config . headers [ 'projectToken' ] ) {
51+ config . headers [ 'projectToken' ] = this . projectToken ;
52+ }
5153 config . headers [ 'projectName' ] = this . projectName ;
5254 config . headers [ 'username' ] = this . username ;
5355 config . headers [ 'accessKey' ] = this . accessKey ;
@@ -155,11 +157,12 @@ export default class httpClient {
155157 } , log )
156158 }
157159
158- getScreenshotData ( buildId : string , baseline : boolean , log : Logger ) {
160+ getScreenshotData ( buildId : string , baseline : boolean , log : Logger , projectToken : string ) {
159161 return this . request ( {
160162 url : '/screenshot' ,
161163 method : 'GET' ,
162- params : { buildId, baseline }
164+ params : { buildId, baseline } ,
165+ headers : { projectToken : projectToken }
163166 } , log ) ;
164167 }
165168
@@ -174,6 +177,26 @@ export default class httpClient {
174177 }
175178
176179
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+
177200 finalizeBuild ( buildId : string , totalSnapshots : number , log : Logger ) {
178201 let params : Record < string , string | number > = { buildId } ;
179202 if ( totalSnapshots > - 1 ) params . totalSnapshots = totalSnapshots ;
@@ -185,7 +208,22 @@ export default class httpClient {
185208 } , log )
186209 }
187210
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+
188225 uploadSnapshot ( ctx : Context , snapshot : ProcessedSnapshot ) {
226+ // Use capsBuildId if provided, otherwise fallback to ctx.build.id
189227 return this . request ( {
190228 url : `/builds/${ ctx . build . id } /snapshot` ,
191229 method : 'POST' ,
@@ -218,6 +256,50 @@ export default class httpClient {
218256 } , ctx . log )
219257 }
220258
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+
221303 uploadScreenshot (
222304 { id : buildId , name : buildName , baseline } : Build ,
223305 ssPath : string , ssName : string , browserName : string , viewport : string , log : Logger
@@ -311,6 +393,22 @@ export default class httpClient {
311393 } , ctx . log )
312394 }
313395
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+
314412 uploadLogs ( ctx : Context , uploadURL : string ) {
315413 const fileStream = fs . createReadStream ( constants . LOG_FILE_PATH ) ;
316414 const { size } = fs . statSync ( constants . LOG_FILE_PATH ) ;
@@ -341,6 +439,20 @@ export default class httpClient {
341439 } , ctx . log )
342440 }
343441
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+
344456 processWebFigma ( requestBody : any , log : Logger ) {
345457 return this . request ( {
346458 url : "figma-web/upload" ,
0 commit comments