2015-12-19 13 views
10

कहानी:multiCapabilities और चमेली ध्यान केंद्रित परीक्षण

हम एक नहीं बल्कि बहुत बड़ा एंड-टू-एंड चांदा परीक्षण codebase है। हमारे पास दो कॉन्फ़िगरेशन हैं - एक "स्थानीय" है - directConnect का उपयोग करके क्रोम और फ़ायरफ़ॉक्स में परीक्षण चलाने के लिए, और दूसरा एक रिमोट सेलेनियम सर्वर पर परीक्षण चलाने के लिए "रिमोट" है - हमारे मामले में ब्राउज़रस्टैक।

हमारी "स्थानीय" कॉन्फ़िगरेशन क्रोम और कुछ फ़ायरफ़ॉक्स में कुछ परीक्षण चलाने के लिए कॉन्फ़िगर किया गया है - क्योंकि हम वास्तव में क्रोम में कुछ परीक्षण नहीं चला सकते हैं - उदाहरण के लिए, keyboard shortcuts don't work in Chrome+Mac। फ़ायरफ़ॉक्स में कीबोर्ड शॉर्टकट का उपयोग करने के लिए आवश्यक परीक्षणों को चलाने के लिए एक कार्यवाही है जब तक कि chromedriver समस्या हल नहीं हो जाती है।

यहाँ विन्यास के प्रासंगिक हिस्सा है:

var firefox_only_specs = [ 
    "../specs/some_spec1.js", 
    "../specs/some_spec2.js", 
    "../specs/some_spec3.js" 
]; 

exports.config = { 
    directConnect: true, 

    multiCapabilities: [ 
     { 
      browserName: "chrome", 
      chromeOptions: { 
       args: ["incognito", "disable-extensions", "start-maximized"] 
      }, 
      specs: [ 
       "../specs/**/*.spec.js", 
       "../specs/**/**/*.spec.js", 
       "../specs/**/**/**/*.spec.js" 
      ], 
      exclude: firefox_only_specs 
     }, 
     { 
      browserName: "firefox", 
      specs: firefox_only_specs 
     } 
    ], 

    // ... 
}; 

समस्या:

अब, समस्या यह है कि, अगर मैं एक एकल परीक्षण डिबगिंग कर रहा हूँ, या एक चलाना चाहते है एकल परीक्षण - मैं चिह्नित कर रहा हूं कि यह केंद्रित है (fdescribe/fit के माध्यम से) - लेकिन प्रोटैक्टर दो ड्राइवर सत्र शुरू करता है - एक क्रोम के लिए और दूसरा फ़ायरफ़ॉक्स के लिए, दोनों कॉन्फ़िगर किए गए क्षमताओं का उपयोग करते हुए:

Running "protractor:local" (protractor) task 
[launcher] Running 2 instances of WebDriver 

... 
------------------------------------ 
[chrome #1] PID: 2329 
[chrome #1] Using ChromeDriver directly... 
[chrome #1] Spec started 

... 

------------------------------------ 
[firefox #2] PID: 2330 
[firefox #2] Using FirefoxDriver directly... 
[firefox #2] Spec started 

... 

प्रश्न:

वहाँ एक रास्ता केवल एक ही क्षमता है कि एक केंद्रित कल्पना कॉन्फ़िगर किया है का उपयोग करने के चांदा बताने के लिए है?


वर्तमान में नवीनतम protractor 3.0.0 का उपयोग कर।

आशा है कि प्रश्न स्पष्ट है। अगर आपको कोई अतिरिक्त जानकारी चाहिए तो मुझे बताएं।

+0

आपके प्रश्न का उत्तर नहीं है लेकिन मेरे लिए ऐसा लगता है ... आप नहीं कर सकते। परीक्षण शुरू होने से पहले कॉन्फ़िगरेशन पढ़ा जाता है ताकि 'बहु-अक्षमता' में सभी ब्राउज़र प्रारंभ हो जाएंगे।एक दर्दनाक कामकाज "रनर" या स्क्रिप्ट निष्पादित करने के लिए एक अलग कॉन्फ़िगरेशन को बदलने या कमांड लाइन पैरामीटर के आधार पर कॉन्फ़िगरेशन को गतिशील रूप से सेट करने के लिए होगा। अर्थात। यह टूल/फ्रेमवर्क की अंतर्निर्मित सुविधा का उपयोग नहीं कर रहा है, लेकिन फिर आप एक diff कॉन्फ़िगरेशन के साथ निष्पादित कर सकते हैं जिसमें क्रोम सेटअप नहीं है। – aneroid

+0

@aneroid इस बिंदु के लिए धन्यवाद। हाँ, यह स्पष्ट नहीं है कि समस्या से कैसे संपर्क करें .. शायद हमें एक अलग कस्टम कमांड लाइन पैरामीटर होना चाहिए जो मूल्य के आधार पर, क्षमताओं में से एक या सभी को चलाएगा .. – alecxe

+0

ध्यान में रखें यदि आवश्यक हो तो – martin770

उत्तर

1

मुझे आश्चर्य है कि आप कुछ करना it विवरणों जैसे रैप करने के लिए कर सकते हैं यदि:

onPrepare: function() { 
    browser.getCapabilities().then(function(caps) { 
     global.browserName = caps.caps_.browserName; 
    }); 

    global.firefoxOnly = function(name, testFunction) { 
     if (browserName === 'firefox') { 
      return it(name, testFunction); 
     } else { 
      return xit(name, testFunction).pend('firefox only'); 
     } 
    }; 
} 

तो फिर तुम एक परीक्षण के बजाय it कुछ प्रयोग की तरह लिखने जब:

describe('when I do something', function() { 
    firefoxOnly('it should do the right thing', function() { 
     doSomething(); 
     expect(thing).toBe(right); 
    )}; 
}); 

मेरे पास कोई राशि विचार अगर यह वास्तव में काम करता है, तो बस इसे बाहर फेंक दें। असल में, जब मैं अपने परीक्षण कंप्यूटर पर वापस आ जाता हूं और इसे आज़माता हूं, तो मुझे अपने एटीडीडी परीक्षणों को स्वचालित रूप से पेंड करने के लिए xit के बजाय wip जैसे फ़ंक्शन को जोड़ने में दिलचस्पी होगी!

0

क्या प्रोटेक्टर को केवल एक ही क्षमता का उपयोग करने के लिए कहने का कोई तरीका है जिसमें एक केंद्रित spec कॉन्फ़िगर किया गया है?

relevant github issue के अनुसार

, यह संभव नहीं है।

संबंधित मुद्दे