Skip to content

Commit 87e886b

Browse files
logaretmclaude
andcommitted
test(replay): cover mutated click breadcrumb attributes
Co-Authored-By: GPT-5 <noreply@anthropic.com>
1 parent e9ec66d commit 87e886b

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed

dev-packages/browser-integration-tests/suites/replay/slowClick/mutation/test.ts

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
59119
sentryTest('multiple clicks are counted', async ({ getLocalTestUrl, page }) => {
60120
if (shouldSkipReplayTest()) {
61121
sentryTest.skip();

dev-packages/browser-integration-tests/suites/replay/slowClick/template.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<body>
77
<button id="mutationButton">Trigger mutation</button>
88
<div id="mutationDiv">Trigger mutation</div>
9+
<button id="next-question-button" data-testid="next-question-button">Next question</button>
910
<button id="mutationButtonImmediately">Trigger mutation immediately</button>
1011
<button
1112
id="mutationButtonInline"

0 commit comments

Comments
 (0)