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.

Anwendungsfälle für weitere Beispiel findet Was kann ich mit Cloud - Funktionen? .

Auslösen einer Funktion beim Abschluss der Testmatrix

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

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

Umgang mit Testzuständen und -ergebnissen

Jede Ausführung Ihrer Funktion ist ein übergebenes TestMatrix , die den Endzustand der Matrix und Details zu helfen Probleme verstehen beinhaltet.

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

Testmatrizen können aus verschiedenen Quellen oder Workflows 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 Hilfe bei diesem, gcloud können Sie beliebige Informationen zu übergeben , wenn eine Prüfung starten , die später in Ihrer Funktion zugegriffen werden kann. Beispielsweise:

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