diff --git a/test/e2e/app-dir/navigation-and-querystring/app/layout.tsx b/test/e2e/app-dir/navigation-and-querystring/app/layout.tsx new file mode 100644 index 0000000000000..762515029332e --- /dev/null +++ b/test/e2e/app-dir/navigation-and-querystring/app/layout.tsx @@ -0,0 +1,8 @@ +export default function Layout({ children }) { + return ( + + + {children} + + ) +} diff --git a/test/e2e/app-dir/navigation-and-querystring/app/page.tsx b/test/e2e/app-dir/navigation-and-querystring/app/page.tsx new file mode 100644 index 0000000000000..36264c3c0849b --- /dev/null +++ b/test/e2e/app-dir/navigation-and-querystring/app/page.tsx @@ -0,0 +1,16 @@ +'use client' + +import Link from 'next/link' +import { useSearchParams } from 'next/navigation' + +export default function Page() { + const params = useSearchParams() + return ( + <> + + set Query + +
{params.toString()}
+ + ) +} diff --git a/test/e2e/app-dir/navigation-and-querystring/navigation-and-querystring.test.ts b/test/e2e/app-dir/navigation-and-querystring/navigation-and-querystring.test.ts new file mode 100644 index 0000000000000..3b3d49d87bc3b --- /dev/null +++ b/test/e2e/app-dir/navigation-and-querystring/navigation-and-querystring.test.ts @@ -0,0 +1,38 @@ +import { createNext, FileRef } from 'e2e-utils' +import { NextInstance } from 'test/lib/next-modes/base' +import webdriver from 'next-webdriver' +import { waitFor } from 'next-test-utils' + +describe('app-dir navigation and querystring', () => { + let next: NextInstance + + beforeAll(async () => { + next = await createNext({ + files: new FileRef(__dirname), + dependencies: { + react: 'latest', + 'react-dom': 'latest', + typescript: 'latest', + '@types/react': 'latest', + '@types/node': 'latest', + }, + }) + }) + afterAll(() => next.destroy()) + + it('should set query correctly', async () => { + const browser = await webdriver(next.url, '/') + expect(await browser.elementById('query').text()).toMatchInlineSnapshot( + `""` + ) + + browser.elementById('set-query').click() + await waitFor(200) + + expect(await browser.elementById('query').text()).toMatchInlineSnapshot( + `"a=b&c=d"` + ) + const url = new URL(await browser.url()) + expect(url.searchParams.toString()).toMatchInlineSnapshot(`"a=b&c=d"`) + }) +}) diff --git a/test/e2e/app-dir/navigation-and-querystring/next.config.js b/test/e2e/app-dir/navigation-and-querystring/next.config.js new file mode 100644 index 0000000000000..cfa3ac3d7aa94 --- /dev/null +++ b/test/e2e/app-dir/navigation-and-querystring/next.config.js @@ -0,0 +1,5 @@ +module.exports = { + experimental: { + appDir: true, + }, +}