مُسجل CucumberJS JSON
wdio-cucumberjs-json-reporter هو حزمة من طرف ثالث، لمزيد من المعلومات يرجى الاطلاع على GitHub | npm
مُسجل WDIO يقوم بإنشاء ملفات CucumberJS JSON لـ WebdriverIO v8 وما فوق.
ماذا يفعل
سيقوم هذا المُسجل بإنشاء ملف Cucumber JSON لكل ميزة يتم اختبارها. يمكن استخدام ملف JSON مع أي تقرير ترغب في استخدامه مثل multiple-cucumber-html-reporter.
سيقوم أيضًا بإضافة البيانات الوصفية حول مثيل التشغيل إلى ملف الميزة، وأخيرًا وليس آخرًا، سيمنحك فرصة إضافة مرفقات إلى مخرجات JSON.
التثبيت
الطريقة الأسهل هي الاحتفاظ بـ wdio-cucumberjs-json-reporter
كتبعية تطوير في ملف package.json
الخاص بك.
{
"devDependencies": {
"wdio-cucumberjs-json-reporter": "^5.0.0"
}
}
يمكنك القيام بذلك ببساطة عن طريق:
npm install wdio-cucumberjs-json-reporter --save-dev
وبذلك ستتم إضافته تلقائيًا إلى ملف package.json
الخاص بك
يمكن العثور على تعليمات حول كيفية تثبيت WebdriverIO
هنا.
التكوين
قم بتكوين دليل الإخراج واللغة في ملف wdio.conf.js الخاص بك:
export const config = {
// ...
reporters: [
// ه كذا مع الخيارات الافتراضية، انظر الخيارات أدناه
'cucumberjs-json',
// أو هكذا إذا كنت تريد تعيين المجلد واللغة
[ 'cucumberjs-json', {
jsonFolder: '.tmp/new/',
language: 'en',
},
],
],
// ...
}
لا تستخدم كلا الطريقتين لإضافة المُسجل، هذا مجرد مثال!
الخيارات
jsonFolder
- النوع:
String
- إلزامي: لا
- الافتراضي:
.tmp/json/
الدليل الذي سيتم تخزين ملفات JSON التي ينشئها هذا التقرير فيه، بالنسبة إلى المكان الذي يتم فيه بدء البرنامج النصي.
ملاحظة: إذا كنت تستخدم نصًا من npm من سطر الأوامر، مثل npm run test
فسيكون jsonFolder
نسبيًا من المسار حيث يتم تنفيذ البرنامج النصي. سيؤدي تنفيذه من جذر مشروعك أيضًا إلى إنشاء jsonFolder
في جذر مشروعك.
language
- النوع:
String
- إلزامي: لا
- الافتراضي:
en
اللغة التي تُكتب بها سيناريوهات Gherkin (الافتراضية هي الإنجليزية). يمكن العثور على قائمة رموز اللغة وكلماتها الرئيسية هنا.
disableHooks
- النوع:
boolean
- إلزامي: لا
- الافتراضي:
false
لن تكون تفاصيل Hook جزءًا من الإنشاء إذا تم تعيين هذه الخاصية إلى true
.
reportFilePerRetry
- النوع:
boolean
- إلزامي: لا
- الافتراضي:
true
عندما تتم إعادة محاولة المواصفات، سيتم إضافة التقرير إلى ملف التقرير الحالي من المحاولات السابقة إذا تم تعيين هذه الخاصية إلى false
.
مثال:
['cucumberjs-json', { jsonFolder: '.tmp/new/', language: 'en', disableHooks:true}]
البيانات الوصفية
ملاحظة:
هذا غير مدعوم حاليًا إذا كنت تستخدم WebdriverIO V6، لا يزال WebdriverIO V5 يدعم هذا و WebdriverIO V7 يدعمه مرة أخرى
كما قيل، يمكن لهذا التقرير تخزين البي انات الوصفية للجهاز / الآلة الحالية التي تم تنفيذ الميزة عليها تلقائيًا.
لتخصيص ذلك يمكنك إضافته عن طريق إضافة الكائن التالي إلى capabilities
الخاص بك
// مثال wdio.conf.js
export const config = {
//..
capabilities: [
{
browserName: 'chrome',
// أضف هذا
'cjson:metadata': {
// للمتصفح
browser: {
name: 'chrome',
version: '58',
},
// للتطبيق
app: {
name: 'name.of.app.ipa',
version: '1.2.3',
},
device: 'MacBook Pro 15',
platform: {
name: 'OSX',
version: '10.12.6'
}
},
},
],
};
يجب أن يحتوي كائن البيانات الوصفية على بادئة
cjson
، وإلا فلن يعمل!
قيم البيانات الوصفية
metadata.app.name
- النوع:
string
مثال: اسم التطبيق.
metadata.app.version
- النوع:
string
مثال: إصدار التطبيق.
metadata.browser.name
- النوع:
string
- القيم الممكنة:
internet explorer | edge | chrome | firefox | safari
metadata.browser.version
- النوع:
string
مثال: إصدار المتصفح، يمكن إضافة هذا يدويًا أو استرداده أثناء تنفيذ الاختبارات للحصول على رقم الإصدار الدقيق.
metadata.device
- النوع:
string
مثال: اسم يمثل نوع الجهاز. على سبيل المثال، إذا قمت بتشغيله على جهاز افتراضي، يمكنك وضعه هنا Virtual Machine
،
أو اسم الجوال، مثل iPhone 7 Plus
.
metadata.platform.name
- النوع:
string
- القيم الممكنة:
windows | osx | linux | ubuntu | android | ios
metadata.platform.version
- النوع:
string
مثال: إصدار المنصة
إذا لم تقدم كائن
browser
في البيانات الوصفية، ستقوم هذه الوحدة بتحديده تلقائيًا لك. ستقوم دائمًا باستبدالها بأحدث قيمة يمكنها تحديدها.
إذا لم تقدم
device
و/أو كائنplatform
سيتم تعيينه افتراضيًا لك إلىnot known
إذا لم تقدم
browser.name
أوbrowser.version
ستحاول الوحدة تحديد ذلك تلقائيًا.
المرفقات
لديك خيار إرفاق البيانات بملف JSON في كل هذه الخطافات / الخطوات:
- Before(All)
- After(All)
- Given
- When
- Then
- And
الشيء الوحيد الذي تحتاج إلى توفيره هو الكود التالي في ملفات الخطوات الخاصة بك.
لوحدات ES (ESM)
import cucumberJson from 'wdio-cucumberjs-json-reporter';
// إرفاق سلسلة (إذا لم يتم توفير نوع ، فستكون افتراضيًا `text/plain`)
cucumberJson.attach('just a string');
cucumberJson.attach('just a second string', 'text/plain');
// إرفاق JSON
cucumberJson.attach({"json-string": true}, 'application/json');
// إرفاق لقطة شاشة في خطاف قبل
cucumberJson.attach(await browser.takeScreenshot(), 'image/png');
لـ CommonJS (CJS)
const { attach } = require("wdio-cucumberjs-json-reporter");
// إرفاق سلسلة (إذا لم يتم توفير نوع ، فستكون افتراضيًا `text/plain`)
attach('just a string');
attach('just a second string', 'text/plain');
// إرفاق JSON
attach({"json-string": true}, 'application/json');
// إرفاق لقطة شاشة في خطاف قبل
attach(await browser.takeScreenshot(), 'image/png');
استخدامه مع multiple-cucumber-html-reporter
الوحدة السابقة لـ WebdriverIO V4، wdio-multiple-cucumber-html-reporter،
كان لديها اتصال مدمج مع وحدة multiple-cucumber-html-reporter. هذا ليس هو الحال مع هذا
المُسجل لأن الإعداد الجديد لـ WebdriverIO V5 يعتمد على مثيل لا يسمح لي باستخدام الخطاف onPrepare
و onComplete
.
إذا كنت لا تزال ترغب في استخدام وحدة multiple-cucumber-html-reporter يمكنك إضافة ما يلي إلى ملف التكوين الخاص بك.
-
قم بتثبيت الوحدة باستخدام
npm install multiple-cucumber-html-reporter --save-dev
-
أضف هذا إلى ملف التكوين الخاص بك
import fs from 'node:fs/promises'
// قم باستيراد الوحدة
import { generate } from 'multiple-cucumber-html-reporter'
// مثال wdio.conf.js
export const config = {
//..
// =====
// Hooks
// =====
/**
* يتم تنفيذه مرة واحدة قبل إطلاق جميع العمال.
*/
onPrepare: () => {
// إزالة مجلد `.tmp/` الذي يحتوي على ملفات json والتقارير
return fs.rm('.tmp/', { recursive: true });
},
/**
* يتم تنفيذه بعد إغلاق جميع العمال وعلى وشك الخروج من العملية.
*/
onComplete: () => {
// إنشاء التقرير عند الانتهاء من جميع الاختبارات
generate({
// مطلوب
// يجب أن يكون هذا الجزء هو نفس المسار الذي تخزن فيه ملفات JSON
// الافتراضي = '.tmp/json/'
jsonDir: '.tmp/json/',
reportPath: '.tmp/report/',
// لمزيد من الخيارات راجع https://github.com/wswebcreation/multiple-cucumber-html-reporter#options
});
}
}
إصدارات WebdriverIO القديمة
هذه الوحدة يمكنها العمل فقط مع WebdriverIO V8+!
للإصدار V6 يرجى التحقق من الوثائق هنا واستخدام الإصدار 2.0.4
للإصدار V5 يرجى التحقق من الوثائق هنا واستخدام الإصدار 1.3.0
هذه الوحدة ليست بديلاً عن wdio-multiple-cucumber-html-reporter. تلك الوحدة تدعم فقط WEBDRIVERIO V4 وتنشئ أيضًا تقريرًا. هذه الوحدة تنشئ فقط JSON، وليس تقريرًا!!