تنظيم مجموعة الاختبار
مع نمو المشاريع، تتم إضافة المزيد والمزيد من اختبارات التكامل بشكل حتمي. وهذا يزيد من وقت البناء ويُبطئ الإنتاجية.
لمنع ذلك، يجب تشغيل اختباراتك بالتوازي. يختبر 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')