Buscar..
Observaciones
Nightwatch ha estado proporcionando pruebas de aceptación y de extremo a extremo para las aplicaciones Meteor desde v0.5 días, y ha gestionado migraciones de PHP a Spark to Blaze y a React; y todas las principales plataformas de integración continua. Para ayuda adicional, por favor vea:
Documentación de la API de Nightwatch
Nightwatch.js Grupo de Google
Configuración
La razón principal por la que Nightwatch es tan poderoso es su excelente archivo de configuración. A diferencia de la mayoría de los otros marcos de prueba, Nightwatch es totalmente configurable y personalizable para diferentes entornos y pilas de tecnología.
.meteor / nightwatch.json
El siguiente archivo de configuración es para Meteor v1.3 y posterior, y admite dos entornos ... un entorno default
que inicia el navegador Chromedriver y un entorno phantom
que ejecuta las pruebas en un entorno sin cabeza.
{
"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": ""
}
}
}
Instalación y uso
Para que Nightwatch funcione, necesitará una copia local de selenio, que es un servidor de comando y control que administra las instancias de navegador automatizadas. También necesitará un navegador web que pueda controlar el selenio, como chromedriver o phantomjs .
Agregue las siguientes devDependencies a su package.json
:
{
"devDependencies": {
"nightwatch": "0.9.8",
"selenium-server-standalone-jar": "2.45.0",
"chromedriver": "2.19.0",
"phantomjs-prebuilt": "2.1.12"
}
}
Luego instale todas las dependencias.
cd myapp
meteor npm install
Entonces deberías poder ejecutar Nightwatch con los siguientes comandos:
nightwatch -c .meteor/nightwatch.json
nightwatch -c .meteor/nightwatch.json --env phantom
Si aún no ha escrito ninguna prueba, o no ha configurado su estructura de carpetas, puede obtener algunos errores.
Configurando guiones de lanzamiento
En la raíz de su aplicación debe haber un archivo package.json
, donde puede definir scripts y 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",
}
}
Luego podrás iniciar Nightwatch con los siguientes comandos:
meteor npm run-script nightwatch
meteor npm run-script phantom
En este ejemplo, casi sería más fácil simplemente ejecutar nightwatch -c .meteor/nightwatch.json
. Sin embargo, con comandos más complejos, con variables de entorno complejas, opciones y configuraciones, esto se convierte en una manera muy útil de especificar scripts de devops para un equipo.
Estructura de la carpeta
Una instalación básica de Nightwatch para Meteor tendrá los siguientes directorios y archivos instalados.
/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
Pruebas dirigidas por datos
Nightwatch acepta un segundo archivo de configuración globals.json
que inyecta datos en el propio corredor de prueba, muy similar a cómo Meteor.settings
hace que los datos de la línea de comandos estén disponibles en toda la aplicación.
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
}
}
}
Luego puede escribir sus pruebas que no están codificadas con usuarios específicos, contraseñas, entradas de búsqueda, etc.
module.exports = {
"Login App" : function (client) {
client
.url(client.globals.url)
.login(client.globals.user.email, client.globals.user.password)
.end();
}
};