Electron Headless CI Systems 測(cè)試 (Travis CI, Jenkins)

2023-02-16 17:17 更新

Electron 基于 Chromium,所以需要一個(gè)顯示驅(qū)動(dòng)使其運(yùn)轉(zhuǎn)。 如果 Chromium 無(wú)法找到一個(gè)顯示驅(qū)動(dòng), Electron 會(huì)啟動(dòng)失敗,因此無(wú)論你如何去運(yùn)行它,Electron 不會(huì)執(zhí)行你的任何測(cè)試。 因此,在 Travis,CircleCI,Jenkins 或者類(lèi)似的系統(tǒng)上測(cè)試基于 Electron 的應(yīng)用程序時(shí),需要進(jìn)行一些配置。 本質(zhì)上,我們需要使用一個(gè) 虛擬的顯示驅(qū)動(dòng)。

配置虛擬顯示服務(wù)器

首先安裝 Xvfb. 這是一個(gè)虛擬的幀緩沖,實(shí)現(xiàn)了X11顯示服務(wù)協(xié)議,所有的圖形操作都在內(nèi)存中表現(xiàn),而不需要顯示在 任何屏幕輸出設(shè)備上。這正是我們所需要的。

然后創(chuàng)建一個(gè)虛擬屏幕實(shí)例(Xvfb), 并導(dǎo)出 DISPLAY 變量, 該變量存儲(chǔ)虛擬屏幕的引用. Electron 中的 Chromium 會(huì)自動(dòng)的去尋找 $DISPLAY,所以你的應(yīng)用不需要再去進(jìn)行配置 這一步可以通過(guò) Paul Betts 的 xvfb-maybe 實(shí)現(xiàn)自動(dòng)化:如果系統(tǒng)需要,在xvfb-maybe前加上你的測(cè)試命令 然后這個(gè)小工具會(huì)自動(dòng)的設(shè)置 xvfb。 在 Windows 或 macOS ,它不會(huì)執(zhí)行任何東西。

## 在 Windows 或者 macOS,這只是調(diào)用 electron-mocha
## 在 Linux, 如果我們?cè)谝粋€(gè) headless 環(huán)境,這將是等同于
## 執(zhí)行 xvfb-run electron-mocha ./test/*.js
xvfb-maybe electron-mocha ./test/*.js

Travis CI

在 Travis 上, 你的 .travis.yml 應(yīng)該和下面的代碼相似:

addons:
  apt:
    packages:
      - xvfb

install:
  - export DISPLAY=':99.0'
  - Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &

Jenkins?

Jenkins下, 有一個(gè)可用的 Xvfb 插件

CircleCI

CircleCI 很棒,并且已經(jīng)設(shè)置了 Xvfb 和 $DISPLAY,因此不需要進(jìn)一步的配置。

AppVeyor?

AppVeyor 運(yùn)行于 Windows 上,支持 Selenium,Chromium,Electron 以及一些類(lèi)似的工具,開(kāi)箱即用,無(wú)需配置


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)