rsnext/test/e2e/app-dir/navigation/app
Keyan Zhang 8e202610a4
App Router: fix relative query/hash handling in next/link and router push/replace (#49521)
## Problem
Relative hash/query handling in `next/link` (e.g. `<Link
href="#hello">`) is broken in App Router, especially if you're on a
nested route.

This wasn't a problem in `/pages` because the href always get fully
resolved in `<NextLink>`; i.e. if you have `<Link href="#hash" />` on
`/hello`, it'll resolve the href to `/hello#hash` and use that
everywhere.

However, in App Router, `<Link>` no longer uses the current location to
resolve the href:
5451564f36/packages/next/src/client/link.tsx (L450-L457)

Therefore navigating with `new URL(href, location.origin)` will skip the
current path and always apply the relative hash/query to the _root_
route:
5451564f36/packages/next/src/client/components/app-router.tsx (L208-L215)

## Solution
Not 100% sure if this is the best solution, but since `app-router` is
already reading `window.location`, I'm using `location.href` as the base
URL to resolve the href.

I grep'd for `location.origin` and checked other callsites; seems like
only `app-router` deals with user specified hrefs.

Fixes https://github.com/vercel/next.js/issues/42157 &
https://github.com/vercel/next.js/issues/44139, and potentially
https://github.com/vercel/next.js/issues/48554 and
https://github.com/vercel/next.js/issues/22838

## Test Plan
```
pnpm testheadless test/e2e/app-dir/navigation
```

---------
2023-05-28 10:29:00 -07:00
..
external-push/[storageKey] app router: Fix infinite redirect loop in MPA navigation (#49058) 2023-05-03 11:04:53 +02:00
hash App Router: fix relative query/hash handling in next/link and router push/replace (#49521) 2023-05-28 10:29:00 -07:00
hash-link-back-to-same-page Fix going back to page after applying hash link (#50006) 2023-05-18 16:33:58 -07:00
nested-navigation Separate navigation and hooks tests into new test suites (#45766) 2023-02-10 00:38:39 +00:00
nested-relative-query-and-hash App Router: fix relative query/hash handling in next/link and router push/replace (#49521) 2023-05-28 10:29:00 -07:00
not-found Failing tests for 404 back/forward (#50047) 2023-05-22 17:04:36 +02:00
redirect app router: Fix infinite redirect loop in MPA navigation (#49058) 2023-05-03 11:04:53 +02:00
redirect-dest Separate navigation and hooks tests into new test suites (#45766) 2023-02-10 00:38:39 +00:00
layout.js Add test for next-found and redirect for metadata (#46248) 2023-02-22 18:54:14 +01:00
page.js Separate navigation and hooks tests into new test suites (#45766) 2023-02-10 00:38:39 +00:00