Save 37% off PRO during our Black Friday Sale! »

複数端末のつらさを乗り越えてiOS UITestを実行

複数端末のつらさを乗り越えてiOS UITestを実行

merpay Tech Talk ~for iOS Engineers~
https://mercari.connpass.com/event/205129/

「参考文献」
iOSDC Japan 2020: XCUITestのつらさを乗り越えて、iOSアプリにUITestを導入する
https://speakerdeck.com/satotakeshi/xcuitestfalseturasawocheng-riyue-ete-iosahuriniuitestwodao-ru-suru

https://github.com/xcpretty/xcode-install

Safari not opening with supplied launch argument on real device iOS 12.2 #12517
https://github.com/appium/appium/issues/12517

53e2d354b3299d64a54af680865516d5?s=128

Sato Takeshi

March 18, 2021
Tweet

Transcript

  1. 
 複数端末のつらさを
 乗り越えて
 iOS UITestを実行
 merpay Tech Talk ~for iOS

    Engineers~
 2021 年 3 月 18 日 
 #merpay_techtalk

  2. Who am I
 • Name
 • 佐藤剛士(さとうたけし)
 • Company
 •

    Merpay, Inc.(2019/01 ~)
 • Role
 • Software Engineer (iOS)
 • Account
 • Twitter: @hatakenokakashi
 • Facebook: 佐藤剛士
 • GitHub: SatoTakeshiX

  3. https://www.youtube.com/watch?v=0XGRjJBZKEY

  4. 今日話すこと
 • 現状のメルペイiOSチームのUITest
 • iOS 12をCircleCIで実行
 • iOS 12のXCUIElementQuery
 •

    iOS 14.2におけるSafariの不具合

  5. 現状のメルペイiOSチームのUITest


  6. UITest CircleCIパス件数
 平均 120件数 40件数 2020年9月
 2021年3月


  7. 実行OS
 2020年9月
 2021年3月
 iOS 13
 iOS 12
 iOS 13
 iOS

    14

  8. iOS 12をCircleCIで実行


  9. https://circle-macos-docs.s3.amazonaws.com/image-manifest/v4519/index.html

  10. iOS 12 SDKをインストール
 config.yml


  11. CircleCIのworkflow
 • iOS 14, 13, 12ごとにjobを走らせる
 • 一つのjobで「アプリのビルド」「UITest実行」をする
 • 各jobを並列実行させる


  12. ‘Unable to write data’ Error


  13. ‘Unable to write data’ Error
 report.xcresultが 書き込めない様子

  14. SSHして容量確認
 • 失敗したJobにSSHでログインして容量確認


  15. SSHして容量確認
 • 失敗したJobにSSHでログインして容量確認
 そもそも30GBしか 容量がない

  16. 利用しているファイルの規模
 • もともとインストールされているruntime
 ◦ iOS 13, iOS 14, tvOS, watchOS


    ▪ それぞれ数GB
 • プロジェクトファイル
 ◦ CocoaPods, Carthageを含めると数GBに膨らむ
 • さらにそこにiOS 12 runtimeをインストール
 ◦ プラス数GB
 • UITestのテスト結果、report.xcresult
 ◦ 数百MB

  17. 利用しているファイルの規模
 • もともとインストールされているruntime
 ◦ iOS 13, iOS 14, tvOS, watchOS


    ▪ それぞれ数GB
 • プロジェクトファイル
 ◦ CocoaPods, Carthageを含めると数GBに膨らむ
 • さらにそこにiOS 12 runtimeをインストール
 ◦ プラス数GB
 • UITestのテスト結果、report.xcresult
 ◦ 数百MB
 Disk Full Error!
  18. 最初に他のSDKを削除する
 • iOS 12のjobの最初に実行
 • シュミレーターとデフォルトインストールのruntimeを削除
 config.yml


  19. iOS 12のXCUIElementQuery


  20. iOS 12のXCUIElementQuery
 
 
 iOS 12 Button, 0x6000024e3100, {{203.0, 475.5},

    {145.0, 29.0}}, label: '振込申請とスケジュール ’ iOS 13 Button, 0x600000754700, {{203.0, 475.5}, {145.0, 29.0}}, label: '振込申請とスケジュール ' StaticText, 0x6000007547e0, {{203.0, 481.5}, {145.0, 17.0}}, label: '振込申請とスケジュール ' iOS 13にはStaticText要素が取得できる
  21. Buttonのテキストを確認したい
 • 「¥5000 | P0」という文字列を確認し たい
 • Buttonの中のテキストなのでiOS 12 では検索ができない


    iOS 12 Button, 0x6000017841c0, {{193.7, 319.0}, {165.3, 48.0}}, identifier: 'com.merpay.merpay_mercari_wallet_kit.cash_in_control_view.switch_bu tton_view'
  22. iOS 12のみキャプチャを撮影


  23. iOS 12のみキャプチャを撮影
 iOS 12のみ画面キャプチャを撮影

  24. iOS 12のみキャプチャを撮影
 テスト自体をSkipする

  25. TestRailに結果を送信
 • テスト結果をTestRailで管理
 • テスト結果をSkippedにし、キャプチャを添付する
 • あとで目視でチェックしOKならテストを成功とみなす


  26. iOS 14.2以上における
 Safariの不具合


  27. UITestでSafariアプリを利用
 
 
 
 • Safariを立ち上げURLを入力する
 • Deep Linkで特定の画面に遷移するテストの一環


  28. iOS 14.2以上におけるSafariの不具合
 • iOS 14.2 以上からSafariの検索バーをタップす るとアプリが落ちるようになった
 • どうやらSiri Suggestionsの機能が呼び出せなく

    なっている

  29. launchArgumentsに--Uオプションを使う
 • Safariに--Uオプションを使うと指定したURLを入力した状態でアプリ が立ち上がる
 • iOS 12.2以上から--Uオプションが使える
 https://github.com/appium/appium/issues/12517


  30. まとめ


  31. まとめ
 • メルペイUITestの現状
 • CircleCIでiOS 12をインストール
 • Disk Full Errorの解消


    • iOS 12で検索できないUI要素はキャプチャ+Skip
 • iOS 14.2のSiri Suggestionsの不具合はSafariに--Uオプションで立ち 上げる

  32. 参考文献
 • iOSDC Japan 2020: XCUITestのつらさを乗り越えて、iOSアプリに UITestを導入する
 • https://github.com/xcpretty/xcode-install
 •

    Safari not opening with supplied launch argument on real device iOS 12.2 #12517