Skip to content

Commit 1656841

Browse files
test: fix tests so they now check screens when - isProviderChoiceAlwaysShown is true or false
1 parent 459d9b7 commit 1656841

1 file changed

Lines changed: 52 additions & 66 deletions

File tree

e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/EmailAuthScreenTest.kt

Lines changed: 52 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ class EmailAuthScreenTest {
149149
}
150150

151151
@Test
152-
fun `initial EmailAuthMode is SignIn`() {
152+
fun `single email provider starts on email screen when provider choice always shown is false`() {
153153
val configuration = authUIConfiguration {
154154
context = applicationContext
155155
providers {
@@ -167,15 +167,30 @@ class EmailAuthScreenTest {
167167
TestFirebaseAuthScreen(configuration = configuration, authUI = authUI)
168168
}
169169

170-
// Click on email provider in AuthMethodPicker
171-
composeAndroidTestRule.onNodeWithText(stringProvider.signInWithEmail)
172-
.assertIsDisplayed()
173-
.performClick()
170+
assertDirectEmailStart()
171+
}
174172

175-
composeAndroidTestRule.waitForIdle()
173+
@Test
174+
fun `single email provider shows method picker when provider choice always shown is true`() {
175+
val configuration = authUIConfiguration {
176+
context = applicationContext
177+
providers {
178+
provider(
179+
AuthProvider.Email(
180+
emailLinkActionCodeSettings = null,
181+
passwordValidationRules = emptyList()
182+
)
183+
)
184+
}
185+
isCredentialManagerEnabled = false
186+
isProviderChoiceAlwaysShown = true
187+
}
176188

177-
composeAndroidTestRule.onNodeWithText(stringProvider.signInDefault)
178-
.assertIsDisplayed()
189+
composeAndroidTestRule.setContent {
190+
TestFirebaseAuthScreen(configuration = configuration, authUI = authUI)
191+
}
192+
193+
openEmailProviderFromMethodPicker()
179194
}
180195

181196
@Test
@@ -212,12 +227,7 @@ class EmailAuthScreenTest {
212227
currentAuthState = authState
213228
}
214229

215-
// Click on email provider in AuthMethodPicker
216-
composeAndroidTestRule.onNodeWithText(stringProvider.signInWithEmail)
217-
.assertIsDisplayed()
218-
.performClick()
219-
220-
composeAndroidTestRule.waitForIdle()
230+
assertDirectEmailStart()
221231

222232
composeAndroidTestRule.onNodeWithText(stringProvider.emailHint)
223233
.performScrollTo()
@@ -306,12 +316,7 @@ class EmailAuthScreenTest {
306316
currentAuthState = authState
307317
}
308318

309-
// Click on email provider in AuthMethodPicker
310-
composeAndroidTestRule.onNodeWithText(stringProvider.signInWithEmail)
311-
.assertIsDisplayed()
312-
.performClick()
313-
314-
composeAndroidTestRule.waitForIdle()
319+
assertDirectEmailStart()
315320

316321
composeAndroidTestRule.onNodeWithText(stringProvider.emailHint)
317322
.performScrollTo()
@@ -381,12 +386,7 @@ class EmailAuthScreenTest {
381386
currentAuthState = authState
382387
}
383388

384-
// Click on email provider in AuthMethodPicker
385-
composeAndroidTestRule.onNodeWithText(stringProvider.signInWithEmail)
386-
.assertIsDisplayed()
387-
.performClick()
388-
389-
composeAndroidTestRule.waitForIdle()
389+
assertDirectEmailStart()
390390

391391
composeAndroidTestRule.onNodeWithText(stringProvider.signInDefault)
392392
.assertIsDisplayed()
@@ -471,12 +471,7 @@ class EmailAuthScreenTest {
471471
currentAuthState = authState
472472
}
473473

474-
// Click on email provider in AuthMethodPicker
475-
composeAndroidTestRule.onNodeWithText(stringProvider.signInWithEmail)
476-
.assertIsDisplayed()
477-
.performClick()
478-
479-
composeAndroidTestRule.waitForIdle()
474+
assertDirectEmailStart()
480475

481476
composeAndroidTestRule.onNodeWithText(stringProvider.signInDefault)
482477
.assertIsDisplayed()
@@ -569,15 +564,7 @@ class EmailAuthScreenTest {
569564
currentAuthState = authState
570565
}
571566

572-
// Click on email provider in AuthMethodPicker
573-
composeAndroidTestRule.onNodeWithText(stringProvider.signInWithEmail)
574-
.assertIsDisplayed()
575-
.performClick()
576-
577-
composeAndroidTestRule.waitForIdle()
578-
579-
composeAndroidTestRule.onNodeWithText(stringProvider.signInDefault)
580-
.assertIsDisplayed()
567+
assertDirectEmailStart()
581568

582569
// Click "Sign in with email link" button to switch to email link mode
583570
composeAndroidTestRule.onNodeWithText(stringProvider.signInWithEmailLink.uppercase())
@@ -744,6 +731,7 @@ class EmailAuthScreenTest {
744731
)
745732
)
746733
}
734+
isProviderChoiceAlwaysShown = true
747735
}
748736

749737
// Track auth state changes
@@ -758,12 +746,7 @@ class EmailAuthScreenTest {
758746
// STEP 1: Sign up and verify credential saved
759747
println("TEST: Starting sign-up flow...")
760748

761-
// Click on email provider
762-
composeAndroidTestRule.onNodeWithText(stringProvider.signInWithEmail)
763-
.assertIsDisplayed()
764-
.performClick()
765-
766-
composeAndroidTestRule.waitForIdle()
749+
openEmailProviderFromMethodPicker()
767750

768751
// Click sign-up
769752
composeAndroidTestRule.onNodeWithText(stringProvider.signupPageTitle.uppercase())
@@ -816,13 +799,9 @@ class EmailAuthScreenTest {
816799
// STEP 3: Navigate to SignInUI screen to trigger credential retrieval
817800
println("TEST: Navigating to sign-in screen to trigger credential retrieval...")
818801

819-
// Click on email provider to show SignInUI, which will trigger auto-retrieval
820-
composeAndroidTestRule.onNodeWithText(stringProvider.signInWithEmail)
821-
.assertIsDisplayed()
822-
.performClick()
823-
824802
composeAndroidTestRule.waitForIdle()
825803
shadowOf(Looper.getMainLooper()).idle()
804+
clickEmailProviderFromMethodPicker()
826805

827806
// SignInUI's LaunchedEffect should now trigger credential retrieval and auto-sign-in
828807
println("TEST: Waiting for automatic credential retrieval and auto-sign-in...")
@@ -877,6 +856,7 @@ class EmailAuthScreenTest {
877856
)
878857
)
879858
}
859+
isProviderChoiceAlwaysShown = true
880860
}
881861

882862
var currentAuthState: AuthState = AuthState.Idle
@@ -890,11 +870,7 @@ class EmailAuthScreenTest {
890870
// STEP 1: Sign up and save credential
891871
println("TEST: Starting sign-up flow...")
892872

893-
composeAndroidTestRule.onNodeWithText(stringProvider.signInWithEmail)
894-
.assertIsDisplayed()
895-
.performClick()
896-
897-
composeAndroidTestRule.waitForIdle()
873+
openEmailProviderFromMethodPicker()
898874

899875
composeAndroidTestRule.onNodeWithText(stringProvider.signupPageTitle.uppercase())
900876
.assertIsDisplayed()
@@ -940,12 +916,9 @@ class EmailAuthScreenTest {
940916
// STEP 3: Navigate to SignInUI to trigger credential retrieval
941917
println("TEST: Navigating to sign-in screen...")
942918

943-
composeAndroidTestRule.onNodeWithText(stringProvider.signInWithEmail)
944-
.assertIsDisplayed()
945-
.performClick()
946-
947919
composeAndroidTestRule.waitForIdle()
948920
shadowOf(Looper.getMainLooper()).idle()
921+
clickEmailProviderFromMethodPicker()
949922

950923
println("TEST: Waiting for automatic credential retrieval and auto-sign-in...")
951924

@@ -997,11 +970,7 @@ class EmailAuthScreenTest {
997970
}
998971

999972
// Sign up
1000-
composeAndroidTestRule.onNodeWithText(stringProvider.signInWithEmail)
1001-
.assertIsDisplayed()
1002-
.performClick()
1003-
1004-
composeAndroidTestRule.waitForIdle()
973+
assertDirectEmailStart()
1005974

1006975
composeAndroidTestRule.onNodeWithText(stringProvider.signupPageTitle.uppercase())
1007976
.assertIsDisplayed()
@@ -1078,4 +1047,21 @@ class EmailAuthScreenTest {
10781047
}
10791048
}
10801049
}
1050+
1051+
private fun assertDirectEmailStart() {
1052+
composeAndroidTestRule.waitForIdle()
1053+
composeAndroidTestRule.onNodeWithText(stringProvider.signInDefault)
1054+
.assertIsDisplayed()
1055+
}
1056+
1057+
private fun openEmailProviderFromMethodPicker() {
1058+
clickEmailProviderFromMethodPicker()
1059+
assertDirectEmailStart()
1060+
}
1061+
1062+
private fun clickEmailProviderFromMethodPicker() {
1063+
composeAndroidTestRule.onNodeWithText(stringProvider.signInWithEmail)
1064+
.assertIsDisplayed()
1065+
.performClick()
1066+
}
10811067
}

0 commit comments

Comments
 (0)