2016-11-13 6 views
13

मैं एडब्ल्यूएस लैम्ब्डा कार्यों का बहुत आनंद ले रहा हूं, और मैं सोच रहा हूं कि मैं यहां क्या करना चाहता हूं, यह संभव है।मैं एक एडब्ल्यूएस लैम्ब्डा स्क्रिप्ट कैसे लिख सकता हूं जो एक प्रोटैक्टर/सेलेनियम ब्राउज़र स्वचालन स्क्रिप्ट चलाता है?

// conf.js 
exports.config = { 
    framework: 'jasmine', 
    seleniumAddress: 'http://127.0.0.1:4444/wd/hub', 
    specs: ['automation-script.js'], 
    capabilities: { 
    browserName: 'chrome' 
    } 
} 

और एक स्क्रिप्ट है कि एक निश्चित यूआरएल के साथ एक ब्राउज़र विंडो अप लोड करता है:

describe('Protractor Demo App', function() { 
    it('should have a title', function() { 
    browser.driver.get('https://github.com/'); 

    // Click around and do things here. 

    }); 
}); 

उद्देश्य मेरी स्क्रिप्ट अभी काला करने के लिए नहीं कर रहे हैं अपने स्थानीय मशीन पर, मैं एक कोणमापक कॉन्फ़िग फ़ाइल है -बॉक्स एक ऐसे अनुप्रयोग का परीक्षण करें जिसे मैं विकसित कर रहा हूं, लेकिन सामान्य ब्राउजर कार्यों को स्वचालित करने के बजाय जो मुझे ऐसा नहीं लगता है।

वर्तमान में, मैं अपने स्थानीय कमांड खोल के माध्यम से चांदा स्क्रिप्ट चल रहा हूँ इस तरह:

protractor protractor.conf.js 

मैं अगर यह संभवतः है एक और Node.js स्क्रिप्ट के भीतर से चांदा चलाने के लिए सोच रहा हूँ। मेरी सोच मैं लैम्ब्डा समारोह एक चांदा काम शुरू, संभवतः ब्राउज़रों Browserstack या सॉस लैब्स से उपलब्ध का उपयोग करके हो सकता है, लेकिन मैं समझ नहीं एक Node.js स्क्रिप्ट से चांदा को चलाने के लिए कैसे है।

+1

मुझे यकीन नहीं है, लेकिन आम तौर पर लैम्बडा एस 3 स्टोरेज में और बाहर जाने वाली फ़ाइलों को बदलने/जांचने के लिए हैं, कुछ http कॉल आदि का जवाब दे रहे हैं? ऐसा कुछ ऐसा लगता है जो नोड इत्यादि में ईसी 2 इंस्टेंस पर चलाने के लिए बेहतर होगा। – adeneo

+2

मुझे लगता है कि Ec2 के साथ कुछ भी किया जा सकता है जो लैम्ब्डा के साथ एक सर्वर रहित वास्तुकला के रूप में भी किया जा सकता है। – Jim

उत्तर

5

यह वास्तव में एक दिलचस्प सवाल है। हमारा संगठन जांच कर रहा है कि हमारी सीआई/सीडी पाइपलाइन कितनी सर्वरहीन फैशन में की जा सकती है। यह ठीक है कि गली।

दुर्भाग्य से, मुझे नहीं लगता कि सुरुचिपूर्ण अन्य नोड स्क्रिप्ट से protractor चलाने के लिए है। यही है, protractor एक एपीआई का पर्दाफाश नहीं करता है जो इस तरह से उपभोग करना आसान बनाता है।

यह been asked for है, लेकिन (protractor पर एक सापेक्ष नवागंतुक के रूप में) इस मुद्दे को बंद करने से ठीक पहले टिप्पणी में मेरे दृष्टिकोण के बारे में जानने के लिए पर्याप्त जानकारी नहीं है। तो, नहीं-तो-सुरुचिपूर्ण दृष्टिकोण:

बाल प्रक्रिया

पहले टिप्पणी के होते हुए भी, आप वास्तव में protractor एक और नोड स्क्रिप्ट के भीतर से चला सकते हैं, एक नोड स्क्रिप्ट एडब्ल्यूएस 'लैम्ब्डा वातावरण में क्रियान्वित भी शामिल है। ऐसा करने के खूबसूरत/बेहतर तरीके हो सकते हैं, लेकिन मैं this answer लिया और उस पर निम्नलिखित लैम्ब्डा समारोह आधारित: protractor कॉन्फ़िग फ़ाइल को

'use strict'; 

module.exports.runtest = (event, context, callback) => { 

    var npm = require('npm'); 
    var path = require('path'); 
    var childProcess = require('child_process'); 
    var args = ['conf.js']; 

    npm.load({}, function() { 
    var child = childProcess 
    .fork(path.join(npm.root, 'protractor/bin/protractor'), args) 
    .on('close', function(errorCode) { 
     const response = { 
     statusCode: 200, 
     body: JSON.stringify({ 
      message: `Selenium Test executed on BrowserStack! Child process Error Code: ${errorCode}`, 
     }), 
     }; 
     callback(null, response); 
    }); 
    process.on('SIGINT', child.kill); 
    }); 
}; 

var args = ['conf.js']; अंक है, जो इस में परीक्षण (index.js को बारी अंक में मामले):

exports.config = { 
    'specs': ['./index.js'], 
    'seleniumAddress': 'http://hub-cloud.browserstack.com/wd/hub', 
    'capabilities': { 
     'browserstack.user': '<BROWSERSTACK_USER>', 
     'browserstack.key': '<BROWSERSTACK_KEY>', 
     'browserName': 'chrome' 
    } 
    }; 

Repository here.

नोट्स

  • npm इस दृष्टिकोण का उपयोग कर रनटाइम निर्भरता है, जिसका अर्थ है कि इसे आपके तैनाती में पैक किया जाना है। यह अपेक्षाकृत बड़े लैम्ब्डा समारोह के लिए बनाता है। ~ 20 एमबी पर, यह इतना बड़ा है कि अब आप एडब्ल्यूएस कंसोल में कोड इनलाइन संपादित नहीं करते हैं। एक दृष्टिकोण है कि एक क्रम निर्भरता के रूप में npm पैकेज नहीं किया था बहुत अच्छे होगा।
  • भूलें मत भूलें लैम्ब्डा में 5 मिनट की समय सीमा है। आपके परीक्षणों को उससे कम समय में पूरा करने की आवश्यकता होगी।
  • घड़ी देखें। कई मामलों में, मेरा खिलौना उदाहरण केवल कुछ सेकंड के लिए ब्राउज़र का उपयोग करता है, लेकिन ओवरहेड (ब्राउजरस्टैक से कनेक्ट करने का, ज्यादातर, मुझे लगता है) लैम्ब्डा को 12-30 सेकंड पूरी तरह से ले जाता है। 2.5 सेकंड के लिए ब्राउज़र का उपयोग करने के लिए गणना के 30 सेकंड के लिए भुगतान करना जीत की तरह नहीं लगता है। परीक्षणों का बड़ा बैच कम अपर्याप्त हो सकता है।
  • आप क्लाउडवॉच को बिना किसी अतिरिक्त नलसाजी के बच्चे की प्रक्रिया के लॉगिंग प्राप्त करें, जो अच्छा है।
  • अस्वीकरण: मेरा उदाहरण केवल खुश-पथ परीक्षण किया गया है, और मैं नोड में बाल प्रक्रियाओं पर कोई विशेषज्ञ नहीं हूं।
संबंधित मुद्दे