टेस्ट सूट का आयोजन
जैसे-जैसे परियोजनाएं बढ़ती हैं, अनिवार्य रूप से अधिक से अधिक एकीकरण परीक्षण जोड़े जाते हैं। इससे निर्माण समय बढ़ता है और उत्पादकता धीमी हो जाती है।
इसे रोकने के लिए, आपको समानांतर में अपने परीक्षण चलाने चाहिए। WebdriverIO पहले से ही एक सत्र के भ ीतर समानांतर में प्रत्येक कल्पना (या ककड़ी में फीचर फ़ाइल) का परीक्षण करता है। सामान्य तौर पर, प्रति विशिष्ट फ़ाइल केवल एक विशेषता का परीक्षण करने का प्रयास करें। एक फ़ाइल में बहुत अधिक या बहुत कम परीक्षण न करने का प्रयास करें। (हालांकि, यहां कोई सुनहरा नियम नहीं है।)
एक बार जब आपके परीक्षणों में कई विशिष्ट फ़ाइलें हों, तो आपको अपने परीक्षणों को समवर्ती रूप से चलाना शुरू कर देना चाहिए। ऐसा करने के लिए, अपनी कॉन्फ़िगरेशन फ़ाइल में maxInstances
गुण समायोजित करें। WebdriverIO आपको अधिकतम संगामिति के साथ अपने परीक्षण चलाने की अनुमति देता है - जिसका अर्थ है कि आपके पास कितनी भी फाइलें और परीक्षण हों, वे सभी समानांतर में चल सकते हैं। (यह अभी भी कुछ सीमाओं के अधीन है, जैसे आपके कंप्यूटर का CPU, समवर्ती प्रतिबंध, आदि)
मान लीजिए कि आपके पास 3 अलग-अलग क्षमताएं हैं (क्रोम, फ़ायरफ़ॉक्स और सफारी) और आपने
maxInstances
से1
सेट किया है। WDIO टेस्ट रनर 3 प्रोसेस को स्पॉन करेगा। इसलिए, यदि आपके पास 10 विशिष्ट फ़ाइलें हैं और आपmaxInstances
से10
, सेट करते हैं, तो सभी विशिष्ट फ़ाइलों का एक साथ परीक्षण किया जाएगा, और 30 प्रक्रियाओं को उत्पन्न किया जाएगा।
आप सभी ब्राउज़रों के लिए विशेषता सेट करने के लिए वैश्विक रूप से maxInstances
प्रॉपर्टी को परिभाषित कर सकते हैं।
यदि आप अपना स्वयं का वेबड्राइवर ग्रिड चलाते हैं, तो आपके पास (उदाहरण के लिए) एक ब्राउज़र की तुलना में दूसरे ब्राउज़र के लिए अधिक क्षमता हो सकती है। उस स्थिति में, आप अपनी क्षमता वस्तु में maxInstances
को _सीमित _ कर सकते हैं:
// wdio.conf.js
निर्यात कॉन्स्ट कॉन्फ़िगरेशन = {
// ...
// 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'
}],
// ...
}
मुख्य कॉन्फ़िग फ़ाइल से इनहेरिट करें
यदि आप अपने परीक्षण सूट को कई वातावरणों (जैसे, देव और एकीकरण) में चलाते हैं, तो यह चीजों को प्रबंधनीय रखने के लिए कई कॉन्फ़िगरेशन फ़ाइलों का उपयोग करने में मदद कर सकता है।
Similar to the page object concept, the first thing you’ll need is a main config file. इसमें आपके द्वारा परिवेशों में साझा किए गए सभी कॉन्फ़िगरेशन शामिल हैं।
फिर प्रत्येक वातावरण के लिए एक और कॉन्फ़िगरेशन फ़ाइल बनाएं, और मुख्य कॉन्फ़िगरेशन को पर्यावरण-विशिष्ट के साथ पूरक करें:
// 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')
सुइट्स में ग्रुपिंग टेस्ट स्पेक्स
आप परीक्षण विनिर्देशों को सुइट में समूहीकृत कर सकते हैं और उन सभी के बजाय एकल विशिष्ट सुइट चला सकते हैं।
सबसे पहले, अपने सुइट्स को अपने WDIO कॉन्फ़िगरेशन में परिभाषित करें:
// wdio.conf.js
निर्यात कॉन्स्ट कॉन्फ़िगरेशन = {
// परिभाषित सभी परीक्षण
स्पेक्स: ['./test/specs/**/*.spec.js'],
// ...
// define specific suites
suites: {
login: [
'./test/specs/login.success.spec.js',
'./test/specs/login.failure.spec.js'
],
otherFeature: [
// ...
]
},
// ...
}
अब, यदि आप केवल एक सूट चलाना चाहते हैं, तो आप सूट नाम को सीएलआई तर्क के रूप में पास कर सकते हैं:
wdio wdio.conf.js --suite login
या, एक साथ कई सुइट चलाएँ:
wdio wdio.conf.js --suite login --suite otherFeature