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:

Documentazione API di Nightwatch
Nightwatch.js Google Group

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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow