Skip to main content

헤드리스 CI 시스템에서의 테스트 (Travis CI, Jenkins)

Electron은 크로미움(Chromium) 기반이기 때문에 디스플레이 드라이버가 필요하다. 크로미움이 디스플레이 드라이버를 찾지 못하면 Electron은 실행되지 않는다. 이는 테스트를 어떻게 실행하든 상관없이 모든 테스트가 실행되지 않음을 의미한다. 따라서 Travis, CircleCI, Jenkins와 같은 시스템에서 Electron 기반 앱을 테스트하려면 약간의 설정이 필요하다. 기본적으로 가상 디스플레이 드라이버를 사용해야 한다.

가상 디스플레이 서버 설정

먼저 Xvfb를 설치한다. Xvfb는 X11 디스플레이 서버 프로토콜을 구현한 가상 프레임버퍼로, 화면 출력 없이 모든 그래픽 작업을 메모리에서 수행한다. 이는 우리가 필요로 하는 기능과 정확히 일치한다.

그런 다음, 가상 Xvfb 화면을 생성하고 이를 가리키는 DISPLAY라는 환경 변수를 설정한다. Electron의 Chromium은 자동으로 $DISPLAY를 찾기 때문에, 앱에 추가 설정이 필요하지 않다. 이 단계는 Anaïs Betts의 xvfb-maybe를 사용해 자동화할 수 있다. 테스트 명령어 앞에 xvfb-maybe를 추가하면, 이 작은 도구가 현재 시스템에서 필요할 경우 자동으로 Xvfb를 설정한다. Windows나 macOS에서는 아무 작업도 수행하지 않는다.

## Windows나 macOS에서는 electron-mocha를 실행한다.
## Linux에서 헤드리스 환경이라면, 이 명령어는 xvfb-run electron-mocha ./test/*.js와 동일하다.
xvfb-maybe electron-mocha ./test/*.js

Travis CI

Travis CI에 대한 자세한 내용은 Xvfb 사용 가이드 문서를 참고한다.

Jenkins를 사용할 때는 Xvfb 플러그인을 활용할 수 있다.

CircleCI

CircleCI은 훌륭한 기능을 제공하며, Xvfb와 $DISPLAY가 이미 설정되어 있어 별도의 추가 설정이 필요하지 않다.

AppVeyor는 Windows 환경에서 실행되며, Selenium, Chromium, Electron 등의 도구를 별도의 설정 없이 바로 사용할 수 있다.