@@ -80,16 +80,32 @@ describe('UserActionsAggregator - Dead Clicks', () => {
8080 let aggregator
8181 beforeEach ( ( ) => {
8282 jest . useFakeTimers ( )
83- aggregator = new UserActionsAggregator ( )
83+ aggregator = new UserActionsAggregator ( true )
8484 } )
8585 afterEach ( ( ) => {
8686 jest . useRealTimers ( )
8787 } )
88+
89+ test ( 'should NOT set deadClick if user frustrations is disabled' , ( ) => {
90+ aggregator = new UserActionsAggregator ( false )
91+ const link = document . createElement ( 'a' )
92+ document . body . appendChild ( link )
93+ const evt = { type : 'click' , target : link }
94+ aggregator . process ( evt )
95+ expect ( aggregator . isEvaluatingDeadClick ( ) ) . toBe ( false )
96+
97+ jest . advanceTimersByTime ( 2000 )
98+
99+ const userAction = aggregator . aggregationEvent
100+ expect ( userAction . deadClick ) . toBe ( false )
101+ } )
102+
88103 test ( 'should set deadClick to true if no change detected after 2 seconds - buttons' , ( ) => {
89104 const btn = document . createElement ( 'button' )
90105 document . body . appendChild ( btn )
91106 const evt = { type : 'click' , target : btn }
92107 aggregator . process ( evt )
108+ expect ( aggregator . isEvaluatingDeadClick ( ) ) . toBe ( true )
93109
94110 jest . advanceTimersByTime ( 2000 )
95111
@@ -102,6 +118,7 @@ describe('UserActionsAggregator - Dead Clicks', () => {
102118 document . body . appendChild ( link )
103119 const evt = { type : 'click' , target : link }
104120 aggregator . process ( evt )
121+ expect ( aggregator . isEvaluatingDeadClick ( ) ) . toBe ( true )
105122
106123 jest . advanceTimersByTime ( 2000 )
107124
@@ -114,6 +131,7 @@ describe('UserActionsAggregator - Dead Clicks', () => {
114131 document . body . appendChild ( span )
115132 const evt = { type : 'click' , target : span }
116133 aggregator . process ( evt )
134+ expect ( aggregator . isEvaluatingDeadClick ( ) ) . toBe ( false )
117135
118136 jest . advanceTimersByTime ( 2000 )
119137
@@ -126,6 +144,7 @@ describe('UserActionsAggregator - Dead Clicks', () => {
126144 document . body . appendChild ( btn )
127145 const evt = { type : 'click' , target : btn }
128146 aggregator . process ( evt )
147+ expect ( aggregator . isEvaluatingDeadClick ( ) ) . toBe ( true )
129148
130149 // Simulate a DOM mutation before the timer ends
131150 btn . setAttribute ( 'data-test' , 'mutated' )
@@ -159,6 +178,7 @@ describe('UserActionsAggregator - Dead Clicks', () => {
159178 const keydownEvt = { type : 'keydown' , target : btn }
160179
161180 aggregator . process ( clickEvt )
181+ expect ( aggregator . isEvaluatingDeadClick ( ) ) . toBe ( true )
162182 const finishedEvent = aggregator . process ( keydownEvt ) // Ends aggregation before timer
163183
164184 jest . advanceTimersByTime ( 2000 )
@@ -171,11 +191,31 @@ describe('UserActionsAggregator - Error Clicks', () => {
171191 let aggregator
172192 beforeEach ( ( ) => {
173193 jest . useFakeTimers ( )
174- aggregator = new UserActionsAggregator ( )
194+ aggregator = new UserActionsAggregator ( true )
175195 } )
176196 afterEach ( ( ) => {
177197 jest . useRealTimers ( )
178198 } )
199+ test ( 'should NOT set errorClick if user frustrations is disabled' , ( ) => {
200+ aggregator = new UserActionsAggregator ( false )
201+ const btn = document . createElement ( 'button' )
202+ btn . onclick = ( ) => {
203+ console . log ( 'Simulating an error' )
204+ throw new Error ( 'Simulated error' )
205+ }
206+ document . body . appendChild ( btn )
207+ const evt = {
208+ type : 'click' ,
209+ target : btn
210+ }
211+ aggregator . process ( evt , [ 'id' , 'className' , 'tagName' , 'type' ] )
212+ jest . advanceTimersByTime ( 1999 )
213+ aggregator . markAsErrorClick ( ) // Simulate the error click
214+ jest . advanceTimersByTime ( 1 )
215+
216+ const userAction = aggregator . aggregationEvent
217+ expect ( userAction . errorClick ) . toBe ( false )
218+ } )
179219 test ( 'should set errorClick to true if an error is detected within 2 seconds - buttons' , ( ) => {
180220 const btn = document . createElement ( 'button' )
181221 btn . onclick = ( ) => {
0 commit comments