Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Chromatic VRT 戦略:効果を保ちつつ、コストを抑える方法
Search
TK
June 24, 2023
Programming
0
580
Chromatic VRT 戦略:効果を保ちつつ、コストを抑える方法
Saitama.js vol.6 にて LT した内容。
TK
June 24, 2023
Tweet
Share
More Decks by TK
See All by TK
bulletproof-react 写経してみた
takuyakikuchi
0
1.1k
Game Changer? :has() の到来 🛸
takuyakikuchi
0
53
スタック・オーバーフローに コントリビュートしはじめて良かったこと🐣
takuyakikuchi
1
360
Other Decks in Programming
See All in Programming
Site Reliability Engineering for GMO
pyama86
8
1.1k
VSCodeでのDatabricks開発もお勧めしたい/I would also recommend Databricks development with VSCode.
kazumain
0
260
デフォルトにして至高、RubyMineの大好きな所
ruzia
0
480
Goのエラースタックトレースの歴史と今後
sonatard
9
1.6k
#phpcon_odawara オープン・クローズドなテストフィクスチャを求めて / open closed test fixtures
77web
3
230
PHPはいつから死んでいるかの調査
chiroruxx
1
400
Micro Frontends for Java Microservices - Devnexus 2024
mraible
PRO
0
500
CA.swift19 恋するAIアプリ開発の裏側
oskmr
0
370
Java 22 Overview
kishida
1
190
Ruby Pattern Matching
bkuhlmann
0
930
GraphQLサーバの構成要素を整理する #ハッカー鮨 #tsukijigraphql / graphql server technology selection
izumin5210
4
870
見た目から始める生産性向上
ikumatadokoro
8
990
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
244
20k
The Cult of Friendly URLs
andyhume
74
5.7k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
20
1.9k
Building Applications with DynamoDB
mza
88
5.6k
KATA
mclloyd
15
12k
Writing Fast Ruby
sferik
621
60k
Thoughts on Productivity
jonyablonski
58
3.8k
Designing Experiences People Love
moore
136
23k
Raft: Consensus for Rubyists
vanstee
132
6.3k
Building Effective Engineering Teams - LeadDev
addyosmani
28
1.9k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
8.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
274
13k
Transcript
Chromatic VRT 戦略: 効果を保ちつつ、コストを抑える⽅法
TK と申します👋
プレミアリーグ観戦が 趣味です⚽
Saitama.js なので
⽗は所沢市出⾝です
少し川⼝市に住んでました 🏠
画像元: https://thegate12.com/jp/article/355
おすすめスポット:秩⽗三⼤氷柱 ❄
私は⼭梨県出⾝ですが 🗻
None
⼭梨も海ないので、共感です 🏖
Saitama.js 初参加! 楽しみます 🎉
本題
Chromatic VRT 戦略: 効果を保ちつつ、コストを抑える⽅法
結論
Page コンポーネントでのみ Snapshot を有効にするこ とで、Chromatic のコストを抑える!
前提知識
Storybook UI コンポーネントを分離して開発、テストするためのツール Story という異なるレンダリング状態をキャプチャできる Storybook official doc
Chromatic Storybookのためのクラウドベースのツールチェーン Chromatic official doc
VRT: 視覚的な側⾯のテスト⼿法 Snapshots を撮影し、以前のバージョンと⽐較することで視 覚的な差異を検出。 Snapshots とは、Story の画像とメタデータのキャプチャ。 Chromatic UI
test
この話の発端
Storybook + Chromatic 使い始めました
めちゃくちゃ便利!
VRT(Visual Regression Test) も設定なしで使えるとか 神じゃーん
しかし、
使い始めたばかりなのに、Snapshots 使い切りそう フリープランではもう限界か。。
Chromatic Pricing
Snapshotsはどのようにカウントされるか ビルドを実⾏するたびに、各ストーリーに対して1つの Snapshot が取得される。 フリープランの 5,000 Snapshots 100 コンポーネント *
2 ストーリー => 25 回ビルド 🤯 Chromatic docs: Snapshots
そして、課⾦プランもなかなかのお値段
Chromatic Pricing
Snapshots を削減する⽅法は何かないか?
記事へのリンク
記事へのリンク
Page コンポーネントでのみ Snapshot を有効にする!
画像参照元: Atomic design by Bradfrost
なぜページコンポーネントをターゲットに?
ページコンポーネント それぞれのコンポーネントの組み合わせで構成されているた め、結合検証として効率的に多くのコンポーネントをテスト できる!
✅ 画像参照元: Atomic design by Bradfrost
設定
// .storybook/preview.js const preview = { parameters: { // Disables
Chromatic's snapshotting on a global level chromatic: { disableSnapshot: true }, }, }; export default preview; Step 1: グローバルで Snapshot を無効化 Chromatic doc: Ignore stories
// MyComponent.stories.js|jsx import { MyComponent } from './MyComponent'; export default
{ component: MyComponent, title: 'MyComponent', // Enables snapshotting for the component parameters: { chromatic: { disableSnapshot: false }, }, }; export const StoryName = { args: {} }; Step 2: 個別に Snapshot を有効化 Chromatic doc: Ignore stories
これだけ
Snapshots の削減に成功 🎉🎉
注意点 🚨
1. 網羅率は下がってしまう 意識的に Story を追加してさまざまなバリエーションを網羅 できるようにする。
2. Chromatic でのレビューで⼯夫が必要になる 👈 “Changeset” に出てこなくなる 画像元: Chromatic docs UI
review
注意点はあるものの、有効な戦略!(だと思う)
まとめ
課題: Chromatic 便利だけど、⾼い 💸 コスト抑えて、VRT の効果を保つ⽅法はないか? ページコンポーネントを snapshot 対象とし、 Snapshot
の消費を抑える! ただし、バリエーションの網羅、レビューは⼯夫する。
以上です 👋