Skip to content

Commit a971912

Browse files
cursoragentclaude
andcommitted
fix(effect): Fix conditional tracing test and add coverage for disabled spans
- Fix test 'layer enables tracing for Effect spans via Sentry tracer' by adding tracesSampleRate: 1.0 to createClient() call - Add test to verify tracing is not enabled when tracesSampleRate is not set - Add test to verify tracing is enabled when tracesSampler is set - Re-export SentryEffectTracerLayer from tracer.ts for use in tests Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 8af0f44 commit a971912

File tree

4 files changed

+31
-2
lines changed

4 files changed

+31
-2
lines changed

packages/effect/src/index.client.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ export * from '@sentry/browser';
66
export { effectLayer, init } from './client/index';
77
export type { EffectClientLayerOptions } from './client/index';
88

9-
export { SentryEffectTracer } from './tracer';
9+
export { SentryEffectTracer, SentryEffectTracerLayer } from './tracer';
1010
export { SentryEffectLogger } from './logger';
1111
export { SentryEffectMetricsLayer } from './metrics';

packages/effect/src/index.server.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ export * from '@sentry/node-core/light';
33
export { effectLayer, init } from './server/index';
44
export type { EffectServerLayerOptions } from './server/index';
55

6-
export { SentryEffectTracer } from './tracer';
6+
export { SentryEffectTracer, SentryEffectTracerLayer } from './tracer';
77
export { SentryEffectLogger } from './logger';
88
export { SentryEffectMetricsLayer } from './metrics';

packages/effect/src/tracer.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,3 +199,8 @@ const makeSentryTracer = (): EffectTracer.Tracer =>
199199
* Effect Layer that sets up the Sentry tracer for Effect spans.
200200
*/
201201
export const SentryEffectTracer = makeSentryTracer();
202+
203+
/**
204+
* Effect Layer that sets up the Sentry tracer for Effect spans.
205+
*/
206+
export const SentryEffectTracerLayer: Layer.Layer<never, never, never> = setTracer(SentryEffectTracer);

packages/effect/test/buildEffectLayer.test.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,32 @@ describe('buildEffectLayer', () => {
136136
}),
137137
);
138138
startInactiveSpanSpy.mockRestore();
139+
}).pipe(Effect.provide(buildEffectLayer({}, createClient({ tracesSampleRate: 1.0 })))),
140+
);
141+
142+
it.effect('layer does not enable tracing when tracesSampleRate is not set', () =>
143+
Effect.gen(function* () {
144+
const startInactiveSpanSpy = vi.spyOn(sentryCore, 'startInactiveSpan');
145+
const result = yield* Effect.withSpan('test-span-no-tracing')(Effect.succeed('not-traced'));
146+
expect(result).toBe('not-traced');
147+
expect(startInactiveSpanSpy).not.toHaveBeenCalled();
148+
startInactiveSpanSpy.mockRestore();
139149
}).pipe(Effect.provide(buildEffectLayer({}, createClient()))),
140150
);
151+
152+
it.effect('layer enables tracing when tracesSampler is set', () =>
153+
Effect.gen(function* () {
154+
const startInactiveSpanSpy = vi.spyOn(sentryCore, 'startInactiveSpan');
155+
const result = yield* Effect.withSpan('test-sampler-span')(Effect.succeed('sampled'));
156+
expect(result).toBe('sampled');
157+
expect(startInactiveSpanSpy).toHaveBeenCalledWith(
158+
expect.objectContaining({
159+
name: 'test-sampler-span',
160+
}),
161+
);
162+
startInactiveSpanSpy.mockRestore();
163+
}).pipe(Effect.provide(buildEffectLayer({}, createClient({ tracesSampler: () => true })))),
164+
);
141165
});
142166

143167
describe('with additional options', () => {

0 commit comments

Comments
 (0)