9
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Storybook 内の時間を固定して無駄なスナップショット差分を減らそう!

Last updated at Posted at 2022-07-25

困ったこと

ユニークビジョンのプロダクトのフロントエンドは、Chromatic で Storybook のスナップショット差分をレビューしています。
現在時刻に依存しているコンポーネントがある場合、時刻が少しでも変化してしまうと、スナップショット差分として検出されるという問題がありました。

image.png

やや見づらいですが、右の時刻部分に緑色で差分が表示されています。

image.png

このようなコンポーネントが十数個あり、毎回差分として検出されるため、本来見たい差分が見づらい状況になっていました。

解決方法

Storybook 内の時間を MockDate というライブラリを使って固定することで解決しました。

yarn add -D mockdate

Storybook 側の設定は簡単です。

preview.js
import MockDate from 'mockdate'

MockDate.set(new Date('2022-12-15T00:00:00'));

image.png

解決!

追記

日付操作系のライブラリとの相性

date-fnsdayjs でも使えるの?という疑問があったので、調査しました。

結果はどちらも期待通りで、固定した時間で動作しました。

// date-fns
startOfTomorrow() // -> Fri Dec 16 2022 00:00:00 GMT+0900 (日本標準時)

// dayjs
dayjs().toDate() // -> Fri Dec 15 2022 00:00:00 GMT+0900 (日本標準時)

相性の悪いライブラリ

vue-chartjs というグラフ表示ライブラリは、mockdate を使っていると storybook 上で表示されたりされなかったりする、という不具合が生じてしまいました。原因は不明ですが、一部のライブラリはこのように上手く動作しない可能性があるので注意してください。

9
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?