수색…


비고

Nightwatch는 Meteor 응용 프로그램에 대한 Acceptance 및 End-to-End 테스트를 v0.5 일 이후 제공하고 있으며 PHP에서 Spark to Blaze 및 React로 마이그레이션을 관리했습니다. 모든 주요 Continuous Integration 플랫폼이 포함됩니다. 추가 도움이 필요하면 다음을 참조하십시오.

Nightwatch API 문서
Nightwatch.js Google 그룹

구성

Nightwatch가 매우 강력하다는 주된 이유는 우수한 설정 파일 때문입니다. 다른 대부분의 테스트 프레임 워크와 달리 Nightwatch는 완전히 다른 환경 및 기술 스택에 맞게 구성 및 사용자 정의가 가능합니다.

.meteor / nightwatch.json

다음 구성 파일은 Meteor v1.3 이상을위한 것으로, 크롬 브라우저를 실행하는 default 환경과 헤드리스 환경에서 테스트를 실행하는 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가 작동하려면 자동 브라우저 인스턴스를 관리하는 명령 및 제어 서버 인 셀렌 의 로컬 사본이 필요합니다. 또한 크롬 브라우저 또는 팬텀 (phantomj) 과 같이 셀렌이 제어 할 수있는 웹 브라우저가 필요합니다.

package.json 다음 devDependencies를 추가하십시오.

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

그런 다음 모든 depndencies를 설치하십시오.

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 스크립트를 지정하는 매우 유용한 방법이됩니다.

폴더 구조

Meteor의 기본 Nightwatch 설치시 다음 디렉토리와 파일이 설치됩니다.

/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는 Meteor.settings 가 명령 행의 데이터를 앱 전체에서 사용하는 방법과 매우 흡사하게 데이터를 테스트 러너 자체에 주입하는 두 번째 globals.json 구성 파일을 허용합니다.

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