覆盖 cypress.env.json 中的配置变量
Overriding configuration variables from cypress.env.json
TL;DR:
我正在尝试使用我的 cypress.env.json
文件覆盖 cypress.json
中的 baseUrl
值,但我似乎无法弄清楚如何。有办法吗?
背景
在 cypress.json
文件中设置 环境变量 ,然后在 cypress.env.json
中覆盖它们,就像 easy as pie 一样。在 cypress.json
:
{
"env": {
"someVariable": "originalValue"
}
}
... 在 cypress.env.json
中:
{
"someVariable": "newValue"
}
关于配置变量,the documentation states:
If your environment variables match a standard configuration key, then instead of setting an environment variable
they will instead override the configuration value.
但是,如果我尝试从 cypress.json
设置 baseUrl
...
{
"baseUrl": "http://example.com/setFromCypress.json",
"env": {
"someVariable": "originalValue"
}
}
... 并在 cypress.env.json
中覆盖它 ...
{
"baseUrl": "http://example.com/setFromCypress.env.json",
"someVariable": "newValue"
}
... 然后 someVariable
被覆盖,但现有的 baseUrl
保持不变(并且 baseUrl
出现在 env
键处的对象内部:
在 cypress.json
中设置 baseUrl
并稍后在命令行中使用 CYPRESS_BASE_URL
:
覆盖它时我没有问题
$ export CYPRESS_BASE_URL=http://example.com/setFromCommandLine
然后,原来的baseUrl
被覆盖:
总结一下:我是在文档中遗漏了什么,还是在文档中遗漏了什么?
在上面的post之后,在related github issue中说明了这不算bug。来自 cypress.env.json
的变量被加载到整个配置中的 environmentVariables
变量中(尽管当前文档会让您相信)。整体配置文件是cypress.json。在 github 问题中,我提供了有关当前解释为何令人困惑的备份。
一个简单的解决方法:在 plugins/index.js 中执行
module.exports = (on, config) => {
if(config.hasOwnProperty('env') && config.env.hasOwnProperty('baseUrl')){
config.baseUrl = config.env.baseUrl;
}
return config
}
TL;DR:
我正在尝试使用我的 cypress.env.json
文件覆盖 cypress.json
中的 baseUrl
值,但我似乎无法弄清楚如何。有办法吗?
背景
在 cypress.json
文件中设置 环境变量 ,然后在 cypress.env.json
中覆盖它们,就像 easy as pie 一样。在 cypress.json
:
{
"env": {
"someVariable": "originalValue"
}
}
... 在 cypress.env.json
中:
{
"someVariable": "newValue"
}
关于配置变量,the documentation states:
If your environment variables match a standard configuration key, then instead of setting an
environment variable
they will instead override the configuration value.
但是,如果我尝试从 cypress.json
设置 baseUrl
...
{
"baseUrl": "http://example.com/setFromCypress.json",
"env": {
"someVariable": "originalValue"
}
}
... 并在 cypress.env.json
中覆盖它 ...
{
"baseUrl": "http://example.com/setFromCypress.env.json",
"someVariable": "newValue"
}
... 然后 someVariable
被覆盖,但现有的 baseUrl
保持不变(并且 baseUrl
出现在 env
键处的对象内部:
在 cypress.json
中设置 baseUrl
并稍后在命令行中使用 CYPRESS_BASE_URL
:
$ export CYPRESS_BASE_URL=http://example.com/setFromCommandLine
然后,原来的baseUrl
被覆盖:
总结一下:我是在文档中遗漏了什么,还是在文档中遗漏了什么?
在上面的post之后,在related github issue中说明了这不算bug。来自 cypress.env.json
的变量被加载到整个配置中的 environmentVariables
变量中(尽管当前文档会让您相信)。整体配置文件是cypress.json。在 github 问题中,我提供了有关当前解释为何令人困惑的备份。
一个简单的解决方法:在 plugins/index.js 中执行
module.exports = (on, config) => {
if(config.hasOwnProperty('env') && config.env.hasOwnProperty('baseUrl')){
config.baseUrl = config.env.baseUrl;
}
return config
}