खोज…


टिप्पणियों

नाइटवॉच v0.5 दिनों से उल्का ऐप के लिए स्वीकृति और एंड-टू-एंड परीक्षण प्रदान कर रहा है, और पीएचपी से स्पार्क तक ब्लेज़ और रिएक्ट के लिए माइग्रेशन प्रबंधित कर रहा है; और सभी प्रमुख सतत एकीकरण प्लेटफॉर्म। अतिरिक्त सहायता के लिए, कृपया देखें:

नाइटवॉच एपीआई प्रलेखन
Nightwatch.js Google समूह

विन्यास

नाइटवाच इतना शक्तिशाली होने का मुख्य कारण, इसकी उत्कृष्ट कॉन्फ़िगरेशन फ़ाइल है। अधिकांश अन्य परीक्षण रूपरेखाओं के विपरीत, नाइटवॉच पूरी तरह से अलग-अलग वातावरण और प्रौद्योगिकी के ढेर के लिए विन्यास और अनुकूलन योग्य है।

.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();
  }
};


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow