Electron
XvfbによるElectronのヘッドレス化(Playwright × ElectronをDocker上で動かす)
Electronにはヘッドレスモードはない。そのため、GUIの無いシステムではElectronを使うこともできないわけで。たいてい問題はないが、つまりDocker上で動かすことができないということになる。
XvfbはX Virtual FrameBufferのことで、X Window Systemの仮想ディスプレイのサーバーである。これを使うことでElectronをヘッドレスモードで動かすことができる。下記のドキュメントを参照。
https://www.electronjs.org/ja/docs/latest/tutorial/testing-on-headless-ci
具体的にPlaywright × ElectronをDocker上で動かせるようにしたいときに使える。下記はDockerfileの例(yarn e2e
でPlaywrightのテストを実行することを想定している)。
FROM mcr.microsoft.com/playwright:latest@
WORKDIR /app
RUN apt-get install -y xvfb
RUN npm uninstall -g yarn \
&& rm -rf /usr/local/bin/yarn /usr/local/bin/yarnpkg
COPY ./package.json ./package.json
RUN corepack enable \
&& corepack install
RUN yarn install --immutable
RUN yarn playwright install chromium
COPY . .
CMD ["xvfb-run", "yarn", "e2e"]
注意するべきはこれだと動かない場合がある。というのもDockerの実行プロセスがPID 1で動いておりシグナルハンドルが出来ないから…だと思う。–initオプションを付与すると動くようになるので、多分そうだと思う。
後もう1つ、大抵の場合はWindowsで動かす場合が多いので、お手持ちのCIのWindows環境で動かすほうがいいと思う。Github Actionsであればwindows環境がある。