मुख्य कॉन्टेंट में जाएँ

रनर

WebdriverIO में एक रनर ऑर्केस्ट्रेट करता है कि टेस्टरनर का उपयोग करते समय परीक्षण कैसे और कहाँ चलाए जा रहे हैं। WebdriverIO वर्तमान में दो अलग-अलग प्रकार के रनर का समर्थन करता है: स्थानीय और ब्राउज़र रनर।

स्थानीय धावक

लोकल रनर आपके ढांचे (जैसे मोचा, जैस्मीन या ककड़ी) को कार्यकर्ता के भीतर एक प्रक्रिया शुरू करता है और आपकी सभी परीक्षण फ़ाइलों को आपके Node.js वातावरण में चलाता है। अधिकतम संगामिति के लिए अनुमति देने वाली क्षमता के अनुसार प्रत्येक परीक्षण फ़ाइल को एक अलग कार्यकर्ता प्रक्रिया में चलाया जा रहा है। प्रत्येक कार्यकर्ता प्रक्रिया एकल ब्राउज़र उदाहरण का उपयोग करती है और इसलिए अधिकतम अलगाव की अनुमति देते हुए अपना स्वयं का ब्राउज़र सत्र चलाती है।

यह देखते हुए कि प्रत्येक परीक्षण अपनी पृथक प्रक्रिया में चलाया जाता है, परीक्षण फ़ाइलों में डेटा साझा करना संभव नहीं है। इसके आसपास काम करने के दो तरीके हैं:

यदि 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:

wdio.conf.js
एक्सपोर्ट 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:

wdio.conf.ts
'../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 के लिए डिफ़ॉल्ट रूप से लौटाए गए मानों के साथ डिफ़ॉल्ट मॉक प्रदान करता है। यह सुनिश्चित करता है कि यदि उपयोगकर्ता गलती से सिंक्रोनस पॉपअप वेब एपीआई का उपयोग करता है, तो निष्पादन लटका नहीं रहेगा। हालांकि, अभी भी उपयोगकर्ता को बेहतर अनुभव के लिए इन वेब एपीआई का मज़ाक उड़ाने की सलाह दी जाती है। मॉकिंगमें और पढ़ें।

उदाहरण

घटक परीक्षण के आस-पास दस्तावेज़ों को जांचना सुनिश्चित करें और इन और विभिन्न अन्य ढांचे का उपयोग करने वाले उदाहरणों के लिए उदाहरण भंडार देखें।

Welcome! How can I help?

WebdriverIO AI Copilot