Sök…
Anmärkningar
Nightwatch har tillhandahållit Acceptance och End-to-End-test för Meteor-appar sedan v0.5 dagar och har hanterat migrationer från PHP till Spark to Blaze och React; och alla större kontinuerliga integrationsplattformar. För ytterligare hjälp, se:
Konfiguration
Det främsta skälet till att Nightwatch är så kraftfullt är på grund av den utmärkta konfigurationsfilen. Till skillnad från de flesta andra testramar är Nightwatch helt konfigurerbar och anpassningsbar till olika miljöer och teknikstackar.
.meteor / nightwatch.json
Följande konfigurationsfil är för Meteor v1.3 och senare och stöder två miljöer ... en default
som startar webbläsaren för kromförare och en phantom
som kör testen i en huvudlös miljö.
{
"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": ""
}
}
}
Installation och användning
För att få Nightwatch att fungera behöver du en lokal kopia av selen som är en kommando-och-kontrollserver som hanterar automatiserade webbläsareinstanser. Du behöver också en webbläsare som selen kan styra, till exempel kromförare eller phantomjs .
Lägg till följande avvikelser till ditt package.json
:
{
"devDependencies": {
"nightwatch": "0.9.8",
"selenium-server-standalone-jar": "2.45.0",
"chromedriver": "2.19.0",
"phantomjs-prebuilt": "2.1.12"
}
}
Installera sedan alla skador.
cd myapp
meteor npm install
Du ska då kunna köra Nightwatch med följande kommandon:
nightwatch -c .meteor/nightwatch.json
nightwatch -c .meteor/nightwatch.json --env phantom
Om du inte har skrivit några tester eller konfigurerat din mappstruktur ännu, kan du få några fel.
Ställa in lanseringsskript
I roten till din applikation ska det finnas en package.json
fil, där du kan definiera skript och avvikelser.
{
"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",
}
}
Du kommer då att kunna starta nattur med följande kommandon:
meteor npm run-script nightwatch
meteor npm run-script phantom
I det här exemplet skulle det nästan vara lättare att bara köra nightwatch -c .meteor/nightwatch.json
. Men med mer komplexa kommandon, med komplexa miljövariabler, alternativ och inställningar, blir detta ett mycket användbart sätt att specificera devops-skript för ett team.
Mappstruktur
En grundläggande Nightwatch-installation för Meteor kommer att ha följande kataloger och filer installerade.
/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
Datadriven testning
Nightwatch accepterar en andra globals.json
konfigurationsfil som injicerar data i själva Meteor.settings
, mycket liknande hur Meteor.settings
gör data från kommandoraden tillgänglig i hela appen.
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
}
}
}
Du kan sedan skriva dina tester som inte är hårdkodade med specifika användare, lösenord, sökingångar etc.
module.exports = {
"Login App" : function (client) {
client
.url(client.globals.url)
.login(client.globals.user.email, client.globals.user.password)
.end();
}
};