Skip to content
This repository has been archived by the owner on Nov 9, 2024. It is now read-only.

Fix flaky UI test #253

Merged
merged 23 commits into from
Jun 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 43 additions & 6 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
java-version: 17

- name: Setup Gradle
uses: gradle/gradle-build-action@v3
uses: gradle/actions/setup-gradle@v3

- name: Setup Android SDK
uses: android-actions/setup-android@v3
Expand All @@ -41,7 +41,10 @@ jobs:
report_paths: './**/build/test-results/**/TEST-*.xml'

uiTests:
runs-on: macos-latest
runs-on: ubuntu-latest
strategy:
matrix:
api-level: [30]
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -53,10 +56,44 @@ jobs:
java-version: 17

- name: Setup Gradle
uses: gradle/gradle-build-action@v3
uses: gradle/actions/setup-gradle@v3

- name: Setup Android SDK
uses: android-actions/setup-android@v3
- 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

- name: AVD cache
uses: actions/cache@v4
id: avd-cache
with:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-${{ matrix.api-level }}

- name: create AVD and generate snapshot for caching
if: steps.avd-cache.outputs.cache-hit != 'true'
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
force-avd-creation: false
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
arch: x86_64
disable-animations: true
disk-size: 6000M
heap-size: 600M
script: echo "Generated AVD snapshot for caching."

- name: Run tests
run: ./gradlew allDevicesCheck -Pandroid.testoptions.manageddevices.emulator.gpu=swiftshader_indirect
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
force-avd-creation: false
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
arch: x86_64
disable-animations: true
disk-size: 6000M
heap-size: 600M
script: ./gradlew :app:connectedCheck
12 changes: 0 additions & 12 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
@file:Suppress("UnstableApiUsage")

import com.android.build.api.dsl.ManagedVirtualDevice
import java.io.FileInputStream
import java.util.Properties

Expand Down Expand Up @@ -62,17 +61,6 @@ android {
execution = "ANDROIDX_TEST_ORCHESTRATOR"
}

testOptions {
managedDevices {
devices {
maybeCreate<ManagedVirtualDevice>("pixel2api30").apply {
device = "Pixel 2"
apiLevel = 30
systemImageSource = "aosp-atd"
}
}
}
}
buildFeatures {
buildConfig = true
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import gq.kirmanak.mealient.screen.AuthenticationScreen
import gq.kirmanak.mealient.screen.BaseUrlScreen
import gq.kirmanak.mealient.screen.DisclaimerScreen
import gq.kirmanak.mealient.screen.RecipesListScreen
import gq.kirmanak.mealient.ui.disclaimer.DisclaimerViewModel
import io.github.kakaocup.compose.node.element.ComposeScreen.Companion.onComposeScreen
import io.github.kakaocup.kakao.common.utilities.getResourceString
import org.junit.Before
Expand Down Expand Up @@ -59,7 +60,13 @@ class FirstSetUpTest : BaseTestCase() {
}

okayButtonText {
assertTextContains(getResourceString(R.string.fragment_disclaimer_button_okay))
flakySafely(DisclaimerViewModel.FULL_COUNT_DOWN_SEC * 1_000L) {
assertTextContains(getResourceString(R.string.fragment_disclaimer_button_okay))
}
}

okayButton {
assertIsEnabled()
}

disclaimerText {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ internal class DisclaimerViewModel @Inject constructor(
}

companion object {
private const val FULL_COUNT_DOWN_SEC = 5
const val FULL_COUNT_DOWN_SEC = 5
private const val COUNT_DOWN_TICK_PERIOD_SEC = 1
}
}
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ kspPlugin = "1.9.22-1.0.17"
# https://developer.android.com/jetpack/androidx/releases/sharetarget
shareTarget = "1.2.0"
# https://github.com/KasperskyLab/Kaspresso/releases
kaspresso = "1.5.5"
kaspresso = "1.5.4"
# https://developer.android.com/jetpack/androidx/releases/test
androidXTestCore = "1.5.0"
androidXTestRules = "1.5.0"
Expand Down