>

Nueswatch.js를 사용한 엔드 투 엔드 테스트를 포함하여 vue-cli를 사용하여 VueJS 프로젝트를 생성했습니다.

다음 .gitlab-ci.yml 파일을 사용하고 있습니다

services:
  - selenium/standalone-chrome
stages:
  - test
  - pages
test:
  image: node:6.11
  stage: test
  before_script:
    - node -v
    - npm -v
  script:
    - npm install
    - npm test
pages:
  image: node:6.11
  stage: pages
  before_script:
    - node -v
    - npm -v
  script:
    - npm install
    - npm run build
    - cp -R ./dist ./public
    - cd ./public
    - ls
  artifacts:
    paths:
      - public
  only:
    - master

nightswatch.conf.js 입니다  파일

require('babel-register')
var config = require('../../config')
// http://nightwatchjs.org/gettingstarted#settings-file
module.exports = {
  src_folders: ['test/e2e/specs'],
  output_folder: 'test/e2e/reports',
  custom_assertions_path: ['test/e2e/custom-assertions'],
  selenium: {
    start_process: true,
    server_path: require('selenium-server').path,
    host: '127.0.0.1',
    port: 4444,
    cli_args: {
      'webdriver.chrome.driver': require('chromedriver').path
    }
  },
  test_settings: {
    default: {
      selenium_port: 4444,
      selenium_host: 'localhost',
      silent: true,
      globals: {
        devServerURL: 'http://localhost:' + (process.env.PORT || config.dev.port)
      }
    },
    chrome: {
      desiredCapabilities: {
        browserName: 'chrome',
        javascriptEnabled: true,
        acceptSslCerts: true
      }
    },
    firefox: {
      desiredCapabilities: {
        browserName: 'firefox',
        javascriptEnabled: true,
        acceptSslCerts: true
      }
    }
  }
}

Gitlab-CI에서 작업은 통과하지만 엔드 투 엔드 테스트가 아닌 단위 테스트 만 통과 한 로그를 확인합니다.

> node test/e2e/runner.js
Starting selenium server... 
An error occurred while trying to start Selenium. Check if JAVA is installed on your machine.
{ Error: spawn java ENOENT
    at exports._errnoException (util.js:1020:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:197:32)
    at onErrorNT (internal/child_process.js:376:16)
    at _combinedTickCallback (internal/process/next_tick.js:80:11)
    at process._tickCallback (internal/process/next_tick.js:104:9)
    at Module.runMain (module.js:606:11)
    at run (bootstrap_node.js:383:7)
    at startup (bootstrap_node.js:149:9)
    at bootstrap_node.js:496:3
  code: 'ENOENT',
  errno: 'ENOENT',
  syscall: 'spawn java',
  path: 'java',
  spawnargs: 
   [ '-Dwebdriver.chrome.driver=/builds/Overdrivr/frontend/node_modules/chromedriver/lib/chromedriver/chromedriver',
     '-jar',
     '/builds/Overdrivr/frontend/node_modules/selenium-server/lib/runner/selenium-server-standalone-3.8.1.jar',
     '-port',
     4444 ] }
INFO Selenium process finished.
Job succeeded

Gitlab-CI에서 e2e 테스트를 실행하기 위해 gitlab-ci 또는 nightswatch를 올바르게 구성하려면 어떻게해야합니까?


  • 답변 # 1

    좋아, 이제 구성과 작성 파일을 좀 더 살펴 보았으므로 문제가 있다고 생각합니다. 가장 먼저해야 할 일은 selenium/standalone-chrome 를주는 것입니다  .yml 파일에서 이름을 서비스하십시오. 문제는 자바가 설치되지 않은 테스트 컨테이너 (노드 ​​이미지)에서 셀레늄 독립형을 시작하려고한다는 것입니다. 그러나 selenium/standalone-chrome  이미지는 localhost 대신 테스트를 가리키고 싶은 곳입니다.

    services:
      "chrome"
      - selenium/standalone-chrome
    #...rest of file can stay the same
    
    

    두 번째로해야 할 일은 나이트 워치 설정에서 셀레늄 섹션을 완전히 제거하고 포인트 selenium_host 입니다.  Chrome 서비스의 test_settings 아래에 있습니다.

    selenium_host: 'chrome',
    
    

    여기는 nightwatch.json 입니다  그리고 docker-compose.yml  저를 위해 일하고 있습니다.

    docker-compose.yml

    version: '3'
    services:  
    chrome:
      image: selenium/standalone-chrome
    tests:
      image: nightwatch-tests
      environment: 
        - ENV_PASS=${ENV_PASS}
      depends_on:
        - chrome
    
    

    nightwatch.json

    {
      "src_folders": [
        "nw_tests"
      ],
      "output_folder": "nw_reports",
      "page_objects_path": "./nw_tests/pages",
      "globals_path": "globals.js",
      "test_workers": false,  
      "test_settings": {
        "default": {
          "launchUrl": "https://mylaunchurl/login",
          "selenium_port": 4444,
          "selenium_host": "chrome",
          "silent": true,
          "screenshots": {
            "enabled": true,
            "path": "nw_screenshots"
          },
          "desiredCapabilities": {
            "browserName": "chrome",
            "chromeOptions" : {
              "args": ["deny-permission-prompts"],
              "prefs": {
                "profile.default_content_settings.popups": 0,
                "download.prompt_for_download": false
              }
            }
          }
        }
      }
    }
    
    

  • 이전 spring boot - Liquibase가 이전에 이미 실행 된 변경 세트를 실행하려고하므로 테이블이 이미 존재한다는 오류가 발생합니다
  • 다음 element - 순수 JavaScript로 객체에 항목 추가