Поиск…


замечания

Nightwatch предоставляет приемные и сквозные тесты для приложений Meteor с v0.5 дней и управляет миграциями от PHP до Spark to Blaze и React; и все основные платформы непрерывной интеграции. Дополнительную помощь можно найти в:

Документация API Nightwatch
Группа пользователей Nightwatch.js Google

конфигурация

Основная причина, по которой Nightwatch настолько мощная, из-за этого отличный файл конфигурации. В отличие от большинства других платформ тестирования, Nightwatch полностью настраивается и настраивается в разных средах и технологиях.

.meteor / nightwatch.json

Следующий файл конфигурация для Метеора v1.3 и позже, а также поддерживает две среду ... а по default среду , которая запускает chromedriver браузер, и phantom среду , которая проходит испытания в обезглавленной среде.

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

Установка и использование

Чтобы получить работу Nightwatch, вам понадобится локальная копия селена, которая является сервером управления и управления, который управляет автоматическими экземплярами браузера. Вам также понадобится веб-браузер, который может управлять селеном, например, хромированный или фантомный .

Добавьте в свой пакет package.json следующие devDependencies:

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

Затем установите все параметры.

cd myapp
meteor npm install

Затем вы можете запустить Nightwatch со следующими командами:

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

Если вы еще не написали никаких тестов или не настроили структуру своей папки, вы можете получить некоторые ошибки.

Настройка сценариев запуска

В корне вашего приложения должен быть файл package.json , где вы можете определить скрипты и 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",
  }
}

Затем вы сможете запустить ночной со следующим командам:

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

В этом примере было бы проще просто запустить nightwatch -c .meteor/nightwatch.json . Однако, с более сложными командами, со сложными переменными среды, параметрами и настройками, это становится очень полезным способом для определения сценариев devops для команды.

Структура папок

В базовой установке Nightwatch для Meteor будут установлены следующие каталоги и файлы.

/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

Тестирование данных

Nightwatch принимает второй globals.json конфигурации globals.json который вводит данные в сам тестовый бегун, очень похожий на то, как Meteor.settings делает данные из командной строки доступными во всем приложении.

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

Затем вы можете написать свои тесты, которые не жестко закодированы конкретными пользователями, паролями, входами поиска и т. Д.

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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow