Fixed: SearchFragmentTestForCustomApp was failing.

* Fixed: The appearance of TTS control buttons.
This commit is contained in:
MohitMaliFtechiz 2025-06-26 18:09:26 +05:30
parent a6eb00f6b9
commit eca3c355b2
6 changed files with 17 additions and 105 deletions

View File

@ -26,7 +26,6 @@ import androidx.coordinatorlayout.widget.CoordinatorLayout
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.bottomappbar.BottomAppBar
import com.google.android.material.bottomnavigation.BottomNavigationView
import org.kiwix.kiwixmobile.R
/**
* Inspired by James @ https://stackoverflow.com/users/165783/james
@ -62,8 +61,7 @@ class ScrollingViewWithBottomNavigationBehavior(context: Context, attrs: Attribu
navigationBar: BottomNavigationView,
coordinatorLayout: CoordinatorLayout
): Boolean {
val readerBottomAppBar: BottomAppBar? =
fragmentContainer.findViewById(org.kiwix.kiwixmobile.core.R.id.bottom_toolbar)
val readerBottomAppBar: BottomAppBar? = null
if (readerBottomAppBar != null) {
val newBottomMargin = calculateNewBottomMargin(navigationBar, coordinatorLayout)
if (newBottomMargin != bottomMargin) {

View File

@ -72,13 +72,11 @@ import androidx.core.content.ContextCompat
import androidx.core.content.edit
import androidx.core.net.toUri
import androidx.core.view.GravityCompat
import androidx.core.view.isVisible
import androidx.drawerlayout.widget.DrawerLayout
import androidx.lifecycle.Observer
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.bottomappbar.BottomAppBar
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.android.material.navigation.NavigationView
import kotlinx.coroutines.CoroutineDispatcher
@ -1972,9 +1970,7 @@ abstract class CoreReaderFragment :
var bottomMargin = requireActivity().resources.getDimensionPixelSize(
R.dimen.donation_popup_bottom_margin
)
val bottomAppBar = requireActivity()
.findViewById<BottomAppBar>(R.id.bottom_toolbar)
if (bottomAppBar.isVisible) {
if (readerScreenState.value.shouldShowBottomAppBar) {
// if bottomAppBar is visible then add the height of the bottomAppBar.
bottomMargin +=
requireActivity().resources.getDimensionPixelSize(

View File

@ -184,7 +184,7 @@ object ComposeDimens {
// Reader screen dimens
val READER_BOTTOM_APP_BAR_LAYOUT_HEIGHT = 40.dp
val READER_BOTTOM_APP_BAR_BUTTON_ICON_SIZE = 30.dp
const val TTS_BUTTONS_CONTROL_ALPHA = 0.6f
const val TTS_BUTTONS_CONTROL_ALPHA = 0.9f
val CLOSE_ALL_TAB_BUTTON_BOTTOM_PADDING = 24.dp
val TAB_SWITCHER_TEXT_SIZE = 12.sp
const val TAB_SWITCHER_ICON_CORNER_RADIUS = 10
@ -193,6 +193,4 @@ object ComposeDimens {
val BACK_TO_TOP_BUTTON_BOTTOM_MARGIN = 80.dp
const val READER_BOTTOM_APP_BAR_DISABLE_BUTTON_ALPHA = 0.38f
val SEARCH_PLACEHOLDER_TEXT_SIZE = 12.sp
val COMPOSE_TOOLBAR_DEFAULT_HEIGHT = 64.dp
val COMPOSE_BOTTOM_APP_BAR_DEFAULT_HEIGHT = 80.dp
}

View File

@ -1,80 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.bottomappbar.BottomAppBar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/bottom_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:padding="8dp"
app:fabAlignmentMode="end"
app:fabCradleVerticalOffset="@dimen/fab_vertical_offset"
app:hideOnScroll="true"
tools:ignore="BottomAppBar">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="48dp">
<ImageView
android:id="@+id/bottom_toolbar_bookmark"
android:layout_width="0dp"
android:layout_height="match_parent"
android:padding="10dp"
android:contentDescription="@string/bookmarks"
android:src="@drawable/ic_bookmark_border_24dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/bottom_toolbar_arrow_back"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/bottom_toolbar_arrow_back"
android:layout_width="0dp"
android:layout_height="0dp"
android:padding="10dp"
android:contentDescription="@string/go_to_previous_page"
android:src="@drawable/ic_keyboard_arrow_left_24dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/bottom_toolbar_home"
app:layout_constraintStart_toEndOf="@id/bottom_toolbar_bookmark"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/bottom_toolbar_home"
android:layout_width="0dp"
android:layout_height="0dp"
android:padding="10dp"
android:contentDescription="@string/menu_home"
android:src="@drawable/action_home"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/bottom_toolbar_arrow_forward"
app:layout_constraintStart_toEndOf="@id/bottom_toolbar_arrow_back"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/bottom_toolbar_arrow_forward"
android:layout_width="0dp"
android:layout_height="0dp"
android:padding="10dp"
android:contentDescription="@string/go_to_next_page"
android:src="@drawable/ic_keyboard_arrow_right_24dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/bottom_toolbar_toc"
app:layout_constraintStart_toEndOf="@id/bottom_toolbar_home"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/bottom_toolbar_toc"
android:layout_width="0dp"
android:layout_height="0dp"
android:padding="10dp"
android:contentDescription="@string/table_of_contents"
android:src="@drawable/ic_toc_24dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/bottom_toolbar_arrow_forward"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.bottomappbar.BottomAppBar>

View File

@ -54,10 +54,8 @@ import org.kiwix.kiwixmobile.core.search.viewmodel.Action
import org.kiwix.kiwixmobile.core.utils.LanguageUtils
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
import org.kiwix.kiwixmobile.core.utils.TestingUtils.COMPOSE_TEST_RULE_ORDER
import org.kiwix.kiwixmobile.core.utils.TestingUtils.RETRY_RULE_ORDER
import org.kiwix.kiwixmobile.custom.main.CustomMainActivity
import org.kiwix.kiwixmobile.custom.main.CustomReaderFragment
import org.kiwix.kiwixmobile.custom.testutils.RetryRule
import org.kiwix.kiwixmobile.custom.testutils.TestUtils
import org.kiwix.kiwixmobile.custom.testutils.TestUtils.closeSystemDialogs
import org.kiwix.kiwixmobile.custom.testutils.TestUtils.isSystemUINotRespondingDialogVisible
@ -83,9 +81,9 @@ class SearchFragmentTestForCustomApp {
InstrumentationRegistry.getInstrumentation().targetContext.applicationContext
}
@Rule(order = RETRY_RULE_ORDER)
@JvmField
var retryRule = RetryRule()
// @Rule(order = RETRY_RULE_ORDER)
// @JvmField
// var retryRule = RetryRule()
@get:Rule(order = COMPOSE_TEST_RULE_ORDER)
val composeTestRule = createComposeRule()
@ -295,7 +293,7 @@ class SearchFragmentTestForCustomApp {
openZimFileInReader(zimFile = downloadingZimFile)
search {
// click on home button to load the main page of ZIM file.
clickOnHomeButton()
clickOnHomeButton(composeTestRule, customMainActivity)
// click on an article to load the other page.
clickOnAFoolForYouArticle()
assertAFoolForYouArticleLoaded()

View File

@ -23,16 +23,14 @@ import androidx.compose.ui.test.assert
import androidx.compose.ui.test.hasText
import androidx.compose.ui.test.junit4.ComposeContentTestRule
import androidx.compose.ui.test.onAllNodesWithTag
import androidx.compose.ui.test.onNodeWithContentDescription
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performClick
import androidx.compose.ui.test.performTextClearance
import androidx.compose.ui.test.performTextInput
import androidx.core.view.GravityCompat
import androidx.test.espresso.Espresso
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions
import androidx.test.espresso.action.ViewActions.click
import androidx.test.espresso.matcher.ViewMatchers
import androidx.test.espresso.matcher.ViewMatchers.withText
import androidx.test.espresso.web.assertion.WebViewAssertions.webMatches
import androidx.test.espresso.web.sugar.Web
@ -51,6 +49,7 @@ import org.kiwix.kiwixmobile.core.page.SEARCH_ICON_TESTING_TAG
import org.kiwix.kiwixmobile.core.search.SEARCH_FIELD_TESTING_TAG
import org.kiwix.kiwixmobile.core.search.SEARCH_ITEM_TESTING_TAG
import org.kiwix.kiwixmobile.custom.R.id
import org.kiwix.kiwixmobile.custom.main.CustomMainActivity
import org.kiwix.kiwixmobile.custom.testutils.TestUtils
import org.kiwix.kiwixmobile.custom.testutils.TestUtils.TEST_PAUSE_MS
import org.kiwix.kiwixmobile.custom.testutils.TestUtils.testFlakyView
@ -147,11 +146,14 @@ class SearchRobot {
})
}
fun clickOnHomeButton() {
testFlakyView({
Espresso.onView(ViewMatchers.withId(R.id.bottom_toolbar_home))
.perform(ViewActions.click())
})
fun clickOnHomeButton(
composeTestRule: ComposeContentTestRule,
customMainActivity: CustomMainActivity
) {
composeTestRule.apply {
onNodeWithContentDescription(customMainActivity.getString(R.string.menu_home))
.performClick()
}
}
fun clickOnAFoolForYouArticle() {