diff --git a/.size-limit.js b/.size-limit.js index 4100751f2c40..812e549d96b4 100644 --- a/.size-limit.js +++ b/.size-limit.js @@ -269,7 +269,7 @@ module.exports = [ path: createCDNPath('bundle.tracing.replay.min.js'), gzip: false, brotli: false, - limit: '247 KB', + limit: '248 KB', }, { name: 'CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed', diff --git a/dev-packages/browser-integration-tests/suites/replay/slowClick/mutation/test.ts b/dev-packages/browser-integration-tests/suites/replay/slowClick/mutation/test.ts index 08aad51de3ff..1373f78b3a5c 100644 --- a/dev-packages/browser-integration-tests/suites/replay/slowClick/mutation/test.ts +++ b/dev-packages/browser-integration-tests/suites/replay/slowClick/mutation/test.ts @@ -56,6 +56,66 @@ sentryTest('mutation after threshold results in slow click', async ({ forceFlush expect(slowClickBreadcrumbs[0]?.data?.timeAfterClickMs).toBeLessThan(3501); }); +sentryTest( + 'uses updated attributes for click breadcrumbs after mutation', + async ({ forceFlushReplay, getLocalTestUrl, page }) => { + if (shouldSkipReplayTest()) { + sentryTest.skip(); + } + + const url = await getLocalTestUrl({ testDir: __dirname }); + + const replayRequestPromise = waitForReplayRequest(page, 0); + const segmentReqWithClickBreadcrumbPromise = waitForReplayRequest(page, (_event, res) => { + const { breadcrumbs } = getCustomRecordingEvents(res); + + return breadcrumbs.some(breadcrumb => breadcrumb.category === 'ui.click'); + }); + + await page.goto(url); + await replayRequestPromise; + + await forceFlushReplay(); + + await page.evaluate(() => { + const target = document.getElementById('next-question-button'); + if (!target) { + throw new Error('Could not find target button'); + } + + target.id = 'save-note-button'; + target.setAttribute('data-testid', 'save-note-button'); + }); + + await page.getByRole('button', { name: 'Next question' }).click(); + await forceFlushReplay(); + + const segmentReqWithClickBreadcrumb = await segmentReqWithClickBreadcrumbPromise; + + const { breadcrumbs } = getCustomRecordingEvents(segmentReqWithClickBreadcrumb); + const updatedClickBreadcrumb = breadcrumbs.find(breadcrumb => breadcrumb.category === 'ui.click'); + + expect(updatedClickBreadcrumb).toEqual({ + category: 'ui.click', + data: { + node: { + attributes: { + id: 'save-note-button', + testId: 'save-note-button', + }, + id: expect.any(Number), + tagName: 'button', + textContent: '**** ********', + }, + nodeId: expect.any(Number), + }, + message: 'body > button#save-note-button', + timestamp: expect.any(Number), + type: 'default', + }); + }, +); + sentryTest('multiple clicks are counted', async ({ getLocalTestUrl, page }) => { if (shouldSkipReplayTest()) { sentryTest.skip(); diff --git a/dev-packages/browser-integration-tests/suites/replay/slowClick/template.html b/dev-packages/browser-integration-tests/suites/replay/slowClick/template.html index 030401479a6b..2e0558870e1e 100644 --- a/dev-packages/browser-integration-tests/suites/replay/slowClick/template.html +++ b/dev-packages/browser-integration-tests/suites/replay/slowClick/template.html @@ -6,6 +6,7 @@
Trigger mutation
+