مراسل مخصص
يمكنك كتابة مراسل مخصص لمشغّل اختبارات WDIO مصمم خصيصًا لاحتياجاتك. وهذا أمر سهل!
كل ما عليك فعله هو إنشاء وحدة نمطية تَرِث من حزمة @wdio/reporter، حتى تتمكن من استقبال الرسائل من الاختبار.
الإعداد الأساسي يجب أن يبدو كالتالي:
import WDIOReporter from '@wdio/reporter'
export default class CustomReporter extends WDIOReporter {
constructor(options) {
/*
* جعل المراسل يكتب إلى دفق الإخراج بشكل افتراضي
*/
options = Object.assign(options, { stdout: true })
super(options)
}
onTestPass(test) {
this.write(`Congratulations! Your test "${test.title}" passed 👏`)
}
}
لاستخدام هذا المراسل، كل ما عليك فعله هو تعيينه إلى خاصية reporter في ملف التكوين الخاص بك.
يجب أن يبدو ملف wdio.conf.js الخاص بك كالتالي:
import CustomReporter from './reporter/my.custom.reporter'
export const config = {
// ...
reporters: [
/**
* استخدام فئة المراسل المستوردة
*/
[CustomReporter, {
someOption: 'foobar'
}],
/**
* استخدام المسار المطلق للمراسل
*/
['/path/to/reporter.js', {
someOption: 'foobar'
}]
],
// ...
}
يمكنك أيضًا نشر المراسل على NPM حتى يتمكن الجميع من استخدامه. قم بتسمية الحزمة مثل ال مراسلين الآخرين wdio-<reportername>-reporter، وضع العلامات عليها بكلمات مفتاحية مثل wdio أو wdio-reporter.
معالج الأحداث
يمكنك تسجيل معالج أحداث للعديد من الأحداث التي يتم إطلاقها أثناء الاختبار. ستتلقى جميع المعالجات التالية حمولات مع معلومات مفيدة عن الحالة والتقدم الحالي.
تعتمد بنية كائنات الحمولة هذه على الحدث، وهي موحدة عبر أطر العمل (Mocha و Jasmine و Cucumber). بمجرد تنفيذ مراسل مخصص، يجب أن يعمل لجميع أطر العمل.
تحتوي القائمة التالية على جميع الطرق الممكنة التي يمكنك إضافتها إلى فئة المراسل الخاصة بك:
import WDIOReporter from '@wdio/reporter'
export default class CustomReporter extends WDIOReporter {
onRunnerStart() {}
onBeforeCommand() {}
onAfterCommand() {}
onSuiteStart() {}
onHookStart() {}
onHookEnd() {}
onTestStart() {}
onTestPass() {}
onTestFail() {}
onTestSkip() {}
onTestEnd() {}
onSuiteEnd() {}
onRunnerEnd() {}
}
أسماء الطرق واضحة بذاتها.
لطباعة شيء ما عند حدث معين، استخدم طريقة this.write(...)، التي توفرها فئة WDIOReporter الأصلية. فهي إما تنقل المحتوى إلى stdout، أو إلى ملف سجل (حسب خيارات المراسل).
import WDIOReporter from '@wdio/reporter'
export default class CustomReporter extends WDIOReporter {
onTestPass(test) {
this.write(`Congratulations! Your test "${test.title}" passed 👏`)
}
}
لاحظ أنه لا يمكنك تأجيل تنفيذ الاختبار بأي شكل من الأشكال.
يجب أن تنفذ جميع معالجات الأحداث إجراءات متزامنة (وإلا ستواجه حالات تنافس).
تأكد من الاطلاع على قسم الأمثلة حيث يمكنك العثور على مثال لمراسل مخصص يطبع اسم الحدث لكل حدث.
إذا قمت بتنفيذ مراسل مخصص يمكن أن يكون مفيدًا للمجتمع، فلا تتردد في إجراء طلب سحب حتى نتمكن من جعل المراسل متاحًا للجمهور!