खोज…
टिप्पणियों
नाइटवॉच v0.5 दिनों से उल्का ऐप के लिए स्वीकृति और एंड-टू-एंड परीक्षण प्रदान कर रहा है, और पीएचपी से स्पार्क तक ब्लेज़ और रिएक्ट के लिए माइग्रेशन प्रबंधित कर रहा है; और सभी प्रमुख सतत एकीकरण प्लेटफॉर्म। अतिरिक्त सहायता के लिए, कृपया देखें:
विन्यास
नाइटवाच इतना शक्तिशाली होने का मुख्य कारण, इसकी उत्कृष्ट कॉन्फ़िगरेशन फ़ाइल है। अधिकांश अन्य परीक्षण रूपरेखाओं के विपरीत, नाइटवॉच पूरी तरह से अलग-अलग वातावरण और प्रौद्योगिकी के ढेर के लिए विन्यास और अनुकूलन योग्य है।
.meteor / nightwatch.json
निम्नलिखित कॉन्फ़िगरेशन फ़ाइल Meteor v1.3 और बाद के लिए है, और दो वातावरणों का समर्थन करती है ... एक default
वातावरण जो क्रोमेड्राइवर ब्राउज़र लॉन्च करता है, और एक phantom
वातावरण जो एक हेडलेस वातावरण में परीक्षण चलाता है।
{
"nightwatch": {
"version": "0.9.8"
},
"src_folders": [
"./tests/nightwatch/walkthroughs"
],
"custom_commands_path": [
"./tests/nightwatch/commands"
],
"custom_assertions_path": [
"./tests/nightwatch/assertions"
],
"output_folder": "./tests/nightwatch/reports",
"page_objects_path": "./tests/nightwatch/pages",
"globals_path": "./tests/nightwatch/globals.json",
"selenium": {
"start_process": true,
"server_path": "./node_modules/starrynight/node_modules/selenium-server-standalone-jar/jar/selenium-server-standalone-2.45.0.jar",
"log_path": "tests/nightwatch/logs",
"host": "127.0.0.1",
"port": 4444,
"cli_args": {
"webdriver.chrome.driver": "./node_modules/starrynight/node_modules/chromedriver/bin/chromedriver"
}
},
"test_settings": {
"default": {
"launch_url": "http://localhost:5000",
"selenium_host": "127.0.0.1",
"selenium_port": 4444,
"pathname": "/wd/hub",
"silent": true,
"disable_colors": false,
"firefox_profile": false,
"ie_driver": "",
"screenshots": {
"enabled": false,
"path": "./tests/nightwatch/screenshots"
},
"desiredCapabilities": {
"browserName": "chrome",
"javascriptEnabled": true,
"acceptSslCerts": true,
"loggingPrefs": {
"browser": "ALL"
}
},
"exclude": "./tests/nightwatch/unittests/*",
"persist_globals": true,
"detailed_output": false
},
"phantom": {
"desiredCapabilities": {
"browserName": "phantomjs",
"javascriptEnabled": true,
"databaseEnabled": false,
"locationContextEnabled": false,
"applicationCacheEnabled": false,
"browserConnectionEnabled": false,
"webStorageEnabled": false,
"acceptSslCerts": true,
"rotatable": false,
"nativeEvents": false,
"phantomjs.binary.path": "./node_modules/starrynight/node_modules/phantomjs-prebuilt/bin/phantomjs"
}
},
"unittests": {
"selenium": {
"start_process": false,
"start_session": false
},
"filter": "./tests/nightwatch/unittests/*",
"exclude": ""
}
}
}
स्थापना और उपयोग
नाइटवॉच को काम करने के लिए, आपको सेलेनियम की एक स्थानीय प्रतिलिपि की आवश्यकता होगी जो एक कमांड-एंड-कंट्रोल सर्वर है जो स्वचालित ब्राउज़र इंस्टेंसेस का प्रबंधन करता है। आपको एक वेब ब्राउज़र की भी आवश्यकता होगी जो सेलेनियम को नियंत्रित कर सकता है, जैसे कि क्रोमेड्रिवर या फैंटमज ।
अपने package.json
में निम्नलिखित निर्भरताएँ जोड़ें। json:
{
"devDependencies": {
"nightwatch": "0.9.8",
"selenium-server-standalone-jar": "2.45.0",
"chromedriver": "2.19.0",
"phantomjs-prebuilt": "2.1.12"
}
}
फिर सभी डिपेंडेंसी स्थापित करें।
cd myapp
meteor npm install
फिर आपको निम्नलिखित कमांड के साथ नाइटवॉच चलाने में सक्षम होना चाहिए:
nightwatch -c .meteor/nightwatch.json
nightwatch -c .meteor/nightwatch.json --env phantom
यदि आपने कोई परीक्षण नहीं लिखा है, या अभी तक अपनी फ़ोल्डर संरचना सेट नहीं की है, तो आपको कुछ त्रुटियां हो सकती हैं।
लॉन्च स्क्रिप्ट सेट करना
अपने आवेदन की जड़ में एक package.json
होना चाहिए। जसन फ़ाइल, जहाँ आप स्क्रिप्ट और डिडपेंडेंसी को परिभाषित कर सकते हैं।
{
"name": "myapp",
"version": "1.0.0",
"scripts": {
"start": "meteor --settings settings-development.json",
"nightwatch": "nightwatch -c .meteor/nightwatch.json",
"phantom": "nightwatch -c .meteor/nightwatch.json --env phantom",
}
}
फिर आप निम्न कमांड के साथ नाइटवॉच शुरू कर पाएंगे:
meteor npm run-script nightwatch
meteor npm run-script phantom
इस उदाहरण में, केवल nightwatch -c .meteor/nightwatch.json
चलाना लगभग आसान होगा। हालाँकि, अधिक जटिल आदेशों के साथ, जटिल पर्यावरण चर, विकल्प और सेटिंग्स के साथ, यह एक टीम के लिए स्क्रिप्ट को निर्दिष्ट करने का एक बहुत ही उपयोगी तरीका बन जाता है।
फ़ोल्डर संरचना
उल्का के लिए एक बुनियादी नाइटवॉच इंस्टॉलेशन में निम्नलिखित निर्देशिकाएं और फाइलें स्थापित होंगी।
/myapp
/myapp/.meteor/nightwatch.json
/client/main.html
/client/main.js
/client/main.css
/tests
/tests/nightwatch
/tests/nightwatch/assertions
/tests/nightwatch/commands
/tests/nightwatch/data
/tests/nightwatch/logs
/tests/nightwatch/pages
/tests/nightwatch/reports
/tests/nightwatch/screenshots
/tests/nightwatch/walkthroughs
/tests/nightwatch/walkthroughs/critical_path.js
/tests/nightwatch/globals.json
डेटा चालित परीक्षण
globals.json
एक दूसरी globals.json
कॉन्फ़िगरेशन फ़ाइल को स्वीकार करता है जो डेटा को टेस्ट रनर में ही Meteor.settings
करता है, यह बहुत ही समान है कि Meteor.settings
पूरे ऐप में कमांड लाइन से डेटा कैसे उपलब्ध करता है।
globals.json
{
"default" : {
"url" : "http://localhost:3000",
"user": {
"name": "Jane Doe",
"username" : "janedoe",
"password" : "janedoe123",
"email" : "[email protected]",
"userId": null
}
},
"circle" : {
"url" : "http://localhost:3000",
"user": {
"name": "Jane Doe",
"username" : "janedoe",
"password" : "janedoe123",
"email" : "[email protected]"
"userId": null
}
},
"galaxy" : {
"url" : "http://myapp.meteorapp.com",
"user": {
"name": "Jane Doe",
"username" : "janedoe",
"password" : "janedoe123",
"email" : "[email protected]"
"userId": null
}
}
}
फिर आप अपने परीक्षण लिख सकते हैं जो विशिष्ट उपयोगकर्ताओं, पासवर्ड, खोज इनपुट आदि के साथ हार्डकोड नहीं हैं।
module.exports = {
"Login App" : function (client) {
client
.url(client.globals.url)
.login(client.globals.user.email, client.globals.user.password)
.end();
}
};