getsentry / getsentry/sentry-javascript
Port deno-integration-tests suites to span streaming
- Dominant language
- TypeScript
- Stars
- 8.7k
- Forks
- 1.8k
- Avg merge
- 1d 17h
- Merged PRs (30d)
- 523
Description
Split out of getsentry/sentry-javascript#23812, which ported the Deno E2E apps (`deno`, `deno-mysql`, `deno-pg`, `deno-redis`) to span streaming in getsentry/sentry-javascript#24002 and #24003.
The `dev-packages/deno-integration-tests` suites still carry the `traceLifecycle: 'static'` pin from getsentry/sentry-javascript#22590: 25 suites, 51 pins, mostly the `orchestrion-*` suites plus `deno-serve-request-bodies`.
## Why this is separate
These suites don't go through the event proxy. They assert via a `transactionSink()` helper wired into `beforeSendTransaction` in `dev-packages/deno-integration-tests/src/index.ts`, so porting them is a harness change, not a spec rewrite:
* Replace the `beforeSendTransaction` sink with a span sink (e.g. `beforeSendSpan` or a mock transport capturing span v2 envelopes).
* Rewrite the per-suite assertions from `transaction.spans[]` / `contexts.trace` to streamed span shape (`span.name`, `getSpanOp`, `span.attributes['x'].value`, `is_segment`).
* Streamed db/http/gen_ai span names are low cardinality, so every name assertion in the orchestrion suites changes.
## What to do
1. Add a streamed-span sink to `src/index.ts` next to `transactionSink()`.
2. Remove the `traceLifecycle: 'static'` pins from every `suites/**/test.ts`.
3. Rewrite the assertions per suite.
Consider keeping one suite on the static pin (or duplicating one) so the static trace lifecycle stays covered for this harness, mirroring the `*-static` E2E apps.
Contributor guide
Assessment
This issue has not been assessed yet.