Ir a la consola

Activadores de Firebase Test Lab

Puedes activar una función en respuesta a la finalización de una matriz de prueba en Firebase Test Lab. Por ejemplo, puedes notificar a un canal de Slack o enviar un correo electrónico si falla una prueba.

Para ver más ejemplos de casos prácticos, consulta ¿Qué puedo hacer con Cloud Functions?

Activa una función cuando finalice TestMatrix

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

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

Maneja estados y resultados de prueba

Cada ejecución de tu función recibe 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;
});

Accede a los detalles del cliente

Las matrices de prueba se pueden crear a partir de diferentes fuentes o flujos de trabajo. Por lo tanto, a menudo se recomienda crear funciones que realicen diferentes acciones basadas en la fuente o en otro contexto importante de la prueba. Para ayudarte con esto, cuando inicias una prueba, gcloud te permite pasar información arbitraria a la que puedas 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 ...
});