Skip to content

Toolbar Selection Accessibility

log5r edited this page Oct 11, 2026 · 1 revision

選択件数を伝える編集ボタンのアクセシビリティ

確認日: 2026-10-11(JST)。Issue #72のiPadで、編集ボタンの選択件数をaccessibilityValueだけから取得するUI testがtimeoutした。編集ボタンのaccessibilityLabelへ件数を含め、iPhoneとmacOS/iPad共通toolbarで日英の文言をそろえた。英語は Edit Selected, 2 selected、日本語は 選択した2件を編集。既存identifier editSelectedMediaButton は維持する。

macOS native toolbarの内側Label

macOSでは外側ButtonのaccessibilityLabelだけを変更しても、native toolbarのAXに内側 PanelToolbarLabel.title の旧文言 Edit Selected が現れた。既存appと同じbundle IDの競合を切り分けた専用IDコピーでも同じ失敗を再現し、対象Debug binaryに新count文言と最新sourceが含まれることを確認した。

内側titleへ同じLocalizedStringKeyの件数文言を渡す1行だけを隔離copyで比較したところ、AXに Edit Selected, 2 selected が現れ、閉じる→別選択で再表示の同じcaseが40.492秒で成功した。この変更を共通toolbarへ適用した。iPhoneの表示titleは維持し、件数付きaccessibilityLabelを使う。画面のinf rect警告や他windowのinterruption検出は成功runにも現れたため、件数label失敗の原因とは扱わない。

最終UI確認

macOS Debugは専用bundle ID/ad-hoc署名のcopy、Xcode27.1 RC/Swift6/arm64、parallel testing OFF/coverage OFFで、以下の4操作を確認した。copy固有のbundle IDと署名を、製品sourceの変更と区別して記録する。

対象操作 成功runの秒数 確認内容
一括編集を閉じ、別選択で再表示 36.958 英語の件数2→1追随、遅い編集可否確認の後も現在の選択を表示
一括保存を中止 44.098 進捗2 of 3からcancel、1 updated/2 unprocessed、原本とmodel3件の正確一致
ライブラリのソート・検索・選択 29.223 英語件数labelと大量選択の変更
行をドラッグして6件選択・編集 26.544 明示ja/ja_JPで 選択した6件を編集 を取得

最初の4件runは件数labelまたはロケールの期待不一致で失敗した。修正後の3件成功runと、後述の保存中止1件成功runを組み合わせて最終4操作の結果とする。1つのxcresultが4件全成功だったとは記録しない。

iPhone17e/iPad Pro13 M5のiOS27.0 Simulatorでは、関連2 UI caseがそれぞれ105.281秒/97.453秒で成功し、件数2/1/3をAX labelから確認した。共通toolbarの最終内側title変更後もiPadの閉じる→再表示caseが41.554秒で成功し、2→1追随を確認した。日英文言の単体テストも成功している。これらはAX情報の確認で、実機VoiceOverの音声聴取や利用者の操作遅延の計測ではない。

保存中止UI testの補正

macOSの件数label修正後の中止caseでは、CancelがScrollViewのviewport外でもXCTestのisHittableがtrueで、合成clickが中止操作へ届かなかった。最大3回のscrollと有限/非空/viewport内のframe確認を加えた。結果と原本のStaticTextはlabel/valueの正確一致、閉じるボタンは同名Touch Bar要素との重複を避けてWindow内に限定した。保存の製品コードは追加変更していない。

最終caseはcancel→1件更新/2件未処理→原本 Stopped bulk title|UI Test Track 2|UI Test Track 3 の正確一致→閉じる→model3件の一致まで成功した。target SwiftLintは0違反/exit0で、baselineへ追加していない。元ログとxcresultはローカルに保持し、確認に使った対象行の抜粋/summary/source・product hashはローカルに保全する。無関係な他appが写った全画面画像・movieと全AX dumpは公開しない。

実装と対象テストはPR #77の BulkMetadataEditabilityUITests とライブラリ操作のUIテストを参照する。再確認はmacOS/iPhone/iPadで対象操作だけを実行し、選択件数2→1と日英のAX labelを照合する。日本語drag条件は起動localeをja/ja_JPに固定する。保存中止では2件目の書込前へasync待機を置き、Cancelのframeがviewport内にあることを確認して操作し、結果・原本タグ・再表示modelの3つを独立して照合する。ログ/xcresultと検証コピーのhashはローカルに保全した。

Clone this wiki locally