Skip to content

Commit a9f105d

Browse files
committed
test: added e2e test
1 parent e112612 commit a9f105d

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import * as Sentry from '@sentry/nextjs';
2+
3+
/**
4+
* Tests generateMetadata function with cache components, this calls the propagation context to be set
5+
* Which will generate and set a trace id in the propagation context, which should trigger the random API error if unpatched
6+
* See: https://github.com/getsentry/sentry-javascript/issues/18392
7+
*/
8+
export function generateMetadata() {
9+
return {
10+
title: 'Cache Components Metadata Test',
11+
};
12+
}
13+
14+
export default function Page() {
15+
return (
16+
<>
17+
<h1>This will be pre-rendered</h1>
18+
<DynamicContent />
19+
</>
20+
);
21+
}
22+
23+
async function DynamicContent() {
24+
const getTodos = async () => {
25+
return Sentry.startSpan({ name: 'getTodos', op: 'get.todos' }, async () => {
26+
'use cache';
27+
await new Promise(resolve => setTimeout(resolve, 100));
28+
return [1, 2, 3, 4, 5];
29+
});
30+
};
31+
32+
const todos = await getTodos();
33+
34+
return <div id="todos-fetched">Todos fetched: {todos.length}</div>;
35+
}

dev-packages/e2e-tests/test-applications/nextjs-16-cacheComponents/tests/cacheComponents.spec.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,16 @@ test('Should render suspense component', async ({ page }) => {
2626
expect(serverTx.spans?.filter(span => span.op === 'get.todos').length).toBeGreaterThan(0);
2727
await expect(page.locator('#todos-fetched')).toHaveText('Todos fetched: 5');
2828
});
29+
30+
test('Should generate metadata', async ({ page }) => {
31+
const serverTxPromise = waitForTransaction('nextjs-16-cacheComponents', async transactionEvent => {
32+
return transactionEvent.contexts?.trace?.op === 'http.server';
33+
});
34+
35+
await page.goto('/metadata');
36+
const serverTx = await serverTxPromise;
37+
38+
expect(serverTx.spans?.filter(span => span.op === 'get.todos')).toHaveLength(0);
39+
await expect(page.locator('#todos-fetched')).toHaveText('Todos fetched: 5');
40+
await expect(page).toHaveTitle('Cache Components Metadata Test');
41+
});

0 commit comments

Comments
 (0)