मल्टीरिमोट
WebdriverIO आपको एक ही परीक्षण में एकाधिक स्वचालित सत्र चल ाने की अनुमति देता है। यह तब आसान हो जाता है जब आप ऐसी सुविधाओं का परीक्षण कर रहे होते हैं जिनके लिए एक से अधिक उपयोगकर्ताओं की आवश्यकता होती है (उदाहरण के लिए, चैट या WebRTC एप्लिकेशन)।
कुछ दूरस्थ उदाहरण बनाने के बजाय जहां आपको प्रत्येक उदाहरण पर newSession
या url
जैसे सामान्य कमांड निष्पादित करने की आवश्यकता होती है, आप बस एक मल्टीरिमोट उदाहरण बना सकते हैं और एक ही समय में सभी ब्राउज़रों को नियंत्रित कर सकते हैं।
ऐसा करने के लिए, केवल multiremote()
फ़ंक्शन का उपयोग करें, और मानों के लिए capabilities
के नाम वाले ऑब्जेक्ट में पास करें। प्रत्येक क्षमता को एक नाम देकर, आप एक उदाहरण पर कमांड निष्पादित करते समय उस एकल उदाहरण को आसानी से चुन सकते हैं और उस तक पहुंच सकते हैं।
::: जानकारी
मल्टीरेमोट नहीं है जो आपके सभी परीक्षणों को समानांतर में नि ष्पादित करने के लिए है। इसका उद्देश्य विशेष एकीकरण परीक्षणों (जैसे चैट एप्लिकेशन) के लिए कई ब्राउज़रों और/या मोबाइल उपकरणों को समन्वयित करने में सहायता करना है।
:::
सभी मल्टीरिमोट उदाहरण परिणामों की एक सरणी लौटाते हैं। पहला परिणाम क्षमता वस्तु में पहले परिभाषित क्षमता का प्रतिनिधित्व करता है, दूसरा परिणाम दूसरी क्षमता और इसी तरह।
स्टैंडअलोन मोड का उपयोग करना
यहाँ __स्टैंडअलोन मोड__में मल्टीरिमोट इंस्टेंस बनाने का एक उदाहरण दिया गया है:
import { multiremote } from 'webdriverio'
(async () => {
const browser = await multiremote({
myChromeBrowser: {
capabilities: {
browserName: 'chrome'
}
},
myFirefoxBrowser: {
capabilities: {
browserName: 'firefox'
}
}
})
// open url with both browser at the same time
await browser.url('http://json.org')
// call commands at the same time
const title = await browser.getTitle()
expect(title).toEqual(['JSON', 'JSON'])
// click on an element at the same time
const elem = await browser.$('#someElem')
await elem.click()
// only click with one browser (Firefox)
await elem.getInstance('myFirefoxBrowser').click()
})()
WDIO टेस्टरनर का उपयोग करना
WDIO टेस्टरनर में मल्टीरेमोट का उपयोग करने के लिए, बस अपने wdio.conf.js
में capabilities
ऑब्जेक्ट को एक ऑब्जेक्ट के रूप में ब्राउज़र नामों के साथ कुंजी के रूप में परिभाषित करें (क्षमताओं की सूची के बजाय):
export const config = {
// ...
capabilities: {
myChromeBrowser: {
capabilities: {
browserName: 'chrome'
}
},
myFirefoxBrowser: {
capabilities: {
browserName: 'firefox'
}
}
}
// ...
}
यह क्रोम और फ़ायरफ़ॉक्स के साथ दो वेबड्राइवर सत्र बनाएगा। केवल क्रोम और फ़ायरफ़ॉक्स के बजाय आप एपियम या एक मोबाइल डिवाइस और एक ब्राउज़र का उपयोग करके दो मोबाइल डिवाइस भी बूट कर सकते हैं।
You can also run multiremote in parallel by putting the browser capabilities object in an array. Please make sure to have capabilities
field included in each browser, as this is how we tell each mode apart.
export const config = {
// ...
capabilities: [{
myChromeBrowser0: {
capabilities: {
browserName: 'chrome'
}
},
myFirefoxBrowser0: {
capabilities: {
browserName: 'firefox'
}
}
}, {
myChromeBrowser1: {
capabilities: {
browserName: 'chrome'
}
},
myFirefoxBrowser1: {
capabilities: {
browserName: 'firefox'
}
}
}]
// ...
}
आप स्थानीय वेबड्राइवर/एपियम, या सेलेनियम स्टैंडअलोन उदाहरणों के साथ क्लाउड सेवाओं में से एक बैकएंड को बूट भी कर सकते हैं। WebdriverIO स्वचालित रूप से क्लाउड बैकएंड क्षमताओं का पता लगाता है यदि आपने ब्राउज़र क्षमताओं में bstack:options
(Browserstack), sauce:options
(SauceLabs), या tb:options
(TestingBot) में से कोई भी निर्दिष्ट किया है।
export const config = {
// ...
user: process.env.BROWSERSTACK_USERNAME,
key: process.env.BROWSERSTACK_ACCESS_KEY,
capabilities: {
myChromeBrowser: {
capabilities: {
browserName: 'chrome'
}
},
myBrowserStackFirefoxBrowser: {
capabilities: {
browserName: 'firefox',
'bstack:options': {
// ...
}
}
}
},
services: [
['browserstack', 'selenium-standalone']
],
// ...
}
किसी भी प्रकार का OS/ब्राउज़र संयोजन यहाँ संभव है (मोबाइल और डेस्कटॉप ब्राउज़र सहित)। browser
चर के माध्यम से आपके परीक्षण कॉल के सभी आदेश प्रत्येक उदाहरण के साथ समानांतर में निष्पादित होते हैं। यह आपके एकीकरण परीक्षणों को सुव्यवस्थित करने और उनके निष्पादन को गति देने में मदद करता है।
उदाहरण के लिए, यदि आप एक URL खोलते हैं:
browser.url('https://socketio-chat-h9jt.herokuapp.com/')