Merge pull request #3659 from kiwix/Fix#3627

Fixed: Nowdays CI frequently failing on API level 24, and 33.
This commit is contained in:
Kelson 2024-01-14 16:13:41 +01:00 committed by GitHub
commit 3f19f55b99
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 33 additions and 15 deletions

View File

@ -53,14 +53,16 @@ class ZimHostFragmentTest {
arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.NEARBY_WIFI_DEVICES
Manifest.permission.NEARBY_WIFI_DEVICES,
Manifest.permission.ACCESS_NETWORK_STATE
)
} else {
arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_NETWORK_STATE
)
}

View File

@ -24,6 +24,7 @@ import androidx.test.espresso.action.ViewActions.click
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.ViewMatchers
import androidx.test.espresso.matcher.ViewMatchers.assertThat
import androidx.test.espresso.matcher.ViewMatchers.withText
import applyWithViewHierarchyPrinting
import com.adevinta.android.barista.interaction.BaristaSleepInteractions
import com.adevinta.android.barista.interaction.BaristaSwipeRefreshInteractions.refresh
@ -64,14 +65,21 @@ class ZimHostRobot : BaseRobot() {
}
fun clickOnTestZim() {
pauseForBetterTestPerformance()
clickOn(Text("Test_Zim"))
}
fun startServer() {
// stop the server if it is already running.
stopServerIfAlreadyStarted()
clickOn(ViewId(R.id.startServerButton))
assetWifiDialogDisplayed()
onView(withText("PROCEED")).perform(click())
}
private fun assetWifiDialogDisplayed() {
pauseForBetterTestPerformance()
isVisible(TextId(R.string.wifi_dialog_title))
clickOn(TextId(R.string.hotspot_dialog_neutral_button))
isVisible(Text("WiFi connection detected"))
}
fun assertServerStarted() {
@ -110,7 +118,6 @@ class ZimHostRobot : BaseRobot() {
}
private fun selectZimFile(position: Int) {
pauseForBetterTestPerformance()
try {
onView(
RecyclerViewMatcher(R.id.recyclerViewZimHost).atPositionOnView(
@ -119,7 +126,6 @@ class ZimHostRobot : BaseRobot() {
)
).check(matches(ViewMatchers.isChecked()))
} catch (assertionError: AssertionFailedError) {
pauseForBetterTestPerformance()
onView(
RecyclerViewMatcher(R.id.recyclerViewZimHost).atPositionOnView(
position,
@ -148,6 +154,6 @@ class ZimHostRobot : BaseRobot() {
}
private fun pauseForBetterTestPerformance() {
BaristaSleepInteractions.sleep(TestUtils.TEST_PAUSE_MS_FOR_DOWNLOAD_TEST.toLong())
BaristaSleepInteractions.sleep(TestUtils.TEST_PAUSE_MS.toLong())
}
}

View File

@ -1,7 +1,10 @@
#!/usr/bin/env bash
# Enable Wi-Fi on the emulator
adb shell svc wifi enable
adb logcat -c
adb logcat ./*:E -v color &
# shellcheck disable=SC2035
adb logcat *:E -v color &
retry=0
while [ $retry -le 3 ]
do
@ -11,8 +14,11 @@ do
else
adb kill-server
adb start-server
# Enable Wi-Fi on the emulator
adb shell svc wifi enable
adb logcat -c
adb logcat ./*:E -v color &
# shellcheck disable=SC2035
adb logcat *:E -v color &
./gradlew clean
retry=$(( retry + 1 ))
if [ $retry -eq 3 ]; then

View File

@ -22,20 +22,23 @@ import androidx.appcompat.app.AppCompatActivity
import io.mockk.Called
import io.mockk.mockk
import io.mockk.verify
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceUntilIdle
import kotlinx.coroutines.test.runTest
import org.junit.jupiter.api.Test
import org.kiwix.kiwixmobile.core.dao.NewRecentSearchDao
import org.kiwix.kiwixmobile.core.reader.ZimFileReader
import org.kiwix.kiwixmobile.core.search.adapter.SearchListItem.RecentSearchListItem
@OptIn(ExperimentalCoroutinesApi::class)
internal class SaveSearchToRecentsTest {
private val newRecentSearchDao: NewRecentSearchDao = mockk()
private val searchListItem = RecentSearchListItem("", ZimFileReader.CONTENT_PREFIX)
private val activity: AppCompatActivity = mockk()
private val viewModelScope = CoroutineScope(Dispatchers.IO)
private val testDispatcher = TestScope()
@Test
fun `invoke with null Id does nothing`() {
@ -43,7 +46,7 @@ internal class SaveSearchToRecentsTest {
newRecentSearchDao,
searchListItem,
null,
viewModelScope
testDispatcher
).invokeWith(
activity
)
@ -51,14 +54,15 @@ internal class SaveSearchToRecentsTest {
}
@Test
fun `invoke with non null Id saves search`() {
fun `invoke with non null Id saves search`() = testDispatcher.runTest {
val id = "id"
SaveSearchToRecents(
newRecentSearchDao,
searchListItem,
id,
viewModelScope
testDispatcher
).invokeWith(activity)
testDispatcher.advanceUntilIdle()
verify { newRecentSearchDao.saveSearch(searchListItem.value, id, ZimFileReader.CONTENT_PREFIX) }
}
}