@@ -47,6 +47,7 @@ jest.mock('../../../lib/glean', () => ({
4747 submitSuccess : jest . fn ( ) ,
4848 error : jest . fn ( ) ,
4949 resendCode : jest . fn ( ) ,
50+ changeEmail : jest . fn ( ) ,
5051 } ,
5152 passwordlessReg : {
5253 view : jest . fn ( ) ,
@@ -55,6 +56,7 @@ jest.mock('../../../lib/glean', () => ({
5556 submitSuccess : jest . fn ( ) ,
5657 error : jest . fn ( ) ,
5758 resendCode : jest . fn ( ) ,
59+ changeEmail : jest . fn ( ) ,
5860 } ,
5961 isDone : jest . fn ( ) . mockResolvedValue ( undefined ) ,
6062 } ,
@@ -841,14 +843,20 @@ describe('SigninPasswordlessCode page', () => {
841843 expect ( mockGleanPasswordlessLogin . view ) . not . toHaveBeenCalled ( ) ;
842844 } ) ;
843845
844- it ( 'emits engage event on first focus of code input' , async ( ) => {
846+ it ( 'does not emit engage on mount' , ( ) => {
845847 render ( { isSignup : false } ) ;
848+ expect ( mockGleanPasswordlessLogin . engage ) . not . toHaveBeenCalled ( ) ;
849+ } ) ;
850+
851+ it ( 'emits engage event on first keystroke' , async ( ) => {
852+ render ( { isSignup : false } ) ;
853+ const user = userEvent . setup ( ) ;
846854 const input = screen . getByLabelText ( 'Enter 8-digit code' ) ;
847- fireEvent . focus ( input ) ;
855+ await user . type ( input , '1' ) ;
848856 expect ( mockGleanPasswordlessLogin . engage ) . toHaveBeenCalledTimes ( 1 ) ;
849857
850- // Subsequent focuses should not re-emit
851- fireEvent . focus ( input ) ;
858+ // Subsequent keystrokes should not re-emit
859+ await user . type ( input , '2' ) ;
852860 expect ( mockGleanPasswordlessLogin . engage ) . toHaveBeenCalledTimes ( 1 ) ;
853861 } ) ;
854862
@@ -921,6 +929,22 @@ describe('SigninPasswordlessCode page', () => {
921929 } ) ;
922930 } ) ;
923931
932+ it ( 'emits changeEmail event on "Use a different account" click for signin' , ( ) => {
933+ render ( { isSignup : false } ) ;
934+ const link = screen . getByText ( 'Use a different account' ) ;
935+ fireEvent . click ( link ) ;
936+ expect ( mockGleanPasswordlessLogin . changeEmail ) . toHaveBeenCalledTimes ( 1 ) ;
937+ expect ( mockGleanPasswordlessReg . changeEmail ) . not . toHaveBeenCalled ( ) ;
938+ } ) ;
939+
940+ it ( 'emits changeEmail event on "Use a different account" click for signup' , ( ) => {
941+ render ( { isSignup : true } ) ;
942+ const link = screen . getByText ( 'Use a different account' ) ;
943+ fireEvent . click ( link ) ;
944+ expect ( mockGleanPasswordlessReg . changeEmail ) . toHaveBeenCalledTimes ( 1 ) ;
945+ expect ( mockGleanPasswordlessLogin . changeEmail ) . not . toHaveBeenCalled ( ) ;
946+ } ) ;
947+
924948 it ( 'uses reg metrics for signup flow on submit' , async ( ) => {
925949 render ( { isSignup : true } ) ;
926950 await submitCode ( ) ;
0 commit comments