从命令行运行时,如何告诉赛普拉斯隐藏Chrome?

时间:2019-05-15 18:56:26

标签: cypress

问题

我希望能够在终端中运行测试,但是由于赛普拉斯使用Electron作为默认浏览器,并且我希望它使用Chrome,而不必在命令行中指定它,因此所有测试都失败了。

当前结果

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

预期结果

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

摘要

是否可以将默认浏览器设置为Chrome而不是Electron,这样我就无需指定要使用的浏览器了?

是否有需要添加到package.json文件中的内容,以将默认浏览器设置为Chrome或将要插入的行?我检查了文档,发现除了--browser命令以外,我什么都找不到。

**赛普拉斯Github开放发行**

以下是指向他们的github上有关无头chrome的未解决问题的链接,并且还更改了cypress run的默认设置

Support chrome headless and change defaults for cypress run

调试器的照片

对不起,我的涂鸦很糟糕……我在NDA之下,所以必须回过头来划掉项目的所有路径名以及我的姓氏。

enter image description here

1 个答案:

答案 0 :(得分:1)

在macOS或Windows上,目前尚无法以run模式隐藏Chrome。

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


以下建议仅适用于Linux。

npx cypress run --browser chrome是做您想做的正确方法。

如果您使用的是Linux,则可以通过清空DISPLAY env变量来使其在虚拟帧缓冲区中运行Chrome(这样它将被您隐藏):

DISPLAY= npx cypress run --browser chrome


技术说明:

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