File tree Expand file tree Collapse file tree 2 files changed +50
-0
lines changed
dev-packages/e2e-tests/test-applications/nextjs-16-cacheComponents Expand file tree Collapse file tree 2 files changed +50
-0
lines changed Original file line number Diff line number Diff line change 1+ import * as Sentry from '@sentry/nextjs' ;
2+
3+ function fetchPost ( ) {
4+ return Promise . resolve ( { id : '1' , title : 'Post 1' } ) ;
5+ }
6+
7+ export async function generateMetadata ( ) {
8+ const { id } = await fetchPost ( ) ;
9+ const product = `Product: ${ id } ` ;
10+
11+ return {
12+ title : product ,
13+ } ;
14+ }
15+
16+ export default function Page ( ) {
17+ return (
18+ < >
19+ < h1 > This will be pre-rendered</ h1 >
20+ < DynamicContent />
21+ </ >
22+ ) ;
23+ }
24+
25+ async function DynamicContent ( ) {
26+ const getTodos = async ( ) => {
27+ return Sentry . startSpan ( { name : 'getTodos' , op : 'get.todos' } , async ( ) => {
28+ 'use cache' ;
29+ await new Promise ( resolve => setTimeout ( resolve , 100 ) ) ;
30+ return [ 1 , 2 , 3 , 4 , 5 ] ;
31+ } ) ;
32+ } ;
33+
34+ const todos = await getTodos ( ) ;
35+
36+ return < div id = "todos-fetched" > Todos fetched: { todos . length } </ div > ;
37+ }
Original file line number Diff line number Diff line change @@ -39,3 +39,16 @@ test('Should generate metadata', async ({ page }) => {
3939 await expect ( page . locator ( '#todos-fetched' ) ) . toHaveText ( 'Todos fetched: 5' ) ;
4040 await expect ( page ) . toHaveTitle ( 'Cache Components Metadata Test' ) ;
4141} ) ;
42+
43+ test ( 'Should generate metadata async' , async ( { page } ) => {
44+ const serverTxPromise = waitForTransaction ( 'nextjs-16-cacheComponents' , async transactionEvent => {
45+ return transactionEvent . contexts ?. trace ?. op === 'http.server' ;
46+ } ) ;
47+
48+ await page . goto ( '/metadata-async' ) ;
49+ const serverTx = await serverTxPromise ;
50+
51+ expect ( serverTx . spans ?. filter ( span => span . op === 'get.todos' ) ) . toHaveLength ( 0 ) ;
52+ await expect ( page . locator ( '#todos-fetched' ) ) . toHaveText ( 'Todos fetched: 5' ) ;
53+ await expect ( page ) . toHaveTitle ( 'Product: 1' ) ;
54+ } ) ;
You can’t perform that action at this time.
0 commit comments