获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

Firebase Test Lab-Trigger

Sie können eine Funktion als Reaktion auf den Abschluss einer Testmatrix in Firebase Test Lab auslösen. Sie können beispielsweise einen Slack-Kanal benachrichtigen oder eine E-Mail senden, wenn ein Test fehlschlägt.

Weitere Anwendungsbeispiele finden Sie unter Was kann ich mit Cloud Functions tun? .

Löst eine Funktion beim Abschluss von TestMatrix aus

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

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

Umgang mit Testzuständen und -ergebnissen

Bei jeder Ausführung Ihrer Funktion wird eine TestMatrix , die den endgültigen Zustand der Matrix und Details zum Verständnis von Problemen 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;
});

Greifen Sie auf Kundendetails zu

Testmatrizen können aus verschiedenen Quellen oder Arbeitsabläufen erstellt werden. Daher ist es oft wünschenswert, Funktionen zu erstellen, die basierend auf der Quelle oder einem anderen wichtigen Kontext des Tests unterschiedliche Aktionen ausführen. Um dies zu unterstützen, ermöglicht Ihnen gcloud , beim Starten eines Tests beliebige Informationen zu übergeben, auf die später in Ihrer Funktion zugegriffen werden kann. Zum 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 ...
});