7

TL;博士:

我试图通过使用我的文件来覆盖该baseUrl值,但我似乎无法弄清楚如何。有没有办法做到这一点?cypress.jsoncypress.env.json

背景

在文件中设置环境变量cypress.json,然后在其中覆盖它们就像 piecypress.env.json一样简单。在:cypress.json

{
  "env": {
    "someVariable": "originalValue"
  }
}

...并在cypress.env.json

{
  "someVariable": "newValue"
}

关于配置变量文档指出

如果您的环境变量与标准配置键匹配,那么environment variable它们不会设置一个,而是覆盖配置值。

但是,如果我尝试baseUrlcypress.json...设置

{
  "baseUrl": "http://example.com/setFromCypress.json",
  "env": {
    "someVariable": "originalValue"
  }
}

cypress.env.json...并在...中覆盖它

{
  "baseUrl": "http://example.com/setFromCypress.env.json",
  "someVariable": "newValue"
}

...然后someVariable被覆盖,但现有baseUrl保持不变(并且 abaseUrl出现在放置在env键处的对象内):

从 cypress.json 和 cypress.env.json 设置 baseUrl 时的 Cypress 配置图片

baseUrl设置并稍后在cypress.json命令行中使用以下命令覆盖它时我没有问题CYPRESS_BASE_URL

$ export CYPRESS_BASE_URL=http://example.com/setFromCommandLine

然后,原始baseUrl文件被覆盖:

从 cypress.json、cypress.env.json 和命令行设置 baseUrl 时 Cypress 配置的图片

总结一下:我是在文档中遗漏了什么,还是在文档中遗漏了什么?

4

2 回答 2

10

一个简单的解决方法:在 plugins/index.js 中做

module.exports = (on, config) => {
  if(config.hasOwnProperty('env') &&  config.env.hasOwnProperty('baseUrl')){
      config.baseUrl = config.env.baseUrl;
  }
  return config
}

于 2019-12-12T14:44:18.490 回答
4

在上面的帖子之后,在相关的 github issue中解释说这不被认为是一个错误。变量 fromcypress.env.json被加载到environmentVariables整个配置中的变量中(尽管当前文档会让您相信)。整体配置文件是cypress.json。在 github 问题中,我提供了有关当前解释为何令人困惑的备份。

于 2017-11-19T19:55:28.100 回答