مُسجل التقارير 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/after
stacktrace/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.