如何使用配置指定ng e2e的端口和主机

时间:2017-04-23 12:59:48

标签: angular protractor angular-cli

如何使用配置文件为ng e2e命令设置端口和主机?

我知道可以在命令行中使用以下语句

ng e2e --port <port number> --host <host>

这很好用,但在配置文件中设置端口和地址会更方便。我查看了.angular-cli.json内部,发现有一个名为protractor.config.js的文件,我无法弄清楚该文件中使用的设置,那里有{{1}设置,但更改它对baseUrl命令使用的端口没有任何影响。它似乎使用随机端口。

ng e2e之外,我还尝试设置baseUrlport,但它们没有区别。

输入seleniumPort命令后,控制台中显示以下输出

ng e2e

** NG Live Development Server is running on http://localhost:49155 ** protractor.config.js设置为baseUrl。我观察到测试正在执行,我可以看到浏览器使用的地址http://localhost:50000不是我想要的地址。

http://localhost:49155会返回以下内容

  

@ angular / cli:1.0.0
  节点:7.7.1
  os:win32 x64
  @ angular / common:4.0.3
  @angular / compiler:4.0.3
  @ angular / core:4.0.3
  @ angular / forms:4.0.3
  @ angular / http:4.0.3
  @ angular / platform-b​​rowser:4.0.3
  @ angular / platform-b​​rowser-dynamic:4.0.3
  @ angular / router:4.0.3
  @ angular / cli:1.0.0
  @ angular / compiler-cli:4.0.3

4 个答案:

答案 0 :(得分:11)

运行ng e2e

时,我没有看到dev服务器运行端口的配置

您最好的选择可能是NPM脚本:https://docs.npmjs.com/misc/scripts

  1. "e2e":"ng e2e --port <port number> --host <host>"
  2. 下将package.json添加到scripts
  3. 运行npm run e2e使用该脚本,这将在e2e中运行脚本package.json,在这种情况下,您ng e2e --port <port number> --host <host>
  4. 它不是一个配置文件,但它就像一个。

答案 1 :(得分:6)

通过修改项目angular.jsonwebapp-e2e中设置主机和端口,例如:

"e2e": {
  "builder": "@angular-devkit/build-angular:protractor",
  "options": {
    "protractorConfig": "./protractor.conf.js",
    "devServerTarget": "webapp:serve",
    "port": 4201
  }

当angular-cli调用webapp:serve-command时,这将覆盖正在使用的端口。忘记protractor.conf.js文件 - 直到后来才使用它。

因此,您可以独立或并行地运行ng serve --watch(用于服务和单元测试)和ng e2e(用于e2e测试)。

BR, 延

答案 2 :(得分:4)

baseUrl属性以某种方式在protractor.config.js中不起作用,但您可以在同一个config.js中以编程方式在onPrepare方法中设置该属性

{
    onPrepare() {
        browser.baseUrl = 'http://localhost:4200/';
    },
}

我一直在Angular 1.x中使用此解决方案,仍适用于Angular 2/4

答案 3 :(得分:4)

我发现当我们调用命令ng e2e时,默认情况下,开发服务器将在http://localhost:49152/上运行

为了能够使用配置为ng e2e指定端口和主机,我们将使用baseUrl文件中的属性protractor.conf.js。我们需要:

  • 分开投放应用
  • 然后我们在调用ng e2e时将服务设置为 false ,因此 Protratcor 将直接与baseUrl进行通信

例如:

  • 首先需要在 protractor.conf.js 上放置:
    baseUrl:'http://localhost:8088'
  • 运行命令:
    ng serve --port 8088
  • 在另一个shell上运行测试:
    ng e2e --serve false

还有另一种机制,我们不使用baseUrl。我们只需要:
  - 在shell 1中运行:ng serve --port 4200
  - 在shell 2中运行:ng e2e --serve false --base-href=http://localhost:4200