Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Jetpack Composeから始める、頑張らないVRT
Search
Yasuhiro Shimizu
August 18, 2022
Programming
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Jetpack Composeから始める、頑張らないVRT
Yasuhiro Shimizu
August 18, 2022
More Decks by Yasuhiro Shimizu
See All by Yasuhiro Shimizu
Kotlin Multiplatform Projectを導入してみて
yshrsmz
1
1.2k
BIP39について
yshrsmz
0
230
Android Fireside Chatまとめ
yshrsmz
3
2.4k
RxJava1からRxJava2へ
yshrsmz
0
120
Other Decks in Programming
See All in Programming
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.6k
パーソナライズPodcastを作った話
repunit11
0
130
mrbgem 三角測量 開発
ogom
0
220
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
360
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
280
golang-bob.pdf
iwatsukayura
0
110
AWSに止められる覚悟してますか?
morizo_1984
2
520
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
170
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
210
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
260
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
8
5.6k
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
350
Featured
See All Featured
Designing for Timeless Needs
cassininazir
1
520
The Mindset for Success: Future Career Progression
greggifford
PRO
0
530
Ruling the World: When Life Gets Gamed
codingconduct
0
390
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
320
Un-Boring Meetings
codingconduct
0
450
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
A Soul's Torment
seathinner
8
3.7k
Statistics for Hackers
jakevdp
799
230k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Transcript
Jetpack Composeから始 める、頑張らないVRT
自己紹介 清水泰博 Androidアプリ書いたりWebフロントエンド書いたり --- Twitter: @_yshrsmz GitHub: @yshrsmz その他: AndroidDagashiの運営とか
VRT?
VRTとは - Visual Regression Testing - 画像回帰テスト - 視覚的にリグレッションテストを行うこと -
変更前後のスクリーンショットを比較して、差分を検出する - ユニットテストでは担保しづらい、見た目をテストできる
VRTのつらいところ
VRTのつらいところ - テストケースのメンテ - 単純に書くものが増える - 実機/エミュレータを使う必要がある - 時間がかかる -
テストの実行結果が不安定 - CIで動かすにしても/SaaS 使うにしても手間がかかる - 💰💰💰 でも…
Jetpack Compose なら楽して VRT できる!
今日の内容を3行で
- airbnb/showkase で、`@Preview` Composable 関数を収集 - cashapp/paparazzi で、実機/エミュレータ不要でスクリーンショット を取得 -
reg-viz/reg-suit で、リッチなVRTレポートを作る
各ツールの紹介
airbnb/showkase - Jetpack Compose の `@Preview` からUIカタログを作るライブラリ - kapt/ksp で
`@Preview` 付き Composable の一覧を作り - その一覧を表示する Activity を提供する
cashapp/paparazzi - 安心の square 製 - 実機/エミュレータ無しで Android View や
Composable 関数を描画し、スクリーン ショットを取得できる - これ単体でも VRT を提供している
paparazzi 単体での VRT expected, actual, diff を含む画像を生成する
- showkase x paparazzi だけでも VRT はできる - しかし paparazzi
の VRT は非常にプリミティブで、レポートもない - もっとリッチに、かつ PR 上から確認できるようにしたい → reg-suit を使おう
reg-viz/reg-suit - Node.js 製の画像回帰テストツール - 画像の差分検知と、リッチなレポートサイトを提供する - GitHub 連携で簡単なレポートを表示できる -
アップロード先は S3 と GCS をサポート
None
reg-suit の比較元検出方法 - トピックブランチがマージ先から分岐したコミットに紐づくレポート
手順
https://github.com/android/nowinandroid/pull/101 “Add automatic preview screenshot testing with Paparazzi and Showkase”
showkase x paparazzi の設定はこのPRで詳しく見れます
テスト対象のモジュールに showkase を追加
テスト用モジュールの作成
src/test/kotlin/…/ScreenshotShowkaseModule showkase のエントリポイント
src/test/kotlin/…/PreviewScreenshotTests 今回のテストパラメータ - showkase の収集した Composable - テスト対象の端末 - テストしたい
Font Scale
テストの基本設定
パラメータの準備(1)
パラメータの準備(2)
テスト本体
$ ./gradlew :preview-screenshots:recordPaparazzi スクリーンショットの取得 $ ./gradlew :preview-screenshots:verifyPaparazzi 画像回帰テスト
reg-suit の設定 - Node.js が必要 - プラグインは reg-keygen-git-hash-plugin, reg-notify-github-plugin, reg-publish-s3-plugin
を選択 - 画像ディレクトリは preview-screenshots/src/test/snapshots/images を指定 - paparazzi の output ディレクトリ
AWS S3 の設定 - reg-suit のウィザードの中で作成できる - Google Cloud Storage
でも可 - Webページを公開できるように設定する
CIの設定(GitHub Actions)-1
CIの設定(GitHub Actions)-2
CIの設定(GitHub Actions)-3
CI の設定 - pull request と main ブランチへの push タイミングで実行する
- main への push タイミングは比較元のレポートを作成するため - 比較元のコミットを判別するため、git は完全なクローンが必要 - デフォルトでは depth=1 でクローンしている - detached HEAD ではなく、ブランチをチェックアウトしていること - AWS S3 へのアクセスは OIDC の設定が必要 - CodeBuild の設定するよりは遥かに楽だった (個人的感想です)
まとめ - airbnb/showkase で、`@Preview` Composable 関数を収集 - cashapp/paparazzi で、実機/エミュレータ不要でスクリーンショットを取得 -
reg-viz/reg-suit で、リッチなVRTレポートを作る
Thanks!