File tree Expand file tree Collapse file tree 7 files changed +72
-9
lines changed
packages/next/src/lib/metadata
test/e2e/app-dir/reexport-client-component-metadata Expand file tree Collapse file tree 7 files changed +72
-9
lines changed Original file line number Diff line number Diff line change @@ -28,7 +28,6 @@ import {
2828import { resolveOpenGraph , resolveTwitter } from './resolvers/resolve-opengraph'
2929import { resolveTitle } from './resolvers/resolve-title'
3030import { resolveAsArrayOrUndefined } from './generate/utils'
31- import { isClientReference } from '../client-reference'
3231import {
3332 getComponentTypeModule ,
3433 getLayoutOrPageModule ,
@@ -322,9 +321,6 @@ async function getDefinedViewport(
322321 props : any ,
323322 tracingProps : { route : string }
324323) : Promise < Viewport | ViewportResolver | null > {
325- if ( isClientReference ( mod ) ) {
326- return null
327- }
328324 if ( typeof mod . generateViewport === 'function' ) {
329325 const { route } = tracingProps
330326 return ( parent : ResolvingViewport ) =>
@@ -347,11 +343,6 @@ async function getDefinedMetadata(
347343 props : any ,
348344 tracingProps : { route : string }
349345) : Promise < Metadata | MetadataResolver | null > {
350- // Layer is a client component, we just skip it. It can't have metadata exported.
351- // Return early to avoid accessing properties error for client references.
352- if ( isClientReference ( mod ) ) {
353- return null
354- }
355346 if ( typeof mod . generateMetadata === 'function' ) {
356347 const { route } = tracingProps
357348 return ( parent : ResolvingMetadata ) =>
Original file line number Diff line number Diff line change 1+ export default function Layout ( { children } : { children : React . ReactNode } ) {
2+ return (
3+ < html >
4+ < body > { children } </ body >
5+ </ html >
6+ )
7+ }
8+
9+ export const metadata = {
10+ title : 'Root Layout' ,
11+ description : 'Root Description' ,
12+ }
Original file line number Diff line number Diff line change 1+ 'use client'
2+
3+ export default function PageContent ( ) {
4+ return < h1 > Page 2 Content</ h1 >
5+ }
Original file line number Diff line number Diff line change 1+ import PageContent from './page-content'
2+
3+ export default PageContent
Original file line number Diff line number Diff line change 1+ 'use client'
2+
3+ export default function PageContent ( ) {
4+ return < h1 > Page 1 Content</ h1 >
5+ }
Original file line number Diff line number Diff line change 1+ import PageContent from './page-content'
2+
3+ export const metadata = {
4+ title : 'Page 1' ,
5+ description : 'Page 1 Description' ,
6+ }
7+
8+ export default PageContent
Original file line number Diff line number Diff line change 1+ import { nextTestSetup } from 'e2e-utils'
2+
3+ describe ( 'app-dir - reexport-client-component-metadata' , ( ) => {
4+ const { next } = nextTestSetup ( {
5+ files : __dirname ,
6+ } )
7+
8+ it ( 'should render the page metadata if override' , async ( ) => {
9+ const $ = await next . render$ ( '/override' )
10+ expect ( $ ( 'title' ) . text ( ) ) . toBe ( 'Page 1' )
11+ expect ( $ ( 'meta[name="description"]' ) . attr ( 'content' ) ) . toBe (
12+ 'Page 1 Description'
13+ )
14+
15+ const browser = await next . browser ( '/override' )
16+ expect ( await browser . elementByCss ( 'title' ) . text ( ) ) . toBe ( 'Page 1' )
17+ expect (
18+ await browser
19+ . elementByCss ( 'meta[name="description"]' )
20+ . getAttribute ( 'content' )
21+ ) . toBe ( 'Page 1 Description' )
22+ } )
23+
24+ it ( 'should render the layout metadata if not override' , async ( ) => {
25+ const $ = await next . render$ ( '/no-override' )
26+ expect ( $ ( 'title' ) . text ( ) ) . toBe ( 'Root Layout' )
27+ expect ( $ ( 'meta[name="description"]' ) . attr ( 'content' ) ) . toBe (
28+ 'Root Description'
29+ )
30+
31+ const browser = await next . browser ( '/no-override' )
32+ expect ( await browser . elementByCss ( 'title' ) . text ( ) ) . toBe ( 'Root Layout' )
33+ expect (
34+ await browser
35+ . elementByCss ( 'meta[name="description"]' )
36+ . getAttribute ( 'content' )
37+ ) . toBe ( 'Root Description' )
38+ } )
39+ } )
You can’t perform that action at this time.
0 commit comments