Skip to content

Commit

Permalink
Merge pull request #271 from flauschtrud/issue-242-ui-tests
Browse files Browse the repository at this point in the history
As a developer I want to be able to run the UI tests in the CI environment #242
  • Loading branch information
flauschtrud authored Dec 9, 2024
2 parents 9ed7e84 + 8a5b799 commit 6989300
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 23 deletions.
36 changes: 19 additions & 17 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,18 @@ on:
push

jobs:
test:
name: Run Unit Tests
build:
name: Test & Build
runs-on: ubuntu-latest

steps:
- name: Enable KVM group perms
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
ls /dev/kvm
- name: Check Out Repository
uses: actions/checkout@v4

Expand All @@ -18,25 +25,20 @@ jobs:
distribution: 'temurin'
java-version: 17

- name: Unit Tests
run: bash ./gradlew test -Pbase64EncodedPublicKey=${{secrets.PUBLIC_KEY}} --stacktrace

apk:
name: Generate APK
runs-on: ubuntu-latest
- name: Run Unit Tests
if: ${{ !contains(github.ref, 'l10n_master') }}
run: bash ./gradlew testFdroidDebugUnitTest

steps:
- name: Check Out Repository
uses: actions/checkout@v4
- name: Accept Licenses
if: ${{ !contains(github.ref, 'l10n_master') }}
run: yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses || true

- name: Set Up Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 17
- name: Run UI Tests
if: ${{ !contains(github.ref, 'l10n_master') }}
run: bash ./gradlew allDevicesFdroidDebugAndroidTest -Pandroid.testoptions.manageddevices.emulator.gpu=swiftshader_indirect -Pandroid.experimental.testOptions.managedDevices.emulator.showKernelLogging=true -Pandroid.experimental.testOptions.managedDevices.maxConcurrentDevices=1 -Pandroid.experimental.testOptions.managedDevices.setupTimeoutMinutes=180

- name: Assemble App Debug APK
run: ./gradlew assembleDebug -Pbase64EncodedPublicKey=${{secrets.PUBLIC_KEY}} --stacktrace
run: ./gradlew assembleDebug

- name: Upload App Play APK
uses: actions/upload-artifact@v4
Expand Down
3 changes: 1 addition & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import com.android.build.api.dsl.ManagedVirtualDevice
import com.android.tools.profgen.ArtProfileKt
import com.android.tools.profgen.ArtProfileSerializer
import com.android.tools.profgen.DexFile
Expand All @@ -17,7 +16,7 @@ android {
versionCode 1021200 // versionMajor * 1000000 + versionMinor * 10000 + versionPatch * 100 + versionBuild
versionName "1.2.12"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
testInstrumentationRunnerArgument 'notAnnotation', 'androidx.test.filters.FlakyTest'
testInstrumentationRunnerArgument "notAnnotation", "androidx.test.filters.FlakyTest"
javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation":
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import androidx.test.espresso.accessibility.AccessibilityChecks;
import androidx.test.espresso.matcher.ViewMatchers;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.FlakyTest;

import com.flauschcode.broccoli.util.RecyclerViewAssertions;
import com.flauschcode.broccoli.util.RecyclerViewMatcher;
Expand All @@ -27,6 +28,7 @@
import org.junit.runner.RunWith;

@RunWith(AndroidJUnit4.class)
@FlakyTest
public class CRUDIntegrationTest {

private ActivityScenario<MainActivity> scenario;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ public void import_new_recipe_with_arrified_json() {
onView(withId(R.id.new_preparation_time)).check(matches(withText("25m")));
onView(withId(R.id.new_description)).check(matches(withSubstring("Dieses Grundrezept für Fladenbrot ohne Hefe passt zu vielen Gerichten. Das einfache und schnelle Rezept ist sehr variabel.")));
onView(withId(R.id.new_ingredients)).check(matches(withText("200 g Mehl, Type 550\n3 EL Olivenöl (oder Pflanzenöl)\n3 EL Olivenöl (oder Pflanzenöl)\n1 Prise Salz\n100 ml Wasser")));
onView(withId(R.id.new_directions)).check(matches(withText("Zuerst das Mehl in eine Schüssel geben, Salz, Wasser und Olivenöl dazugeben und alle Zutaten zu einem Teig verkneten - am besten mit der Hand.\nDann den Teig für 10 Minuten quellen lassen und erneut für 5 Minuten kneten, so dass ein glatter Teig entsteht.\nSpäter aus dem Teig 4 dünne Fladen formen, eine gusseiserne Pfanne (=unbeschichtet) ohne Fett erhitzen und die Teigfladen darin nacheinander backen bis sich die ersten braunen Flecken zeigen.\nIm Anschluss die Fladen wenden und auch auf der anderen Seite backen.")));
onView(withId(R.id.new_directions)).check(matches(withText("1. Zuerst das Mehl in eine Schüssel geben, Salz, Wasser und Olivenöl dazugeben und alle Zutaten zu einem Teig verkneten - am besten mit der Hand.\n2. Dann den Teig für 10 Minuten quellen lassen und erneut für 5 Minuten kneten, so dass ein glatter Teig entsteht.\n3. Später aus dem Teig 4 dünne Fladen formen, eine gusseiserne Pfanne (=unbeschichtet) ohne Fett erhitzen und die Teigfladen darin nacheinander backen bis sich die ersten braunen Flecken zeigen.\n4. Im Anschluss die Fladen wenden und auch auf der anderen Seite backen.")));
}

@Test
Expand Down
3 changes: 0 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,5 @@ org.gradle.jvmargs=-Xmx1536m
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true

android.experimental.testOptions.managedDevices.allowOldApiLevelDevices=true

# Disabled because of https://github.com/flauschtrud/broccoli/issues/241
#org.gradle.configuration-cache=true

0 comments on commit 6989300

Please sign in to comment.