在无头 CI 系统(Travis CI、Jenkins)上进行测试
基于 Chromium,Electron 需要显示驱动程序才能运行。如果 Chromium 找不到显示驱动程序,Electron 将无法启动,因此无论您如何运行测试,都不会执行任何测试。因此,在 Travis、CircleCI、Jenkins 或类似的系统上测试基于 Electron 的应用程序需要一些配置。本质上,我们需要使用虚拟显示驱动程序。
配置虚拟显示服务器
首先,安装 Xvfb。它是一个虚拟帧缓冲区,实现了 X11 显示服务器协议 - 它在内存中执行所有图形操作,而不显示任何屏幕输出,这正是我们需要的。
然后,创建一个虚拟 Xvfb 屏幕,并导出一个名为 DISPLAY 的环境变量,指向该屏幕。Electron 中的 Chromium 会自动查找 $DISPLAY
,因此无需对您的应用程序进行进一步配置。可以使用 Anaïs Betts 的 xvfb-maybe 自动化此步骤:在您的测试命令前面加上 xvfb-maybe
,如果当前系统需要,该小工具将自动配置 Xvfb。在 Windows 或 macOS 上,它不会执行任何操作。
## On Windows or macOS, this invokes electron-mocha
## On Linux, if we are in a headless environment, this will be equivalent
## to xvfb-run electron-mocha ./test/*.js
xvfb-maybe electron-mocha ./test/*.js
Travis CI
对于 Travis,请参阅其关于使用 Xvfb 的文档。
Jenkins
对于 Jenkins,有一个Xvfb 插件可用。
CircleCI
CircleCI 非常棒,已经设置好了 Xvfb 和 $DISPLAY
,因此无需进一步配置。
AppVeyor
AppVeyor 在 Windows 上运行,开箱即用支持 Selenium、Chromium、Electron 和类似工具,无需配置。