वीएसकोड एक्सटेंशन टेस्टिंग सर्विस
wdio-vscode-service एक तृतीय पक्ष पैकेज है, अधिक जानकारी के लिए कृपया GitHub | npm देखें
इस पर परीक्षण किया गया:
वीएसकोड एक्सटेंशन के परीक्षण के लिए WebdriverIO सेवा।
यह WebdriverIO सेवा आपको VSCode डेस्कटॉप IDE या वेब एक्सटेंशन के रूप में अपने VSCode एक्सटेंशन का एंड-टू-एंड परीक्षण निर्बाध रूप से करने की अनुमति देती है। आपको केवल अपने एक्सटेंशन का पथ प्रदान करना होगा और सेवा इन कार्यों को करके बाकी का काम करती है:
- 🏗️ VSCode इंस्टॉल करना (
stable
,insiders
या किसी निर्दिष्ट संस्करण) - ⬇️ किसी विशेष VSCode संस्करण के लिए Chromedriver डाउनलोड करना
- 🚀 आपको अपने परीक्षणों से VSCode API तक पहुंचने में सक्षम बनाता है
- 🖥️ कस्टम उपयोगकर्ता सेटिंग्स के साथ VSCode शुरू करना (Ubuntu, MacOS और Windows पर VSCode के लिए समर्थन सहित)
- 🌐 या वेब एक्सटेंशन के परीक्षण के लिए किसी भी ब्राउज़र द्वारा एक्सेस किए जाने के लिए एक सर्वर से VSCode प्रदान करता है
- 📔 आपके VSCode संस्करण से मेल खाने वाले लोकेटर्स के साथ पेज ऑब्जेक्ट्स को बूटस्ट्रैप करना
यह प्रोजेक्ट vscode-extension-tester प्रोजेक्ट से अत्यधिक प्रेरित था जो Selenium पर आधारित है। यह पैकेज इस विचार को लेता है और इसे WebdriverIO के लिए अनुकूलित करता है।
VSCode v1.86 से शुरू होकर, बिना किसी कॉन्फ़िगरेशन के Chromedriver इंस्टॉल करने के लिए webdriverio
v8.14 या उससे बाद का संस्करण आवश्यक है। यदि आपको VSCode के पुराने संस्करणों का परीक्षण करने की आवश्यकता है, तो नीचे Chromedriver कॉन्फ़िगरेशन अनुभाग देखें।
इंस्टालेशन
एक नया WebdriverIO प्रोजेक्ट शुरू करने के लिए, चलाएँ:
npm create wdio ./
एक इंस्टालेशन विज़ार्ड आपको प्रक्रिया के माध्यम से मार्गदर्शन करेगा। सुनिश्चित करें कि आप TypeScript को कंपाइलर के रूप में चुनें और इसे आपके लिए पेज ऑब्जेक्ट्स जनरेट न करने दें क्योंकि यह प्रोजेक्ट आवश्यक सभी पेज ऑब्जेक्ट्स के साथ आता है। फिर सुनिश्चित करें कि आप सेवाओं की सूची में vscode
का चयन करें:
WebdriverIO
को कैसे इंस्टॉल करें, इस बारे में अध िक जानकारी के लिए, कृपया प्रोजेक्ट डॉक्स देखें।
उदाहरण कॉन्फिगरेशन
सेवा का उपयोग करने के लिए आपको अपनी सेवाओं की सूची में vscode
जोड़ना होगा, वैकल्पिक रूप से एक कॉन्फ़िगरेशन ऑब्जेक्ट के साथ। यह WebdriverIO को दिए गए VSCode बाइनरी और उपयुक्त Chromedriver संस्करण डाउनलोड करने के लिए बनाएगा:
// wdio.conf.ts
export const config = {
outputDir: 'trace',
// ...
capabilities: [{
browserName: 'vscode',
browserVersion: '1.86.0', // "insiders" or "stable" for latest VSCode version
'wdio:vscodeOptions': {
extensionPath: __dirname,
userSettings: {
"editor.fontSize": 14
}
}
}],
services: ['vscode'],
/**
* Optionally define the path WebdriverIO stores all VSCode binaries, e.g.:
* services: [['vscode', { cachePath: __dirname }]]
*/
// ...
};
यदि आप wdio:vscodeOptions
को vscode
के अलावा किसी अन्य browserName
के साथ परिभाषित करते हैं, जैसे chrome
, तो सेवा एक्सटेंशन को वेब एक्सटेंशन के रूप में प्रदान करेगी। यदि आप Chrome पर परीक्षण करते हैं तो कोई अतिरिक्त ड्राइवर सेवा की आवश्यकता नहीं है, उदाहरण के लिए:
// wdio.conf.ts
export const config = {
outputDir: 'trace',
// ...
capabilities: [{
browserName: 'chrome',
'wdio:vscodeOptions': {
extensionPath: __dirname
}
}],
services: ['vscode'],
// ...
};
नोट: वेब एक्सटेंशन का परीक्षण करते समय आप browserVersion
के रूप में केवल stable
या insiders
के बीच चुन सकते हैं।
TypeScript सेटअप
अपने tsconfig.json
में सुनिश्चित करें कि आप अपने प्रकारों की सूची में wdio-vscode-service
जोड़ें:
{
"compilerOptions": {
"types": [
"node",
"webdriverio/async",
"@wdio/mocha-framework",
"expect-webdriverio",
"wdio-vscode-service"
],
"target": "es2019",
"moduleResolution": "node",
"esModuleInterop": true
}
}
उपयोग
फिर आप अपने वांछित VSCode संस्करण से मेल खाने वाले लोकेटर्स के लिए पेज ऑब्जेक्ट्स तक पहुंचने के लिए getWorkbench
विधि का उपयोग कर सकते हैं:
describe('WDIO VSCode Service', () => {
it('should be able to load VSCode', async () => {
const workbench = await browser.getWorkbench()
expect(await workbench.getTitleBar().getTitle())
.toBe('[Extension Development Host] - README.md - wdio-vscode-service - Visual Studio Code')
})
})
VSCode APIs तक पहुंचना
यदि आप VSCode API के माध्यम से कुछ स्वचालन निष्पादित करना चाहते हैं, तो आप कस्टम executeWorkbench
कमांड के माध्यम से रिमोट कमांड चला सकते हैं। यह कमांड आपको VSCode वातावरण के अंदर अपने परीक्षण से दूरस्थ रूप से कोड निष्पादित करने और VSCode API तक पहुंचने की अनुमति देता है। आप फ़ंक्शन में मनमाने पैरामीटर पास कर सकते हैं जो फिर बाहरी फ़ंक्शन पैरामीटर के बाद फ़ंक्शन में प्रसारित होंगे। vscode
ऑब्जेक्ट हमेशा पहले आर्गुमेंट के रूप में पास किया जाएगा। ध्यान दें कि आप फ़ंक्शन स्कोप के बाहर के चर तक नहीं पहुंच सकते क्योंकि कॉलबैक दूरस्थ रूप से निष्पादित होता है। यहां एक उदाहरण है:
const workbench = await browser.getWorkbench()
await browser.executeWorkbench((vscode, param1, param2) => {
vscode.window.showInformationMessage(`I am an ${param1} ${param2}!`)
}, 'API', 'call')
const notifs = await workbench.getNotifications()
console.log(await notifs[0].getMessage()) // outputs: "I am an API call!"
पूर्ण पेज ऑब्जेक्ट दस्तावेज़ीकरण के लिए, डॉक्स देखें। आप इस प्रोजेक्ट के टेस्ट सूट में विभिन्न उपयोग उदाहरण पा सकते हैं।