Amplíe el laboratorio de pruebas de Firebase con funciones en la nube


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