الأُطر
يمتلك مشغل WebdriverIO دعمًا مدمجًا لـ Mocha، و Jasmine، و Cucumber.js. يمكنك أيضًا دمجه مع أطر عمل مفتوحة المصدر من طرف ثالث، مثل Serenity/JS.
لدمج WebdriverIO مع إطار اختبار، تحتاج إلى حزمة محول متوفرة على NPM. لاحظ أنه يجب تثبيت حزمة المحول في نفس الموقع الذي تم فيه تثبيت WebdriverIO. لذلك، إذا قمت بتثبيت WebdriverIO بشكل عام، تأكد من تثبيت حزمة المحول بشكل عام أيضًا.
يتيح لك دمج WebdriverIO مع إطار اختبار الوصول إلى مثيل WebDriver باستخدام متغير browser العام
في ملفات المواصفات أو تعريفات الخطوات الخاصة بك.
لاحظ أن WebdriverIO سيتولى أيضًا مسؤولية تهيئة وإنهاء جلسة Selenium، لذلك لا تحتاج إلى القيام بذلك
بنفسك.
استخدام Mocha
أولاً، قم بتثبيت حزمة المحول من NPM:
- npm
- Yarn
- pnpm
- Bun
npm install @wdio/mocha-framework --save-dev
yarn add @wdio/mocha-framework --dev
pnpm add @wdio/mocha-framework --save-dev
bun add @wdio/mocha-framework --dev
بشكل افتراضي، يوفر WebdriverIO مكتبة تأكيد مدمجة يمكنك استخدامها فورًا:
describe('my awesome website', () => {
it('should do some assertions', async () => {
await browser.url('https://webdriver.io')
await expect(browser).toHaveTitle('WebdriverIO · Next-gen browser and mobile automation test framework for Node.js | WebdriverIO')
})
})
يدعم WebdriverIO واجهات Mocha BDD (الافتراضية)، و TDD، و QUnit interfaces.
إذا كنت ترغب في كتابة مواصفاتك بنمط TDD، قم بتعيين خاصية ui في تكوين mochaOpts الخاص بك إلى tdd. الآن يجب كتابة ملفات الاختبار الخاصة بك على النحو التالي:
suite('my awesome website', () => {
test('should do some assertions', async () => {
await browser.url('https://webdriver.io')
await expect(browser).toHaveTitle('WebdriverIO · Next-gen browser and mobile automation test framework for Node.js | WebdriverIO')
})
})
إذا كنت ترغب في تحديد إعدادات أخرى خاصة بـ Mocha، يمكنك القيام بذلك باستخدام مفتاح mochaOpts في ملف التكوين الخاص بك. يمكن العثور على قائمة بجميع الخيارات على موقع مشروع Mocha.
ملاحظة: لا يدعم WebdriverIO الاستخدام المهمل لمعاودات استدعاء done في Mocha:
it('should test something', (done) => {
done() // يرمي خطأ "done is not a function"
})
خيارات Mocha
يمكن تطبيق الخيارات التالية في ملف wdio.conf.js الخاص بك لتكوين بيئة Mocha الخاصة بك. ملاحظة: لا يتم دعم جميع الخيارات، على سبيل المثال، سيؤدي تطبيق خيار parallel إلى حدوث خطأ لأن مشغل اختبار WDIO لديه طريقته الخاصة لتشغيل الاختبارات بالتوازي. يمكنك تمرير خيارات الإطار هذه كوسيطات، على سبيل المثال:
wdio run wdio.conf.ts --mochaOpts.grep "my test" --mochaOpts.bail --no-mochaOpts.checkLeaks
هذا سيمرر خيارات Mocha التالية:
{
grep: ['my-test'],
bail: true
checkLeacks: false
}
خيارات Mocha التالية مدعومة:
require
يُعد خيار require مفيدًا عندما تريد إضافة أو توسيع بعض الوظائف الأساسية (خيار إطار WebdriverIO).
النوع: string|string[]
الافتراضي: []
compilers
استخدم الوحدة (الوحدات) المحددة لتجميع الملفات. سيتم تضمين المترجم ات قبل المتطلبات (خيار إطار WebdriverIO).
النوع: string[]
الافتراضي: []
allowUncaught
نشر الأخطاء غير المعالجة.
النوع: boolean
الافتراضي: false
bail
الخروج بعد فشل الاختبار الأول.
النوع: boolean
الافتراضي: false
checkLeaks
التحقق من تسريبات المتغيرات العالمية.
النوع: boolean
الافتراضي: false
delay
تأخير تنفيذ المجموعة الجذرية.
النوع: boolean
الافتراضي: false
fgrep
فلتر الاختبار بالسلسلة المحددة.
النوع: string
الافتراضي: null
forbidOnly
الاختبارات المميزة بـ only تفشل المجموعة.
النوع: boolean
الافتراضي: false
forbidPending
الاختبارات المعلقة تفشل المجموعة.
النوع: boolean
الافتراضي: false
fullTrace
تتبع الكامل عند الفشل.
النوع: boolean
الافتراضي: false
global
المتغيرات المتوقعة في النطاق العالمي.
النوع: string[]
الافتراضي: []
grep
فلتر الاختبار بالتعبير النمطي المحدد.
النوع: RegExp|string
الافتراضي: null
invert
عكس تطابقات فلتر الاختبار.
النوع: boolean
الافتراضي: false
retries
عدد مرات إعادة محاولة الاختبارات الفاشلة.
النوع: number
الافتراضي: 0
timeout
قيمة الحد الزمني للمهلة (بالميللي ثانية).
النوع: number
الافتراضي: 30000
استخدام Jasmine
أولاً، قم بتثبيت حزمة المحول من NPM:
- npm
- Yarn
- pnpm
- Bun
npm install @wdio/jasmine-framework --save-dev
yarn add @wdio/jasmine-framework --dev
pnpm add @wdio/jasmine-framework --save-dev
bun add @wdio/jasmine-framework --dev
يمكنك بعد ذلك تكوين بيئة Jasmine الخاصة بك عن طريق تعيين خاصية jasmineOpts في التكوين الخاص بك. يمكن العثور على قائمة بجميع الخيارات على موقع مشروع Jasmine.
خيارات Jasmine
يمكن تطبيق الخيارات التالية في ملف wdio.conf.js الخاص بك لتكوين بيئة Jasmine الخاصة بك باستخدام خاصية jasmineOpts. لمزيد من المعلومات حول خيارات التكوين هذه، راجع وثائق Jasmine. يمكنك تمرير خيارات الإطار هذه كوسيطات، على سبيل المثال:
wdio run wdio.conf.ts --jasmineOpts.grep "my test" --jasmineOpts.failSpecWithNoExpectations --no-jasmineOpts.random
هذا سيمرر خيارات Mocha التالية:
{
grep: ['my-test'],
bail: true
checkLeacks: false
}
خيارات Jasmine التالية مدعومة:
defaultTimeoutInterval
فترة المهلة الافتراضية لعمليات Jasmine.
النوع: number
الافتراضي: 60000
helpers
مصفوفة من مسارات الملفات (والتعبيرات النمطية) نسبة إلى spec_dir ليتم تضمينها قبل مواصفات jasmine.
النوع: string[]
الافتراضي: []
requires
خيار requires مفيد عندما تريد إضافة أو توسيع بعض الوظائف الأساسية.
النوع: string[]
الافتراضي: []
random
ما إذا كان سيتم عشوائية ترتيب تنفيذ المواصفات.
النوع: boolean
الافتراضي: true
seed
البذرة المستخدمة كأساس للعشوائية. قيمة null تتسبب في تحديد البذرة بشكل عشوائي في بداية التنفيذ.
النوع: Function
الافتراضي: null
failSpecWithNoExpectations
ما إذا كان سيتم فشل المواصفات إذا لم تقم بتشغيل أي توقعات. افتراضيًا، يتم الإبلاغ عن المواصفات التي لم تشغل أي توقعات كاجتياز. تعيين هذه القيمة إلى true سيبلغ عن هذه المواصفات كفشل.
النوع: boolean
الافتراضي: false
oneFailurePerSpec
ما إذا كان سيتم تسبب المواصفات في أن يكون لها فشل واحد فقط للتوقع.
النوع: boolean
الافتراضي: false
specFilter
الدالة المستخدمة لتصفية المواصفات.
النوع: Function
الافتراضي: (spec) => true
grep
تشغيل الاختبارات التي تطابق هذه السلسلة أو التعبير النمطي فقط. (ينطبق فقط إذا لم يتم تعيين دالة specFilter مخصصة)
النوع: string|Regexp
الافتراضي: null