TestMatrix tamamlandığında bir işlevi tetikleme
Bir TestMatrix etkinliği, etkinlik işleyiciyle tamamlandığında tetiklenecek yeni bir işlev oluşturunfunctions.testLab.testMatrix().onComplete()
:
exports.sendEmailNotification = functions.testLab.testMatrix().onComplete((testMatrix) => {
// ...
});
Test durumlarını ve sonuçlarını yönetme
İşlevinizin her yürütmesi, matrisin son durumunu ve sorunları anlamanıza yardımcı olacak ayrıntıları içeren bir TestMatrix
'den geçer.
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;
});
İstemci ayrıntılarına erişim
Test matrisleri farklı kaynaklardan veya iş akışlarından oluşturulabilir. Bu nedenle, genellikle testin kaynağına veya diğer önemli bağlamına göre farklı işlemler gerçekleştiren işlevler oluşturmak istenir. Bu konuda size yardımcı olmak için gcloud
, bir testi başlatırken işlevinizde daha sonra erişilebilecek rastgele bilgiler iletmenize olanak tanır. Örneğin:
gcloud beta firebase test android run \
--app=path/to/app.apk \
--client-details testType=pr,link=https://path/to/pull-request
Örnek işlev:
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 ...
});