From c25c857c9c94227ec74709435c33f31a7d983cfd Mon Sep 17 00:00:00 2001 From: Jan Kaifer Date: Fri, 16 Dec 2022 11:22:52 +0100 Subject: [PATCH] Test that adding query can be detected by useSearchParams (#43969) --- .../navigation-and-querystring/app/layout.tsx | 8 ++++ .../navigation-and-querystring/app/page.tsx | 16 ++++++++ .../navigation-and-querystring.test.ts | 38 +++++++++++++++++++ .../navigation-and-querystring/next.config.js | 5 +++ 4 files changed, 67 insertions(+) create mode 100644 test/e2e/app-dir/navigation-and-querystring/app/layout.tsx create mode 100644 test/e2e/app-dir/navigation-and-querystring/app/page.tsx create mode 100644 test/e2e/app-dir/navigation-and-querystring/navigation-and-querystring.test.ts create mode 100644 test/e2e/app-dir/navigation-and-querystring/next.config.js 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, + }, +}