تنظيم مجموعة الاختبارات
مع نمو المشاريع، لا مفر من إضافة المزيد والمزيد من اختبارات التكامل. هذا يزيد من وقت البناء ويبطئ الإنتاجية.
لمنع هذا، يجب عليك تشغيل اختباراتك بالتوازي. يختبر WebdriverIO بالفعل كل ملف مواصفات (أو ملف ميزة في Cucumber) بالتوازي داخل جلسة وا حدة. بشكل عام، حاول اختبار ميزة واحدة فقط لكل ملف مواصفات. حاول ألا يكون لديك الكثير أو القليل جدًا من الاختبارات في ملف واحد. (ومع ذلك، لا توجد قاعدة ذهبية هنا.)
بمجرد أن تحتوي اختباراتك على العديد من ملفات المواصفات، يجب أن تبدأ بتشغيل اختباراتك بشكل متزامن. للقيام بذلك، قم بتعديل خاصية maxInstances
في ملف التكوين الخاص بك. يسمح لك WebdriverIO بتشغيل اختباراتك بأقصى قدر من التزامن - مما يعني أنه بغض النظر عن عدد الملفات والاختبارات التي لديك، يمكن تشغيلها جميعًا بالتوازي. (هذا لا يزال يخضع لحدود معينة، مثل وحدة المعالجة المركزية لجهاز الكمبيوتر الخاص بك وقيود التزامن وما إلى ذلك.)
لنفترض أن لديك 3 قدرات مختلفة (Chrome و Firefox و Safari) وقمت بتعيين
maxInstances
إلى1
. سيقوم مشغّل اختبار WDIO بإنشاء 3 عمليات. لذلك، إذا كان لديك 10 ملفات مواصفات وقمت بتعيينmaxInstances
إلى10
، فسيتم اختبار جميع ملفات المواصفات في وقت واحد، وسيتم إنشاء 30 عملية.
يمكنك تحديد خاصية maxInstances
عالميًا لتعيين السمة لجميع المتصفحات.
إذا كنت تدير شبكة WebDriver الخاصة بك، فقد يكون لديك (على سبيل المثال) قدرة أكبر لمتصفح واحد أكثر من الآخر. في تلك الحالة، يمكنك تحديد maxInstances
في كائن القدرات الخاص بك:
// wdio.conf.js
export const config = {
// ...
// set maxInstance for all browser
maxInstances: 10,
// ...
capabilities: [{
browserName: 'firefox'
}, {
// maxInstances can get overwritten per capability. So if you have an in-house WebDriver
// grid with only 5 firefox instance available you can make sure that not more than
// 5 instance gets started at a time.
browserName: 'chrome'
}],
// ...
}
الوراثة من ملف التكوين الرئيسي
إذا كنت تقوم بتشغيل مجموعة الاختبارات الخاصة بك في بيئات متعددة (مثل التطوير والتكامل)، فقد يساعد استخدام ملفات تكوين متعددة للحفاظ على الأمور قابلة للإدارة.
على غرار مفهوم كائن الصفحة، أول شيء ستحتاجه هو ملف تكوين رئيسي. يحتوي على كل التكوينات التي تشاركها عب ر البيئات.
ثم قم بإنشاء ملف تكوين آخر لكل بيئة، وقم بتكملة التكوين الرئيسي بالتكوينات الخاصة بالبيئة:
// wdio.dev.config.js
import { deepmerge } from 'deepmerge-ts'
import wdioConf from './wdio.conf.js'
// have main config file as default but overwrite environment specific information
export const config = deepmerge(wdioConf.config, {
capabilities: [
// more caps defined here
// ...
],
// run tests on sauce instead locally
user: process.env.SAUCE_USERNAME,
key: process.env.SAUCE_ACCESS_KEY,
services: ['sauce']
}, { clone: false })
// add an additional reporter
config.reporters.push('allure')