Cypress などを start-server-and-test で GitHub Actions で実行するとタイムアウトする場合の対処方法

結論(の一つ)

start-server-and-test は使わないで pm2 を使ってバックグラウンド起動する。

具体例

たとえば以下のようにして start-server-and-test で実行するコードがあったとします。

$ start-server-and-test 'http-server ./out -p 3000' http://localhost:3000 'yarn cypress'

これを pm2 を使って以下のように書き換えて実行します。

$ pm2 start 'http-server ./out -p 3000' --name foobar && yarn cypress && pm2 del foobar

補足

  • start-server-and-test がローカル開発環境だと問題なく動作するも、GitHub Actions だと 3000番 の起動を検知できずにタイムアウトするような場合に有効です*1
  • もとより pm2 を用いればバックグランド系で動作させる環境の構築は簡単になるので、統一してもよいと思います
  • CI のためだけに package.json"pm2" を書くのはためらわれると思うので、CI の YAML 内で直インストールして問題ないでしょう

参考

github.com

*1:環境によるようです

Powered by はてなブログ