डीबगिंग
कई प्रक्रियाएँ जब अनेक ब्राउज़रों में दर्जनों परीक्षण चलाती हैं, तब डीबगिंग काफी मुश्किल हो जाती है।
शुरू करने के लिए, maxInstances को 1 पर सेट करके समानांतरता को सीमित करना और केवल उन स्पेक्स और ब्राउज़रों को लक्षित करना बहुत मददगार होता है, जिन्हें डीबग करने की आवश्यकता है।
wdio.conf में:
export const config = {
// ...
maxInstances: 1,
specs: [
'**/myspec.spec.js'
],
capabilities: [{
browserName: 'firefox'
}],
// ...
}
डीबग कमांड
कई मामलों में, आप अपने परीक्षण को रोकने और ब्राउज़र का निरीक्षण करने के लिए browser.debug() का उपयोग कर सकते हैं।
आपका कमांड लाइन इंटरफेस भी REPL मोड में स्विच हो जाएगा। यह मोड आपको पेज पर कमांड और एलिमेंट्स के साथ खेलने की अनुमति देता है। REPL मोड में, आप browser ऑब्जेक्ट—या $ और $$ फंक्शन—तक उसी तरह पहुंच सकते हैं जैसे आप अपने परीक्षणों में करते ह ैं।
जब browser.debug() का उपयोग करते हैं, तो आपको परीक्षण रनर के टाइमआउट को बढ़ाने की आवश्यकता होगी ताकि परीक्षण रनर अधिक समय लेने के कारण परीक्षण को विफल न करे। उदाहरण के लिए:
wdio.conf में:
jasmineOpts: {
defaultTimeoutInterval: (24 * 60 * 60 * 1000)
}
अन्य फ्रेमवर्क का उपयोग करके ऐसा करने के तरीके के बारे में अधिक जानकारी के लिए timeouts देखें।
डीबगिंग के बाद परीक्षण जारी रखने के लिए, शेल में ^C शॉर्टकट या .exit कमांड का उपयोग करें।
डायनामिक कॉन्फिगरेशन
ध्यान दें कि wdio.conf.js जावास्क्रिप्ट युक्त हो सकता है। चूंकि आप शायद अपने टाइमआउट मान को स्थायी रूप से 1 दिन में बदलना नहीं चाहते हैं, इसलिए अक्सर इन सेटिंग्स को कमांड लाइन से पर्यावरण चर (environment variable) का उपयोग करके बदलना सहायक हो सकता है।
इस तकनीक का उपयोग करके, आप कॉन्फिगरेशन को गतिशील रूप से बदल सकते हैं:
const debug = process.env.DEBUG
const defaultCapabilities = ...
const defaultTimeoutInterval = ...
const defaultSpecs = ...
export const config = {
// ...
maxInstances: debug ? 1 : 100,
capabilities: debug ? [{ browserName: 'chrome' }] : defaultCapabilities,
execArgv: debug ? ['--inspect'] : [],
jasmineOpts: {
defaultTimeoutInterval: debug ? (24 * 60 * 60 * 1000) : defaultTimeoutInterval
}
// ...
}
आप फिर wdio कमांड को debug फ्लैग के साथ प्रिफिक्स कर सकते हैं:
$ DEBUG=true npx wdio wdio.conf.js --spec ./tests/e2e/myspec.test.js
...और DevTools के साथ अपनी स्पेक फ़ाइल डीबग करें!
विजुअल स्टूडियो कोड (VSCode) के साथ डीबगिंग
यदि आप अपने परीक्षणों को नवीनतम VSCode में ब्रेकपॉइंट्स के साथ डीबग करना चाहते हैं, तो डिबगर शुरू करने के लिए आपके पास दो विकल्प हैं, जिनमें से विकल्प 1 सबसे आसान तरीका है:
- स्वचालित रूप से डिबगर को अटैच करना
- कॉन्फिगरेशन फ़ाइल का उपयोग करके डिब गर को अटैच करना
VSCode टॉगल ऑटो अटैच
आप VSCode में इन चरणों का पालन करके स्वचालित रूप से डिबगर को अटैच कर सकते हैं:
- CMD + Shift + P (Linux और Macos) या CTRL + Shift + P (Windows) दबाएं
- इनपुट फील्ड में "attach" टाइप करें
- "Debug: Toggle Auto Attach" चुनें
- "Only With Flag" चुनें
बस इतना ही! अब जब आप अपने परीक्षण चलाते हैं (याद रखें कि आपको --inspect फ्लैग को अपने कॉन्फिग में सेट करने की आवश्यकता होगी जैसा कि पहले दिखाया गया है) तो यह स्वचालित रूप से डिबगर शुरू कर देगा और पहले ब्रेकपॉइंट पर रुक जाएगा जिस पर यह पहुंचता है।