我正在研究从 Protractor 切换到 Cypress.io。 我已经启动并运行了一些测试,但是,我希望能够像使用量角器一样将
baseUrl
作为参数发送。
我已经尝试过:
$ npm run cypress:open --config "baseUrl=myUrl"
——仍然使用我的配置文件中的baseUrl。
$ npm run cypress:open --env "baseUrl=myUrl"
——仍然使用我的配置文件中的baseUrl。
还有许多其他事情,但没有一个能正常工作。
我希望能够向我的命令传递一个参数,这使我可以灵活地选择运行测试的环境。我可以使用 Protractor 来完成此操作,使用如下命令:
$ ng e2e --suite testSuite --baseUrl myUrl
Cypress.io 的等效项是什么?
你必须设置环境变量
CYPRESS_baseUrl
CYPRESS_baseUrl=[your baseUrl] npm run cypress:open
应该为你做
我认为正确的做法是:
$ npm run cypress:open -- --config "baseUrl=myUrl"
否则,config 参数将传递给 npm 而不是 cypress。注意额外的
--
祝你好运!
布伦丹的答案是正确的。 我想补充一下
$ npm run cypress:open --config "baseUrl=myUrl"
可能无法工作,因为您尝试将某些配置传播到 package.json 内的命令中。 如果相反,你会这样做:
$ ./node_modules/.bin/cypress run --config baseUrl=myUrl
应该可以正常工作。
了解这一点很有好处,因为它还可以让您使用其他 CLI 选项(您事先不知道这些选项)。
PS:--env不适用于baseUrl,因为baseUrl是内置配置值而不是常规环境变量。
我所做的很简单:
export CYPRESS_BASE_URL=SOME_OTHER_URL
yarn cypress run
这将覆盖
baseUrl
配置。请参阅:https://docs.cypress.io/guides/guides/environment-variables.html#Overriding-Configuration
我知道这有点旧,并且随着时间的推移事情已经发生了变化,但是将以下内容添加到 package.json 对我有用(在 8080 上本地运行):
"cy:run": "npx cypress run --spec cypress/e2e/stt/* --config baseUrl=http://localhost:8080"
然后从命令提示符运行:
npm run cy:run
显然,您可以在 package.json 中添加更多条目来引用不同的服务器(即 dev、stage、prod)