vag*_*ges 7 javascript configuration cypress
我试图baseUrl通过cypress.json使用我的cypress.env.json文件覆盖该值,但我似乎无法弄清楚如何。有没有办法做到这一点?
在文件中设置环境变量然后在其中cypress.json覆盖它们就像 piecypress.env.json一样简单。在cypress.json:
{
"env": {
"someVariable": "originalValue"
}
}
Run Code Online (Sandbox Code Playgroud)
...并在cypress.env.json:
{
"someVariable": "newValue"
}
Run Code Online (Sandbox Code Playgroud)
关于配置变量,文档说明:
如果您的环境变量与标准配置键匹配,那么
environment variable它们将覆盖配置值而不是设置。
但是,如果我尝试baseUrl从cypress.json...
{
"baseUrl": "http://example.com/setFromCypress.json",
"env": {
"someVariable": "originalValue"
}
}
Run Code Online (Sandbox Code Playgroud)
......并在cypress.env.json......中覆盖它
{
"baseUrl": "http://example.com/setFromCypress.env.json",
"someVariable": "newValue"
}
Run Code Online (Sandbox Code Playgroud)
... thensomeVariable被覆盖,但现有的baseUrl保持不变(并且 abaseUrl出现在放置在env键处的对象内):
我设置时没有问题baseUrl的cypress.json,后来在使用命令行覆盖它CYPRESS_BASE_URL:
$ export CYPRESS_BASE_URL=http://example.com/setFromCommandLine
Run Code Online (Sandbox Code Playgroud)
然后,原始文件baseUrl被覆盖:
总结一下:我是在文档中遗漏了什么,还是在文档中遗漏了什么?
小智 8
一个简单的解决方法:在 plugins/index.js 中做
module.exports = (on, config) => {
if(config.hasOwnProperty('env') && config.env.hasOwnProperty('baseUrl')){
config.baseUrl = config.env.baseUrl;
}
return config
}Run Code Online (Sandbox Code Playgroud)
在上面的帖子之后,在相关的github问题中解释了这不被认为是一个错误。来自的变量cypress.env.json被加载到environmentVariables整个配置中的变量中(尽管当前文档会让您相信)。整体配置文件是cypress.json。在 github 问题中,我提供了关于为什么当前解释令人困惑的备份。