Zoeken…
Opmerkingen
Nightwatch levert al sinds v0,5 dagen acceptatie- en end-to-end-testen voor Meteor-apps en heeft migraties van PHP naar Spark naar Blaze en React beheerd; en alle belangrijke platforms voor continue integratie. Zie voor meer hulp:
Configuratie
De belangrijkste reden dat Nightwatch zo krachtig is, is vanwege het uitstekende configuratiebestand. In tegenstelling tot de meeste andere testframes, is Nightwatch volledig configureerbaar en aanpasbaar aan verschillende omgevingen en technologiestacks.
.meteor / nightwatch.json
De volgende configuratie bestand voor Meteor v1.3 en hoger, en ondersteunt twee omgevingen ... een default
omgeving die de chromedriver browser gestart en een phantom
omgeving waarin de proeven in een headless omgeving draait.
{
"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": ""
}
}
}
Installatie & gebruik
Om Nightwatch aan het werk te krijgen, hebt u een lokaal exemplaar van selenium nodig. Dit is een opdracht- en controleserver die geautomatiseerde browser-exemplaren beheert. Je hebt ook een webbrowser nodig die selenium kan bedienen, zoals chromedriver of phantomjs .
Voeg de volgende devDependencies toe aan uw package.json
:
{
"devDependencies": {
"nightwatch": "0.9.8",
"selenium-server-standalone-jar": "2.45.0",
"chromedriver": "2.19.0",
"phantomjs-prebuilt": "2.1.12"
}
}
Installeer vervolgens alle afhankelijkheden.
cd myapp
meteor npm install
U zou dan Nightwatch moeten kunnen uitvoeren met de volgende commando's:
nightwatch -c .meteor/nightwatch.json
nightwatch -c .meteor/nightwatch.json --env phantom
Als u nog geen tests hebt geschreven of uw mapstructuur nog niet hebt ingesteld, kunnen er fouten optreden.
Startscripts instellen
In de root van uw applicatie moet een package.json
bestand staan, waar u scripts en devDependencies kunt definiëren.
{
"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",
}
}
U kunt dan de nachtwacht starten met de volgende opdrachten:
meteor npm run-script nightwatch
meteor npm run-script phantom
In dit voorbeeld zou het bijna eenvoudiger zijn om eenvoudig nightwatch -c .meteor/nightwatch.json
. Met complexere opdrachten, met complexe omgevingsvariabelen, opties en instellingen, wordt dit echter een zeer handige manier om devopscripts voor een team op te geven.
Mapstructuur
Bij een eenvoudige Nightwatch-installatie voor Meteor zijn de volgende mappen en bestanden geïnstalleerd.
/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
Datagestuurd testen
Nightwatch accepteert een tweede configuratiebestand globals.json
dat gegevens in de globals.json
injecteert, vergelijkbaar met hoe Meteor.settings
gegevens vanaf de opdrachtregel in de hele app beschikbaar maakt.
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
}
}
}
U kunt vervolgens uw tests schrijven die niet hardcoderen met specifieke gebruikers, wachtwoorden, zoekinvoer, enz.
module.exports = {
"Login App" : function (client) {
client
.url(client.globals.url)
.login(client.globals.user.email, client.globals.user.password)
.end();
}
};