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