परीक्षण सूट व्यवस्थित करना
जैसे-जैसे प्रोजेक्ट बढ़ते हैं, अनिवार्य रूप से अधिक से अधिक इंटीग्रेशन टेस्ट जोड़े जाते हैं। यह बिल्ड टाइम बढ़ाता है और उत्पादकता को धीमा करता है।
इसे रोकने के लिए, आपको अपने टेस्ट समानांतर में चलाने चाहिए। WebdriverIO पहले से ही प्रत्येक स्पेक (या Cucumber में फीचर फाइल) को एक सत्र के भीतर समानांतर में परीक्षण करता है। सामान्य तौर पर, प्रति स्पेक फ़ाइल केवल एक सुविधा का परीक्षण करने का प्रयास करें। एक फाइल में बहुत अधिक या बहुत कम परीक्षण न रखें। (हालांकि, यहां कोई स्वर्ण नियम नहीं है।)
एक बार जब आपके परीक्षणों में कई स्पेक फाइलें हों, तो आपको अपने परीक्षणों को एक साथ चलाना शुरू कर देना चाहिए। ऐसा करने के लिए, अपनी कॉन्फिग फाइल में maxInstances
प्रॉपर्टी को समायोजित करें। WebdriverIO आपको अपने परीक्षणों को अधिकतम समवर्तिता के साथ चलाने की अनुमति द ेता है—जिसका अर्थ है कि चाहे आपके पास कितनी भी फाइलें और परीक्षण हों, वे सभी समानांतर में चल सकते हैं। (यह अभी भी कुछ सीमाओं के अधीन है, जैसे आपके कंप्यूटर का CPU, समवर्तिता प्रतिबंध, आदि।)
मान लीजिए कि आपके पास 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'
}],
// ...
}
मुख्य कॉन्फिग फाइल से विरासत में प्राप्त करें
यदि आप अपना टेस्ट सूट कई वातावरणों में चलाते हैं (जैसे, dev और integration) तो चीजों को प्रबंधनीय रखने के लिए कई कॉन्फिगरेशन फाइलों का उपयोग करना मदद कर सकता है।
पेज ऑब्जेक्ट कॉन्सेप्ट के समान, पहली चीज जिसकी आपको आवश्यकता होगी वह है एक मुख्य कॉन्फिग फाइल। इसमें वे सभी कॉन्फिगरेशन शामिल हैं जिन्हें आप वातावरणों में साझा करते हैं।
फिर प्रत्येक वातावरण के लिए एक अन्य कॉन्फिग फाइल बनाएं, और मुख्य कॉन्फिग को वातावरण-विशिष्ट लोगों के साथ पूरक करें:
// 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')