You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
248 lines
8.0 KiB
Kotlin
248 lines
8.0 KiB
Kotlin
4 years ago
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||
|
|
||
|
@file:Suppress("TooManyFunctions")
|
||
|
|
||
|
package org.mozilla.fenix.ui.robots
|
||
|
|
||
|
import android.content.Context
|
||
|
import androidx.test.espresso.Espresso.onView
|
||
|
import androidx.test.espresso.ViewInteraction
|
||
|
import androidx.test.espresso.assertion.ViewAssertions.matches
|
||
|
import androidx.test.espresso.matcher.ViewMatchers
|
||
|
import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility
|
||
|
import androidx.test.espresso.matcher.ViewMatchers.withId
|
||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||
|
import org.junit.Assert.assertEquals
|
||
|
import org.mozilla.fenix.R
|
||
|
import org.mozilla.fenix.helpers.click
|
||
|
|
||
|
/**
|
||
|
* Implementation of Robot Pattern for Reader View UI.
|
||
|
*/
|
||
|
class ReaderViewRobot {
|
||
|
|
||
|
fun verifyAppearanceFontGroup(visible: Boolean = false): ViewInteraction =
|
||
|
assertAppearanceFontGroup(visible)
|
||
|
|
||
|
fun verifyAppearanceFontSansSerif(visible: Boolean = false): ViewInteraction =
|
||
|
assertAppearanceFontSansSerif(visible)
|
||
|
|
||
|
fun verifyAppearanceFontSerif(visible: Boolean = false): ViewInteraction =
|
||
|
assertAppearanceFontSerif(visible)
|
||
|
|
||
|
fun verifyAppearanceFontDecrease(visible: Boolean = false): ViewInteraction =
|
||
|
assertAppearanceFontDecrease(visible)
|
||
|
|
||
|
fun verifyAppearanceFontIncrease(visible: Boolean = false): ViewInteraction =
|
||
|
assertAppearanceFontIncrease(visible)
|
||
|
|
||
|
fun verifyAppearanceColorGroup(visible: Boolean = false): ViewInteraction =
|
||
|
assertAppearanceColorGroup(visible)
|
||
|
|
||
|
fun verifyAppearanceColorSepia(visible: Boolean = false): ViewInteraction =
|
||
|
assertAppearanceColorSepia(visible)
|
||
|
|
||
|
fun verifyAppearanceColorDark(visible: Boolean = false): ViewInteraction =
|
||
|
assertAppearanceColorDark(visible)
|
||
|
|
||
|
fun verifyAppearanceColorLight(visible: Boolean = false): ViewInteraction =
|
||
|
assertAppearanceColorLight(visible)
|
||
|
|
||
|
fun verifyAppearanceFontIsActive(fontType: String) {
|
||
|
val fontTypeKey: String = "mozac-readerview-fonttype"
|
||
|
|
||
|
val prefs = InstrumentationRegistry.getInstrumentation()
|
||
|
.targetContext.getSharedPreferences(
|
||
|
"mozac_feature_reader_view",
|
||
|
Context.MODE_PRIVATE
|
||
|
)
|
||
|
|
||
|
assertEquals(fontType, prefs.getString(fontTypeKey, ""))
|
||
|
}
|
||
|
|
||
|
fun verifyAppearanceFontSize(expectedFontSize: Int) {
|
||
|
val fontSizeKey: String = "mozac-readerview-fontsize"
|
||
|
|
||
|
val prefs = InstrumentationRegistry.getInstrumentation()
|
||
|
.targetContext.getSharedPreferences(
|
||
|
"mozac_feature_reader_view",
|
||
|
Context.MODE_PRIVATE
|
||
|
)
|
||
|
|
||
|
val fontSizeKeyValue = prefs.getInt(fontSizeKey, 3)
|
||
|
|
||
|
assertEquals(expectedFontSize, fontSizeKeyValue)
|
||
|
}
|
||
|
|
||
|
fun verifyAppearanceColorSchemeChange(expectedColorScheme: String) {
|
||
|
val colorSchemeKey: String = "mozac-readerview-colorscheme"
|
||
|
|
||
|
val prefs = InstrumentationRegistry.getInstrumentation()
|
||
|
.targetContext.getSharedPreferences(
|
||
|
"mozac_feature_reader_view",
|
||
|
Context.MODE_PRIVATE
|
||
|
)
|
||
|
|
||
|
assertEquals(expectedColorScheme, prefs.getString(colorSchemeKey, ""))
|
||
|
}
|
||
|
|
||
|
class Transition {
|
||
|
fun toggleSansSerif(interact: ReaderViewRobot.() -> Unit): Transition {
|
||
|
fun sansSerifButton() =
|
||
|
onView(
|
||
|
withId(R.id.mozac_feature_readerview_font_sans_serif)
|
||
|
)
|
||
|
|
||
|
sansSerifButton().click()
|
||
|
|
||
|
ReaderViewRobot().interact()
|
||
|
return Transition()
|
||
|
}
|
||
|
|
||
|
fun toggleSerif(interact: ReaderViewRobot.() -> Unit): Transition {
|
||
|
fun serifButton() =
|
||
|
onView(
|
||
|
withId(R.id.mozac_feature_readerview_font_serif)
|
||
|
)
|
||
|
|
||
|
serifButton().click()
|
||
|
|
||
|
ReaderViewRobot().interact()
|
||
|
return Transition()
|
||
|
}
|
||
|
|
||
|
fun toggleFontSizeDecrease(interact: ReaderViewRobot.() -> Unit): Transition {
|
||
|
fun fontSizeDecrease() =
|
||
|
onView(
|
||
|
withId(R.id.mozac_feature_readerview_font_size_decrease)
|
||
|
)
|
||
|
|
||
|
fontSizeDecrease().click()
|
||
|
|
||
|
ReaderViewRobot().interact()
|
||
|
return Transition()
|
||
|
}
|
||
|
|
||
|
fun toggleFontSizeIncrease(interact: ReaderViewRobot.() -> Unit): Transition {
|
||
|
fun fontSizeIncrease() =
|
||
|
onView(
|
||
|
withId(R.id.mozac_feature_readerview_font_size_increase)
|
||
|
)
|
||
|
|
||
|
fontSizeIncrease().click()
|
||
|
|
||
|
ReaderViewRobot().interact()
|
||
|
return Transition()
|
||
|
}
|
||
|
|
||
|
fun toggleColorSchemeChangeLight(interact: ReaderViewRobot.() -> Unit): Transition {
|
||
|
fun toggleLightColorSchemeButton() =
|
||
|
onView(
|
||
|
withId(R.id.mozac_feature_readerview_color_light)
|
||
|
)
|
||
|
|
||
|
toggleLightColorSchemeButton().click()
|
||
|
|
||
|
ReaderViewRobot().interact()
|
||
|
return Transition()
|
||
|
}
|
||
|
|
||
|
fun toggleColorSchemeChangeDark(interact: ReaderViewRobot.() -> Unit): Transition {
|
||
|
fun toggleDarkColorSchemeButton() =
|
||
|
onView(
|
||
|
withId(R.id.mozac_feature_readerview_color_dark)
|
||
|
)
|
||
|
|
||
|
toggleDarkColorSchemeButton().click()
|
||
|
|
||
|
ReaderViewRobot().interact()
|
||
|
return Transition()
|
||
|
}
|
||
|
|
||
|
fun toggleColorSchemeChangeSepia(interact: ReaderViewRobot.() -> Unit): Transition {
|
||
|
fun toggleSepiaColorSchemeButton() =
|
||
|
onView(
|
||
|
withId(R.id.mozac_feature_readerview_color_sepia)
|
||
|
)
|
||
|
|
||
|
toggleSepiaColorSchemeButton().click()
|
||
|
|
||
|
ReaderViewRobot().interact()
|
||
|
return Transition()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fun readerViewRobot(interact: ReaderViewRobot.() -> Unit): ReaderViewRobot.Transition {
|
||
|
ReaderViewRobot().interact()
|
||
|
return ReaderViewRobot.Transition()
|
||
|
}
|
||
|
|
||
|
private fun assertAppearanceFontGroup(visible: Boolean) =
|
||
|
onView(
|
||
|
withId(R.id.mozac_feature_readerview_font_group)
|
||
|
).check(
|
||
|
matches(withEffectiveVisibility(visibleOrGone(visible)))
|
||
|
)
|
||
|
|
||
|
private fun assertAppearanceFontSansSerif(visible: Boolean) =
|
||
|
onView(
|
||
|
withId(R.id.mozac_feature_readerview_font_sans_serif)
|
||
|
).check(
|
||
|
matches(withEffectiveVisibility(visibleOrGone(visible)))
|
||
|
)
|
||
|
|
||
|
private fun assertAppearanceFontSerif(visible: Boolean) =
|
||
|
onView(
|
||
|
withId(R.id.mozac_feature_readerview_font_serif)
|
||
|
).check(
|
||
|
matches(withEffectiveVisibility(visibleOrGone(visible)))
|
||
|
)
|
||
|
|
||
|
private fun assertAppearanceFontDecrease(visible: Boolean) =
|
||
|
onView(
|
||
|
withId(R.id.mozac_feature_readerview_font_size_decrease)
|
||
|
).check(
|
||
|
matches(withEffectiveVisibility(visibleOrGone(visible)))
|
||
|
)
|
||
|
|
||
|
private fun assertAppearanceFontIncrease(visible: Boolean) =
|
||
|
onView(
|
||
|
withId(R.id.mozac_feature_readerview_font_size_increase)
|
||
|
).check(
|
||
|
matches(withEffectiveVisibility(visibleOrGone(visible)))
|
||
|
)
|
||
|
|
||
|
private fun assertAppearanceColorDark(visible: Boolean) =
|
||
|
onView(
|
||
|
withId(R.id.mozac_feature_readerview_color_dark)
|
||
|
).check(
|
||
|
matches(withEffectiveVisibility(visibleOrGone(visible)))
|
||
|
)
|
||
|
|
||
|
private fun assertAppearanceColorLight(visible: Boolean) =
|
||
|
onView(
|
||
|
withId(R.id.mozac_feature_readerview_color_light)
|
||
|
).check(
|
||
|
matches(withEffectiveVisibility(visibleOrGone(visible)))
|
||
|
)
|
||
|
|
||
|
private fun assertAppearanceColorSepia(visible: Boolean) =
|
||
|
onView(
|
||
|
withId(R.id.mozac_feature_readerview_color_sepia)
|
||
|
).check(
|
||
|
matches(withEffectiveVisibility(visibleOrGone(visible)))
|
||
|
)
|
||
|
|
||
|
private fun assertAppearanceColorGroup(visible: Boolean) =
|
||
|
onView(
|
||
|
withId(R.id.mozac_feature_readerview_color_scheme_group)
|
||
|
).check(
|
||
|
matches(withEffectiveVisibility(visibleOrGone(visible)))
|
||
|
)
|
||
|
|
||
|
private fun visibleOrGone(visibility: Boolean) =
|
||
|
if (visibility) ViewMatchers.Visibility.VISIBLE else ViewMatchers.Visibility.GONE
|