रनर
WebdriverIO में एक रनर ऑर्केस्ट्रेट करता है कि टेस्टरनर का उपयोग करते समय परीक्षण कैसे और कहाँ चलाए जा रहे हैं। WebdriverIO वर्तमान में दो अलग-अलग प्रकार के रनर का समर्थन करता है: स्थानीय और ब्राउज़र रनर।
स्थानीय धावक
लोकल रनर आपके ढांचे (जैसे मोचा, जैस्मीन या ककड़ी) को कार्यकर्ता के भीतर एक प्रक्रिया शुरू करता है और आपकी सभी परीक्षण फ़ाइलों को आपके Node.js वातावरण में चलाता है। अधिकतम संगामिति के लिए अनुमति देने वाली क्षमता के अनुसार प्रत्येक परीक्षण फ़ाइल को एक अलग कार्यकर्ता प्रक्रिया में चलाया जा र हा है। प्रत्येक कार्यकर्ता प्रक्रिया एकल ब्राउज़र उदाहरण का उपयोग करती है और इसलिए अधिकतम अलगाव की अनुमति देते हुए अपना स्वयं का ब्राउज़र सत्र चलाती है।
यह देखते हुए कि प्रत्येक परीक्षण अपनी पृथक प्रक्रिया में चलाया जाता है, परीक्षण फ़ाइलों में डेटा साझा करना संभव नहीं है। इसके आसपास काम करने के दो तरीके हैं:
- सभी कर्मचारियों के बीच डेटा साझा करने के लिए
@wdio/shared-store-service
का उपयोग करें - समूह कल्पना फ़ाइलें ( आयोजन टेस्ट सूटमें और पढ़ें)
यदि 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 बनाम WebdriverIOs ब्राउज़र रनर के भीतर चल रहे परीक्षणों का अवलोकन है
जेएसडीओएम | WebdriverIO ब्राउज़र रनर | |
---|---|---|
1. | वेब मानकों, विशेष रूप से WHATWG DOM और HTML मानकों के पुन: कार्यान्वयन का उपयोग करके Node.js के भीतर अपने परीक्षण चलाता है | आपके परीक्षण को एक वास्तविक ब्राउज़र में निष्पादित करता है और आपके उपयोगकर्ताओं द्वारा उपयोग किए जाने वाले वातावरण में कोड चलाता है |
2. | घटकों के साथ सहभागिता केवल जावास्क्रिप्ट के माध्यम से नकल की जा सकती है | आप वेबड्राइवर प्रोटोकॉल के माध्यम से तत्वों के साथ इंटरैक्ट करने के लिए WebdriverIO API का उपयोग कर सकते हैं |
3. | कैनवास समर्थन के लिए अतिरिक्त निर्भरताओं की आवश्यकता होती है और की सीमाएँ होती हैं | आपके पास वास्तविक कैनवस एपीआईतक पहुंच है |
4. | JSDOM में कुछ चेतावनियाँ और असमर्थित वेब API हैं | सभी वेब एपीआई एक वास्तविक ब्राउज़र में टेस्ट रन के रूप में समर्थित हैं |
5. | ब्राउज़र में त्रुटियों का पता लगाना असंभव है | मोबाइल ब्राउज़र सहित सभी ब्राउज़रों के लिए समर्थन |
6. | तत्व छद्म राज्यों के लिए नहीं परीक्षण कर सकते हैं | छद्म राज्यों के लिए समर्थन जैसे : hover या : active |
यह रनर आपके परीक्षण कोड को संकलित करने और इसे ब्राउज़र में लोड करने के लिए Vite का उपयो ग करता है। यह निम्नलिखित घटक ढांचे के लिए प्रीसेट के साथ आता है:
- React
- Preact
- Vue.js
- Svelte
- SolidJS
- Stencil
प्रत्येक परीक्षण फ़ाइल / परीक्षण फ़ाइल समूह एक पृष्ठ के भीतर चलता है जिसका अर्थ है कि प्रत्येक परीक्षण के बीच पृष्ठ को परीक्षणों के बीच अलगाव की गारंटी देने के लिए पुनः लोड किया जा रहा है।
इनस्टॉल
ब्राउज़र रनर का उपयोग करने के लिए आप इसे इसके माध्यम से इंस्टाल कर सकते हैं:
npm install --save-dev @wdio/browser-runner
सेटअप
ब्राउज़र रनर का उपयोग करने के लिए, आपको अपनी wdio.conf.js
फ़ाइल में runner
गुण परिभाषित करना होगा, उदाहरण के लिए:
// wdio.conf.js
निर्यात कॉन्स्ट कॉन्फ़िगरेशन = {
// ...
runner: 'browser',
// ...
}
रनर विकल्प
ब्राउज़र रनर निम्न कॉन्फ़िगरेशन की अनुमति देता है:
preset
यदि आप ऊपर उल्लिखित रूपरेखाओं में से किसी एक का उपयोग करके घटकों का परीक्षण करते हैं, तो आप एक पूर्व निर्धारित निर्धारित कर सकते हैं जो सुनिश्चित करता है कि सब कुछ बॉक्स से बाहर कॉन्फ़िगर किया गया है। इस विकल्प का उपयोग viteConfig
के साथ नहीं किया जा सकता है।
Type: vue
| svelte
| solid
| react
| preact
| stencil
Example:
एक्सपोर्ट const {
// ...
runner: ['browser', {
preset: 'svelte'
}],
// ...
}
viteConfig
अपने स्वयं के Vite कॉन्फ़िगरेशनपरिभाषित करें। यदि आप विकास के लिए Vite.js का उपयोग करते हैं तो आप या तो एक कस्टम ऑब्जेक्ट पास कर सकते हैं या मौजूदा vite.conf.ts
फ़ाइल आयात कर सकते हैं। ध्यान दें कि WebdriverIO टेस्ट हार्नेस सेट करने के लिए कस्टम Vite कॉन्फ़िगरेशन रखता है।
Type: string
or UserConfig
or (env: ConfigEnv) => UserConfig | Promise<UserConfig>
Example:
'../vite.config.ts' से viteConfig आय ात करें
निर्यात 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
पर्यावरण चर '1'
या 'true'
पर सेट है।
Type: boolean
Default: false
, set to true
if CI
environment variable is set
rootDir
प्रोजेक्ट रूट डायरेक्टरी।
Type: string
Default: process.cwd()
coverage
WebdriverIO इस्तांबुल
के माध्यम से परीक्षण कवरेज रिपोर्टिंग का समर्थन करता है। अधिक विवरण के लिए कवरेज विकल्प देखें।
Type: object
Default: undefined
कवरेज विकल्प
निम्न विकल्प कवरेज रिपोर्टिंग को कॉन्फ़िगर करने की अनुमति देते हैं।
enabled
कवरेज संग्रह सक्षम करता है।
Type: boolean
Default: false
include
ग्लोब पैटर्न के रूप में कवरेज में शामिल फाइलों की सूची।
Type: string[]
Default: [**]
exclude
ग्लोब पैटर्न के रूप में कवरेज में शामिल नहीं की गई फ़ाइलों की सूची।
Type: string[]
Default:
[
'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
रिपोर्ट में शामिल होने वाले फ़ाइल एक्सटेंशन की सूची।
Type: string | string[]
Default: ['.js', '.cjs', '.mjs', '.ts', '.mts', '.cts', '.tsx', '.jsx', '.vue', '.svelte']
reportsDirectory
निर्देशिका को कवरेज रिपोर्ट लिखने के लिए।
Type: string
Default: ./coverage
reporter
कवरेज पत्रकारों का उपयोग करने के लिए। सभी पत्रकारों की विस्तृत सूची के लिए इस्तांबुल दस्तावेज़ देखें।
Type: string[]
Default: ['text', 'html', 'clover', 'json-summary']
perFile
प्रति फ़ाइल थ्रेसहोल्ड जांचें। वास्तविक थ्रेशोल्ड के लिए lines
, functions
, branches
और statements
देखें।
Type: boolean
Default: false
clean
परीक्षण चलाने से पहले स्वच्छ कवरेज परिणाम।
Type: boolean
Default: true
lines
लाइनों के लिए थ्रेशोल्ड।
Type: number
Default: undefined
functions
फंक्शन के लिए थ्रेशोल्ड।
Type: number
Default: undefined
branches
ब्रांच के लिए थ्रेशोल्ड।
Type: number
Default: undefined
statements
बयानों के लिए थ्रेशोल्ड।
Type: number
Default: undefined
सीमाएं
WebdriverIO ब्राउज़र रनर का उपयोग करते समय, यह ध्यान रखना महत्वपूर्ण है कि थ्रेड ब्लॉकिंग डायलॉग जैसे alert
या confirm
का मूल रूप से उपयोग नहीं किया जा सकता है। ऐसा इसलिए है क्योंकि वे वेब पेज को ब्लॉक करते हैं, जिसका अर्थ है कि WebdriverIO पेज के साथ संचार करना जारी नहीं रख सकता है, जिससे निष्पादन रुक जाता है।
ऐसी स्थितियों में, WebdriverIO इन API के लिए डिफ़ॉल्ट रूप से लौटाए गए मानों के साथ डिफ़ॉल्ट मॉक प्रदान करता है। यह सुनिश्चित करता है कि यदि उपयोगकर्ता गलती से सिंक्रोनस पॉपअप वेब एपीआई का उपयोग करता है, तो निष्पादन लटका नहीं रहेगा। हालांकि, अभी भी उपयोगकर्ता को बेहतर अनुभव के लिए इन वेब एपीआई का मज़ाक उड़ाने की सलाह दी जाती ह ै। मॉकिंगमें और पढ़ें।
उदाहरण
घटक परीक्षण के आस-पास दस्तावेज़ों को जांचना सुनिश्चित करें और इन और विभिन्न अन्य ढांचे का उपयोग करने वाले उदाहरणों के लिए उदाहरण भंडार देखें।