Déclencher une fonction à la fin d'une évaluation TestMatrix
Créez une fonction qui se déclenche lorsqu'une évaluation TestMatrix se termine avec le gestionnaire d'événements
functions.testLab.testMatrix().onComplete() :
exports.sendEmailNotification = functions.testLab.testMatrix().onComplete((testMatrix) => {
// ...
});
Gérer les états et les résultats des tests
Chaque exécution de votre fonction reçoit une TestMatrix
qui inclut l'état final de la matrice et des informations permettant de comprendre les problèmes.
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;
});
Accéder aux informations sur le client
Les matrices de test peuvent être créées à partir de différentes sources ou différents workflows. Il est donc souvent souhaitable de
créer des fonctions qui effectuent différentes actions en fonction de la source ou d'un autre contexte important du
test. Pour vous aider, gcloud vous permet de transmettre des informations arbitraires lorsque vous démarrez un test
auxquelles vous pourrez accéder ultérieurement dans votre fonction. Exemple :
gcloud beta firebase test android run \
--app=path/to/app.apk \
--client-details testType=pr,link=https://path/to/pull-request
Exemple de fonction :
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 ...
});