Zoeken…


Opmerkingen

Nightwatch levert al sinds v0,5 dagen acceptatie- en end-to-end-testen voor Meteor-apps en heeft migraties van PHP naar Spark naar Blaze en React beheerd; en alle belangrijke platforms voor continue integratie. Zie voor meer hulp:

Nightwatch API-documentatie
Nightwatch.js Google Group

Configuratie

De belangrijkste reden dat Nightwatch zo krachtig is, is vanwege het uitstekende configuratiebestand. In tegenstelling tot de meeste andere testframes, is Nightwatch volledig configureerbaar en aanpasbaar aan verschillende omgevingen en technologiestacks.

.meteor / nightwatch.json

De volgende configuratie bestand voor Meteor v1.3 en hoger, en ondersteunt twee omgevingen ... een default omgeving die de chromedriver browser gestart en een phantom omgeving waarin de proeven in een headless omgeving draait.

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

Installatie & gebruik

Om Nightwatch aan het werk te krijgen, hebt u een lokaal exemplaar van selenium nodig. Dit is een opdracht- en controleserver die geautomatiseerde browser-exemplaren beheert. Je hebt ook een webbrowser nodig die selenium kan bedienen, zoals chromedriver of phantomjs .

Voeg de volgende devDependencies toe aan uw package.json :

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

Installeer vervolgens alle afhankelijkheden.

cd myapp
meteor npm install

U zou dan Nightwatch moeten kunnen uitvoeren met de volgende commando's:

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

Als u nog geen tests hebt geschreven of uw mapstructuur nog niet hebt ingesteld, kunnen er fouten optreden.

Startscripts instellen

In de root van uw applicatie moet een package.json bestand staan, waar u scripts en devDependencies kunt definiëren.

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

U kunt dan de nachtwacht starten met de volgende opdrachten:

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

In dit voorbeeld zou het bijna eenvoudiger zijn om eenvoudig nightwatch -c .meteor/nightwatch.json . Met complexere opdrachten, met complexe omgevingsvariabelen, opties en instellingen, wordt dit echter een zeer handige manier om devopscripts voor een team op te geven.

Mapstructuur

Bij een eenvoudige Nightwatch-installatie voor Meteor zijn de volgende mappen en bestanden geïnstalleerd.

/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

Datagestuurd testen

Nightwatch accepteert een tweede configuratiebestand globals.json dat gegevens in de globals.json injecteert, vergelijkbaar met hoe Meteor.settings gegevens vanaf de opdrachtregel in de hele app beschikbaar maakt.

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

U kunt vervolgens uw tests schrijven die niet hardcoderen met specifieke gebruikers, wachtwoorden, zoekinvoer, enz.

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow