0

在我的開發流程我打開2個終端窗口在一個我npm start task運行,一旦服務器在第二窗口中運行我運行一個cucumberjs的功能測試套件,並按照我的預期工作。但我的問題是,在我的CI環境中,我需要在一個進程中運行它。我一直想這樣的:的WebPack開發服務器:吊鉤或機制用於觸發命令一旦在服務器運行

npm start | cucumberjs --require test/functional/ --compiler js:babel-register test/functional/

的問題,這是任務NPM啓動需要一段時間的運行,並在同一時間將黃瓜任務嘗試訪問本地主機:3000(網址當的WebPack-DEV-服務器運行),但服務器還沒有準備好和測試失敗。

所以,我怎樣才能解決這個問題?

項目:https://github.com/gpincheiraa/angularjs-tdd-jest/tree/dev

的package.json

... 

    "scripts": { 
    "start": "npm run stubs & webpack-dev-server", 
    "dev": "npm start -- --open", 
    "stubs": "stubby -w -d stubs/fakeserver.yml -s 5000", 
    "tdd": "cross-env NODE_PATH=./src jest --watch --verbose", 
    "test": "cross-env NODE_PATH=./src jest --coverage --verbose", 
    "test:functional": "cucumberjs --require test/functional/ --compiler js:babel-register test/functional/", 
    //I want in the test:functional-ci task run the npm start and once that is serving the project, run npm run test:functional task 
    "test:functional-ci": "cross-env NODE_ENV=staging npm run test:functional", 
    "test-debug": "cross-env NODE_PATH=./src node --inspect --inspect-brk node_modules/.bin/jest -i", 
    "build": "webpack", 
    "check-coverage": "npm test | http-server -so -p 9000 coverage/lcov-report" 
    }, 

    ... 

webpack.config.js

module.exports = { 
    entry: [ 
     'core-js/shim', 
     'babel-polyfill', 
     'angular', 
     './src/index.js' 
    ], 
    output: { 
     path: 'dist', 
     filename: 'index.bundle.js' 
    }, 
    module: { 
     loaders: [ 
     { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader'}, 
     { test: /\.css$/, loader: 'style-loader!css-loader' }, 
     { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: "file" }, 
     { test: /\.(html)$/, loader: 'html-loader' }, 
     { test: /\.(woff|woff2)$/, loader:"url?prefix=font/&limit=5000" }, 
     { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=application/octet-stream" }, 
     { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=image/svg+xml" }] 
    }, 
    cache: true, 
    devtool: 'eval-source-map', 
    devServer: { 
     filename: "index.bundle.js", 
     contentBase: "./src", 
     port: 3000, 
     watch: true, 
     publicPath: "/", 
     historyApiFallback: true, 
     stats: { 
      colors: true, 
      chunks: false 
     } 
    } 
}; 
+0

不能添加黃瓜的任務,如果服務器正在運行,這將檢查內部邏輯(和反覆檢查這說5次,每分鐘一次),只有當服務器確實在運行時纔會繼續? – Adelin

回答

0

最後,我不能直接解決我的問題與一些webpack選項。在我的CI系統I運行以下命令:

的package.json

"scripts": { 
    "start": "sh -c \"npm run stubs & webpack-dev-server\"", 
    ... 
    "test:functional": "cucumberjs --require test/functional/ --compiler 
    ... 

.travis.yml

before_script: npm start & sleep 7 
script: npm run test:functional 

所以,當我運行npm start & sleep 7,我給7秒以npm start爲任務做他們的工作,然後我運行npm run test:functional腳本。

這是我的回購:https://github.com/gpincheiraa/angularjs-tdd-jest ,這是結果在CI特拉維斯日誌:https://travis-ci.org/gpincheiraa/angularjs-tdd-jest/jobs/271532237