Amplie o Firebase Test Lab com Cloud Functions


Acione uma função na conclusão do TestMatrix

Crie uma nova função que é acionada quando um TestMatrix é concluído com o manipulador de eventos functions.testLab.testMatrix().onComplete() :

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

Lidar com estados e resultados de teste

Cada execução de sua função recebe um TestMatrix que inclui o estado final da matriz e detalhes para ajudar a entender os problemas.

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

Acesse detalhes do cliente

As matrizes de teste podem ser criadas a partir de diferentes fontes ou fluxos de trabalho. Portanto, muitas vezes é desejável criar funções que executem ações diferentes com base na fonte ou em outro contexto importante do teste. Para ajudar nisso, gcloud permite que você passe informações arbitrárias ao iniciar um teste que pode ser acessado posteriormente na sua função. Por exemplo:

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

Função de exemplo:

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