跳到主要内容

在无头 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 和类似工具 - 无需配置。