diff --git a/test/e2e/app-dir/app/app/back-forward/[id]/page.js b/test/e2e/app-dir/app/app/back-forward/[id]/page.js new file mode 100644 index 0000000000000..12da862d8a19e --- /dev/null +++ b/test/e2e/app-dir/app/app/back-forward/[id]/page.js @@ -0,0 +1,24 @@ +'use client' +import Link from 'next/link' +import { useRouter } from 'next/navigation' + +export default function Page({ params }) { + const router = useRouter() + return ( + <> +

Hello from {params.id}

+ + Go to {params.id === '1' ? '2' : '1'} + + + + + ) +} diff --git a/test/e2e/app-dir/index.test.ts b/test/e2e/app-dir/index.test.ts index 7fac781429347..f9de21f69d17b 100644 --- a/test/e2e/app-dir/index.test.ts +++ b/test/e2e/app-dir/index.test.ts @@ -913,6 +913,42 @@ describe('app dir', () => { await browser.close() } }) + + it('should support router.back and router.forward', async () => { + const browser = await webdriver(next.url, '/back-forward/1') + + const firstMessage = 'Hello from 1' + const secondMessage = 'Hello from 2' + + expect(await browser.elementByCss('#message-1').text()).toBe( + firstMessage + ) + + try { + const message2 = await browser + .waitForElementByCss('#to-other-page') + .click() + .waitForElementByCss('#message-2') + .text() + expect(message2).toBe(secondMessage) + + const message1 = await browser + .waitForElementByCss('#back-button') + .click() + .waitForElementByCss('#message-1') + .text() + expect(message1).toBe(firstMessage) + + const message2Again = await browser + .waitForElementByCss('#forward-button') + .click() + .waitForElementByCss('#message-2') + .text() + expect(message2Again).toBe(secondMessage) + } finally { + await browser.close() + } + }) }) describe('hooks', () => {