【iOS】iOS 16でのUITestで気づいた「これまでと違う点」

来週のうちにiOS 16がリリースされそうなので、メンテナンスしているアプリの動作確認をしてみた。

アプリ自体は問題なく動きそうだが、iOS 15.xまでは問題なく通っていたUIテストが、iOS 16のシミュレータではボロボロ失敗するようになった。

環境は次の通り。

  • OS: macOS Monterey (12.5.1)
  • Xcode: 14.0 RC

UIAlertController(.Style.actionSheet)の扱い

UIAlertControllerのスタイルには2つあるが、変わったのは.actionSheet の方。こういう↓やつ。

ActionSheetのサンプル。

iOS 15までは、どちらのスタイルでもUITest時には次のようにapp.sheetsでアクセスできていた。

let app = XCUIApplication()
app.sheets.staticTexts["ほげほげ"]

ところが、これがiOS 16のUIテストで軒並み失敗する。同じXcode 14(RC)でも、iOS 15.5のシミュレータでは問題なく動作するのに、だ。

そこで、Xcodeのレコーディング機能を使って、ActionSheetを表示して、ボタンを押してみた。 すると、app.sheetsではなくapp.scrollViewsでアクセスしていることが判明した。 次のコードだと、iOS 15でも16でも問題なくActionSheetにアクセスできる。

let app = XCUIApplication()
app.scrollViews.staticTexts["ほげほげ"]

なるほど、ScrollViewとして見ていきます、ってことね。 ActionSheetは、iPhoneではスクロールが必要になるほど長くなることはないにしても、Apple Watchならありうる。

このあたり、フレームワークをSwift UIに統合していく中で、他にも色々起きそうな気がする。

Comments