11import { expect , test } from '@playwright/test' ;
22import { waitForTransaction } from '@sentry-internal/test-utils' ;
3+ import { isNext13 } from './nextjsVersion' ;
34
45test ( 'Will create a transaction with spans for every server component and metadata generation functions when visiting a page' , async ( {
56 page,
@@ -14,17 +15,20 @@ test('Will create a transaction with spans for every server component and metada
1415 return span . description ;
1516 } ) ;
1617
17- expect ( spanDescriptions ) . toContainEqual ( 'resolve page components' ) ;
1818 expect ( spanDescriptions ) . toContainEqual ( 'render route (app) /nested-layout' ) ;
19- expect ( spanDescriptions ) . toContainEqual ( 'build component tree' ) ;
20- expect ( spanDescriptions ) . toContainEqual ( 'resolve root layout server component' ) ;
21- expect ( spanDescriptions ) . toContainEqual ( 'resolve layout server component "(nested-layout)"' ) ;
22- expect ( spanDescriptions ) . toContainEqual ( 'resolve layout server component "nested-layout"' ) ;
23- expect ( spanDescriptions ) . toContainEqual ( 'resolve page server component "/nested-layout"' ) ;
2419 expect ( spanDescriptions ) . toContainEqual ( 'generateMetadata /(nested-layout)/nested-layout/page' ) ;
2520 expect ( spanDescriptions ) . toContainEqual ( 'Page.generateMetadata (/(nested-layout)/nested-layout)' ) ;
26- expect ( spanDescriptions ) . toContainEqual ( 'start response' ) ;
27- expect ( spanDescriptions ) . toContainEqual ( 'NextNodeServer.clientComponentLoading' ) ;
21+
22+ // Next.js 13 has limited OTEL support for server components, so we don't expect to see the following spans
23+ if ( ! isNext13 ) {
24+ expect ( spanDescriptions ) . toContainEqual ( 'resolve page components' ) ;
25+ expect ( spanDescriptions ) . toContainEqual ( 'build component tree' ) ;
26+ expect ( spanDescriptions ) . toContainEqual ( 'resolve root layout server component' ) ;
27+ expect ( spanDescriptions ) . toContainEqual ( 'resolve layout server component "(nested-layout)"' ) ;
28+ expect ( spanDescriptions ) . toContainEqual ( 'resolve layout server component "nested-layout"' ) ;
29+ expect ( spanDescriptions ) . toContainEqual ( 'resolve page server component "/nested-layout"' ) ;
30+ expect ( spanDescriptions ) . toContainEqual ( 'start response' ) ;
31+ }
2832} ) ;
2933
3034test ( 'Will create a transaction with spans for every server component and metadata generation functions when visiting a dynamic page' , async ( {
@@ -41,16 +45,19 @@ test('Will create a transaction with spans for every server component and metada
4145 return span . description ;
4246 } ) ;
4347
44- expect ( spanDescriptions ) . toContainEqual ( 'resolve page components' ) ;
4548 expect ( spanDescriptions ) . toContainEqual ( 'render route (app) /nested-layout/[dynamic]' ) ;
46- expect ( spanDescriptions ) . toContainEqual ( 'build component tree' ) ;
47- expect ( spanDescriptions ) . toContainEqual ( 'resolve root layout server component' ) ;
48- expect ( spanDescriptions ) . toContainEqual ( 'resolve layout server component "(nested-layout)"' ) ;
49- expect ( spanDescriptions ) . toContainEqual ( 'resolve layout server component "nested-layout"' ) ;
50- expect ( spanDescriptions ) . toContainEqual ( 'resolve layout server component "[dynamic]"' ) ;
51- expect ( spanDescriptions ) . toContainEqual ( 'resolve page server component "/nested-layout/[dynamic]"' ) ;
5249 expect ( spanDescriptions ) . toContainEqual ( 'generateMetadata /(nested-layout)/nested-layout/[dynamic]/page' ) ;
5350 expect ( spanDescriptions ) . toContainEqual ( 'Page.generateMetadata (/(nested-layout)/nested-layout/[dynamic])' ) ;
54- expect ( spanDescriptions ) . toContainEqual ( 'start response' ) ;
55- expect ( spanDescriptions ) . toContainEqual ( 'NextNodeServer.clientComponentLoading' ) ;
51+
52+ // Next.js 13 has limited OTEL support for server components, so we don't expect to see the following spans
53+ if ( ! isNext13 ) {
54+ expect ( spanDescriptions ) . toContainEqual ( 'resolve page components' ) ;
55+ expect ( spanDescriptions ) . toContainEqual ( 'build component tree' ) ;
56+ expect ( spanDescriptions ) . toContainEqual ( 'resolve root layout server component' ) ;
57+ expect ( spanDescriptions ) . toContainEqual ( 'resolve layout server component "(nested-layout)"' ) ;
58+ expect ( spanDescriptions ) . toContainEqual ( 'resolve layout server component "nested-layout"' ) ;
59+ expect ( spanDescriptions ) . toContainEqual ( 'resolve layout server component "[dynamic]"' ) ;
60+ expect ( spanDescriptions ) . toContainEqual ( 'resolve page server component "/nested-layout/[dynamic]"' ) ;
61+ expect ( spanDescriptions ) . toContainEqual ( 'start response' ) ;
62+ }
5663} ) ;
0 commit comments