diff --git a/test/basic.test.ts b/test/basic.test.ts
index 03d3df8d30..b045b65106 100644
--- a/test/basic.test.ts
+++ b/test/basic.test.ts
@@ -553,6 +553,48 @@ describe('nuxt links', () => {
await page.close()
})
+
+ it('expect scroll to top on routes with same component', async () => {
+ // #22402
+ const page = await createPage('/big-page-1')
+ await page.setViewportSize({
+ width: 1000,
+ height: 1000
+ })
+ await page.waitForLoadState('networkidle')
+ await page.locator('#big-page-2').scrollIntoViewIfNeeded()
+ expect(await page.evaluate(() => window.scrollY)).toBeGreaterThan(0)
+ await page.locator('#big-page-2').click()
+ console.log('HOOOOOOHOHO' + await page.evaluate(() => window.scrollY))
+ await page.waitForURL(url => url.href.includes('/big-page-2'))
+ console.log('HAAAAHAHAHA' + await page.evaluate(() => window.scrollY))
+ expect(await page.evaluate(() => window.scrollY)).toBe(0)
+ await page.locator('#big-page-1').scrollIntoViewIfNeeded()
+ expect(await page.evaluate(() => window.scrollY)).toBeGreaterThan(0)
+ await page.locator('#big-page-1').click()
+ await page.waitForURL(url => url.href.includes('/big-page-1'))
+ expect(await page.evaluate(() => window.scrollY)).toBe(0)
+ })
+
+ it('expect scroll to top on nested pages', async () => {
+ // #20523
+ const page = await createPage('/nested/foo/test')
+ await page.setViewportSize({
+ width: 1000,
+ height: 1000
+ })
+ await page.waitForLoadState('networkidle')
+ await page.locator('#user-test').scrollIntoViewIfNeeded()
+ expect(await page.evaluate(() => window.scrollY)).toBeGreaterThan(0)
+ await page.locator('#user-test').click()
+ await page.waitForURL(url => url.href.includes('/nested/foo/user-test'))
+ expect(await page.evaluate(() => window.scrollY)).toBe(0)
+ await page.locator('#test').scrollIntoViewIfNeeded()
+ expect(await page.evaluate(() => window.scrollY)).toBeGreaterThan(0)
+ await page.locator('#test').click()
+ await page.waitForURL(url => url.href.includes('/nested/foo/test'))
+ expect(await page.evaluate(() => window.scrollY)).toBe(0)
+ })
})
describe('head tags', () => {
diff --git a/test/fixtures/basic/modules/page-extend.ts b/test/fixtures/basic/modules/page-extend/index.ts
similarity index 58%
rename from test/fixtures/basic/modules/page-extend.ts
rename to test/fixtures/basic/modules/page-extend/index.ts
index 1f794eeee6..b3ac74e80b 100644
--- a/test/fixtures/basic/modules/page-extend.ts
+++ b/test/fixtures/basic/modules/page-extend/index.ts
@@ -4,7 +4,7 @@ export default defineNuxtModule({
meta: {
name: 'page-extend'
},
- setup () {
+ setup() {
const nuxt = useNuxt()
const resolver = createResolver(import.meta.url)
@@ -12,7 +12,13 @@ export default defineNuxtModule({
pages.push({
name: 'page-extend',
path: '/page-extend',
- file: resolver.resolve('./runtime/page.vue')
+ file: resolver.resolve('../runtime/page.vue')
+ }, {
+ path: '/big-page-1',
+ file: '@/modules/page-extend/pages/big-page.vue'
+ }, {
+ path: '/big-page-2',
+ file: '@/modules/page-extend/pages/big-page.vue'
})
})
}
diff --git a/test/fixtures/basic/modules/page-extend/pages/big-page.vue b/test/fixtures/basic/modules/page-extend/pages/big-page.vue
new file mode 100644
index 0000000000..9e448d9a55
--- /dev/null
+++ b/test/fixtures/basic/modules/page-extend/pages/big-page.vue
@@ -0,0 +1,36 @@
+
+