| name | fix-ci-test |
| description | CI で実行される各種テスト(jvmTest, jsBrowserTest, wasmJsBrowserTest, testDebugUnitTest, iosSimulatorArm64Test, integrationTest)の失敗を診断・修正する。Property-Based Test (PBT タグ) の扱いも含む。Use when "テストが失敗", "jvmTest が失敗", "Kotest 失敗", "PBT が落ちる", "integrationTest 失敗". |
fix-ci-test
テスト失敗の診断と修正スキル
目的
CI で実行されるテスト(jvmTest, jsBrowserTest, wasmJsBrowserTest, Android, iOS)が失敗した場合、原因を特定して修正する。
実行されるテストコマンド
Jvm Test
./gradlew jvmTest
cd integrationTest && ./gradlew jvmTest
JS Test
./gradlew jsBrowserTest
cd integrationTest && ./gradlew jsBrowserTest
Wasm JS Test
./gradlew wasmJsBrowserTest
cd integrationTest && ./gradlew wasmJsBrowserTest
Android Test
./gradlew testDebugUnitTest testReleaseUnitTest
cd integrationTest && ./gradlew testDebugUnitTest testReleaseUnitTest
iOS Test (macOS でのみ実行可能)
./gradlew iosSimulatorArm64Test
cd integrationTest && ./gradlew iosSimulatorArm64Test
問題の診断
Step 1: テスト実行
失敗したプラットフォームのテストをローカルで実行:
./gradlew jvmTest
Step 2: エラーメッセージの確認
テストログから以下を特定:
- 失敗したテストクラス/メソッド名
- 失敗原因(assertion エラー、null pointer 等)
- スタックトレース
Step 3: テストファイルの特定
Glob を使用して該当するテストファイルを検索:
src/**/kotlin/**/*Test.kt
src/**/kotlin/**/*Tests.kt
修正手順
パターン A: テスト自体の問題
修正方法:
- Read でテストコードを確認
- 失敗原因を特定(期待値の誤りなど)
- Edit でテストコードを修正
- 再度テストを実行
./gradlew jvmTest
パターン B: 実装コードの問題
修正方法:
- Read で失敗しているテストを確認
- 実装コードの Read で問題箇所を特定
- Edit で実装を修正
- 再度テストを実行
パターン C: 依存関係の問題
確認手順:
- エラーメッセージで依存関係の不足を確認
gradle/libs.versions.toml を Read で確認
- 必要なライブラリが定義されているか確認
- バージョン不一致がないか確認
修正方法:
- 依存関係を追加または更新
./gradlew clean を実行してキャッシュをクリア
- 再度テストを実行
検証
修正後、以下のコマンドで各プラットフォームのテストが成功することを確認:
./gradlew jvmTest
./gradlew jsBrowserTest
./gradlew wasmJsBrowserTest
cd integrationTest && ./gradlew jvmTest
cd integrationTest && ./gradlew jsBrowserTest
各テストが終了コード 0 で成功することを確認。
トラブルシューティング
テストがローカルで再現できない場合
- OS の違い(macOS vs Ubuntu)を確認
- Java バージョンの違いを確認
- 環境変数の設定を確認
- キャッシュをクリア:
./gradlew clean
ブラウザテスト(JS, Wasm JS)が失敗する場合
- Playwright や Chrome ドライバーがインストールされているか確認
- ブラウザキャッシュをクリア
- ヘッドレスモードでのテスト実行を試す
Android/iOS テストがローカルで実行できない場合
- エミュレータが起動しているか確認(Android)
- Xcode がインストールされているか確認(iOS)
- CI 環境でのみ実行できるテストの可能性