diff --git a/packages/next/server/dev/next-dev-server.ts b/packages/next/server/dev/next-dev-server.ts index 389f283c367fa..41dcfd1f4e035 100644 --- a/packages/next/server/dev/next-dev-server.ts +++ b/packages/next/server/dev/next-dev-server.ts @@ -1226,7 +1226,9 @@ export default class DevServer extends Server { res .body( JSON.stringify({ - pages: this.sortedRoutes, + pages: this.sortedRoutes?.filter( + (route) => !this.appPathRoutes![route] + ), }) ) .send() diff --git a/test/e2e/app-dir/app/app/dynamic-pages-route-app-overlap/app-dir/page.js b/test/e2e/app-dir/app/app/dynamic-pages-route-app-overlap/app-dir/page.js new file mode 100644 index 0000000000000..2b529331402f7 --- /dev/null +++ b/test/e2e/app-dir/app/app/dynamic-pages-route-app-overlap/app-dir/page.js @@ -0,0 +1,7 @@ +export default function Page() { + return ( +
+ hello from app/dynamic-pages-route-app-overlap/app-dir/page +
+ ) +} diff --git a/test/e2e/app-dir/app/pages/dynamic-pages-route-app-overlap.js b/test/e2e/app-dir/app/pages/dynamic-pages-route-app-overlap.js new file mode 100644 index 0000000000000..725caae598137 --- /dev/null +++ b/test/e2e/app-dir/app/pages/dynamic-pages-route-app-overlap.js @@ -0,0 +1,9 @@ +import Link from 'next/link' + +export default function Page() { + return ( + + To /dynamic-pages-route-app-overlap/app-dir + + ) +} diff --git a/test/e2e/app-dir/app/pages/dynamic-pages-route-app-overlap/[slug].js b/test/e2e/app-dir/app/pages/dynamic-pages-route-app-overlap/[slug].js new file mode 100644 index 0000000000000..80f7029a0281e --- /dev/null +++ b/test/e2e/app-dir/app/pages/dynamic-pages-route-app-overlap/[slug].js @@ -0,0 +1,7 @@ +export default function Page() { + return ( ++ hello from pages/dynamic-pages-route-app-overlap/[slug] +
+ ) +} diff --git a/test/e2e/app-dir/index.test.ts b/test/e2e/app-dir/index.test.ts index 5b0a2e34d72d2..af5fa3044f754 100644 --- a/test/e2e/app-dir/index.test.ts +++ b/test/e2e/app-dir/index.test.ts @@ -601,6 +601,29 @@ describe('app dir', () => { await browser.close() } }) + + it('should navigate to pages dynamic route from pages page if it overlaps with an app page', async () => { + const browser = await webdriver( + next.url, + '/dynamic-pages-route-app-overlap' + ) + + try { + // Click the link. + await browser.elementById('pages-link').click() + expect(await browser.waitForElementByCss('#pages-text').text()).toBe( + 'hello from pages/dynamic-pages-route-app-overlap/[slug]' + ) + + // When refreshing the browser, the app page should be rendered + await browser.refresh() + expect(await browser.waitForElementByCss('#app-text').text()).toBe( + 'hello from app/dynamic-pages-route-app-overlap/app-dir/page' + ) + } finally { + await browser.close() + } + }) }) describe('server components', () => {