Szukaj…


Uwagi

Nightwatch zapewnia testy akceptacyjne i kompleksowe dla aplikacji Meteor od wersji 0,5 dni i zarządza migracjami z PHP do Spark na Blaze i React; i wszystkie główne platformy ciągłej integracji. Aby uzyskać dodatkową pomoc, zobacz:

Dokumentacja API Nightwatch
Grupa dyskusyjna Nightwatch.js

Konfiguracja

Głównym powodem, dla którego Nightwatch jest tak potężny, jest doskonały plik konfiguracyjny. W przeciwieństwie do większości innych platform testowych, Nightwatch jest w pełni konfigurowalny i dostosowywany do różnych środowisk i stosów technologicznych.

.meteor / nightwatch.json

Poniższy plik konfiguracyjny jest przeznaczony dla Meteora wer. 1.3 i nowszych i obsługuje dwa środowiska ... środowisko default które uruchamia przeglądarkę chromedriver, oraz środowisko phantom które uruchamia testy w środowisku bezgłowym.

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

Instalacja i użytkowanie

Aby Nightwatch działał, potrzebujesz lokalnej kopii selenu, który jest serwerem dowodzenia i kontroli, który zarządza zautomatyzowanymi instancjami przeglądarki. Będziesz także potrzebować przeglądarki internetowej, którą może kontrolować selen, takiej jak chromedriver lub phantomjs .

Dodaj następujące devDependencies do package.json :

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

Następnie zainstaluj wszystkie zależności.

cd myapp
meteor npm install

Powinieneś być w stanie uruchomić Nightwatch za pomocą następujących poleceń:

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

Jeśli nie napisałeś jeszcze żadnych testów lub nie skonfigurowałeś jeszcze struktury folderów, możesz otrzymać błędy.

Konfigurowanie skryptów uruchamiania

W katalogu głównym aplikacji powinien znajdować się plik package.json , w którym można zdefiniować skrypty i 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",
  }
}

Będziesz wtedy mógł uruchomić nocny zegarek za pomocą następujących poleceń:

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

W tym przykładzie prawie łatwiej byłoby po prostu uruchomić nightwatch -c .meteor/nightwatch.json . Jednak w przypadku bardziej złożonych poleceń, ze złożonymi zmiennymi środowiskowymi, opcjami i ustawieniami, staje się to bardzo użytecznym sposobem określania skryptów devops dla zespołu.

Struktura folderów

Podstawowa instalacja Nightwatch dla Meteor będzie mieć zainstalowane następujące katalogi i pliki.

/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

Testy oparte na danych

Nightwatch akceptuje drugi plik konfiguracyjny globals.json , który wstrzykuje dane do samego testera, bardzo podobny do tego, w jaki sposób Meteor.settings udostępnia dane z wiersza poleceń w całej aplikacji.

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

Następnie możesz napisać swoje testy, które nie są zakodowane na stałe dla określonych użytkowników, haseł, danych wejściowych wyszukiwania itp.

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow