Test Lab-Trigger (1. Generation)

Funktion beim Abschluss von TestMatrix auslösen

Erstellen Sie eine neue Funktion, die ausgelöst wird, wenn eine TestMatrix abgeschlossen ist, mit dem Ereignishandler functions.testLab.testMatrix().onComplete():

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

Teststatus und -ergebnisse verarbeiten

Bei jeder Ausführung Ihrer Funktion wird eine TestMatrix übergeben, die den endgültigen Status der Matrix und Details enthält, die zum Verständnis von Problemen beitragen.

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

Auf Clientdetails zugreifen

Testmatrizen können aus verschiedenen Quellen oder Workflows erstellt werden. Daher ist es oft wünschenswert, Funktionen zu erstellen, die je nach Quelle oder anderem wichtigen Kontext des Tests unterschiedliche Aktionen ausführen. Zu diesem Zweck können Sie mit gcloud beim Starten eines Tests beliebige Informationen übergeben, auf die später in Ihrer Funktion zugegriffen werden kann. Beispiel:

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

Beispielfunktion:

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