Firebase Test Lab-Trigger


Funktion bei TestMatrix-Vervollständigung auslösen

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

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

Teststatus und -ergebnisse verarbeiten

Bei jeder Ausführung der Funktion wird ein TestMatrix übergeben. die den endgültigen Zustand der Matrix und Details zum Verständnis der Probleme enthält.

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 Kundendetails zugreifen

Testmatrizen können aus verschiedenen Quellen oder Workflows erstellt werden. Daher ist es oft wünschenswert, Funktionen erstellen, die basierend auf der Quelle oder einem anderen wichtigen Kontext von für den Test. Deshalb können Sie mit gcloud beim Starten eines Tests beliebige Informationen übergeben. auf die Sie später in der Funktion zugreifen können. 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 ...
});