getsentry / getsentry/sentry-javascript

Port deno-integration-tests suites to span streaming

未关闭
#24,004 1 条评论 0 个 reaction 已指派 1 人 已被 @msonnb 认领 在 GitHub 查看
javascript Task
主要语言
TypeScript
星标
8.7k
派生
1.8k
平均合并
1 天 17 小时
30 天内合并 PR
515

描述

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.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。