在無頭 CI 系統 (Travis CI、Jenkins) 上進行測試
Electron 基於 Chromium,因此需要顯示驅動程式才能運作。如果 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 執行需要 GUI 的測試的文件。
Jenkins
對於 Jenkins,有一個 Xvfb 外掛程式可用。
CircleCI
CircleCI 非常棒,並且已經設定了 Xvfb 和 $DISPLAY
,因此無需進一步設定。
AppVeyor
AppVeyor 在 Windows 上運行,開箱即用支援 Selenium、Chromium、Electron 和類似工具 - 無需設定。