From 94736adbea1ecbe8c383013dc74c56c42969cd9f Mon Sep 17 00:00:00 2001 From: julien huang Date: Sun, 30 Jul 2023 20:56:07 +0200 Subject: [PATCH] test: test scroll top on nested pages and --- test/basic.test.ts | 42 +++++++++++++++++++ .../{page-extend.ts => page-extend/index.ts} | 10 ++++- .../modules/page-extend/pages/big-page.vue | 36 ++++++++++++++++ test/fixtures/basic/pages/index.vue | 1 + .../nested/{[foo]/index.vue => [foo].vue} | 11 +++++ .../basic/pages/nested/[foo]/[bar].vue | 2 + .../basic/pages/nested/[foo]/user-[group].vue | 3 ++ 7 files changed, 103 insertions(+), 2 deletions(-) rename test/fixtures/basic/modules/{page-extend.ts => page-extend/index.ts} (58%) create mode 100644 test/fixtures/basic/modules/page-extend/pages/big-page.vue rename test/fixtures/basic/pages/nested/{[foo]/index.vue => [foo].vue} (56%) 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 @@ + + + + + diff --git a/test/fixtures/basic/pages/index.vue b/test/fixtures/basic/pages/index.vue index dd817783a6..8ccd4359f3 100644 --- a/test/fixtures/basic/pages/index.vue +++ b/test/fixtures/basic/pages/index.vue @@ -49,6 +49,7 @@ + to big 1 diff --git a/test/fixtures/basic/pages/nested/[foo]/index.vue b/test/fixtures/basic/pages/nested/[foo].vue similarity index 56% rename from test/fixtures/basic/pages/nested/[foo]/index.vue rename to test/fixtures/basic/pages/nested/[foo].vue index beab2f220e..1dce2deb33 100644 --- a/test/fixtures/basic/pages/nested/[foo]/index.vue +++ b/test/fixtures/basic/pages/nested/[foo].vue @@ -6,5 +6,16 @@ const route = useRoute('nested-foo')
nested/[foo]/index.vue
foo: {{ route.params.foo }}
+ +
+
+
+ + \ No newline at end of file diff --git a/test/fixtures/basic/pages/nested/[foo]/[bar].vue b/test/fixtures/basic/pages/nested/[foo]/[bar].vue index 168f7737dd..dd6f0b0a5b 100644 --- a/test/fixtures/basic/pages/nested/[foo]/[bar].vue +++ b/test/fixtures/basic/pages/nested/[foo]/[bar].vue @@ -7,5 +7,7 @@ const route = useRoute('nested-foo-bar')
nested/[foo]/[bar].vue
foo: {{ route.params.foo }}
bar: {{ route.params.bar }}
+ to /nested/foo/user-test + to /nested/foo/test
diff --git a/test/fixtures/basic/pages/nested/[foo]/user-[group].vue b/test/fixtures/basic/pages/nested/[foo]/user-[group].vue index 4a4da9fe55..52d9a7f3b9 100644 --- a/test/fixtures/basic/pages/nested/[foo]/user-[group].vue +++ b/test/fixtures/basic/pages/nested/[foo]/user-[group].vue @@ -7,5 +7,8 @@ const route = useRoute('nested-foo-user-group')
nested/[foo]/user-[group].vue
foo: {{ route.params.foo }}
group: {{ route.params.group }}
+ + to /nested/foo/user-test + to /nested/foo/test