diff --git a/src/core/drive/page_view.js b/src/core/drive/page_view.js index 8a34c9bc7..1583f25a0 100644 --- a/src/core/drive/page_view.js +++ b/src/core/drive/page_view.js @@ -56,7 +56,7 @@ export class PageView extends View { } isPageRefresh(visit) { - return !visit || (this.lastRenderedLocation.href === visit.location.href && visit.action === "replace") + return !visit || (this.lastRenderedLocation.pathname === visit.location.pathname && visit.action === "replace") } shouldPreserveScrollPosition(visit) { diff --git a/src/tests/fixtures/page_refresh.html b/src/tests/fixtures/page_refresh.html index 82d6ed4a3..d9523c6b1 100644 --- a/src/tests/fixtures/page_refresh.html +++ b/src/tests/fixtures/page_refresh.html @@ -46,6 +46,7 @@

Frame to be preserved

Element with Stimulus controller

+

Link with params to refresh the page

Link to another page

diff --git a/src/tests/functional/page_refresh_tests.js b/src/tests/functional/page_refresh_tests.js index 3b3ec4168..45bb823d6 100644 --- a/src/tests/functional/page_refresh_tests.js +++ b/src/tests/functional/page_refresh_tests.js @@ -17,6 +17,13 @@ test("renders a page refresh with morphing", async ({ page }) => { await nextEventNamed(page, "turbo:render", { renderMethod: "morph" }) }) +test("renders a page refresh with morphing when the paths are the same but search params are diferent", async ({ page }) => { + await page.goto("/src/tests/fixtures/page_refresh.html") + + await page.click("#replace-link") + await nextEventNamed(page, "turbo:render", { renderMethod: "morph" }) +}) + test("doesn't morph when the turbo-refresh-method meta tag is not 'morph'", async ({ page }) => { await page.goto("/src/tests/fixtures/page_refresh_replace.html")