How do I run postman's newman in CI environmen

2019-05-25 13:45发布

问题:

I'd like to run newman on my CI environment (solano-ci).

newman is a tool that runs through requests in your postman collection.

I have a newman script in my package.json, and I also have a npm start script that starts the server at localhost:3000.

newman is already configured with environment variables to test endpoints on port localhost:3000.

The issue is I need one script that starts the server (npm start) and then runs npm run newman. But there's a delay between when the server is available and when newman runs it's tests. If newman runs before the server is available it results in an error for each test.

Error: connect ECONNREFUSED 127.0.0.1:3000

Right now here's what I tried using run-p which works at starting two processes in parallel. Then I have to use sleep and set an arbitrary number of time the wait to ensure that the server is ready.

"newman": "newman -c ./postman/api.postman_collection.json -e ./postman/local.postman_environment.json",
"newman-sleep": "sleep 10 && npm run newman",
"newman-server": "run-p start newman-sleep"

回答1:

You can use wait-on package.

npm install --save-dev wait-on

Then,

"newman-sleep": "wait-on http://localhost:3000 && npm run newman"