Test Lab triggers (1st gen)

Trigger a function on TestMatrix completion

Create a new function that triggers when a TestMatrix completes with the event handler functions.testLab.testMatrix().onComplete() :

  exports 
 . 
 sendEmailNotification 
  
 = 
  
 functions 
 . 
 testLab 
 . 
 testMatrix 
 () 
 . 
 onComplete 
 (( 
 testMatrix 
 ) 
  
 = 
>  
 { 
  
 // 
  
 ... 
 }); 
 

Handle test states and outcomes

Each execution of your function is passed a TestMatrix which includes the final state of the matrix and details to help understand problems.

  exports 
 . 
 handleTestMatrixCompletion 
  
 = 
  
 functions 
 . 
 testLab 
 . 
 testMatrix 
 () 
 . 
 onComplete 
 ( 
 testMatrix 
  
 = 
>  
 { 
  
 const 
  
 matrixId 
  
 = 
  
 testMatrix 
 . 
 testMatrixId 
 ; 
  
 switch 
  
 ( 
 testMatrix 
 . 
 state 
 ) 
  
 { 
  
 case 
  
 'FINISHED' 
 : 
  
 console 
 . 
 log 
 ( 
 ` 
 TestMatrix 
  
 $ 
 { 
 matrixId 
 } 
  
 finished 
  
 with 
  
 outcome 
 : 
  
 $ 
 { 
 testMatrix 
 . 
 outcomeSummary 
 } 
 ` 
 ); 
  
 break 
 ; 
  
 case 
  
 'INVALID' 
 : 
  
 console 
 . 
 log 
 ( 
 ` 
 TestMatrix 
  
 $ 
 { 
 matrixId 
 } 
  
 was 
  
 marked 
  
 as 
  
 invalid 
 : 
  
 $ 
 { 
 testMatrix 
 . 
 invalidMatrixDetails 
 } 
 ` 
 ); 
  
 break 
 ; 
  
 default 
 : 
  
 console 
 . 
 log 
 ( 
 ` 
 TestMatrix 
  
 $ 
 { 
 matrixId 
 } 
  
 completed 
  
 with 
  
 state 
  
 $ 
 { 
 testMatrix 
 . 
 state 
 } 
 ` 
 ); 
  
 } 
  
 return 
  
 null 
 ; 
 }); 
 

Access client details

Test matrices may be created from different sources or workflows. It is therefore often desirable to create functions that perform different actions based on the source or other important context of the test. To help with this, gcloud allows you to pass arbitrary information when starting a test that can be accessed later in your function. For example:

 gcloud beta firebase test android run \
    --app=path/to/app.apk \
    --client-details testType=pr,link=https://path/to/pull-request 

Example function:

  exports 
 . 
 notifyOnPullRequestFailure 
  
 = 
  
 functions 
 . 
 testLab 
 . 
 testMatrix 
 () 
 . 
 onComplete 
 ( 
 testMatrix 
  
 = 
>  
 { 
  
 if 
  
 ( 
 testMatrix 
 . 
 clientInfo 
 . 
 details 
 [ 
 'testType' 
 ] 
  
 != 
  
 'pr' 
 ) 
  
 { 
  
 // 
  
 Not 
  
 a 
  
 pull 
  
 request 
  
 return 
  
 null 
 ; 
  
 } 
  
 if 
  
 ( 
 testMatrix 
 . 
 state 
  
 == 
  
 'FINISHED' 
 && 
 testMatrix 
 . 
 outcomeSummary 
  
 == 
  
 'SUCCESS' 
 ) 
  
 { 
  
 // 
  
 No 
  
 failure 
  
 return 
  
 null 
 ; 
  
 } 
  
 const 
  
 link 
  
 = 
  
 testMatrix 
 . 
 clientInfo 
 . 
 details 
 [ 
 'link' 
 ]; 
  
 let 
  
 message 
  
 = 
  
 ` 
 Test 
  
 Lab 
  
 validation 
  
 for 
  
 pull 
  
 request 
  
 $ 
 { 
 link 
 } 
  
 failed 
 . 
  
 ` 
 ; 
  
 if 
  
 ( 
 !! 
 testMatrix 
 . 
 resultStorage 
 . 
 resultsUrl 
 ) 
  
 { 
  
 message 
  
 += 
  
 ` 
 Test 
  
 results 
  
 available 
  
 at 
  
 $ 
 { 
 testMatrix 
 . 
 resultStorage 
 . 
 resultsUrl 
 } 
 . 
  
 ` 
 ; 
  
 } 
  
 // 
  
 Send 
  
 notification 
  
 here 
  
 ... 
 }); 
 
Create a Mobile Website
View Site in Mobile | Classic
Share by: