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

Acionadores do Firebase Test Lab

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Você pode acionar uma função em resposta à conclusão de uma matriz de teste no Firebase Test Lab. Por exemplo, você pode notificar um canal do Slack ou enviar um e-mail se um teste falhar.

Para mais exemplos de casos de uso, consulte O que posso fazer com o Cloud Functions? .

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

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

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

Lidar com estados de teste e resultados

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

Acessar 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 com isso, o gcloud permite que você passe informações arbitrárias ao iniciar um teste que pode ser acessado posteriormente em 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 ...
});