angularjs – 如何创建一个npm脚本来运行几个命令来运行一些测试?

前端之家收集整理的这篇文章主要介绍了angularjs – 如何创建一个npm脚本来运行几个命令来运行一些测试?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我为 angularjs应用程序运行e2e测试时,我需要在不同的shell会话中运行以下命令:
  1. // start the selenium server
  2. webdriver-manager start
  3.  
  4. // start a http server to serve current files
  5. node_modules/http-server/bin/http-server .
  6.  
  7. // run the e2e tests
  8. protractor test/protractor-conf.js

当我启动它们时,前2个命令将继续运行.

我尝试添加一个npm脚本来定义一起运行它们的任务:

  1. "scripts" : {
  2. "e2e-test": "webdriver-manager start && node_modules/http-server/bin/http-server . && protractor test/protractor-conf.js"
  3. }

问题是,当我运行它时:

  1. npm run-script e2e-test

它只运行第一个并阻塞,其他人没有机会运行.

这样做的最佳解决方案是什么?

问题是webdriver-manager启动,你的http服务器需要作为守护进程运行,或者在后台使用&像这样:
  1. "e2e-test": "(webdriver-manager start &) && sleep 2 && (node_modules/http-server/bin/http-server . &) && protractor test/protractor-conf.js"

添加了一个睡眠2来等待selenium服务器启动,你可以通过阻止脚本来获得活跃的等待

  1. while ! nc -z 127.0.0.1 4444; do sleep 1; done

在这种情况下,最好将所有“e2e-test”shell行提取到一个单独的脚本中,即

  1. "e2e-test": "your-custom-script.sh"

然后你的–custom-script.sh

  1. #!/usr/bin/env bash
  2.  
  3. # Start selenium server just for this test run
  4. (webdriver-manager start &)
  5. # Wait for port 4444 to be listening connections
  6. while ! nc -z 127.0.0.1 4444; do sleep 1; done
  7.  
  8. # Start the web app
  9. (node_modules/http-server/bin/http-server . &)
  10. # Guessing your http-server listen at port 80
  11. while ! nc -z 127.0.0.1 80; do sleep 1; done
  12.  
  13. # Finally run protractor
  14. protractor test/protractor-conf.js
  15.  
  16. # Cleanup webdriver-manager and http-server processes
  17. fuser -k -n tcp 4444
  18. fuser -k -n tcp 80

猜你在找的Angularjs相关文章