Szukaj…
Uwagi
Nightwatch zapewnia testy akceptacyjne i kompleksowe dla aplikacji Meteor od wersji 0,5 dni i zarządza migracjami z PHP do Spark na Blaze i React; i wszystkie główne platformy ciągłej integracji. Aby uzyskać dodatkową pomoc, zobacz:
Konfiguracja
Głównym powodem, dla którego Nightwatch jest tak potężny, jest doskonały plik konfiguracyjny. W przeciwieństwie do większości innych platform testowych, Nightwatch jest w pełni konfigurowalny i dostosowywany do różnych środowisk i stosów technologicznych.
.meteor / nightwatch.json
Poniższy plik konfiguracyjny jest przeznaczony dla Meteora wer. 1.3 i nowszych i obsługuje dwa środowiska ... środowisko default
które uruchamia przeglądarkę chromedriver, oraz środowisko phantom
które uruchamia testy w środowisku bezgłowym.
{
"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": ""
}
}
}
Instalacja i użytkowanie
Aby Nightwatch działał, potrzebujesz lokalnej kopii selenu, który jest serwerem dowodzenia i kontroli, który zarządza zautomatyzowanymi instancjami przeglądarki. Będziesz także potrzebować przeglądarki internetowej, którą może kontrolować selen, takiej jak chromedriver lub phantomjs .
Dodaj następujące devDependencies do package.json
:
{
"devDependencies": {
"nightwatch": "0.9.8",
"selenium-server-standalone-jar": "2.45.0",
"chromedriver": "2.19.0",
"phantomjs-prebuilt": "2.1.12"
}
}
Następnie zainstaluj wszystkie zależności.
cd myapp
meteor npm install
Powinieneś być w stanie uruchomić Nightwatch za pomocą następujących poleceń:
nightwatch -c .meteor/nightwatch.json
nightwatch -c .meteor/nightwatch.json --env phantom
Jeśli nie napisałeś jeszcze żadnych testów lub nie skonfigurowałeś jeszcze struktury folderów, możesz otrzymać błędy.
Konfigurowanie skryptów uruchamiania
W katalogu głównym aplikacji powinien znajdować się plik package.json
, w którym można zdefiniować skrypty i 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",
}
}
Będziesz wtedy mógł uruchomić nocny zegarek za pomocą następujących poleceń:
meteor npm run-script nightwatch
meteor npm run-script phantom
W tym przykładzie prawie łatwiej byłoby po prostu uruchomić nightwatch -c .meteor/nightwatch.json
. Jednak w przypadku bardziej złożonych poleceń, ze złożonymi zmiennymi środowiskowymi, opcjami i ustawieniami, staje się to bardzo użytecznym sposobem określania skryptów devops dla zespołu.
Struktura folderów
Podstawowa instalacja Nightwatch dla Meteor będzie mieć zainstalowane następujące katalogi i pliki.
/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
Testy oparte na danych
Nightwatch akceptuje drugi plik konfiguracyjny globals.json
, który wstrzykuje dane do samego testera, bardzo podobny do tego, w jaki sposób Meteor.settings
udostępnia dane z wiersza poleceń w całej aplikacji.
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
}
}
}
Następnie możesz napisać swoje testy, które nie są zakodowane na stałe dla określonych użytkowników, haseł, danych wejściowych wyszukiwania itp.
module.exports = {
"Login App" : function (client) {
client
.url(client.globals.url)
.login(client.globals.user.email, client.globals.user.password)
.end();
}
};