来週のうちにiOS 16がリリースされそうなので、メンテナンスしているアプリの動作確認をしてみた。
アプリ自体は問題なく動きそうだが、iOS 15.xまでは問題なく通っていたUIテストが、iOS 16のシミュレータではボロボロ失敗するようになった。
環境は次の通り。
- OS: macOS Monterey (12.5.1)
- Xcode: 14.0 RC
UIAlertController(.Style.actionSheet)の扱い
UIAlertControllerのスタイルには2つあるが、変わったのは.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