Skip to content

Commit fb8eeb1

Browse files
committed
Refactor / reimplement
1 parent 946b366 commit fb8eeb1

File tree

4 files changed

+247
-151
lines changed

4 files changed

+247
-151
lines changed

dev-packages/e2e-tests/test-applications/supabase-nextjs/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"next": "14.2.25",
2626
"react": "18.2.0",
2727
"react-dom": "18.2.0",
28-
"supabase": "2.22.12",
28+
"supabase": "2.23.4",
2929
"typescript": "4.9.5"
3030
},
3131
"devDependencies": {

dev-packages/e2e-tests/test-applications/supabase-nextjs/pages/api/queue/receiver-rpc.ts

Lines changed: 0 additions & 31 deletions
This file was deleted.

dev-packages/e2e-tests/test-applications/supabase-nextjs/tests/performance.test.ts

Lines changed: 40 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -305,42 +305,48 @@ test('Sends queue publish spans with `rpc(...)`', async ({ page, baseURL }) => {
305305
});
306306

307307
test('Sends queue process spans with `schema(...).rpc(...)`', async ({ page, baseURL }) => {
308-
const httpTransactionPromise = waitForTransaction('supabase-nextjs', transactionEvent => {
308+
const consumerSpanPromise = waitForTransaction('supabase-nextjs', transactionEvent => {
309309
return (
310-
transactionEvent?.contexts?.trace?.op === 'http.server' &&
311-
transactionEvent?.transaction === 'GET /api/queue/consumer-schema'
310+
transactionEvent?.contexts?.trace?.op === 'queue.process' && transactionEvent?.transaction === 'supabase.db.rpc'
312311
);
313312
});
314313

315314
const result = await fetch(`${baseURL}/api/queue/consumer-schema`);
316-
const transactionEvent = await httpTransactionPromise;
315+
const consumerEvent = await consumerSpanPromise;
317316

318317
expect(result.status).toBe(200);
319318
expect(await result.json()).toEqual(
320-
expect.objectContaining({ data: [expect.objectContaining({ message: { title: 'Test Todo' }, msg_id: 1 })] }),
319+
expect.objectContaining({
320+
data: [
321+
expect.objectContaining({
322+
message: {
323+
title: 'Test Todo',
324+
},
325+
msg_id: expect.any(Number),
326+
}),
327+
],
328+
}),
321329
);
322330

323-
expect(transactionEvent.spans).toHaveLength(2);
324-
expect(transactionEvent.spans).toContainEqual({
331+
expect(consumerEvent.contexts.trace).toEqual({
325332
data: {
326333
'messaging.destination.name': 'todos',
327334
'messaging.system': 'supabase',
328335
'messaging.message.id': '1',
336+
'messaging.message.receive.latency': expect.any(Number),
329337
'sentry.op': 'queue.process',
330338
'sentry.origin': 'auto.db.supabase',
339+
'sentry.source': 'route',
331340
},
332-
description: 'supabase.db.rpc',
333341
op: 'queue.process',
334342
origin: 'auto.db.supabase',
335-
parent_span_id: expect.stringMatching(/[a-f0-9]{16}/),
336-
span_id: expect.stringMatching(/[a-f0-9]{16}/),
337-
start_timestamp: expect.any(Number),
343+
parent_span_id: expect.any(String),
344+
span_id: expect.any(String),
338345
status: 'ok',
339-
timestamp: expect.any(Number),
340-
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
346+
trace_id: expect.any(String),
341347
});
342348

343-
expect(transactionEvent.breadcrumbs).toContainEqual({
349+
expect(consumerEvent.breadcrumbs).toContainEqual({
344350
timestamp: expect.any(Number),
345351
type: 'supabase',
346352
category: 'db.rpc.pop',
@@ -353,42 +359,47 @@ test('Sends queue process spans with `schema(...).rpc(...)`', async ({ page, bas
353359
});
354360

355361
test('Sends queue process spans with `rpc(...)`', async ({ page, baseURL }) => {
356-
const httpTransactionPromise = waitForTransaction('supabase-nextjs', transactionEvent => {
362+
const consumerSpanPromise = waitForTransaction('supabase-nextjs', transactionEvent => {
357363
return (
358-
transactionEvent?.contexts?.trace?.op === 'http.server' &&
359-
transactionEvent?.transaction === 'GET /api/queue/consumer-rpc'
364+
transactionEvent?.contexts?.trace?.op === 'queue.process' && transactionEvent?.transaction === 'supabase.db.rpc'
360365
);
361366
});
362367

363368
const result = await fetch(`${baseURL}/api/queue/consumer-rpc`);
364-
const transactionEvent = await httpTransactionPromise;
369+
const consumerEvent = await consumerSpanPromise;
365370

366371
expect(result.status).toBe(200);
367372
expect(await result.json()).toEqual(
368-
expect.objectContaining({ data: [expect.objectContaining({ message: { title: 'Test Todo' }, msg_id: 2 })] }),
373+
expect.objectContaining({
374+
data: [
375+
expect.objectContaining({
376+
message: {
377+
title: 'Test Todo',
378+
},
379+
msg_id: expect.any(Number),
380+
}),
381+
],
382+
}),
369383
);
370-
371-
expect(transactionEvent.spans).toHaveLength(2);
372-
expect(transactionEvent.spans).toContainEqual({
384+
expect(consumerEvent.contexts.trace).toEqual({
373385
data: {
374386
'messaging.destination.name': 'todos',
375387
'messaging.system': 'supabase',
376388
'messaging.message.id': '2',
389+
'messaging.message.receive.latency': expect.any(Number),
377390
'sentry.op': 'queue.process',
378391
'sentry.origin': 'auto.db.supabase',
392+
'sentry.source': 'route',
379393
},
380-
description: 'supabase.db.rpc',
381394
op: 'queue.process',
382395
origin: 'auto.db.supabase',
383-
parent_span_id: expect.stringMatching(/[a-f0-9]{16}/),
384-
span_id: expect.stringMatching(/[a-f0-9]{16}/),
385-
start_timestamp: expect.any(Number),
396+
parent_span_id: expect.any(String),
397+
span_id: expect.any(String),
386398
status: 'ok',
387-
timestamp: expect.any(Number),
388-
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
399+
trace_id: expect.any(String),
389400
});
390401

391-
expect(transactionEvent.breadcrumbs).toContainEqual({
402+
expect(consumerEvent.breadcrumbs).toContainEqual({
392403
timestamp: expect.any(Number),
393404
type: 'supabase',
394405
category: 'db.rpc.pop',
@@ -505,41 +516,3 @@ test('Sends queue batch publish spans with `rpc(...)`', async ({ page, baseURL }
505516
},
506517
});
507518
});
508-
509-
test('Sends `read` queue operation spans with `rpc(...)`', async ({ page, baseURL }) => {
510-
const httpTransactionPromise = waitForTransaction('supabase-nextjs', transactionEvent => {
511-
return (
512-
transactionEvent?.contexts?.trace?.op === 'http.server' && transactionEvent?.transaction === 'GET /api/queue/receiver-rpc'
513-
);
514-
});
515-
const result = await fetch(`${baseURL}/api/queue/receiver-rpc`);
516-
const transactionEvent = await httpTransactionPromise;
517-
518-
expect(result.status).toBe(200);
519-
expect(await result.json()).toEqual(
520-
expect.objectContaining({ data: [
521-
expect.objectContaining({ message: { title: 'Test Todo 1' }, msg_id: 3 }),
522-
expect.objectContaining({ message: { title: 'Test Todo 2' }, msg_id: 4 }),
523-
] }),
524-
);
525-
526-
expect(transactionEvent.spans).toHaveLength(2);
527-
expect(transactionEvent.spans).toContainEqual({
528-
data: {
529-
'messaging.destination.name': 'todos',
530-
'messaging.system': 'supabase',
531-
'messaging.message.id': '3,4',
532-
'sentry.op': 'queue.receive',
533-
'sentry.origin': 'auto.db.supabase',
534-
},
535-
description: 'supabase.db.rpc',
536-
op: 'queue.receive',
537-
origin: 'auto.db.supabase',
538-
parent_span_id: expect.stringMatching(/[a-f0-9]{16}/),
539-
span_id: expect.stringMatching(/[a-f0-9]{16}/),
540-
start_timestamp: expect.any(Number),
541-
status: 'ok',
542-
timestamp: expect.any(Number),
543-
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
544-
});
545-
});

0 commit comments

Comments
 (0)