从命令行运行时,如何告诉 Cypress 隐藏 Chrome?

Hye*_*Eun 8 cypress

问题

我希望能够在终端中运行我的测试,但由于 Cypress 使用 Electron 作为默认浏览器,我所有的测试都失败了,我希望它使用 Chrome,但不必在命令行中指定它。

当前结果

我知道我可以使用命令npx cypress run --browser chrome告诉 Cypress 改用 Chrome。但是,它会打开浏览器并在命令行中运行它。

预期结果

理想情况下,就只需要我跑npx cypress run,这将只在命令行中使用Chrome运行。

概括

有没有办法将默认浏览器设置为 Chrome 而不是 Electron,这样我就不需要指定要使用的浏览器?

是否有什么要添加到package.json文件中以将默认浏览器设置为 Chrome 或在某处注入一行?我检查了文档,除了--browser命令之外我真的找不到任何东西。

** Cypress Github 公开问题 **

这是他们 github 上关于无头 chrome 的未解决问题的链接,以及更改默认设置的链接 cypress run

支持 chrome headless 并更改 cypress run 的默认值

调试器的照片

对不起,糟糕的涂鸦......我在保密协议下,所以不得不回去刮掉我项目的所有路径名以及我的姓氏。

在此处输入图片说明

Zac*_*ist 13

Cypress 3.8.1+ 允许您通过使用 Chrome headless传递--headless到cypress run使 Chrome 在任何操作系统上不可见:

cypress run --headless --browser chrome


下面过时的答案:

目前没有办法run在 macOS 或 Windows 上隐藏 Chrome模式。

我们想支持它,但我们必须找到某种解决方法,xvfb因为它不可用。我们也不能使用google-chrome --headless,因为它不允许我们安装 Cypress 扩展。


以下建议仅适用于 Linux。

npx cypress run --browser chrome 是做你想做的事情的正确方法。

如果您使用的是 Linux,您可以通过清空DISPLAYenv 变量使其在虚拟帧缓冲区中运行 Chrome(因此它将对您隐藏) :

DISPLAY= npx cypress run --browser chrome


技术说明:

  1. 赛普拉斯不支持在“无头 Chrome”中运行 - 首次编写赛普拉斯时,无头 Chrome 并不存在
  2. 因此,当 Cypress 在 Chrome 中的 CI 中运行时,它使用xvfb创建一个 X 虚拟帧缓冲区,然后它使用该DISPLAY变量告诉 Chrome 运行在xvfb
  3. 但是,如果您已经DISPLAY设置(默认情况下,如果您有显示管理器,它会在 Linux 上设置),它将使用它DISPLAY- 这就是为什么即使您正在执行cypress run.
  4. DISPLAY=在命令之前添加nulls out DISPLAY,这意味着 Cypress 将xvfb在那里生成并运行它。