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
Androidアプリの画像回帰テストをCI/CD上で無料で行う
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
yama-yeah
May 02, 2024
22
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Androidアプリの画像回帰テストをCI/CD上で無料で行う
yama-yeah
May 02, 2024
More Decks by yama-yeah
See All by yama-yeah
独立主成分分析による埋め込みにおける普遍的な幾何学の発見、論文紹介と追試
godyama
0
40
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
Optimizing for Happiness
mojombo
378
71k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
Into the Great Unknown - MozCon
thekraken
41
2.8k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
How to Ace a Technical Interview
jacobian
280
24k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Navigating Weather and Climate Data
rabernat
0
560
Transcript
CI/CDなのに完全無料!? 夏から始めるVRT with Android 1
目次 • VRTとは? • 今回やりたいこと • それを支える巨人たち • ワークフローの構成 •
気をつけなきゃいけないこと • 今後の展望 2
VRTとは • 新旧のスクショを比較して差異を確かめるテスト • ただのUIテストではわからなかった要素のズレを 確かめられる 3
今回やりたいこと • 想定してるシチュエーションはネイティブでの小規模な個人開発 (Flutterじゃないよ) • 画面の操作を行ってもUIが崩れないか確認したい • 旧バージョンとの画面の差分をウェブ上で確認したい • 無料で済ませたい
4
流れ • マスターにPush or マージされたら答え画像を作成し保存 • PRの作成が行われたらテストを実行 • テスト結果をFirebase hostingにデプロイ
5
android-emulator-runner • GitHub Actions上で動作するエミュレータ • 対抗馬のFirebaseでは11回以上の実行で有料 • 完全無料 • CI上で仮想環境を作れない問題を克服
• API、デバイス、起動引数などカスタム可能 6
Shot • VRTをAndroidのネイティブでできるようにするライブラリ • マスター画像の作成からテストまで全て網羅 • ビットマップからスクショを作成 • HTMLでレポートを作成してくれる •
Espressoと一緒に動く 7
Espresso • UIの操作を結合テストで行えるようになるライブラリ • XML、JetpackCompose共に対応 8
テスト内容(GitHubのリポジトリ検索App) • Top画面を撮影 • 検索バーにflutterと入力 • 検索実行 • 検索結果撮影 •
Flutter/flutterリポジトリをクリック • リポジトリ詳細画面を撮影 9
生成されたレ ポートを見て みる 10
ジョブ構成(答えを作成) WorkFlow エミュレータの起動 答え画像作成 GitHubにPush JDKのセットアップ 開発者 GitHub マスターにPush or
マージ Push 11
ジョブ構成(テスト) WorkFlow エミュレータの起動 VRTの実行 テスト結果をFirebaseに デプロイ JDKのセットアップ 開発者 Firebase PR
デプロイ 12
気をつけなきゃいけないこと • たまにエミュレータがエラー吐いて落ちる • APIは34,29を指定してはいけない!31にしなきゃだめ • 動作が重いので十分にスリープを活用する必要がある • ビットマップの取得はこちらがやらなきゃいけない(Shotがバグってる) •
CI上の仮想マシンはネットワークがちょい遅め? • 画面外の要素には干渉できない 13
今後の展望 • 古いレポートもログとして残したい • Reg-suitを無料で使う方法があるので調べたい(Danger使いてえ) • 動作が遅い(無料だから諦めるしかない) 14
参考 15 ソースコード SHOT エミュレータ