From 99480a9ded84a51bbeec22121c35a6576240ebb1 Mon Sep 17 00:00:00 2001 From: Luna712 <142361265+Luna712@users.noreply.github.com> Date: Fri, 15 May 2026 12:45:08 -0600 Subject: [PATCH] Run instrumented tests with pull requests --- .github/workflows/pull_request.yml | 47 +++++++++++++++++++ .../cloudstream3/ExampleInstrumentedTest.kt | 11 +++++ 2 files changed, 58 insertions(+) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 675ce3b2f77..470b1047b3a 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -34,3 +34,50 @@ jobs: with: name: pull-request-build path: "app/build/outputs/apk/prerelease/debug/*.apk" + + instrumented-tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + + - name: Set up JDK 17 + uses: actions/setup-java@v5 + with: + distribution: temurin + java-version: 17 + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v5 + with: + cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} + cache-read-only: false + + - name: Get target SDK + id: sdk + run: | + TARGET_SDK=$(grep 'targetSdk' gradle/libs.versions.toml | grep -o '[0-9]\+' | head -1) + echo "version=$TARGET_SDK" >> $GITHUB_OUTPUT + + - name: Enable KVM + run: | + echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules + sudo udevadm control --reload-rules + sudo udevadm trigger --name-match=kvm + + - name: Run Instrumented Tests + uses: reactivecircus/android-emulator-runner@v2 + with: + api-level: ${{ steps.sdk.outputs.version }} + arch: x86_64 + profile: Nexus 6 + script: ./gradlew connectedPrereleaseDebugAndroidTest + + - name: Upload Test Results + if: always() + uses: actions/upload-artifact@v7 + with: + name: instrumented-test-results + path: '**/build/reports/androidTests/' diff --git a/app/src/androidTest/java/com/lagradost/cloudstream3/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/lagradost/cloudstream3/ExampleInstrumentedTest.kt index 4c5cdea5bee..1d182212a25 100644 --- a/app/src/androidTest/java/com/lagradost/cloudstream3/ExampleInstrumentedTest.kt +++ b/app/src/androidTest/java/com/lagradost/cloudstream3/ExampleInstrumentedTest.kt @@ -33,6 +33,7 @@ import com.lagradost.cloudstream3.utils.SubtitleHelper import com.lagradost.cloudstream3.utils.TestingUtils import kotlinx.coroutines.runBlocking import org.junit.Assert +import org.junit.Assume import org.junit.Test import org.junit.runner.RunWith @@ -55,8 +56,18 @@ class ExampleInstrumentedTest { return APIHolder.allProviders.toTypedArray() //.filter { !it.usesWebView } } + private fun skipIfNoProviders() { + Assume.assumeTrue( + "Skipping: no providers loaded", + getAllProviders().isNotEmpty() + ) + } + @Test fun providersExist() { + skipIfNoProviders() + // Very redundant since we skip when no providers + // but maybe this is useful someday. Assert.assertTrue(getAllProviders().isNotEmpty()) println("Done providersExist") }