@@ -56,6 +56,66 @@ sentryTest('mutation after threshold results in slow click', async ({ forceFlush
5656 expect ( slowClickBreadcrumbs [ 0 ] ?. data ?. timeAfterClickMs ) . toBeLessThan ( 3501 ) ;
5757} ) ;
5858
59+ sentryTest (
60+ 'uses updated attributes for click breadcrumbs after mutation' ,
61+ async ( { forceFlushReplay, getLocalTestUrl, page } ) => {
62+ if ( shouldSkipReplayTest ( ) ) {
63+ sentryTest . skip ( ) ;
64+ }
65+
66+ const url = await getLocalTestUrl ( { testDir : __dirname } ) ;
67+
68+ const replayRequestPromise = waitForReplayRequest ( page , 0 ) ;
69+ const segmentReqWithClickBreadcrumbPromise = waitForReplayRequest ( page , ( _event , res ) => {
70+ const { breadcrumbs } = getCustomRecordingEvents ( res ) ;
71+
72+ return breadcrumbs . some ( breadcrumb => breadcrumb . category === 'ui.click' ) ;
73+ } ) ;
74+
75+ await page . goto ( url ) ;
76+ await replayRequestPromise ;
77+
78+ await forceFlushReplay ( ) ;
79+
80+ await page . evaluate ( ( ) => {
81+ const target = document . getElementById ( 'next-question-button' ) ;
82+ if ( ! target ) {
83+ throw new Error ( 'Could not find target button' ) ;
84+ }
85+
86+ target . id = 'save-note-button' ;
87+ target . setAttribute ( 'data-testid' , 'save-note-button' ) ;
88+ } ) ;
89+
90+ await page . getByRole ( 'button' , { name : 'Next question' } ) . click ( ) ;
91+ await forceFlushReplay ( ) ;
92+
93+ const segmentReqWithClickBreadcrumb = await segmentReqWithClickBreadcrumbPromise ;
94+
95+ const { breadcrumbs } = getCustomRecordingEvents ( segmentReqWithClickBreadcrumb ) ;
96+ const updatedClickBreadcrumb = breadcrumbs . find ( breadcrumb => breadcrumb . category === 'ui.click' ) ;
97+
98+ expect ( updatedClickBreadcrumb ) . toEqual ( {
99+ category : 'ui.click' ,
100+ data : {
101+ node : {
102+ attributes : {
103+ id : 'save-note-button' ,
104+ testId : 'save-note-button' ,
105+ } ,
106+ id : expect . any ( Number ) ,
107+ tagName : 'button' ,
108+ textContent : '**** ********' ,
109+ } ,
110+ nodeId : expect . any ( Number ) ,
111+ } ,
112+ message : 'body > button#save-note-button' ,
113+ timestamp : expect . any ( Number ) ,
114+ type : 'default' ,
115+ } ) ;
116+ } ,
117+ ) ;
118+
59119sentryTest ( 'multiple clicks are counted' , async ( { getLocalTestUrl, page } ) => {
60120 if ( shouldSkipReplayTest ( ) ) {
61121 sentryTest . skip ( ) ;
0 commit comments