Ricerca…
Osservazioni
Nightwatch fornisce test di accettazione e end-to-end per le app Meteor da v0.5 giorni e ha gestito migrazioni da PHP a Spark a Blaze ea React; e tutte le principali piattaforme di integrazione continua. Per ulteriore assistenza, vedere:
Configurazione
Il motivo principale per cui Nightwatch è così potente è il suo eccellente file di configurazione. A differenza della maggior parte degli altri framework di test, Nightwatch è completamente configurabile e personalizzabile in diversi ambienti e stack tecnologici.
.meteor / nightwatch.json
Il seguente file di configurazione è per Meteor versione 1.3 e successive e supporta due ambienti ... un ambiente default
che avvia il browser chromedriver e un ambiente phantom
che esegue i test in un ambiente privo di headless.
{
"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": ""
}
}
}
Installazione e utilizzo
Per far funzionare Nightwatch, avrai bisogno di una copia locale di selenio, che è un server di comando e controllo che gestisce istanze di browser automatizzate. Avrai anche bisogno di un browser web che il selenio possa controllare, come chromedriver o phantomjs .
Aggiungi le seguenti devDependencies al tuo package.json
:
{
"devDependencies": {
"nightwatch": "0.9.8",
"selenium-server-standalone-jar": "2.45.0",
"chromedriver": "2.19.0",
"phantomjs-prebuilt": "2.1.12"
}
}
Quindi installare tutte le dipendenze.
cd myapp
meteor npm install
Dovresti quindi essere in grado di eseguire Nightwatch con i seguenti comandi:
nightwatch -c .meteor/nightwatch.json
nightwatch -c .meteor/nightwatch.json --env phantom
Se non hai ancora scritto alcun test o non hai ancora configurato la struttura delle cartelle, potresti ricevere alcuni errori.
Impostazione degli script di avvio
Nella root della tua applicazione dovrebbe essere un file package.json
, dove puoi definire script e devDependencies.
{
"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",
}
}
Sarà quindi possibile avviare Nightwatch con i seguenti comandi:
meteor npm run-script nightwatch
meteor npm run-script phantom
In questo esempio, sarebbe quasi più semplice eseguire semplicemente nightwatch -c .meteor/nightwatch.json
. Tuttavia, con comandi più complessi, con variabili d'ambiente complesse, opzioni e impostazioni, questo diventa un modo molto utile per specificare gli script di devops per una squadra.
Struttura delle cartelle
Un'installazione di base di Nightwatch per Meteor avrà le seguenti directory e file installati.
/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
Test basati sui dati
Nightwatch accetta un secondo file di configurazione globals.json
che inietta i dati nel runner di prova stesso, molto simile a come Meteor.settings
rende i dati dalla riga di comando disponibili in tutta l'app.
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
}
}
}
È quindi possibile scrivere i test che non sono codificati con utenti specifici, password, input di ricerca, ecc.
module.exports = {
"Login App" : function (client) {
client
.url(client.globals.url)
.login(client.globals.user.email, client.globals.user.password)
.end();
}
};