Storyshots を 使わずに Playwright で Storybook の VRT をする

32424 ワード

はじめに

Storybook を使ってコンポーネントをカタログを作成し、様々な状態ごとにスクリーンショットを取得することで変更による視覚的なデグレを検知するビジュアルリグレッションテスト (Visual Regression Testing) が広く実施されている。

これの実現手段としていくつかが存在しているが、最も導入しやすい手段の一つは Storybook が公式でサポートしている addon-storyshots-puppeteer を利用することだと思う。

一方で名前にもあるように puppeteer を使っているため chrome と firefox ブラウザしか使うことができなかったり、なぜか peerDependencies である puppeteer のバージョンがすごい古かったり (結構前から Issue にも挙がっている)、テストランナーが jest という特徴がある。Issue にもあるが、最近は vitest を使いたいというニーズもあるようだ。

私自身も、ソースコードの近くにテストが書けたり、設定の必要が少ないという点から vitest を使いたいと思うことが増えている。

そうなってくると、VRT のために別のテストランナーである jest やそれのトランスフォーマーの設定やパッケージを入れるのがめんどくさくなってきた。

そういった背景があり、addon-storyshots-puppeteer を使わないで VRT をできるようにしたくなった。

ここでは、Playwright を使うことで、chrome や firefox 以外でも VRT が実施できるようにしつつ、@playwright/test を使うことで、設定回りも楽にしたいと思う。

全部終わった状態のリポジトリは以下。