Skip to content

Commit 88dd996

Browse files
committed
ci(ui-automation): Introduce new screen and test classes
PM-89
1 parent 96fd6fc commit 88dd996

File tree

4 files changed

+132
-4
lines changed

4 files changed

+132
-4
lines changed

bank-sdk/example-app/src/androidTest/java/net/gini/android/bank/sdk/exampleapp/ui/screens/CaptureScreen.kt

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,19 @@ import androidx.test.espresso.assertion.ViewAssertions.matches
1111
import androidx.test.espresso.intent.Intents.intending
1212
import androidx.test.espresso.intent.matcher.IntentMatchers.hasAction
1313
import androidx.test.espresso.intent.matcher.IntentMatchers.hasType
14+
import androidx.test.espresso.matcher.ViewMatchers
15+
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
1416
import androidx.test.espresso.matcher.ViewMatchers.withText
1517
import org.hamcrest.Matchers.allOf
1618

1719
class CaptureScreen {
1820
fun assertCameraTitle(): CaptureScreen {
19-
onView(withId(net.gini.android.capture.R.id.gc_camera_title)).check(matches(withText("Scan an invoice")))
21+
onView(withId(net.gini.android.capture.R.id.gc_camera_title)).check(matches(withText(net.gini.android.capture.R.string.gc_camera_info_label_only_invoice)))
22+
return this
23+
}
24+
25+
fun clickCameraButton(): CaptureScreen {
26+
onView(withId(net.gini.android.capture.R.id.gc_button_camera_trigger)).perform(click())
2027
return this
2128
}
2229

@@ -30,8 +37,30 @@ class CaptureScreen {
3037
return this
3138
}
3239

33-
fun clickFlashButton(): CaptureScreen {
34-
onView(withId(net.gini.android.capture.R.id.gc_button_camera_flash)).perform(click())
40+
fun assertFlashIconIsDisplayed(): CaptureScreen {
41+
onView(withId(net.gini.android.capture.R.id.gc_camera_flash_button_subtitle)).check(
42+
matches(
43+
isDisplayed()
44+
)
45+
)
46+
return this
47+
}
48+
49+
fun assertFlashIconIsOn(): CaptureScreen {
50+
onView(withId(net.gini.android.capture.R.id.gc_camera_flash_button_subtitle)).check(
51+
matches(
52+
withText(net.gini.android.capture.R.string.gc_camera_flash_on_subtitle)
53+
)
54+
)
55+
return this
56+
}
57+
58+
fun assertFlashIconIsOff(): CaptureScreen {
59+
onView(withId(net.gini.android.capture.R.id.gc_camera_flash_button_subtitle)).check(
60+
matches(
61+
withText(net.gini.android.capture.R.string.gc_camera_flash_off_subtitle)
62+
)
63+
)
3564
return this
3665
}
3766
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package net.gini.android.bank.sdk.exampleapp.ui.screens
2+
3+
import androidx.test.espresso.Espresso.onView
4+
import androidx.test.espresso.action.ViewActions.click
5+
import androidx.test.espresso.assertion.ViewAssertions.matches
6+
import androidx.test.espresso.matcher.ViewMatchers
7+
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
8+
import net.gini.android.bank.sdk.exampleapp.R
9+
10+
class ConfigurationScreen {
11+
12+
fun clickFlashToggleToEnable(): ConfigurationScreen {
13+
onView(ViewMatchers.withId(R.id.switch_flashOnByDefault)).perform(click())
14+
return this
15+
}
16+
17+
fun assertFlashToggleIsDisable(): ConfigurationScreen {
18+
onView(ViewMatchers.withId(R.id.switch_flashOnByDefault)).check(matches(isDisplayed()))
19+
return this
20+
}
21+
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package net.gini.android.bank.sdk.exampleapp.ui.testcases
2+
3+
import android.Manifest
4+
import androidx.test.espresso.Espresso.pressBack
5+
import androidx.test.ext.junit.rules.activityScenarioRule
6+
import androidx.test.rule.GrantPermissionRule
7+
import net.gini.android.bank.sdk.exampleapp.ui.MainActivity
8+
import net.gini.android.bank.sdk.exampleapp.ui.screens.CaptureScreen
9+
import net.gini.android.bank.sdk.exampleapp.ui.screens.ConfigurationScreen
10+
import net.gini.android.bank.sdk.exampleapp.ui.screens.MainScreen
11+
import net.gini.android.bank.sdk.exampleapp.ui.screens.OnboardingScreen
12+
import org.junit.Rule
13+
import org.junit.Test
14+
15+
/**
16+
* Test class for flash on/off on CaptureScreen.
17+
*
18+
* Jira link for test case: [https://ginis.atlassian.net/browse/PM-22](https://ginis.atlassian.net/browse/PM-22)
19+
*/
20+
class CaptureScreenTests {
21+
@get:Rule
22+
val activityRule = activityScenarioRule<MainActivity>()
23+
24+
@get: Rule
25+
val grantPermissionRule: GrantPermissionRule =
26+
GrantPermissionRule.grant(Manifest.permission.CAMERA)
27+
28+
private val configurationScreen = ConfigurationScreen()
29+
private val mainScreen = MainScreen()
30+
private val onboardingScreen = OnboardingScreen()
31+
private val captureScreen = CaptureScreen()
32+
33+
@Test
34+
fun test1_flashIsOnByDefault() {
35+
mainScreen.clickSettingButton()
36+
configurationScreen.clickFlashToggleToEnable()
37+
pressBack()
38+
mainScreen.clickPhotoPaymentButton()
39+
onboardingScreen.clickSkipButton()
40+
captureScreen.assertFlashIconIsDisplayed()
41+
captureScreen.assertFlashIconIsOn()
42+
}
43+
44+
@Test
45+
fun test2_flashEnabledWhenImageIsCaptured() {
46+
mainScreen.clickSettingButton()
47+
configurationScreen.clickFlashToggleToEnable()
48+
pressBack()
49+
mainScreen.clickPhotoPaymentButton()
50+
onboardingScreen.clickSkipButton()
51+
captureScreen.assertFlashIconIsDisplayed()
52+
captureScreen.assertFlashIconIsOn()
53+
captureScreen.clickCameraButton()
54+
}
55+
56+
@Test
57+
fun test3_flashIsOffByDefault() {
58+
mainScreen.clickSettingButton()
59+
configurationScreen.assertFlashToggleIsDisable()
60+
pressBack()
61+
mainScreen.clickPhotoPaymentButton()
62+
onboardingScreen.clickSkipButton()
63+
captureScreen.assertFlashIconIsDisplayed()
64+
captureScreen.assertFlashIconIsOff()
65+
}
66+
67+
@Test
68+
fun test4_flashDisabledWhenImageIsCaptured() {
69+
mainScreen.clickSettingButton()
70+
configurationScreen.assertFlashToggleIsDisable()
71+
pressBack()
72+
mainScreen.clickPhotoPaymentButton()
73+
onboardingScreen.clickSkipButton()
74+
captureScreen.assertFlashIconIsDisplayed()
75+
captureScreen.assertFlashIconIsOff()
76+
captureScreen.clickCameraButton()
77+
}
78+
79+
}

bank-sdk/example-app/src/androidTest/java/net/gini/android/bank/sdk/exampleapp/ui/testcases/OnboardingScreenTests.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import org.junit.runner.RunWith
2222
*
2323
* Jira link for test case: [https://ginis.atlassian.net/browse/PM-18](https://ginis.atlassian.net/browse/PM-18)
2424
*/
25-
2625
@RunWith(AndroidJUnit4::class)
2726
class OnboardingScreenTests {
2827
@get:Rule

0 commit comments

Comments
 (0)