مُسجل التقارير Allure
إضافة مُسجل تقارير لـ WebdriverIO لإنشاء تقارير اختبار Allure.

التثبيت
الطريقة الأسهل هي تضمين @wdio/allure-reporter كتبعية تطوير في ملف package.json الخاص بك.
{
"devDependencies": {
"@wdio/allure-reporter": "^7.0.0"
}
}
يمكنك ببساطة القيام بذلك عن طريق:
npm install @wdio/allure-reporter --save-dev
التكوين
قم بتكوين دليل الإخراج في ملف wdio.conf.js الخاص بك:
export const config = {
// ...
reporters: [['allure', {
outputDir: 'allure-results',
disableWebdriverStepsReporting: true,
disableWebdriverScreenshotsReporting: true,
}]],
// ...
}
outputDirيكون افتراضيًا./allure-results. بعد اكتمال تشغيل الاختبار، ستجد أن هذا الدليل تم ملؤه بملف.xmlلكل مواصفة، بالإضافة إلى عدد من ملفات.txtو.pngومرفقات أخرى.disableWebdriverStepsReporting- معلمة اختيارية (falseبشكل افتراضي)، لتسجيل الخطوات المخصصة فقط في مُسجل التقارير.issueLinkTemplate- معلمة اختيارية، لتحديد نمط رابط المشكلة. سيقوم مُسجل التقارير باستبدال العنصر النائب{}بالقيمة المحددة في معلمة استدعاءaddIssue(value). يتم تطبيق نفس المنطق إذا تم استخدام Cucumber وتم تعيين علامةissueعلى أي مستوى، وسيتم تحويلها إلى رابط في التقرير. مثال قيمة المعلمة:https://example.org/issue/{}tmsLinkTemplate- معلمة اختيارية، لتحديد نمط رابط TMS (نظام إدارة الاختبار). سيقوم مُسجل التقارير باستبدال العنصر النائب{}بالقيمة المحددة في معلمة استدعاءaddTestId(value). يتم تطبيق نفس المنطق إذا تم استخدام Cucumber وتم تعيين علامةtestIdعلى أي مستوى، وسيتم تحويلها إلى رابط في التقرير. مثال قيمة المعلمة:https://example.org/tms/{}disableWebdriverScreenshotsReporting- معلمة اختيارية (falseبشكل افتراضي)، لعدم إرفاق لقطات الشاشة بمُسجل التقارير.useCucumberStepReporter- معلمة اختيارية (falseبشكل افتراضي)، قم بتعيينها إلى true لتغيير تسلسل التقرير عند استخدام cucumber. جربها بنفسك وانظر كيف تبدو.disableMochaHooks- معلمة اختيارية (falseبشكل افتراضي)، قم بتعيينها إلى true لعدم جلب خطافاتbefore/afterstacktrace/screenshot/result إلى مُسجل تقارير Allure.addConsoleLogs- معلمة اختيارية (falseبشكل افتراضي)، قم بتعيينها إلى true لإرفاق سجلات وحدة التحكم من الخطوة إلى مُسجل التقارير.reportedEnvironmentVars(النوع:Record<string, string>) - قم بتعيين هذا الخيار لعرض متغيرات البيئة في التقرير. لاحظ أن تعيين هذا لا يعدل متغيرات البيئة الفعلية.
واجهة برمجة تطبيقات Allure المدعومة
addLabel(name, value)- تعيين تسمية مخصصة للاختبارaddFeature(featureName)– تعيين ميزات للاختبارaddStory(storyName)– تعيين قصة مستخدم للاختبارaddSeverity(value)– تعيين درجة الخطورة للاختبار، يقبل إحدى هذه القيم: blocker، critical، normal، minor، trivialaddTag(value)– تعيين تسمية علامة للاختبارaddEpic(value)– تعيين تسمية ملحمة للاختبارaddOwner(value)– تعيين تسمية مالك للاختبارaddSuite(value)– تعيين تسمية مجموعة للاختبارaddSubSuite(value)– تعيين تسمية مجموعة فرعية للاختبارaddParentSuite(value)– تعيين تسمية مجموعة أصل للاختبارaddIssue(value)– تعيين معرف مشكلة للاختبارaddAllureId(value)– تعيين تسمية معرف اختبار allure للاختبارaddTestId(value)– تعيين معرف اختبار TMS للاختبار- ~~
addEnvironment(name, value)~~ – وظيفة مهملة لم تعد تعمل. استخدمreportedEnvironmentVarsبدلاً من ذلك addAttachment(name, content, [type])– حفظ مرفق للاختبار.name(String) - اسم المرفق.content– محتوى المرفق.type(String، اختياري) – نوع MIME للمرفق،text/plainبشكل افتراضي
addArgument(name, value)- إضافة وسيطة إضافية للاختبارaddDescription(description, [type])– إضافة وصف للاختبار.description(String) - وصف الاختبار.type(String، اختياري) – نوع الوصف،textبشكل افتراضي. القيم ['text'، 'html'،'markdown']
addStep(title, [{content, name = 'attachment'}], [status])- إضافة خطوة للاختبار.title(String) - اسم الخطوة.content(String، اختياري) - مرفق الخطوةname(String، اختياري) - اسم مرفق الخطوة،attachmentبشكل افتراضي.status(String، اختياري) - حالة الخطوة،passedبشكل افتراضي. يجب أن تكون "failed" أو "passed" أو "broken"
startStep(title)- البدء بخطوةtitle(String) - اسم الخطوة.
endStep(status)- الانتهاء من خطوةstatus(String، اختياري) - حالة الخطوة،passedبشكل افتراضي. يجب أن تكون "failed" أو "passed" أو "broken"
step(name, body)- يبدأ خطوة بدالة محتوى بالداخل. يسمح بإنشاء خطوات بتسلسل هرمي لا نهائيbody(Function) - دالة متزامنة لجسم الخطوة
الاستخدام
يمكن الوصول إلى واجهة برمجة تطبيقات Allure باستخدام:
CJS
const allureReporter = require('@wdio/allure-reporter').default
ESM
import allureReporter from '@wdio/allure-reporter'
مثال Mocha
describe('Suite', () => {
it('Case', () => {
allureReporter.addFeature('Feature')
})
})
Cucumber
مثال أساسي على Cucumber:
Given('I include feature and story name', () => {
allureReporter.addFeature('Feature_name');
allureReporter.addStory('Story_name');
})
خطوات مخصصة
تبسط طريقة step التعامل مع الخطوات لأن كل خطوة تقدم كدالة متزامنة مع أي محتوى بالداخل.
الوسيطة الأولى للدالة هي الخطوة الحالية، التي تحتوي على معظم طرق واجهة برمجة تطبيقات allure (مثل label و epic و attach إلخ):
allureReporter.step('my step name', async (s1) => {
s1.label('foo', 'bar')
await s1.step('my child step name', async (s2) => {
// you can add any combination of steps in the body function
})
})
علامات Cucumber
يتم تحويل علامات Cucumber ذات الأسماء الخاصة (issue و testId) إلى روابط (يجب تكوين قوالب الروابط المقابلة مسبقًا):
@issue=BUG-1
@testId=TST-2
Feature: This is a feature with global tags that will be converted to Allure links
@issue=BUG-3
@testId=TST-4
Scenario: This is a scenario with tags that will be converted to Allure links
Given I do something
يتم تعيين علامات Cucumber ذات الأسماء الخاصة (feature) إلى تسميات Allure:
Feature: Test user role
@feature=login
Scenario: Login
Given I test login
عرض التقرير
يمكن استهلاك النتائج بواسطة أي من أدوات إعداد التقارير التي يقدمها Allure. على سبيل المثال:
سطر الأوامر
قم بتثبيت أداة سطر الأوامر Allure، ومعالجة دليل النتائج:
allure generate [allure_output_dir] && allure open
سيقوم هذا بإنشاء تقرير (بشكل افتراضي في ./allure-report)، وفتحه في متصفحك.
إنشاء تقرير تلقائيًا
يمكنك أيضًا إنشاء التقرير تلقائيًا باستخدام أداة سطر الأوامر Allure برمجيًا. للقيام بذلك، قم بتثبيت الحزمة في مشروعك بواسطة:
npm i allure-commandline
ثم أضف أو قم بتوسيع خطاف onComplete الخاص بك أو قم بإنشاء خدمة مخصصة لهذا:
// wdio.conf.js
const allure = require('allure-commandline')
export const config = {
// ...
onComplete: function() {
const reportError = new Error('Could not generate Allure report')
const generation = allure(['generate', 'allure-results', '--clean'])
return new Promise((resolve, reject) => {
const generationTimeout = setTimeout(
() => reject(reportError),
5000)
generation.on('exit', function(exitCode) {
clearTimeout(generationTimeout)
if (exitCode !== 0) {
return reject(reportError)
}
console.log('Allure report successfully generated')
resolve()
})
})
}
// ...
}
Jenkins
قم بتثبيت وتكوين إضافة Jenkins لـ Allure
إضافة لقطات الشاشة
يمكن إرفاق لقطات الشاشة بالتقرير باستخدام وظيفة takeScreenshot من WebDriverIO في خطاف afterTest لـ Mocha و Jasmine أو خطاف afterStep لـ Cucumber.
قم أولاً بتعيين disableWebdriverScreenshotsReporting: false في خيارات مسجل التقارير، ثم أضف في خطاف afterStep:
Mocha / Jasmine
afterTest: async function(test, context, { error, result, duration, passed, retries }) {
if (error) {
await browser.takeScreenshot();
}
}
Cucumber
afterStep: async function (step, scenario, { error, duration, passed }, context) {
if (error) {
await browser.takeScreenshot();
}
}
كما هو موضح في المثال أعلاه، عندما يتم استدعاء هذه الوظيفة، سيتم إرفاق صورة لقطة الشاشة بتقرير allure.