Closed5

PlaywrightのHermetic Install

ankdankd

Playwright is 何

https://playwright.dev/

もっぱらE2Eテストに使われるテストツール。
クロスブラウザに対応してたりなんなりで、競合と比べても今選ぶなら基本これなんじゃないかなと思ってる。

例としてpuppeteerとの比較。2年単位とかで見た時のPlaywrightの上がり方がすごい。
https://npmtrends.com/playwright-vs-puppeteer

ankdankd

クロスブラウザテストどうやってんの

ブラウザのインストール・アンインストール

https://playwright.dev/docs/browsers

普通は初回セットアップ時にブラウザもインストールするか聞いてくれるので、そこでYesと答えておけば普通やることない(はず、やってないのでわからん)。

あとから追加・削除したくなったらCLIから両方できる。

どこに入る?

https://playwright.dev/docs/browsers#managing-browser-binaries

基本的にはOSごとに決められたディレクトリにインストールされる。

  • %USERPROFILE%\AppData\Local\ms-playwright on Windows
  • ~/Library/Caches/ms-playwright on macOS
  • ~/.cache/ms-playwright on Linux

つまりはPlaywrightを入れたプロジェクトを走らせてる環境にぶっこまれる。
人によって変わるの嫌だなぁ...

インストールって必要?普段使ってるやつ使えないの?

https://zenn.dev/yusukeiwaki/articles/90bf05c2cf9a90
https://playwright.dev/docs/browsers#google-chrome--microsoft-edge

設定ちょろっとだけ変えればローカルに元から入っているやつも使える。

export default defineConfig({
  // ...
  projects: [
    // ...
    {
      name: 'Google Chrome',
      use: { ...devices['Desktop Chrome'], channel: 'chrome' },
    },
  ]
});

channel: 'chrome'でうまいこと探してくれる

まぁこれも人によって変わるのは一緒。

ankdankd

Hermetic Install is 何

"Hermetic" is 何

https://eow.alc.co.jp/search?q=hermetic

hermetic

  1. 密封した
  2. 外部から影響されない

"Hermetic install" =「外部から影響されないインストール」(?)。

Hermetic Install is 何

https://playwright.dev/docs/browsers#hermetic-install

ブラウザをnode_modules内にインストールしてくれる。
マシンの環境汚染しないし、同じプロジェクトであればみんな同じ環境でテストできる。
みんなハッピー。

どうやるの

ブラウザのパスを指定する環境変数に0を設定する。

PLAYWRIGHT_BROWSERS_PATH=0

VSCodeの拡張機能だと通らない

マシン側で環境変数を設定してからVSCodeの拡張機能でテストを実行。
→「ブラウザいないからインストールしてね」とエラーを吐きテストが通らない。

これ、拡張機能の設定で環境変数を設定してやると通った。

{
  "playwright.env": {
    "PLAYWRIGHT_BROWSERS_PATH": 0
  }
}

これだけ設定すれば良かったりする?未検証(今後やる予定もなし)。

ankdankd

元々何したかったか

実はE2Eテストをしたかったわけではなく、単にプロジェクトの環境でchromium使いたかっただけ。

https://github.com/reg-viz/storycap

storycapでキャプチャを撮るのにブラウザが必要だったけど、自環境がWSLでWindows側に入ってるchromeにパスが通ってなかったのでエラーになった。
これを通せばいい話ではあるけど、チーム開発で導入するならそういう環境による差分はなくした方が基本は嬉しいはず。
というわけでプロジェクトの外に依存しない形の方法を考えた結果、今回の話に行き着いた。

実際のところ、storycapはローカルに入ってるものの他に、puppeteerを一緒に入れてればそこに同梱されてるchromiumを見に行くからそちらを使えば良かったりする。
ただ冒頭に書いた通り、今入れたもので今後E2EテストするようになるならPlaywright入れたいと思ったので調べてみた。

ankdankd

まぁ結局そんな微妙な環境で開発してるの自分だけだったのでパス通して終わりでええかってなってるところ。
調べ物自体は面白かったので後で記事にまとめるかも。たぶん。

このスクラップは1ヶ月前にクローズされました