如何使用配置文件为ng e2e
命令设置端口和主机?
我知道可以在命令行中使用以下语句
ng e2e --port <port number> --host <host>
这很好用,但在配置文件中设置端口和地址会更方便。我查看了.angular-cli.json
内部,发现有一个名为protractor.config.js
的文件,我无法弄清楚该文件中使用的设置,那里有{{1}设置,但更改它对baseUrl
命令使用的端口没有任何影响。它似乎使用随机端口。
除ng e2e
之外,我还尝试设置baseUrl
和port
,但它们没有区别。
输入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-browser:4.0.3
@ angular / platform-browser-dynamic:4.0.3
@ angular / router:4.0.3
@ angular / cli:1.0.0
@ angular / compiler-cli:4.0.3
答案 0 :(得分:11)
运行ng e2e
您最好的选择可能是NPM脚本:https://docs.npmjs.com/misc/scripts
"e2e":"ng e2e --port <port number> --host <host>"
package.json
添加到scripts
npm run e2e
使用该脚本,这将在e2e
中运行脚本package.json
,在这种情况下,您ng e2e --port <port number> --host <host>
它不是一个配置文件,但它就像一个。
答案 1 :(得分:6)
通过修改项目angular.json
在webapp-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
进行通信例如:
baseUrl:'http://localhost:8088'
ng serve --port 8088
ng e2e --serve false
还有另一种机制,我们不使用baseUrl
。我们只需要:
- 在shell 1中运行:ng serve --port 4200
- 在shell 2中运行:ng e2e --serve false --base-href=http://localhost:4200