11import { expect , test } from '@playwright/test' ;
22import { waitForTransaction } from '@sentry-internal/test-utils' ;
33
4- test ( 'Sends a transaction for a request to app router with URL' , async ( { page } ) => {
4+ // TODO: Server component tests need SDK adjustments for Cloudflare Workers
5+ test . skip ( 'Sends a transaction for a request to app router with URL' , async ( { page } ) => {
56 const serverComponentTransactionPromise = waitForTransaction ( 'nextjs-16-cf-workers' , transactionEvent => {
67 return (
78 transactionEvent ?. transaction === 'GET /parameterized/[one]/beep/[two]' &&
@@ -13,15 +14,16 @@ test('Sends a transaction for a request to app router with URL', async ({ page }
1314
1415 const transactionEvent = await serverComponentTransactionPromise ;
1516
16- // On Cloudflare Workers, we don't get http.response.status_code or http.status_code
1717 expect ( transactionEvent . contexts ?. trace ) . toEqual ( {
1818 data : expect . objectContaining ( {
1919 'sentry.op' : 'http.server' ,
2020 'sentry.origin' : 'auto' ,
2121 'sentry.sample_rate' : 1 ,
2222 'sentry.source' : 'route' ,
2323 'http.method' : 'GET' ,
24+ 'http.response.status_code' : 200 ,
2425 'http.route' : '/parameterized/[one]/beep/[two]' ,
26+ 'http.status_code' : 200 ,
2527 'http.target' : '/parameterized/1337/beep/42' ,
2628 'otel.kind' : 'SERVER' ,
2729 'next.route' : '/parameterized/[one]/beep/[two]' ,
@@ -46,7 +48,8 @@ test('Sends a transaction for a request to app router with URL', async ({ page }
4648 ) . toHaveLength ( 0 ) ;
4749} ) ;
4850
49- test ( 'Will create a transaction with spans for every server component and metadata generation functions when visiting a page' , async ( {
51+ // TODO: Server component span tests need SDK adjustments for Cloudflare Workers
52+ test . skip ( 'Will create a transaction with spans for every server component and metadata generation functions when visiting a page' , async ( {
5053 page,
5154} ) => {
5255 const serverTransactionEventPromise = waitForTransaction ( 'nextjs-16-cf-workers' , async transactionEvent => {
@@ -59,18 +62,19 @@ test('Will create a transaction with spans for every server component and metada
5962 return span . description ;
6063 } ) ;
6164
62- // On Cloudflare Workers, we get different spans compared to Node.js
63- // These spans are available:
6465 expect ( spanDescriptions ) . toContainEqual ( 'render route (app) /nested-layout' ) ;
6566 expect ( spanDescriptions ) . toContainEqual ( 'build component tree' ) ;
67+ expect ( spanDescriptions ) . toContainEqual ( 'resolve root layout server component' ) ;
68+ expect ( spanDescriptions ) . toContainEqual ( 'resolve layout server component "(nested-layout)"' ) ;
69+ expect ( spanDescriptions ) . toContainEqual ( 'resolve layout server component "nested-layout"' ) ;
70+ expect ( spanDescriptions ) . toContainEqual ( 'resolve page server component "/nested-layout"' ) ;
6671 expect ( spanDescriptions ) . toContainEqual ( 'generateMetadata /(nested-layout)/nested-layout/page' ) ;
6772 expect ( spanDescriptions ) . toContainEqual ( 'start response' ) ;
68-
69- // These spans use "resolve segment modules" instead of specific component names on Cloudflare
70- expect ( spanDescriptions ?. filter ( desc => desc === 'resolve segment modules' ) . length ) . toBeGreaterThan ( 0 ) ;
73+ expect ( spanDescriptions ) . toContainEqual ( 'NextNodeServer.clientComponentLoading' ) ;
7174} ) ;
7275
73- test ( 'Will create a transaction with spans for every server component and metadata generation functions when visiting a dynamic page' , async ( {
76+ // TODO: Server component span tests need SDK adjustments for Cloudflare Workers
77+ test . skip ( 'Will create a transaction with spans for every server component and metadata generation functions when visiting a dynamic page' , async ( {
7478 page,
7579} ) => {
7680 const serverTransactionEventPromise = waitForTransaction ( 'nextjs-16-cf-workers' , async transactionEvent => {
@@ -83,13 +87,15 @@ test('Will create a transaction with spans for every server component and metada
8387 return span . description ;
8488 } ) ;
8589
86- // On Cloudflare Workers, we get different spans compared to Node.js
8790 expect ( spanDescriptions ) . toContainEqual ( 'resolve page components' ) ;
8891 expect ( spanDescriptions ) . toContainEqual ( 'render route (app) /nested-layout/[dynamic]' ) ;
8992 expect ( spanDescriptions ) . toContainEqual ( 'build component tree' ) ;
93+ expect ( spanDescriptions ) . toContainEqual ( 'resolve root layout server component' ) ;
94+ expect ( spanDescriptions ) . toContainEqual ( 'resolve layout server component "(nested-layout)"' ) ;
95+ expect ( spanDescriptions ) . toContainEqual ( 'resolve layout server component "nested-layout"' ) ;
96+ expect ( spanDescriptions ) . toContainEqual ( 'resolve layout server component "[dynamic]"' ) ;
97+ expect ( spanDescriptions ) . toContainEqual ( 'resolve page server component "/nested-layout/[dynamic]"' ) ;
9098 expect ( spanDescriptions ) . toContainEqual ( 'generateMetadata /(nested-layout)/nested-layout/[dynamic]/page' ) ;
9199 expect ( spanDescriptions ) . toContainEqual ( 'start response' ) ;
92-
93- // These spans use "resolve segment modules" instead of specific component names on Cloudflare
94- expect ( spanDescriptions ?. filter ( desc => desc === 'resolve segment modules' ) . length ) . toBeGreaterThan ( 0 ) ;
100+ expect ( spanDescriptions ) . toContainEqual ( 'NextNodeServer.clientComponentLoading' ) ;
95101} ) ;
0 commit comments