繁体   English   中英

在 cypress 以无头模式运行之前,在 package.json 中添加 env 变量

[英]Add env variable in package.json brefore cypress runs in headless mode

我想知道 cypress 是否在 NextJS 应用程序中运行。 如果赛普拉斯测试正在运行,我的想法是阻止 NextJS 应用程序中的一些 http 请求。

当我为这样的浏览器运行“npx cypress open”时,我能够捕捉到 cypress 是否正在运行:

if(window.Cypress){
 // prevent http request or do something
}

但我无法使用"npx cypress run"命令检查 cypress 是否正在运行。

我尝试在package.json文件中添加额外的 env 变量,如下所示:

...
"cy:run": "cross-env CY_MODE=true cypress run",
...

但是当我尝试记录process.env.CY_MODE时,它没有设置 CY_MODE 环境变量。

如何在 cypress 测试以无头模式开始之前设置自定义环境变量?

谢谢

您可以在 package.json 中设置 env.variables:

  • 创建父命令,在其中定义 env.variable 并包含用于运行测试的命令'parentCommand': 'cross-env CY_MODE=true npx cypress run'
  • 启动命令和环境变量将在文件和应用程序之间共享

向浏览器公开环境变量

默认情况下,环境变量仅在 Node.js 环境中可用,这意味着它们不会暴露给浏览器。

为了向浏览器公开变量,您必须在变量前面加上NEXT_PUBLIC_

"cy:run": "cross-env NEXT_PUBLIC_CY_MODE=true cypress run",

或者,您可以从赛普拉斯插件控制 NextJs 服务器 - 请参阅使用 Next.js getServerSideProps 调用时的模拟网络

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM