From a6ca66cb2021b86cc053d054e9b7562aef75eff5 Mon Sep 17 00:00:00 2001 From: Jiachi Liu Date: Sat, 9 Jul 2022 15:40:19 +0200 Subject: [PATCH 1/4] Fix app dir page detection --- packages/next/server/app-render.tsx | 2 +- test/e2e/app-dir/rsc-basic.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/next/server/app-render.tsx b/packages/next/server/app-render.tsx index ba1a48cd0409..63328ba4a919 100644 --- a/packages/next/server/app-render.tsx +++ b/packages/next/server/app-render.tsx @@ -480,7 +480,7 @@ export async function renderToHTML( const Loading = loading ? interopDefault(loading()) : undefined const layoutOrPageMod = layout ? layout() : page ? page() : undefined // TODO: improve detection - const isPage = !firstItem && segment === '' + const isPage = segment === '' && !parallelRoutes.children const isClientComponentModule = layoutOrPageMod && !layoutOrPageMod.hasOwnProperty('__next_rsc__') diff --git a/test/e2e/app-dir/rsc-basic.test.ts b/test/e2e/app-dir/rsc-basic.test.ts index a2d605a0f4dc..aa860b3d3cd9 100644 --- a/test/e2e/app-dir/rsc-basic.test.ts +++ b/test/e2e/app-dir/rsc-basic.test.ts @@ -180,7 +180,7 @@ describe('app dir - react server components', () => { expect(content).toMatchInlineSnapshot('"next_streaming_data"') }) - it.skip('should support next/link in server components', async () => { + it('should support next/link in server components', async () => { const linkHTML = await renderViaHTTP(next.url, '/next-api/link') const linkText = getNodeBySelector( linkHTML, From 7cfc681f066cb68984d9e9a7c1c7499c3605422c Mon Sep 17 00:00:00 2001 From: Jiachi Liu Date: Sat, 9 Jul 2022 15:48:06 +0200 Subject: [PATCH 2/4] check components.page --- packages/next/server/app-render.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/next/server/app-render.tsx b/packages/next/server/app-render.tsx index 63328ba4a919..c5eaec0341da 100644 --- a/packages/next/server/app-render.tsx +++ b/packages/next/server/app-render.tsx @@ -480,7 +480,7 @@ export async function renderToHTML( const Loading = loading ? interopDefault(loading()) : undefined const layoutOrPageMod = layout ? layout() : page ? page() : undefined // TODO: improve detection - const isPage = segment === '' && !parallelRoutes.children + const isPage = typeof page !== undefined const isClientComponentModule = layoutOrPageMod && !layoutOrPageMod.hasOwnProperty('__next_rsc__') From 544f421fd0e612ba4c1d381f4a7e542cd1da7bfb Mon Sep 17 00:00:00 2001 From: Jiachi Liu Date: Sat, 9 Jul 2022 16:06:03 +0200 Subject: [PATCH 3/4] use check instead of expect --- test/e2e/app-dir/rsc-basic.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/app-dir/rsc-basic.test.ts b/test/e2e/app-dir/rsc-basic.test.ts index aa860b3d3cd9..c9b7564c9e36 100644 --- a/test/e2e/app-dir/rsc-basic.test.ts +++ b/test/e2e/app-dir/rsc-basic.test.ts @@ -155,10 +155,10 @@ describe('app dir - react server components', () => { await browser.waitForElementByCss('#goto-next-link').click() await new Promise((res) => setTimeout(res, 1000)) - expect(await browser.url()).toBe(`${next.url}/next-api/link`) + await check(() => browser.url(), `${next.url}/next-api/link`) await browser.waitForElementByCss('#goto-home').click() await new Promise((res) => setTimeout(res, 1000)) - expect(await browser.url()).toBe(`${next.url}/root`) + await check(() => browser.url(), `${next.url}/root`) const content = await browser.elementByCss('body').text() expect(content).toContain('component:root.server') From 119fcf45bf614badbc6a17c6b46ded205987e0ee Mon Sep 17 00:00:00 2001 From: Jiachi Liu Date: Sat, 9 Jul 2022 16:35:01 +0200 Subject: [PATCH 4/4] rm comment --- packages/next/server/app-render.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/next/server/app-render.tsx b/packages/next/server/app-render.tsx index c5eaec0341da..a7843dd646d2 100644 --- a/packages/next/server/app-render.tsx +++ b/packages/next/server/app-render.tsx @@ -479,7 +479,6 @@ export async function renderToHTML( }): { Component: React.ComponentType } => { const Loading = loading ? interopDefault(loading()) : undefined const layoutOrPageMod = layout ? layout() : page ? page() : undefined - // TODO: improve detection const isPage = typeof page !== undefined const isClientComponentModule =