From 62e8c9dd453839a40627a98803ecf1f0e401eacd Mon Sep 17 00:00:00 2001 From: Jiachi Liu Date: Tue, 11 Jun 2024 20:42:10 +0200 Subject: [PATCH] test: add name re-export from client components as page case (#66760) ### What Add new test case where a named export from client component is being exported as page ### Why We found this case while investigating the errors triggered introduced by #66286 , adding this test to avoid future regression --- .../app-dir/app-routes-client-component/app/layout.js | 7 +++++++ .../e2e/app-dir/rsc-basic/app/reexport-named/client.js | 9 +++++++++ test/e2e/app-dir/rsc-basic/app/reexport-named/page.js | 3 +++ .../client-index.js | 0 .../{reexport-client => reexport-namespace}/client.js | 2 +- .../{reexport-client => reexport-namespace}/page.js | 0 test/e2e/app-dir/rsc-basic/rsc-basic.test.ts | 10 ++++++++++ 7 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 test/e2e/app-dir/app-routes-client-component/app/layout.js create mode 100644 test/e2e/app-dir/rsc-basic/app/reexport-named/client.js create mode 100644 test/e2e/app-dir/rsc-basic/app/reexport-named/page.js rename test/e2e/app-dir/rsc-basic/app/{reexport-client => reexport-namespace}/client-index.js (100%) rename test/e2e/app-dir/rsc-basic/app/{reexport-client => reexport-namespace}/client.js (54%) rename test/e2e/app-dir/rsc-basic/app/{reexport-client => reexport-namespace}/page.js (100%) diff --git a/test/e2e/app-dir/app-routes-client-component/app/layout.js b/test/e2e/app-dir/app-routes-client-component/app/layout.js new file mode 100644 index 0000000000..803f17d863 --- /dev/null +++ b/test/e2e/app-dir/app-routes-client-component/app/layout.js @@ -0,0 +1,7 @@ +export default function RootLayout({ children }) { + return ( + + {children} + + ) +} diff --git a/test/e2e/app-dir/rsc-basic/app/reexport-named/client.js b/test/e2e/app-dir/rsc-basic/app/reexport-named/client.js new file mode 100644 index 0000000000..44131eed1e --- /dev/null +++ b/test/e2e/app-dir/rsc-basic/app/reexport-named/client.js @@ -0,0 +1,9 @@ +'use client' + +export function PageComponent() { + return ( +
+

Client Title

+
+ ) +} diff --git a/test/e2e/app-dir/rsc-basic/app/reexport-named/page.js b/test/e2e/app-dir/rsc-basic/app/reexport-named/page.js new file mode 100644 index 0000000000..e86f8465b6 --- /dev/null +++ b/test/e2e/app-dir/rsc-basic/app/reexport-named/page.js @@ -0,0 +1,3 @@ +import { PageComponent } from './client' + +export default PageComponent diff --git a/test/e2e/app-dir/rsc-basic/app/reexport-client/client-index.js b/test/e2e/app-dir/rsc-basic/app/reexport-namespace/client-index.js similarity index 100% rename from test/e2e/app-dir/rsc-basic/app/reexport-client/client-index.js rename to test/e2e/app-dir/rsc-basic/app/reexport-namespace/client-index.js diff --git a/test/e2e/app-dir/rsc-basic/app/reexport-client/client.js b/test/e2e/app-dir/rsc-basic/app/reexport-namespace/client.js similarity index 54% rename from test/e2e/app-dir/rsc-basic/app/reexport-client/client.js rename to test/e2e/app-dir/rsc-basic/app/reexport-namespace/client.js index a31f2e420a..a65202a7ca 100644 --- a/test/e2e/app-dir/rsc-basic/app/reexport-client/client.js +++ b/test/e2e/app-dir/rsc-basic/app/reexport-namespace/client.js @@ -1,5 +1,5 @@ 'use client' export function Foo() { - return
Foo
+ return
Foo
} diff --git a/test/e2e/app-dir/rsc-basic/app/reexport-client/page.js b/test/e2e/app-dir/rsc-basic/app/reexport-namespace/page.js similarity index 100% rename from test/e2e/app-dir/rsc-basic/app/reexport-client/page.js rename to test/e2e/app-dir/rsc-basic/app/reexport-namespace/page.js diff --git a/test/e2e/app-dir/rsc-basic/rsc-basic.test.ts b/test/e2e/app-dir/rsc-basic/rsc-basic.test.ts index db618770ae..8cf289f7f7 100644 --- a/test/e2e/app-dir/rsc-basic/rsc-basic.test.ts +++ b/test/e2e/app-dir/rsc-basic/rsc-basic.test.ts @@ -109,6 +109,16 @@ describe('app dir - rsc basics', () => { expect($('#return-undefined-layout').html()).toBeEmpty() }) + it('should handle named client components imported as page', async () => { + const $ = await next.render$('/reexport-named') + expect($('#client-title').text()).toBe('Client Title') + }) + + it('should handle client components imported as namespace', async () => { + const $ = await next.render$('/reexport-namespace') + expect($('#foo').text()).toBe('Foo') + }) + it('should render server components correctly', async () => { const homeHTML = await next.render('/', null, { headers: {