Recherche…


Remarques

Nightwatch fournit des tests d’acceptation et de bout en bout pour les applications Meteor depuis la version v0.5, et a géré les migrations de PHP vers Spark vers Blaze et React; et toutes les principales plates-formes d'intégration continue. Pour une aide supplémentaire, veuillez consulter:

Documentation de l'API Nightwatch
Groupe Google Nightwatch.js

Configuration

La raison principale pour laquelle Nightwatch est si puissant est son excellent fichier de configuration. Contrairement à la plupart des autres environnements de test, Nightwatch est entièrement configurable et personnalisable pour différents environnements et piles technologiques.

.meteor / nightwatch.json

Le fichier de configuration suivant concerne Meteor v1.3 et versions ultérieures et prend en charge deux environnements: un environnement default qui lance le navigateur chromedriver et un environnement phantom qui exécute les tests dans un environnement sans tête.

{
  "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": ""
    }
  }
}

Installation et utilisation

Pour que Nightwatch fonctionne, vous aurez besoin d'une copie locale de sélénium, un serveur de commande et de contrôle qui gère les instances de navigateur automatisées. Vous aurez également besoin d'un navigateur Web que le sélénium peut contrôler, tel que chromedriver ou phantomjs .

Ajoutez les dépendances devDep suivantes à votre package.json :

{
  "devDependencies": {
    "nightwatch": "0.9.8",
    "selenium-server-standalone-jar": "2.45.0",
    "chromedriver": "2.19.0",
    "phantomjs-prebuilt": "2.1.12"
  }
}

Installez ensuite toutes les dépendances.

cd myapp
meteor npm install

Vous devriez alors pouvoir exécuter Nightwatch avec les commandes suivantes:

nightwatch -c .meteor/nightwatch.json
nightwatch -c .meteor/nightwatch.json --env phantom

Si vous n'avez pas encore écrit de test ou configuré votre structure de dossiers, vous risquez de rencontrer des erreurs.

Configuration des scripts de lancement

La racine de votre application doit être un fichier package.json , dans lequel vous pouvez définir des scripts et des 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",
  }
}

Vous pourrez alors lancer la surveillance nocturne avec les commandes suivantes:

meteor npm run-script nightwatch
meteor npm run-script phantom

Dans cet exemple, il serait presque plus facile de simplement exécuter nightwatch -c .meteor/nightwatch.json . Cependant, avec des commandes plus complexes, avec des variables, des options et des paramètres d'environnement complexes, cela devient un moyen très utile pour spécifier des scripts devops pour une équipe.

Structure des dossiers

Une installation de base Nightwatch pour Meteor aura les répertoires et fichiers suivants installés.

/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

Tests basés sur les données

Nightwatch accepte un second fichier de configuration globals.json qui injecte des données dans le programme de test lui-même, très similaire à la manière dont Meteor.settings rend les données de la ligne de commande disponibles dans toute l'application.

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
    }
  }
}

Vous pouvez ensuite écrire vos tests qui ne sont pas codés en dur avec des utilisateurs spécifiques, des mots de passe, des entrées de recherche, 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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow