如何在赛普拉斯运行的浏览器中使用 process.env 变量

Posted

技术标签:

【中文标题】如何在赛普拉斯运行的浏览器中使用 process.env 变量【英文标题】:How to use process.env variables in browser running by Cypress 【发布时间】:2020-01-09 02:32:11 【问题描述】:

在我的应用程序的源代码中(基于 create-react-app 的 React)我正在使用如下环境变量:process.env.REACT_APP_API_URL,它们存储在我的 .env.* 文件中。

但是当我在 Cypress 下运行相同的应用程序时,process.env 对象是空的。当 React 应用程序在 Cypress 下运行时,如何提供这些变量以供其使用?

我知道我可以设置 Cypress 环境变量,但这不是我想要的 - 这是一个不同的范围。

【问题讨论】:

【参考方案1】:

您可以使用configuration API 并在您的插件文件上执行类似的操作。设置config.env = process.env,这会将您的整个节点环境设置为Cypress

// cypress/plugins/index.js
module.exports = (on, config) => 

  // modify env value
  config.env = process.env

  // return config
  return config

您还可以使用config.env.YOUR_VAR = process.env.YOUR_VAR 选择性地分配您想要的值。

【讨论】:

操作员询问如何在 Cypress 中设置 process.env 变量。这个答案说如何使用process.env 变量来设置赛普拉斯环境变量,不是吗?我错过了什么? 你需要先安装dotenv并在cypress/plugins/index.js文件顶部导入require("dotenv").config(); btw dotenv 不是必需的

以上是关于如何在赛普拉斯运行的浏览器中使用 process.env 变量的主要内容,如果未能解决你的问题,请参考以下文章

赛普拉斯:如何使用键盘事件

如何使用赛普拉斯测试文件输入?

赛普拉斯:我们如何在赛普拉斯中使用不记名令牌编写 GET 请求?

赛普拉斯可以运行在赛普拉斯文件夹之外导入的测试文件吗?

赛普拉斯与SystemJS

如何通过将赛普拉斯指定为项目来运行特定的测试文件夹?