Memicu fungsi pada penyelesaian TestMatrix
Buat fungsi baru yang akan dipicu saat TestMatrix selesai dengan pengendali peristiwa functions.testLab.testMatrix().onComplete()
:
exports.sendEmailNotification = functions.testLab.testMatrix().onComplete((testMatrix) => {
// ...
});
Menangani status dan hasil pengujian
TestMatrix
yang berisi status akhir matriks dan detail akan diteruskan ke setiap eksekusi fungsi Anda untuk membantu memahami masalah.
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;
});
Mengakses detail klien
Matriks uji dapat dibuat dari berbagai sumber atau alur kerja. Oleh sebab itu, sebaiknya Anda membuat fungsi yang dapat melakukan berbagai tindakan berdasarkan sumber atau konteks penting pengujian. Untuk membantu melakukan tugas ini, gcloud
memungkinkan Anda meneruskan informasi arbitrer saat memulai pengujian yang dapat diakses nanti di fungsi Anda. Contoh:
gcloud beta firebase test android run \
--app=path/to/app.apk \
--client-details testType=pr,link=https://path/to/pull-request
Fungsi contoh:
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 ...
});