docker で cypress の gui を動かす


概要

DEPARTURE Advent Calendar 2022 | 19 日目

cypress は node.js 製の e2e testing framework です。

headless mode でも使うことができますが、今回は docker 上で gui を動かす方法を紹介します。

Dockerfile

image は cypress が公式で提供してくれているのでそちらを使います。

提供されている image は 3 種類ありますが、今回は cypress/base を使ったやり方を紹介します。ちなみに latest はだいぶ古いのでちゃんと tag を指定して使いましょう。

あらかじめ cache 用のディレクトリを作成しておきます。これをしないとインストールの際に権限の関係で失敗してしまいます。

FROM cypress/base:18.12.1

RUN mkdir -p /home/node/.cache/Cypress && chown node:node /home/node/.cache/Cypress

docker-compose.yml

cypress の cache 用の volume を用意し Dockerfile で作成したディレクトリに mount します。

docker で gui を動かすために必要な環境変数と volumes も設定します。

services:
  node:
    build:
      context: .
      dockerfile: Dockerfile
    command: npx cypress open
    environment:
      DISPLAY: :0
    user: node
    volumes:
      - .:/workspace
      - /tmp/.X11-unix:/tmp/.X11-unix
      - cypress-cache:/home/node/.cache/Cypress
    working_dir: /workspace

volumes:
  cypress-cache:

cypress を起動してみる

あとは通常と同じような流れになります。

docker-compose run node npm init -y
docker-compose run node npm i -D cypress
docker-compose up

参考リンク

https://github.com/cypress-io/cypress-docker-images

https://qiita.com/mya-zaki@github/items/f283a7c501b883e39e01