Skip to content

Commit

Permalink
Fix oppia#3905: A11y flow fix for ProfileProgressHeader (oppia#3931)
Browse files Browse the repository at this point in the history
* A11y flow fix for ProfileProgressHeader

* Added test cases

* Nit fixes
  • Loading branch information
rt4914 committed Oct 21, 2021
1 parent 8fb0a85 commit 22f9260
Show file tree
Hide file tree
Showing 4 changed files with 114 additions and 6 deletions.
8 changes: 6 additions & 2 deletions app/src/main/res/layout-land/profile_progress_header.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,11 @@
</data>

<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/profile_progress_header_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:importantForAccessibility="no"
android:paddingStart="16dp"
android:paddingTop="32dp"
android:paddingEnd="16dp">
Expand All @@ -39,9 +41,9 @@
android:onClick="@{() -> viewModel.clickOnProfilePicture()}"
android:paddingStart="12dp"
android:paddingTop="12dp"
app:srcCompat="@drawable/rounded_white_background_with_shadow"
app:layout_constraintBottom_toBottomOf="@+id/profile_edit_image"
app:layout_constraintEnd_toEndOf="@+id/profile_edit_image" />
app:layout_constraintEnd_toEndOf="@+id/profile_edit_image"
app:srcCompat="@drawable/rounded_white_background_with_shadow" />

<TextView
android:id="@+id/profile_name_text_view"
Expand All @@ -66,6 +68,7 @@
android:layout_weight="1"
android:background="@drawable/grey_card_rounded_border"
android:clickable="@{viewModel.ongoingTopicCount > 0}"
android:importantForAccessibility="yes"
android:onClick="@{() -> viewModel.clickOnOngoingTopicCount()}"
app:cardElevation="4dp"
app:contentPadding="8dp"
Expand Down Expand Up @@ -112,6 +115,7 @@
android:layout_weight="1"
android:background="@drawable/grey_card_rounded_border"
android:clickable="@{viewModel.completedStoryCount > 0}"
android:importantForAccessibility="yes"
android:onClick="@{() -> viewModel.clickOnCompletedStoryCount()}"
app:cardElevation="4dp"
app:contentPadding="8dp"
Expand Down
8 changes: 6 additions & 2 deletions app/src/main/res/layout-sw600dp/profile_progress_header.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,11 @@
</data>

<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/profile_progress_header_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:importantForAccessibility="no"
android:paddingTop="92dp">

<com.jackandphantom.circularimageview.CircleImage
Expand All @@ -38,9 +40,9 @@
android:onClick="@{() -> viewModel.clickOnProfilePicture()}"
android:paddingStart="12dp"
android:paddingTop="12dp"
app:srcCompat="@drawable/rounded_white_background_with_shadow"
app:layout_constraintBottom_toBottomOf="@+id/profile_edit_image"
app:layout_constraintEnd_toEndOf="@+id/profile_edit_image" />
app:layout_constraintEnd_toEndOf="@+id/profile_edit_image"
app:srcCompat="@drawable/rounded_white_background_with_shadow" />

<TextView
android:id="@+id/profile_name_text_view"
Expand All @@ -67,6 +69,7 @@
android:layout_weight="1"
android:background="@drawable/grey_card_rounded_border"
android:clickable="@{viewModel.ongoingTopicCount > 0}"
android:importantForAccessibility="yes"
android:onClick="@{() -> viewModel.clickOnOngoingTopicCount()}"
app:cardElevation="4dp"
app:contentPadding="8dp"
Expand Down Expand Up @@ -112,6 +115,7 @@
android:layout_weight="1"
android:background="@drawable/grey_card_rounded_border"
android:clickable="@{viewModel.completedStoryCount > 0}"
android:importantForAccessibility="yes"
android:onClick="@{() -> viewModel.clickOnCompletedStoryCount()}"
app:cardElevation="4dp"
app:contentPadding="8dp"
Expand Down
8 changes: 6 additions & 2 deletions app/src/main/res/layout/profile_progress_header.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,11 @@
</data>

<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/profile_progress_header_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:importantForAccessibility="no"
android:paddingTop="32dp">

<com.jackandphantom.circularimageview.CircleImage
Expand All @@ -40,9 +42,9 @@
android:onClick="@{() -> viewModel.clickOnProfilePicture()}"
android:paddingStart="8dp"
android:paddingTop="8dp"
app:srcCompat="@drawable/rounded_white_background_with_shadow"
app:layout_constraintBottom_toBottomOf="@+id/profile_edit_image"
app:layout_constraintEnd_toEndOf="@+id/profile_edit_image"/>
app:layout_constraintEnd_toEndOf="@+id/profile_edit_image"
app:srcCompat="@drawable/rounded_white_background_with_shadow" />

<TextView
android:id="@+id/profile_name_text_view"
Expand All @@ -68,6 +70,7 @@
android:layout_weight="1"
android:background="@drawable/grey_card_rounded_border"
android:clickable="@{viewModel.ongoingTopicCount > 0}"
android:importantForAccessibility="yes"
android:onClick="@{() -> viewModel.clickOnOngoingTopicCount()}"
app:cardElevation="2dp"
app:contentPadding="8dp"
Expand Down Expand Up @@ -113,6 +116,7 @@
android:layout_weight="1"
android:background="@drawable/grey_card_rounded_border"
android:clickable="@{viewModel.completedStoryCount > 0}"
android:importantForAccessibility="yes"
android:onClick="@{() -> viewModel.clickOnCompletedStoryCount()}"
app:cardElevation="2dp"
app:contentPadding="8dp"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ import android.content.Intent
import android.content.res.Resources
import android.net.Uri
import android.provider.MediaStore
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.recyclerview.widget.RecyclerView
import androidx.test.core.app.ActivityScenario.launch
import androidx.test.core.app.ApplicationProvider
Expand All @@ -31,6 +33,8 @@ import androidx.test.espresso.matcher.ViewMatchers.isRoot
import androidx.test.espresso.matcher.ViewMatchers.withId
import androidx.test.espresso.matcher.ViewMatchers.withText
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.android.material.card.MaterialCardView
import com.google.common.truth.Truth.assertThat
import dagger.Component
import dagger.Module
import dagger.Provides
Expand Down Expand Up @@ -203,6 +207,98 @@ class ProfileProgressFragmentTest {
}
}

@Test
fun testProfileProgressFragment_checkAccessibilityFlowIsCorrect() {
launch<ProfileProgressActivity>(
createProfileProgressActivityIntent(internalProfileId)
).use { scenario ->
testCoroutineDispatchers.runCurrent()
scenario.onActivity { activity ->
val recyclerView = activity.findViewById<RecyclerView>(R.id.profile_progress_list)
val headerView = recyclerView.getChildAt(0)
val rootView =
headerView.findViewById<ConstraintLayout>(R.id.profile_progress_header_container)
assertThat(rootView.importantForAccessibility).isEqualTo(
View.IMPORTANT_FOR_ACCESSIBILITY_NO
)

val ongoingTopicsContainer =
headerView.findViewById<MaterialCardView>(R.id.ongoing_topics_container)
assertThat(ongoingTopicsContainer.importantForAccessibility).isEqualTo(
View.IMPORTANT_FOR_ACCESSIBILITY_YES
)

val completedStoriesContainer =
headerView.findViewById<MaterialCardView>(R.id.completed_stories_container)
assertThat(completedStoriesContainer.importantForAccessibility).isEqualTo(
View.IMPORTANT_FOR_ACCESSIBILITY_YES
)
}
}
}

@Test
fun testProfileProgressFragment_configChange_checkAccessibilityFlowIsCorrect() {
launch<ProfileProgressActivity>(
createProfileProgressActivityIntent(internalProfileId)
).use { scenario ->
testCoroutineDispatchers.runCurrent()
onView(isRoot()).perform(orientationLandscape())
scenario.onActivity { activity ->
val recyclerView = activity.findViewById<RecyclerView>(R.id.profile_progress_list)
val headerView = recyclerView.getChildAt(0)
val rootView =
headerView.findViewById<ConstraintLayout>(R.id.profile_progress_header_container)
assertThat(rootView.importantForAccessibility).isEqualTo(
View.IMPORTANT_FOR_ACCESSIBILITY_NO
)

val ongoingTopicsContainer =
headerView.findViewById<MaterialCardView>(R.id.ongoing_topics_container)
assertThat(ongoingTopicsContainer.importantForAccessibility).isEqualTo(
View.IMPORTANT_FOR_ACCESSIBILITY_YES
)

val completedStoriesContainer =
headerView.findViewById<MaterialCardView>(R.id.completed_stories_container)
assertThat(completedStoriesContainer.importantForAccessibility).isEqualTo(
View.IMPORTANT_FOR_ACCESSIBILITY_YES
)
}
}
}

@Config(qualifiers = "+sw600dp")
@Test
fun testProfileProgressFragment_tablet_checkAccessibilityFlowIsCorrect() {
launch<ProfileProgressActivity>(
createProfileProgressActivityIntent(internalProfileId)
).use { scenario ->
testCoroutineDispatchers.runCurrent()
scenario.onActivity { activity ->
val recyclerView = activity.findViewById<RecyclerView>(R.id.profile_progress_list)
val headerView = recyclerView.getChildAt(0)
val rootView =
headerView.findViewById<ConstraintLayout>(R.id.profile_progress_header_container)
assertThat(rootView.importantForAccessibility).isEqualTo(
View.IMPORTANT_FOR_ACCESSIBILITY_NO
)

val ongoingTopicsContainer =
headerView.findViewById<MaterialCardView>(R.id.ongoing_topics_container)
assertThat(ongoingTopicsContainer.importantForAccessibility).isEqualTo(
View.IMPORTANT_FOR_ACCESSIBILITY_YES
)

val completedStoriesContainer =
headerView.findViewById<MaterialCardView>(R.id.completed_stories_container)
assertThat(completedStoriesContainer.importantForAccessibility).isEqualTo(
View.IMPORTANT_FOR_ACCESSIBILITY_YES
)
}
}
}

@Test
fun testProfileProgressFragment_profilePictureEditDialogIsDisplayed() {
launch<ProfileProgressActivity>(createProfileProgressActivityIntent(internalProfileId)).use {
Expand Down

0 comments on commit 22f9260

Please sign in to comment.