Activadores del laboratorio de pruebas de Firebase


Activar una función al finalizar TestMatrix

Cree una nueva función que se active cuando TestMatrix se complete con el controlador de eventos functions.testLab.testMatrix().onComplete() :

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

Manejar estados y resultados de pruebas

A cada ejecución de su función se le pasa una TestMatrix que incluye el estado final de la matriz y detalles para ayudar a comprender los problemas.

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;
});

Acceder a los datos del cliente

Las matrices de prueba se pueden crear a partir de diferentes fuentes o flujos de trabajo. Por lo tanto, a menudo es deseable crear funciones que realicen diferentes acciones según el origen u otro contexto importante de la prueba. Para ayudar con esto, gcloud te permite pasar información arbitraria al iniciar una prueba a la que se puede acceder más adelante en tu función. Por ejemplo:

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

Función de ejemplo:

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 ...
});