Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Триггеры тестовой лаборатории Firebase

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

Вы можете активировать функцию в ответ на завершение тестовой матрицы в Firebase Test Lab. Например, вы можете уведомить канал Slack или отправить электронное письмо, если тест не пройден.

Дополнительные примеры использования см. в разделе Что можно делать с облачными функциями? .

Запуск функции по завершению TestMatrix

Создайте новую функцию, которая срабатывает при завершении TestMatrix с помощью обработчика событий functions.testLab.testMatrix().onComplete() :

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

Обработка тестовых состояний и результатов

При каждом выполнении вашей функции передается TestMatrix , который включает окончательное состояние матрицы и детали, помогающие понять проблемы.

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

Доступ к сведениям о клиенте

Тестовые матрицы могут быть созданы из разных источников или рабочих процессов. Поэтому часто желательно создавать функции, которые выполняют различные действия в зависимости от источника или другого важного контекста теста. Чтобы помочь в этом, gcloud позволяет вам передавать произвольную информацию при запуске теста, к которой можно получить доступ позже в вашей функции. Например:

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

Пример функции:

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