@@ -59,6 +59,43 @@ test.describe('severity-1 #smoke', () => {
5959 await expect ( signin . cachedSigninHeading ) . toBeVisible ( ) ;
6060 await expect ( page . getByText ( email ) ) . toBeVisible ( ) ;
6161 } ) ;
62+
63+ test ( 'can sign in to OAuth after abandoning sync confirmation code' , async ( {
64+ target,
65+ syncBrowserPages : { page, signin, signinTokenCode, relier } ,
66+ testAccountTracker,
67+ } ) => {
68+ const syncCredentials = await testAccountTracker . signUpSync ( ) ;
69+
70+ // Start sign-into-sync flow
71+ await page . goto (
72+ `${ target . contentServerUrl } ?context=fx_desktop_v3&service=sync&action=email&`
73+ ) ;
74+ await signin . fillOutEmailFirstForm ( syncCredentials . email ) ;
75+ await signin . fillOutPasswordForm ( syncCredentials . password ) ;
76+
77+ // Confirm we reached the token code page, but intentionally skip entering the code
78+ await expect ( page ) . toHaveURL ( / s i g n i n _ t o k e n _ c o d e / ) ;
79+
80+ // Navigate to 123done without completing sync verification
81+ await relier . goto ( ) ;
82+ await relier . clickEmailFirst ( ) ;
83+
84+ // FxA sees the existing session and shows cached account
85+ await expect ( signin . cachedSigninHeading ) . toBeVisible ( ) ;
86+ await signin . signInButton . click ( ) ;
87+
88+ // We get a signin code, because we are using a restmail address, and forces
89+ // verification. ie Must verify will always be set on this client.
90+ await expect ( page ) . toHaveURL ( / s i g n i n _ t o k e n _ c o d e / ) ;
91+ const signinCode = await target . emailClient . getVerifyLoginCode (
92+ syncCredentials . email
93+ ) ;
94+ await signinTokenCode . fillOutCodeForm ( signinCode ) ;
95+
96+ // OAuth sign-in should succeed even though the sync session was not verified
97+ expect ( await relier . isLoggedIn ( ) ) . toBe ( true ) ;
98+ } ) ;
6299 } ) ;
63100
64101 test . describe ( 'signin to Sync after OAuth' , ( ) => {
0 commit comments