我希望能够在终端中运行测试,但是由于赛普拉斯使用Electron作为默认浏览器,并且我希望它使用Chrome,而不必在命令行中指定它,因此所有测试都失败了。
我知道我可以使用命令npx cypress run --browser chrome
来告诉Cypress使用Chrome。但是,它会打开浏览器并在命令行中运行它。
理想情况下,只需要我运行npx cypress run
,而这将仅使用Chrome在命令行中运行。
是否可以将默认浏览器设置为Chrome而不是Electron,这样我就无需指定要使用的浏览器了?
是否有需要添加到package.json
文件中的内容,以将默认浏览器设置为Chrome或将要插入的行?我检查了文档,发现除了--browser
命令以外,我什么都找不到。
以下是指向他们的github上有关无头chrome的未解决问题的链接,并且还更改了cypress run
的默认设置
Support chrome headless and change defaults for cypress run
对不起,我的涂鸦很糟糕……我在NDA之下,所以必须回过头来划掉项目的所有路径名以及我的姓氏。
答案 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
技术说明:
xvfb
创建一个X虚拟帧缓冲区,然后使用DISPLAY
变量告诉Chrome在xvfb
中运行DISPLAY
(默认情况下,如果您有显示管理器,则在Linux上进行了设置),它将改为使用DISPLAY
-这就是为什么即使您正在做cypress run
。DISPLAY=
会使DISPLAY
无效,这意味着赛普拉斯将生成xvfb
并在其中运行。