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();
  }
};


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow