Aktywatory Laboratorium Firebase


Uruchamianie funkcji po zakończeniu TestMatrix

Utwórz nową funkcję, która zostanie uruchomiona po zakończeniu TestMatrix za pomocą funkcji obsługi zdarzeń:functions.testLab.testMatrix().onComplete()

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

Obsługa stanów i wyników testów

Każde wykonanie funkcji jest przekazywane w postaci TestMatrix, która zawiera końcowy stan macierzy i szczegóły, które pomagają zrozumieć problemy.

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

Dostęp do informacji o kliencie

Macierze testów mogą być tworzone na podstawie różnych źródeł lub przepływów pracy. Dlatego często warto tworzyć funkcje, które wykonują różne działania na podstawie źródła lub innego ważnego kontekstu testu. Aby Ci to ułatwić, funkcja gcloud umożliwia przekazywanie dowolnych informacji podczas uruchamiania testu, do których można później uzyskać dostęp w ramach funkcji. Przykład:

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

Przykładowa funkcja:

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