test(e2e): Port the TanStack Start React E2E app to span streaming - #24172
Conversation
size-limit report 📦
|
| const mysqlSpans = spans.filter(span => span.attributes['sentry.origin']?.value === 'auto.db.mysql'); | ||
|
|
||
| const spans = transactionEvent.spans || []; | ||
| const firstQuery = mysqlSpans.find(span => span.attributes['db.query.text']?.value === 'SELECT 1 + 1 AS solution'); |
There was a problem hiding this comment.
Hm, this should now show 1 + 1, maybe you have to update you branch.
Related to this PR: #24089
Co-Authored-By: Cursor Grok 4.6 <cursoragent@cursor.com>
9979f3f to
ec9bc7c
Compare
…st leak Co-Authored-By: Cursor Grok 4.6 <cursoragent@cursor.com>
ec9bc7c to
45813b7
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 45813b7. Configure here.
| expect(clientTx.contexts?.trace?.trace_id).toBe(serverTx.contexts?.trace?.trace_id); | ||
| expect(serverSpan).toBeDefined(); | ||
| expect(clientSpan).toBeDefined(); | ||
| expect(clientSpan?.trace_id).toBe(serverSpan?.trace_id); |
There was a problem hiding this comment.
Trace connection test can false-pass
Medium Severity
collectStreamedSpans already groups by trace_id, so the later trace_id comparison cannot fail. The wait also is not unique to this navigation: the previous test hits / without draining spans, and a leftover connected trace can satisfy the predicate and hide a broken propagation on this page load. Flagged because the review rules call out hollow assertions and waits that are not unique enough for the same route.
Triggered by project rule: PR Review Guidelines for Cursor Bot
Reviewed by Cursor Bugbot for commit 45813b7. Configure here.


Makes span streaming the only path in the TanStack Start React E2E app. The
E2E_TEST_STREAMED_SPANSternary is gone, and the specs wait on streamed spans instead of transaction envelopes.Why
Unparameterized
http.servernames fall back to the method only, so those waits matchurl.path(andhttp.routeonce a route is known). Redis handshake commands and mysql query-summary names (SELECT) are told apart withdb.query.text. Thetunnel-streamedvariant is dropped because it is now identical totunnel-generated. Static-lifecycle coverage moves totanstackstart-react-static.Part of #23805