WSL2でCypressを動かす
はじめに
WSL2でCypressを立ち上げたときのメモ。環境は以下。
- Ubuntu20.04
- Windows11
- nodejs@v16.6.0
- npm@v7.19.1
- cypress@10.4.0
なお、2022/8/15時点の最新のWSL2でLinuxGUIアプリケーションをネイティブでサポートされるようになったようなので、この記事の対応をしなくてもWSLをインストールし直せばWSLからCypressを実行できる可能性がある。
WSL で Linux GUI アプリを実行する | Microsoft Docs
インストール
WSL2上にCypressの依存ライブラリが不足していたので追加してからインストールする。
# dependencies
apt-get install libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb
npm install -D cypress
Introduction | Cypress Documentation
WSL2でcypressを開けるようにする
WSL2はLinuxのGUIアプリケーションを開けないのでXサーバによって開けるようにする必要がある。
VcXsrvをインストール
下記からインストールしてexeファイルを実行
VcXrsvを実行できるように設定
~/.bashrcの先頭に下記を追記
# set DISPLAY variable to the IP automatically assigned to WSL2
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0.0
下記を実行
source ~/.bashrc
sudo /etc/init.d/dbus start &> /dev/null
Windowsの検索からXLaunchを起動。
Display settings, Client startupはデフォルトのまま進む。
Extra settingsはDisable access controlにチェックを入れて進む。
Windowsセキュリティアラートが出るが、パブリック/プライベートネットワークどちらも許可。
Cypressを実行
npx cypress open
Opening the App | Cypress Documentation
WSL2にGoogleChromeを追加する(おまけ)
WSL2にChromeがインストールされていない場合はCypressのE2EテストでChromeを使用できないため入れる。
sudo apt update && sudo apt -y upgrade && sudo apt -y autoremove
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt -y install ./google-chrome-stable_current_amd64.deb
# WSL上にChromeがインストールされたか確認
google-chrome --version
参考
Setting up the Cypress GUI in WSL2 Ubuntu for Windows 10 | Wilco van Esch
Use Google Chrome in Ubuntu on Windows Subsystem Linux · Scott Spence
Discussion