diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/BaseActivityTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/BaseActivityTest.kt index b5562aa92..f277989fa 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/BaseActivityTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/BaseActivityTest.kt @@ -19,11 +19,10 @@ package org.kiwix.kiwixmobile import android.Manifest.permission -import android.app.Activity import android.content.Context +import androidx.test.ext.junit.rules.ActivityScenarioRule import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation -import androidx.test.rule.ActivityTestRule import androidx.test.rule.GrantPermissionRule import org.junit.Rule import org.junit.runner.RunWith @@ -34,7 +33,7 @@ import org.kiwix.kiwixmobile.main.KiwixMainActivity @RunWith(AndroidJUnit4::class) abstract class BaseActivityTest { @get:Rule - open var activityRule = ActivityTestRule(KiwixMainActivity::class.java) + open var activityScenarioRule = ActivityScenarioRule(KiwixMainActivity::class.java) @get:Rule var readPermissionRule: GrantPermissionRule = @@ -48,16 +47,6 @@ abstract class BaseActivityTest { getInstrumentation().targetContext.applicationContext } - protected inline fun activityTestRule( - noinline beforeActivityAction: (() -> Unit)? = null - ) = - object : ActivityTestRule(T::class.java) { - override fun beforeActivityLaunched() { - super.beforeActivityLaunched() - beforeActivityAction?.invoke() - } - } - protected fun testComponent(): TestComponent = DaggerTestComponent.builder() .context(context) .build() diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/help/HelpFragmentTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/help/HelpFragmentTest.kt index 14e3aa553..83e0814f9 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/help/HelpFragmentTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/help/HelpFragmentTest.kt @@ -18,7 +18,6 @@ package org.kiwix.kiwixmobile.help import android.os.Build -import androidx.test.internal.runner.junit4.statement.UiThreadStatement.runOnUiThread import androidx.test.platform.app.InstrumentationRegistry import androidx.test.uiautomator.UiDevice import leakcanary.LeakAssertions @@ -43,7 +42,9 @@ class HelpFragmentTest : BaseActivityTest() { @Test fun verifyHelpActivity() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) { - runOnUiThread { activityRule.activity.navigate(R.id.helpFragment) } + activityScenarioRule.scenario.onActivity { + it.navigate(R.id.helpFragment) + } help { clickOnWhatDoesKiwixDo() assertWhatDoesKiwixDoIsExpanded() diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/initial/download/InitialDownloadTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/initial/download/InitialDownloadTest.kt index 2a4967562..21f05ccea 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/initial/download/InitialDownloadTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/initial/download/InitialDownloadTest.kt @@ -25,7 +25,6 @@ import androidx.test.core.app.ActivityScenario import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.LargeTest import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.rule.ActivityTestRule import androidx.test.uiautomator.UiDevice import com.adevinta.android.barista.interaction.BaristaSleepInteractions import leakcanary.LeakAssertions @@ -43,15 +42,6 @@ import org.kiwix.kiwixmobile.testutils.TestUtils @LargeTest @RunWith(AndroidJUnit4::class) class InitialDownloadTest : BaseActivityTest() { - override var activityRule: ActivityTestRule = activityTestRule { - PreferenceManager.getDefaultSharedPreferences(context).edit { - putBoolean(SharedPreferenceUtil.PREF_SHOW_INTRO, false) - putBoolean(SharedPreferenceUtil.PREF_WIFI_ONLY, false) - putBoolean(SharedPreferenceUtil.PREF_SHOW_STORAGE_OPTION, true) - putBoolean(SharedPreferenceUtil.IS_PLAY_STORE_BUILD, true) - putBoolean(SharedPreferenceUtil.PREF_IS_TEST, true) - } - } @Rule @JvmField @@ -60,6 +50,13 @@ class InitialDownloadTest : BaseActivityTest() { @Before override fun waitForIdle() { UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()).waitForIdle() + PreferenceManager.getDefaultSharedPreferences(context).edit { + putBoolean(SharedPreferenceUtil.PREF_SHOW_INTRO, false) + putBoolean(SharedPreferenceUtil.PREF_WIFI_ONLY, false) + putBoolean(SharedPreferenceUtil.PREF_SHOW_STORAGE_OPTION, true) + putBoolean(SharedPreferenceUtil.IS_PLAY_STORE_BUILD, true) + putBoolean(SharedPreferenceUtil.PREF_IS_TEST, true) + } } @Test diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/intro/IntroFragmentTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/intro/IntroFragmentTest.kt index 35787fed7..602309ddf 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/intro/IntroFragmentTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/intro/IntroFragmentTest.kt @@ -20,7 +20,6 @@ package org.kiwix.kiwixmobile.intro import android.os.Build import androidx.core.content.edit import androidx.preference.PreferenceManager -import androidx.test.internal.runner.junit4.statement.UiThreadStatement.runOnUiThread import androidx.test.platform.app.InstrumentationRegistry import androidx.test.uiautomator.UiDevice import leakcanary.LeakAssertions @@ -41,7 +40,9 @@ class IntroFragmentTest : BaseActivityTest() { @Test fun viewIsSwipeableAndNavigatesToMain() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) { - runOnUiThread { activityRule.activity.navigate(R.id.introFragment) } + activityScenarioRule.scenario.onActivity { + it.navigate(R.id.introFragment) + } intro(IntroRobot::swipeLeft) clickGetStarted {} LeakAssertions.assertNoLeaks() } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/mimetype/MimeTypeTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/mimetype/MimeTypeTest.kt index 35aeeb2af..e822cf4ea 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/mimetype/MimeTypeTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/mimetype/MimeTypeTest.kt @@ -21,7 +21,6 @@ package org.kiwix.kiwixmobile.mimetype import androidx.core.content.edit import androidx.preference.PreferenceManager import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.rule.ActivityTestRule import androidx.test.uiautomator.UiDevice import org.junit.Assert import org.junit.Before @@ -31,25 +30,21 @@ import org.kiwix.kiwixmobile.BaseActivityTest import org.kiwix.kiwixmobile.core.NightModeConfig import org.kiwix.kiwixmobile.core.reader.ZimFileReader import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil -import org.kiwix.kiwixmobile.main.KiwixMainActivity import java.io.File import java.io.FileOutputStream import java.io.OutputStream class MimeTypeTest : BaseActivityTest() { - override var activityRule: ActivityTestRule = activityTestRule { + @Before + override fun waitForIdle() { + UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()).waitForIdle() PreferenceManager.getDefaultSharedPreferences(context).edit { putBoolean(SharedPreferenceUtil.PREF_SHOW_INTRO, false) putBoolean(SharedPreferenceUtil.PREF_WIFI_ONLY, false) } } - @Before - override fun waitForIdle() { - UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()).waitForIdle() - } - @Test fun testMimeType() { val loadFileStream = MimeTypeTest::class.java.classLoader.getResourceAsStream("testzim.zim") diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/note/NoteFragmentTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/note/NoteFragmentTest.kt index cd2cc4eaa..072e0e872 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/note/NoteFragmentTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/note/NoteFragmentTest.kt @@ -19,7 +19,6 @@ package org.kiwix.kiwixmobile.note import android.os.Build -import androidx.test.internal.runner.junit4.statement.UiThreadStatement import androidx.test.platform.app.InstrumentationRegistry import androidx.test.uiautomator.UiDevice import leakcanary.LeakAssertions @@ -44,7 +43,9 @@ class NoteFragmentTest : BaseActivityTest() { @Test fun verifyNoteFragment() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) { - UiThreadStatement.runOnUiThread { activityRule.activity.navigate(R.id.notesFragment) } + activityScenarioRule.scenario.onActivity { + it.navigate(R.id.notesFragment) + } note { assertToolbarExist() assertNoteRecyclerViewExist() diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/search/SearchFragmentTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/search/SearchFragmentTest.kt index 350c56a70..425b49c69 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/search/SearchFragmentTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/search/SearchFragmentTest.kt @@ -21,9 +21,9 @@ import android.os.Build import androidx.core.content.edit import androidx.core.net.toUri import androidx.preference.PreferenceManager +import androidx.test.core.app.ActivityScenario import androidx.test.internal.runner.junit4.statement.UiThreadStatement import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.rule.ActivityTestRule import androidx.test.uiautomator.UiDevice import leakcanary.LeakAssertions import org.junit.After @@ -46,7 +46,11 @@ class SearchFragmentTest : BaseActivityTest() { @JvmField var retryRule = RetryRule() - override var activityRule: ActivityTestRule = activityTestRule { + private lateinit var kiwixMainActivity: KiwixMainActivity + + @Before + override fun waitForIdle() { + UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()).waitForIdle() PreferenceManager.getDefaultSharedPreferences(context).edit { putBoolean(SharedPreferenceUtil.PREF_SHOW_INTRO, false) putBoolean(SharedPreferenceUtil.PREF_WIFI_ONLY, false) @@ -54,15 +58,13 @@ class SearchFragmentTest : BaseActivityTest() { } } - @Before - override fun waitForIdle() { - UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()).waitForIdle() - } - @Test fun searchFragmentSimple() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) { - UiThreadStatement.runOnUiThread { activityRule.activity.navigate(R.id.libraryFragment) } + ActivityScenario.launch(KiwixMainActivity::class.java).onActivity { + kiwixMainActivity = it + kiwixMainActivity.navigate(R.id.libraryFragment) + } val loadFileStream = SearchFragmentTest::class.java.classLoader.getResourceAsStream("testzim.zim") val zimFile = File(context.cacheDir, "testzim.zim") @@ -79,7 +81,7 @@ class SearchFragmentTest : BaseActivityTest() { } } UiThreadStatement.runOnUiThread { - activityRule.activity.navigate( + kiwixMainActivity.navigate( actionNavigationLibraryToNavigationReader() .apply { zimFileUri = zimFile.toUri().toString() } ) @@ -87,7 +89,7 @@ class SearchFragmentTest : BaseActivityTest() { search { checkZimFileSearchSuccessful(R.id.readerFragment) } UiThreadStatement.runOnUiThread { if (zimFile.canRead()) { - activityRule.activity.openSearch(searchString = "Android") + kiwixMainActivity.openSearch(searchString = "Android") } else { throw RuntimeException( "File $zimFile is not readable." + diff --git a/buildSrc/src/main/kotlin/Libs.kt b/buildSrc/src/main/kotlin/Libs.kt index a897b2aaf..ba2157071 100644 --- a/buildSrc/src/main/kotlin/Libs.kt +++ b/buildSrc/src/main/kotlin/Libs.kt @@ -197,7 +197,7 @@ object Libs { /** * https://developer.android.com/testing */ - const val androidx_test_rules: String = "androidx.test:rules:" + Versions.androidx_test + const val androidx_test_rules: String = "androidx.test:rules:" + Versions.androidx_test_core /** * https://developer.android.com/testing diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 488822568..bf14e8ded 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -16,7 +16,7 @@ object Versions { const val org_jetbrains_kotlinx_kotlinx_coroutines: String = "1.4.1" - const val androidx_test_espresso: String = "3.4.0" + const val androidx_test_espresso: String = "3.5.0" const val androidx_test_espresso_contrib: String = "3.3.0" @@ -36,9 +36,9 @@ object Versions { const val com_jakewharton: String = "10.2.3" - const val androidx_test: String = "1.4.0" + const val androidx_test: String = "1.5.1" - const val androidx_test_core: String = "1.5.0-alpha02" + const val androidx_test_core: String = "1.5.0" const val androidx_test_orchestrator: String = "1.4.1" @@ -66,7 +66,7 @@ object Versions { const val preference_ktx: String = "1.1.1" - const val junit_jupiter: String = "5.7.0" + const val junit_jupiter: String = "5.9.1" const val assertj_core: String = "3.18.1" @@ -112,7 +112,7 @@ object Versions { const val aapt2: String = "4.1.1-6503028" - const val junit: String = "1.1.2" + const val junit: String = "1.1.4" /** * Current version: "6.2"