تخطى إلى المحتوى الرئيسي

المُشغّل

المُشغّل في WebdriverIO ينظم كيف وأين يتم تشغيل الاختبارات عند استخدام مشغّل الاختبار. يدعم WebdriverIO حاليًا نوعين مختلفين من المشغلات: المشغّل المحلي ومشغّل المتصفح.

المشغّل المحلي​

يبدأ المشغّل المحلي إطار العمل الخاص بك (مثل Mocha أو Jasmine أو Cucumber) ضمن عملية عامل ويشغّل جميع ملفات الاختبار الخاصة بك في بيئة Node.js. يتم تشغيل كل ملف اختبار في عملية عامل منفصلة لكل قدرة مما يسمح بأقصى قدر من التزامن. تستخدم كل عملية عامل نسخة واحدة من المتصفح وبالتالي تدير جلسة المتصفح الخاصة بها مما يسمح بأقصى قدر من العزل.

نظرًا لأن كل اختبار يتم تشغيله في عملية معزولة خاصة به، فإنه من غير الممكن مشاركة البيانات عبر ملفات الاختبار. هناك طريقتان للتغلب على هذا:

إذا لم يتم تحديد أي شيء آخر في ملف wdio.conf.js، فإن المشغّل المحلي هو المشغّل الافتراضي في WebdriverIO.

التثبيت​

لاستخدام المشغّل المحلي، يمكنك تثبيته عبر:

npm install --save-dev @wdio/local-runner

الإعداد​

المشغّل المحلي هو المشغّل الافتراضي في WebdriverIO لذا لا داعي لتحديده ضمن ملف wdio.conf.js. إذا كنت ترغب في تعيينه بشكل صريح، يمكنك تعريفه على النحو التالي:

// wdio.conf.js
export const {
// ...
runner: 'local',
// ...
}

مشغّل المتصفح​

على عكس المشغّل المحلي، فإن مشغّل المتصفح يبدأ وينفذ الإطار داخل المتصفح. هذا يسمح لك بتشغيل اختبارات الوحدة أو اختبارات المكونات في متصفح حقيقي بدلاً من JSDOM مثل العديد من أطر الاختبار الأخرى.

في حين أن JSDOM يستخدم على نطاق واسع لأغراض الاختبار، إلا أنه في النهاية ليس متصفحًا حقيقيًا ولا يمكنك محاكاة بيئات الجوال معه. باستخدام هذا المشغّل، يتيح لك WebdriverIO تشغيل اختباراتك في المتصفح بسهولة واستخدام أوامر WebDriver للتفاعل مع العناصر المعروضة على الصفحة.

فيما يلي نظرة عامة على تشغيل الاختبارات داخل JSDOM مقابل مشغّل المتصفح WebdriverIO

JSDOMمشغّل متصفح WebdriverIO
1.يشغّل اختباراتك داخل Node.js باستخدام إعادة تنفيذ معايير الويب، وخاصة WHATWG DOM ومعايير HTMLينفذ اختبارك في متصفح حقيقي ويشغّل الكود في بيئة يستخدمها المستخدمون
2.يمكن فقط محاكاة التفاعلات مع المكونات عبر JavaScriptيمكنك استخدام واجهة برمجة تطبيقات WebdriverIO للتفاعل مع العناصر من خلال بروتوكول WebDriver
3.دعم Canvas يتطلب تبعيات إضافية وله قيودلديك وصول إلى واجهة برمجة تطبيقات Canvas الحقيقية
4.لدى JSDOM بعض الملاحظات وواجهات برمجة الويب غير المدعومةجميع واجهات برمجة الويب مدعومة لأن الاختبار يتم في متصفح حقيقي
5.من المستحيل اكتشاف الأخطاء عبر المتصفحات المختلفةدعم لجميع المتصفحات بما في ذلك متصفحات الجوال
6.لا يمكن اختبار حالات العناصر الزائفةدعم للحالات الزائفة مثل :hover أو :active

يستخدم هذا المشغّل Vite لتجميع كود الاختبار الخاص بك وتحميله في المتصفح. ويأتي مع إعدادات مسبقة لأطر عمل المكونات التالية:

  • React
  • Preact
  • Vue.js
  • Svelte
  • SolidJS
  • Stencil

يتم تشغيل كل ملف اختبار / مجموعة ملفات اختبار داخل صفحة واحدة، مما يعني أنه بين كل اختبار يتم إعادة تحميل الصفحة لضمان العزل بين الاختبارات.

التثبيت​

لاستخدام مشغّل المتصفح يمكنك تثبيته عبر:

npm install --save-dev @wdio/browser-runner

الإعداد​

لاستخدام مشغّل المتصفح، يجب عليك تحديد خاصية runner داخل ملف wdio.conf.js الخاص بك، على سبيل المثال:

// wdio.conf.js
export const {
// ...
runner: 'browser',
// ...
}

خيارات المشغّل​

يسمح مشغّل المتصفح بالتكوينات التالية:

preset​

إذا كنت تختبر مكونات باستخدام إحدى الأطر المذكورة أعلاه، يمكنك تحديد إعداد مسبق يضمن تكوين كل شيء من البداية. لا يمكن استخدام هذا الخيار مع viteConfig.

النوع: vue | svelte | solid | react | preact | stencil
مثال:

wdio.conf.js
export const {
// ...
runner: ['browser', {
preset: 'svelte'
}],
// ...
}

viteConfig​

حدد تكوين Vite الخاص بك. يمكنك إما تمرير كائن مخصص أو استيراد ملف vite.conf.ts موجود إذا كنت تستخدم Vite.js للتطوير. لاحظ أن WebdriverIO يحتفظ بتكوينات Vite المخصصة لإعداد بيئة الاختبار.

النوع: string أو UserConfig أو (env: ConfigEnv) => UserConfig | Promise<UserConfig>
مثال:

wdio.conf.ts
import viteConfig from '../vite.config.ts'

export const {
// ...
runner: ['browser', { viteConfig }],
// or just:
runner: ['browser', { viteConfig: '../vites.config.ts' }],
// or use a function if your vite config contains a lot of plugins
// which you only want to resolve when value is read
runner: ['browser', {
viteConfig: () => ({
// ...
})
}],
// ...
}

headless​

إذا تم تعيينه إلى true، سيقوم المشغّل بتحديث القدرات لتشغيل الاختبارات بدون واجهة. بشكل افتراضي، يتم تمكين هذا في بيئات CI حيث يتم تعيين متغير بيئة CI إلى '1' أو 'true'.

النوع: boolean
الافتراضي: false، يتم تعيينه إلى true إذا تم تعيين متغير البيئة CI

rootDir​

دليل جذر المشروع.

النوع: string
الافتراضي: process.cwd()

coverage​

يدعم WebdriverIO تقارير تغطية الاختبار من خلال istanbul. انظر خيارات التغطية لمزيد من التفاصيل.

النوع: object
الافتراضي: undefined

خيارات التغطية​

تسمح الخيارات التالية بتكوين تقارير التغطية.

enabled​

يمكّن جمع التغطية.

النوع: boolean
الافتراضي: false

include​

قائمة الملفات المضمنة في التغطية كأنماط شاملة.

النوع: string[]
الافتراضي: [**]

exclude​

قائمة الملفات المستبعدة من التغطية كأنماط شاملة.

النوع: string[]
الافتراضي:

[
'coverage/**',
'dist/**',
'packages/*/test{,s}/**',
'**/*.d.ts',
'cypress/**',
'test{,s}/**',
'test{,-*}.{js,cjs,mjs,ts,tsx,jsx}',
'**/*{.,-}test.{js,cjs,mjs,ts,tsx,jsx}',
'**/*{.,-}spec.{js,cjs,mjs,ts,tsx,jsx}',
'**/__tests__/**',
'**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*',
'**/.{eslint,mocha,prettier}rc.{js,cjs,yml}',
]

extension​

قائمة امتدادات الملفات التي يجب أن يتضمنها التقرير.

النوع: string | string[]
الافتراضي: ['.js', '.cjs', '.mjs', '.ts', '.mts', '.cts', '.tsx', '.jsx', '.vue', '.svelte']

reportsDirectory​

الدليل لكتابة تقرير التغطية إليه.

النوع: string
الافتراضي: ./coverage

reporter​

مراسلي التغطية لاستخدامها. راجع وثائق istanbul للحصول على قائمة مفصلة بجميع المراسلين.

النوع: string[]
الافتراضي: ['text', 'html', 'clover', 'json-summary']

perFile​

التحقق من الحدود لكل ملف. انظر lines و functions و branches و statements للحدود الفعلية.

النوع: boolean
الافتراضي: false

clean​

تنظيف نتائج التغطية قبل تشغيل الاختبارات.

النوع: boolean
الافتراضي: true

lines​

حد للسطور.

النوع: number
الافتراضي: undefined

functions​

حد للوظائف.

النوع: number
الافتراضي: undefined

branches​

حد للفروع.

النوع: number
الافتراضي: undefined

statements​

حد للبيانات.

النوع: number
الافتراضي: undefined

القيود​

عند استخدام مشغّل متصفح WebdriverIO، من المهم ملاحظة أنه لا يمكن استخدام مربعات الحوار التي تحظر المؤشر مثل alert أو confirm بشكل أصلي. هذا لأنها تحظر صفحة الويب، مما يعني أن WebdriverIO لا يمكنه الاستمرار في التواصل مع الصفحة، مما يتسبب في تعليق التنفيذ.

في مثل هذه الحالات، يوفر WebdriverIO نماذج محاكاة افتراضية بقيم عائدة افتراضية لواجهات برمجة التطبيقات هذه. هذا يضمن أنه إذا استخدم المستخدم عن طريق الخطأ واجهات برمجة تطبيقات الويب المتزامنة للنوافذ المنبثقة، فلن يتوقف التنفيذ. ومع ذلك، لا يزال يُنصح المستخدم بمحاكاة واجهات برمجة تطبيقات الويب هذه للحصول على تجربة أفضل. اقرأ المزيد في المحاكاة.

أمثلة​

تأكد من الاطلاع على المستندات حول اختبار المكونات وإلقاء نظرة على مستودع الأمثلة للحصول على أمثلة باستخدام هذه الأطر وأطر أخرى متنوعة.

Welcome! How can I help?

WebdriverIO AI Copilot