diff --git a/packages/next/server/app-render.tsx b/packages/next/server/app-render.tsx index ba1a48cd0409..a7843dd646d2 100644 --- a/packages/next/server/app-render.tsx +++ b/packages/next/server/app-render.tsx @@ -479,8 +479,7 @@ 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 = !firstItem && segment === '' + const isPage = typeof page !== undefined 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..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') @@ -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,