diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..3625730f --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,39 @@ +name: Android CI + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v3 + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + + - name: Set up Android SDK + uses: android-actions/setup-android@v3 # Using v3 as it's the latest + with: + api-level: 34 # Assuming API level 34, adjust if needed + build-tools-version: 34.0.0 # Assuming build tools 34.0.0 + ndk-version: 25.1.8937393 # Optional: specify NDK version if needed + # cmake-version: # Optional: specify CMake version if needed + + - name: Grant execute permission to gradlew + run: chmod +x ai-catalog/gradlew + + - name: Build with Gradle + working-directory: ./ai-catalog + run: ./gradlew build + + - name: Run Android Instrumented Tests + working-directory: ./ai-catalog + run: ./gradlew :app:connectedAndroidTest diff --git a/ai-catalog/app/build.gradle.kts b/ai-catalog/app/build.gradle.kts index 154ac967..a3fa9cdc 100644 --- a/ai-catalog/app/build.gradle.kts +++ b/ai-catalog/app/build.gradle.kts @@ -93,6 +93,10 @@ dependencies { testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) + androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") + androidTestImplementation("androidx.test.ext:junit:1.1.5") + androidTestImplementation("androidx.test:runner:1.5.2") + androidTestImplementation("androidx.test:rules:1.5.0") androidTestImplementation(platform(libs.androidx.compose.bom)) androidTestImplementation(libs.androidx.ui.test.junit4) debugImplementation(libs.androidx.ui.tooling) diff --git a/ai-catalog/app/src/androidTest/java/com/google/android/apps/ai/catalog/MainActivityTest.java b/ai-catalog/app/src/androidTest/java/com/google/android/apps/ai/catalog/MainActivityTest.java new file mode 100644 index 00000000..db1b6a9b --- /dev/null +++ b/ai-catalog/app/src/androidTest/java/com/google/android/apps/ai/catalog/MainActivityTest.java @@ -0,0 +1,26 @@ +package com.google.android.apps.ai.catalog; + +import androidx.test.ext.junit.runners.AndroidJUnit4; +import org.junit.runner.RunWith; +import org.junit.Rule; +import androidx.test.rule.ActivityTestRule; +import com.google.android.apps.ai.catalog.MainActivity; + +import static androidx.test.espresso.Espresso.onView; +import static androidx.test.espresso.assertion.ViewAssertions.matches; +import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; +import static androidx.test.espresso.matcher.ViewMatchers.withText; +import org.junit.Test; + +@RunWith(AndroidJUnit4.class) +public class MainActivityTest { + + @Rule + public ActivityTestRule activityRule = + new ActivityTestRule<>(MainActivity.class); + + @Test + public void testLaunchAndFindText() { + onView(withText("Android AI Samples")).check(matches(isDisplayed())); + } +}