From a8916e5740af76794059e5e93ace779ed4dc5077 Mon Sep 17 00:00:00 2001 From: itz_syruz Date: Sat, 22 Nov 2025 22:59:00 +0530 Subject: [PATCH 01/12] fix: Links always scroll to URL hash on hover --- packages/react-router/src/Transitioner.tsx | 10 ++++++---- packages/solid-router/src/Transitioner.tsx | 8 +++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/react-router/src/Transitioner.tsx b/packages/react-router/src/Transitioner.tsx index 04e140acfcd..f547cdd5f58 100644 --- a/packages/react-router/src/Transitioner.tsx +++ b/packages/react-router/src/Transitioner.tsx @@ -108,20 +108,22 @@ export function Transitioner() { }, [isPagePending, previousIsPagePending, router]) useLayoutEffect(() => { - // The router was pending and now it's not if (previousIsAnyPending && !isAnyPending) { + const changeInfo = getLocationChangeInfo(router.state) router.emit({ type: 'onResolved', - ...getLocationChangeInfo(router.state), + ...changeInfo, }) - router.__store.setState((s) => ({ + router.__store.setState((s: typeof router.state) => ({ ...s, status: 'idle', resolvedLocation: s.location, })) - handleHashScroll(router) + if (changeInfo.hrefChanged) { + handleHashScroll(router) + } } }, [isAnyPending, previousIsAnyPending, router]) diff --git a/packages/solid-router/src/Transitioner.tsx b/packages/solid-router/src/Transitioner.tsx index fe2b29544c4..1708f1bcb8c 100644 --- a/packages/solid-router/src/Transitioner.tsx +++ b/packages/solid-router/src/Transitioner.tsx @@ -122,11 +122,11 @@ export function Transitioner() { Solid.on( [isAnyPending, previousIsAnyPending], ([isAnyPending, previousIsAnyPending]) => { - // The router was pending and now it's not if (previousIsAnyPending.previous && !isAnyPending) { + const changeInfo = getLocationChangeInfo(router.state) router.emit({ type: 'onResolved', - ...getLocationChangeInfo(router.state), + ...changeInfo, }) router.__store.setState((s) => ({ @@ -135,7 +135,9 @@ export function Transitioner() { resolvedLocation: s.location, })) - handleHashScroll(router) + if (changeInfo.hrefChanged) { + handleHashScroll(router) + } } }, ), From 367707d8fdf858b434761b4fe66488c7bfd9e25c Mon Sep 17 00:00:00 2001 From: itz_syruz Date: Sun, 23 Nov 2025 00:14:23 +0530 Subject: [PATCH 02/12] added tests --- .../tests/hover-preload-hash.spec.ts | 20 ++++++++++++++++++ .../tests/hover-preload-hash.spec.ts | 21 +++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 e2e/react-router/basic-file-based/tests/hover-preload-hash.spec.ts create mode 100644 e2e/solid-router/basic-file-based/tests/hover-preload-hash.spec.ts diff --git a/e2e/react-router/basic-file-based/tests/hover-preload-hash.spec.ts b/e2e/react-router/basic-file-based/tests/hover-preload-hash.spec.ts new file mode 100644 index 00000000000..bb66ca015b2 --- /dev/null +++ b/e2e/react-router/basic-file-based/tests/hover-preload-hash.spec.ts @@ -0,0 +1,20 @@ +import { expect, test } from '@playwright/test' +import { toRuntimePath } from '@tanstack/router-e2e-utils' + +// This test guards against a regression where hovering (intent preload) +test('hovering links does not trigger hash scroll (no navigation)', async ({ page }) => { + // Go to a page with a hash target at the bottom + await page.goto(toRuntimePath('/normal-page#at-the-bottom')) + await expect(page.getByTestId('at-the-bottom')).toBeInViewport() + + // Scroll up so the hash target is no longer in view + await page.evaluate(() => window.scrollBy(0, -300)) + await expect(page.getByTestId('at-the-bottom')).not.toBeInViewport() + + // Hover a header link to trigger intent preload (should NOT change scroll) + await page.getByRole('link', { name: 'Head-/lazy-page' }).hover() + await page.waitForTimeout(400) + + // Ensure we did not jump back to the hash target + await expect(page.getByTestId('at-the-bottom')).not.toBeInViewport() +}) diff --git a/e2e/solid-router/basic-file-based/tests/hover-preload-hash.spec.ts b/e2e/solid-router/basic-file-based/tests/hover-preload-hash.spec.ts new file mode 100644 index 00000000000..54bd645062e --- /dev/null +++ b/e2e/solid-router/basic-file-based/tests/hover-preload-hash.spec.ts @@ -0,0 +1,21 @@ +import { expect, test } from '@playwright/test' +import { toRuntimePath } from '@tanstack/router-e2e-utils' + +// Solid variant of the hover-preload hash scroll regression test. + +test('hovering links does not trigger hash scroll (no navigation) [solid]', async ({ page }) => { + // Go to a page with a hash target at the bottom + await page.goto(toRuntimePath('/normal-page#at-the-bottom')) + await expect(page.getByTestId('at-the-bottom')).toBeInViewport() + + // Scroll up so the hash target is no longer in view + await page.evaluate(() => window.scrollBy(0, -300)) + await expect(page.getByTestId('at-the-bottom')).not.toBeInViewport() + + // Hover a header link to trigger intent preload (should NOT change scroll) + await page.getByRole('link', { name: 'Head-/lazy-page' }).hover() + await page.waitForTimeout(400) + + // Ensure we did not jump back to the hash target + await expect(page.getByTestId('at-the-bottom')).not.toBeInViewport() +}) From c3b1c0d54e476bb2ad1ed6180a0f7f5d82434e10 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Sat, 22 Nov 2025 18:47:52 +0000 Subject: [PATCH 03/12] ci: apply automated fixes --- .../basic-file-based/tests/hover-preload-hash.spec.ts | 4 +++- .../basic-file-based/tests/hover-preload-hash.spec.ts | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/e2e/react-router/basic-file-based/tests/hover-preload-hash.spec.ts b/e2e/react-router/basic-file-based/tests/hover-preload-hash.spec.ts index bb66ca015b2..9ee14359afe 100644 --- a/e2e/react-router/basic-file-based/tests/hover-preload-hash.spec.ts +++ b/e2e/react-router/basic-file-based/tests/hover-preload-hash.spec.ts @@ -2,7 +2,9 @@ import { expect, test } from '@playwright/test' import { toRuntimePath } from '@tanstack/router-e2e-utils' // This test guards against a regression where hovering (intent preload) -test('hovering links does not trigger hash scroll (no navigation)', async ({ page }) => { +test('hovering links does not trigger hash scroll (no navigation)', async ({ + page, +}) => { // Go to a page with a hash target at the bottom await page.goto(toRuntimePath('/normal-page#at-the-bottom')) await expect(page.getByTestId('at-the-bottom')).toBeInViewport() diff --git a/e2e/solid-router/basic-file-based/tests/hover-preload-hash.spec.ts b/e2e/solid-router/basic-file-based/tests/hover-preload-hash.spec.ts index 54bd645062e..198a4d9f061 100644 --- a/e2e/solid-router/basic-file-based/tests/hover-preload-hash.spec.ts +++ b/e2e/solid-router/basic-file-based/tests/hover-preload-hash.spec.ts @@ -3,7 +3,9 @@ import { toRuntimePath } from '@tanstack/router-e2e-utils' // Solid variant of the hover-preload hash scroll regression test. -test('hovering links does not trigger hash scroll (no navigation) [solid]', async ({ page }) => { +test('hovering links does not trigger hash scroll (no navigation) [solid]', async ({ + page, +}) => { // Go to a page with a hash target at the bottom await page.goto(toRuntimePath('/normal-page#at-the-bottom')) await expect(page.getByTestId('at-the-bottom')).toBeInViewport() From 159a9ed2e5b69aa7342a26c61b4054ea714ebcd5 Mon Sep 17 00:00:00 2001 From: itz_syruz Date: Sun, 23 Nov 2025 00:45:31 +0530 Subject: [PATCH 04/12] fix: add test pages for hash hover scroll test --- .../basic-file-based/src/routeTree.gen.ts | 42 +++++++++++++++++++ .../src/routes/(tests)/normal-page.tsx | 38 +++++++++++++++++ .../basic-file-based/src/routes/lazy-page.tsx | 14 +++++++ .../basic-file-based/src/routeTree.gen.ts | 42 +++++++++++++++++++ .../src/routes/(tests)/normal-page.tsx | 38 +++++++++++++++++ .../basic-file-based/src/routes/lazy-page.tsx | 14 +++++++ .../worker-configuration.d.ts | 15 +++---- 7 files changed, 194 insertions(+), 9 deletions(-) create mode 100644 e2e/react-router/basic-file-based/src/routes/(tests)/normal-page.tsx create mode 100644 e2e/react-router/basic-file-based/src/routes/lazy-page.tsx create mode 100644 e2e/solid-router/basic-file-based/src/routes/(tests)/normal-page.tsx create mode 100644 e2e/solid-router/basic-file-based/src/routes/lazy-page.tsx diff --git a/e2e/react-router/basic-file-based/src/routeTree.gen.ts b/e2e/react-router/basic-file-based/src/routeTree.gen.ts index efa8b81d76c..add0a0940d8 100644 --- a/e2e/react-router/basic-file-based/src/routeTree.gen.ts +++ b/e2e/react-router/basic-file-based/src/routeTree.gen.ts @@ -12,6 +12,7 @@ import { Route as rootRouteImport } from './routes/__root' import { Route as RemountDepsRouteImport } from './routes/remountDeps' import { Route as PostsRouteImport } from './routes/posts' import { Route as NotRemountDepsRouteImport } from './routes/notRemountDeps' +import { Route as LazyPageRouteImport } from './routes/lazy-page' import { Route as EditingBRouteImport } from './routes/editing-b' import { Route as EditingARouteImport } from './routes/editing-a' import { Route as ComponentTypesTestRouteImport } from './routes/component-types-test' @@ -31,6 +32,7 @@ import { Route as SearchParamsDefaultRouteImport } from './routes/search-params/ import { Route as RedirectTargetRouteImport } from './routes/redirect/$target' import { Route as PostsPostIdRouteImport } from './routes/posts.$postId' import { Route as LayoutLayout2RouteImport } from './routes/_layout/_layout-2' +import { Route as testsNormalPageRouteImport } from './routes/(tests)/normal-page' import { Route as groupLazyinsideRouteImport } from './routes/(group)/lazyinside' import { Route as groupInsideRouteImport } from './routes/(group)/inside' import { Route as groupLayoutRouteImport } from './routes/(group)/_layout' @@ -125,6 +127,11 @@ const NotRemountDepsRoute = NotRemountDepsRouteImport.update({ path: '/notRemountDeps', getParentRoute: () => rootRouteImport, } as any) +const LazyPageRoute = LazyPageRouteImport.update({ + id: '/lazy-page', + path: '/lazy-page', + getParentRoute: () => rootRouteImport, +} as any) const EditingBRoute = EditingBRouteImport.update({ id: '/editing-b', path: '/editing-b', @@ -220,6 +227,11 @@ const LayoutLayout2Route = LayoutLayout2RouteImport.update({ id: '/_layout-2', getParentRoute: () => LayoutRoute, } as any) +const testsNormalPageRoute = testsNormalPageRouteImport.update({ + id: '/(tests)/normal-page', + path: '/normal-page', + getParentRoute: () => rootRouteImport, +} as any) const groupLazyinsideRoute = groupLazyinsideRouteImport .update({ id: '/(group)/lazyinside', @@ -659,6 +671,7 @@ export interface FileRoutesByFullPath { '/component-types-test': typeof ComponentTypesTestRoute '/editing-a': typeof EditingARoute '/editing-b': typeof EditingBRoute + '/lazy-page': typeof LazyPageRoute '/notRemountDeps': typeof NotRemountDepsRoute '/posts': typeof PostsRouteWithChildren '/remountDeps': typeof RemountDepsRoute @@ -673,6 +686,7 @@ export interface FileRoutesByFullPath { '/onlyrouteinside': typeof anotherGroupOnlyrouteinsideRoute '/inside': typeof groupInsideRoute '/lazyinside': typeof groupLazyinsideRoute + '/normal-page': typeof testsNormalPageRoute '/posts/$postId': typeof PostsPostIdRoute '/redirect/$target': typeof RedirectTargetRouteWithChildren '/search-params/default': typeof SearchParamsDefaultRoute @@ -757,6 +771,7 @@ export interface FileRoutesByTo { '/component-types-test': typeof ComponentTypesTestRoute '/editing-a': typeof EditingARoute '/editing-b': typeof EditingBRoute + '/lazy-page': typeof LazyPageRoute '/notRemountDeps': typeof NotRemountDepsRoute '/remountDeps': typeof RemountDepsRoute '/non-nested/deep': typeof NonNestedDeepRouteRouteWithChildren @@ -770,6 +785,7 @@ export interface FileRoutesByTo { '/onlyrouteinside': typeof anotherGroupOnlyrouteinsideRoute '/inside': typeof groupInsideRoute '/lazyinside': typeof groupLazyinsideRoute + '/normal-page': typeof testsNormalPageRoute '/posts/$postId': typeof PostsPostIdRoute '/search-params/default': typeof SearchParamsDefaultRoute '/structural-sharing/$enabled': typeof StructuralSharingEnabledRoute @@ -849,6 +865,7 @@ export interface FileRoutesById { '/component-types-test': typeof ComponentTypesTestRoute '/editing-a': typeof EditingARoute '/editing-b': typeof EditingBRoute + '/lazy-page': typeof LazyPageRoute '/notRemountDeps': typeof NotRemountDepsRoute '/posts': typeof PostsRouteWithChildren '/remountDeps': typeof RemountDepsRoute @@ -864,6 +881,7 @@ export interface FileRoutesById { '/(group)/_layout': typeof groupLayoutRouteWithChildren '/(group)/inside': typeof groupInsideRoute '/(group)/lazyinside': typeof groupLazyinsideRoute + '/(tests)/normal-page': typeof testsNormalPageRoute '/_layout/_layout-2': typeof LayoutLayout2RouteWithChildren '/posts/$postId': typeof PostsPostIdRoute '/redirect/$target': typeof RedirectTargetRouteWithChildren @@ -952,6 +970,7 @@ export interface FileRouteTypes { | '/component-types-test' | '/editing-a' | '/editing-b' + | '/lazy-page' | '/notRemountDeps' | '/posts' | '/remountDeps' @@ -966,6 +985,7 @@ export interface FileRouteTypes { | '/onlyrouteinside' | '/inside' | '/lazyinside' + | '/normal-page' | '/posts/$postId' | '/redirect/$target' | '/search-params/default' @@ -1050,6 +1070,7 @@ export interface FileRouteTypes { | '/component-types-test' | '/editing-a' | '/editing-b' + | '/lazy-page' | '/notRemountDeps' | '/remountDeps' | '/non-nested/deep' @@ -1063,6 +1084,7 @@ export interface FileRouteTypes { | '/onlyrouteinside' | '/inside' | '/lazyinside' + | '/normal-page' | '/posts/$postId' | '/search-params/default' | '/structural-sharing/$enabled' @@ -1141,6 +1163,7 @@ export interface FileRouteTypes { | '/component-types-test' | '/editing-a' | '/editing-b' + | '/lazy-page' | '/notRemountDeps' | '/posts' | '/remountDeps' @@ -1156,6 +1179,7 @@ export interface FileRouteTypes { | '/(group)/_layout' | '/(group)/inside' | '/(group)/lazyinside' + | '/(tests)/normal-page' | '/_layout/_layout-2' | '/posts/$postId' | '/redirect/$target' @@ -1244,6 +1268,7 @@ export interface RootRouteChildren { ComponentTypesTestRoute: typeof ComponentTypesTestRoute EditingARoute: typeof EditingARoute EditingBRoute: typeof EditingBRoute + LazyPageRoute: typeof LazyPageRoute NotRemountDepsRoute: typeof NotRemountDepsRoute PostsRoute: typeof PostsRouteWithChildren RemountDepsRoute: typeof RemountDepsRoute @@ -1254,6 +1279,7 @@ export interface RootRouteChildren { groupLayoutRoute: typeof groupLayoutRouteWithChildren groupInsideRoute: typeof groupInsideRoute groupLazyinsideRoute: typeof groupLazyinsideRoute + testsNormalPageRoute: typeof testsNormalPageRoute RedirectTargetRoute: typeof RedirectTargetRouteWithChildren StructuralSharingEnabledRoute: typeof StructuralSharingEnabledRoute ParamsPsIndexRoute: typeof ParamsPsIndexRoute @@ -1300,6 +1326,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof NotRemountDepsRouteImport parentRoute: typeof rootRouteImport } + '/lazy-page': { + id: '/lazy-page' + path: '/lazy-page' + fullPath: '/lazy-page' + preLoaderRoute: typeof LazyPageRouteImport + parentRoute: typeof rootRouteImport + } '/editing-b': { id: '/editing-b' path: '/editing-b' @@ -1433,6 +1466,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof LayoutLayout2RouteImport parentRoute: typeof LayoutRoute } + '/(tests)/normal-page': { + id: '/(tests)/normal-page' + path: '/normal-page' + fullPath: '/normal-page' + preLoaderRoute: typeof testsNormalPageRouteImport + parentRoute: typeof rootRouteImport + } '/(group)/lazyinside': { id: '/(group)/lazyinside' path: '/lazyinside' @@ -2402,6 +2442,7 @@ const rootRouteChildren: RootRouteChildren = { ComponentTypesTestRoute: ComponentTypesTestRoute, EditingARoute: EditingARoute, EditingBRoute: EditingBRoute, + LazyPageRoute: LazyPageRoute, NotRemountDepsRoute: NotRemountDepsRoute, PostsRoute: PostsRouteWithChildren, RemountDepsRoute: RemountDepsRoute, @@ -2412,6 +2453,7 @@ const rootRouteChildren: RootRouteChildren = { groupLayoutRoute: groupLayoutRouteWithChildren, groupInsideRoute: groupInsideRoute, groupLazyinsideRoute: groupLazyinsideRoute, + testsNormalPageRoute: testsNormalPageRoute, RedirectTargetRoute: RedirectTargetRouteWithChildren, StructuralSharingEnabledRoute: StructuralSharingEnabledRoute, ParamsPsIndexRoute: ParamsPsIndexRoute, diff --git a/e2e/react-router/basic-file-based/src/routes/(tests)/normal-page.tsx b/e2e/react-router/basic-file-based/src/routes/(tests)/normal-page.tsx new file mode 100644 index 00000000000..6b9056374a6 --- /dev/null +++ b/e2e/react-router/basic-file-based/src/routes/(tests)/normal-page.tsx @@ -0,0 +1,38 @@ +import { createFileRoute, Link } from '@tanstack/react-router' + +export const Route = createFileRoute('/(tests)/normal-page')({ + component: NormalPage, +}) + +function NormalPage() { + return ( +
+

Normal Page

+ + {/* Add the link that the test is looking for */} +
+ + Head-/lazy-page + +
+ +
+ Scroll down to see the target element +
+ +
+ This is the target element at the bottom of the page +
+
+ ) +} diff --git a/e2e/react-router/basic-file-based/src/routes/lazy-page.tsx b/e2e/react-router/basic-file-based/src/routes/lazy-page.tsx new file mode 100644 index 00000000000..93719deee86 --- /dev/null +++ b/e2e/react-router/basic-file-based/src/routes/lazy-page.tsx @@ -0,0 +1,14 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/lazy-page')({ + component: LazyPage, +}) + +function LazyPage() { + return ( +
+

Lazy Loaded Page

+

This page was loaded lazily.

+
+ ) +} diff --git a/e2e/solid-router/basic-file-based/src/routeTree.gen.ts b/e2e/solid-router/basic-file-based/src/routeTree.gen.ts index b836ba6cff6..a0f3cfcc406 100644 --- a/e2e/solid-router/basic-file-based/src/routeTree.gen.ts +++ b/e2e/solid-router/basic-file-based/src/routeTree.gen.ts @@ -12,6 +12,7 @@ import { Route as rootRouteImport } from './routes/__root' import { Route as RemountDepsRouteImport } from './routes/remountDeps' import { Route as PostsRouteImport } from './routes/posts' import { Route as NotRemountDepsRouteImport } from './routes/notRemountDeps' +import { Route as LazyPageRouteImport } from './routes/lazy-page' import { Route as EditingBRouteImport } from './routes/editing-b' import { Route as EditingARouteImport } from './routes/editing-a' import { Route as ComponentTypesTestRouteImport } from './routes/component-types-test' @@ -30,6 +31,7 @@ import { Route as SearchParamsDefaultRouteImport } from './routes/search-params/ import { Route as RedirectTargetRouteImport } from './routes/redirect/$target' import { Route as PostsPostIdRouteImport } from './routes/posts.$postId' import { Route as LayoutLayout2RouteImport } from './routes/_layout/_layout-2' +import { Route as testsNormalPageRouteImport } from './routes/(tests)/normal-page' import { Route as groupLazyinsideRouteImport } from './routes/(group)/lazyinside' import { Route as groupInsideRouteImport } from './routes/(group)/inside' import { Route as groupLayoutRouteImport } from './routes/(group)/_layout' @@ -126,6 +128,11 @@ const NotRemountDepsRoute = NotRemountDepsRouteImport.update({ path: '/notRemountDeps', getParentRoute: () => rootRouteImport, } as any) +const LazyPageRoute = LazyPageRouteImport.update({ + id: '/lazy-page', + path: '/lazy-page', + getParentRoute: () => rootRouteImport, +} as any) const EditingBRoute = EditingBRouteImport.update({ id: '/editing-b', path: '/editing-b', @@ -215,6 +222,11 @@ const LayoutLayout2Route = LayoutLayout2RouteImport.update({ id: '/_layout-2', getParentRoute: () => LayoutRoute, } as any) +const testsNormalPageRoute = testsNormalPageRouteImport.update({ + id: '/(tests)/normal-page', + path: '/normal-page', + getParentRoute: () => rootRouteImport, +} as any) const groupLazyinsideRoute = groupLazyinsideRouteImport .update({ id: '/(group)/lazyinside', @@ -666,6 +678,7 @@ export interface FileRoutesByFullPath { '/component-types-test': typeof ComponentTypesTestRoute '/editing-a': typeof EditingARoute '/editing-b': typeof EditingBRoute + '/lazy-page': typeof LazyPageRoute '/notRemountDeps': typeof NotRemountDepsRoute '/posts': typeof PostsRouteWithChildren '/remountDeps': typeof RemountDepsRoute @@ -680,6 +693,7 @@ export interface FileRoutesByFullPath { '/onlyrouteinside': typeof anotherGroupOnlyrouteinsideRoute '/inside': typeof groupInsideRoute '/lazyinside': typeof groupLazyinsideRoute + '/normal-page': typeof testsNormalPageRoute '/posts/$postId': typeof PostsPostIdRoute '/redirect/$target': typeof RedirectTargetRouteWithChildren '/search-params/default': typeof SearchParamsDefaultRoute @@ -765,6 +779,7 @@ export interface FileRoutesByTo { '/component-types-test': typeof ComponentTypesTestRoute '/editing-a': typeof EditingARoute '/editing-b': typeof EditingBRoute + '/lazy-page': typeof LazyPageRoute '/notRemountDeps': typeof NotRemountDepsRoute '/remountDeps': typeof RemountDepsRoute '/non-nested/deep': typeof NonNestedDeepRouteRouteWithChildren @@ -778,6 +793,7 @@ export interface FileRoutesByTo { '/onlyrouteinside': typeof anotherGroupOnlyrouteinsideRoute '/inside': typeof groupInsideRoute '/lazyinside': typeof groupLazyinsideRoute + '/normal-page': typeof testsNormalPageRoute '/posts/$postId': typeof PostsPostIdRoute '/search-params/default': typeof SearchParamsDefaultRoute '/params-ps': typeof ParamsPsIndexRoute @@ -858,6 +874,7 @@ export interface FileRoutesById { '/component-types-test': typeof ComponentTypesTestRoute '/editing-a': typeof EditingARoute '/editing-b': typeof EditingBRoute + '/lazy-page': typeof LazyPageRoute '/notRemountDeps': typeof NotRemountDepsRoute '/posts': typeof PostsRouteWithChildren '/remountDeps': typeof RemountDepsRoute @@ -873,6 +890,7 @@ export interface FileRoutesById { '/(group)/_layout': typeof groupLayoutRouteWithChildren '/(group)/inside': typeof groupInsideRoute '/(group)/lazyinside': typeof groupLazyinsideRoute + '/(tests)/normal-page': typeof testsNormalPageRoute '/_layout/_layout-2': typeof LayoutLayout2RouteWithChildren '/posts/$postId': typeof PostsPostIdRoute '/redirect/$target': typeof RedirectTargetRouteWithChildren @@ -962,6 +980,7 @@ export interface FileRouteTypes { | '/component-types-test' | '/editing-a' | '/editing-b' + | '/lazy-page' | '/notRemountDeps' | '/posts' | '/remountDeps' @@ -976,6 +995,7 @@ export interface FileRouteTypes { | '/onlyrouteinside' | '/inside' | '/lazyinside' + | '/normal-page' | '/posts/$postId' | '/redirect/$target' | '/search-params/default' @@ -1061,6 +1081,7 @@ export interface FileRouteTypes { | '/component-types-test' | '/editing-a' | '/editing-b' + | '/lazy-page' | '/notRemountDeps' | '/remountDeps' | '/non-nested/deep' @@ -1074,6 +1095,7 @@ export interface FileRouteTypes { | '/onlyrouteinside' | '/inside' | '/lazyinside' + | '/normal-page' | '/posts/$postId' | '/search-params/default' | '/params-ps' @@ -1153,6 +1175,7 @@ export interface FileRouteTypes { | '/component-types-test' | '/editing-a' | '/editing-b' + | '/lazy-page' | '/notRemountDeps' | '/posts' | '/remountDeps' @@ -1168,6 +1191,7 @@ export interface FileRouteTypes { | '/(group)/_layout' | '/(group)/inside' | '/(group)/lazyinside' + | '/(tests)/normal-page' | '/_layout/_layout-2' | '/posts/$postId' | '/redirect/$target' @@ -1257,6 +1281,7 @@ export interface RootRouteChildren { ComponentTypesTestRoute: typeof ComponentTypesTestRoute EditingARoute: typeof EditingARoute EditingBRoute: typeof EditingBRoute + LazyPageRoute: typeof LazyPageRoute NotRemountDepsRoute: typeof NotRemountDepsRoute PostsRoute: typeof PostsRouteWithChildren RemountDepsRoute: typeof RemountDepsRoute @@ -1267,6 +1292,7 @@ export interface RootRouteChildren { groupLayoutRoute: typeof groupLayoutRouteWithChildren groupInsideRoute: typeof groupInsideRoute groupLazyinsideRoute: typeof groupLazyinsideRoute + testsNormalPageRoute: typeof testsNormalPageRoute RedirectTargetRoute: typeof RedirectTargetRouteWithChildren ParamsPsIndexRoute: typeof ParamsPsIndexRoute RedirectIndexRoute: typeof RedirectIndexRoute @@ -1314,6 +1340,13 @@ declare module '@tanstack/solid-router' { preLoaderRoute: typeof NotRemountDepsRouteImport parentRoute: typeof rootRouteImport } + '/lazy-page': { + id: '/lazy-page' + path: '/lazy-page' + fullPath: '/lazy-page' + preLoaderRoute: typeof LazyPageRouteImport + parentRoute: typeof rootRouteImport + } '/editing-b': { id: '/editing-b' path: '/editing-b' @@ -1440,6 +1473,13 @@ declare module '@tanstack/solid-router' { preLoaderRoute: typeof LayoutLayout2RouteImport parentRoute: typeof LayoutRoute } + '/(tests)/normal-page': { + id: '/(tests)/normal-page' + path: '/normal-page' + fullPath: '/normal-page' + preLoaderRoute: typeof testsNormalPageRouteImport + parentRoute: typeof rootRouteImport + } '/(group)/lazyinside': { id: '/(group)/lazyinside' path: '/lazyinside' @@ -2423,6 +2463,7 @@ const rootRouteChildren: RootRouteChildren = { ComponentTypesTestRoute: ComponentTypesTestRoute, EditingARoute: EditingARoute, EditingBRoute: EditingBRoute, + LazyPageRoute: LazyPageRoute, NotRemountDepsRoute: NotRemountDepsRoute, PostsRoute: PostsRouteWithChildren, RemountDepsRoute: RemountDepsRoute, @@ -2433,6 +2474,7 @@ const rootRouteChildren: RootRouteChildren = { groupLayoutRoute: groupLayoutRouteWithChildren, groupInsideRoute: groupInsideRoute, groupLazyinsideRoute: groupLazyinsideRoute, + testsNormalPageRoute: testsNormalPageRoute, RedirectTargetRoute: RedirectTargetRouteWithChildren, ParamsPsIndexRoute: ParamsPsIndexRoute, RedirectIndexRoute: RedirectIndexRoute, diff --git a/e2e/solid-router/basic-file-based/src/routes/(tests)/normal-page.tsx b/e2e/solid-router/basic-file-based/src/routes/(tests)/normal-page.tsx new file mode 100644 index 00000000000..d7b73e17648 --- /dev/null +++ b/e2e/solid-router/basic-file-based/src/routes/(tests)/normal-page.tsx @@ -0,0 +1,38 @@ +import { createFileRoute, Link } from '@tanstack/solid-router' + +export const Route = createFileRoute('/(tests)/normal-page')({ + component: NormalPage, +}) + +function NormalPage() { + return ( +
+

Normal Page

+ + {/* Add the link that the test is looking for */} +
+ + Head-/lazy-page + +
+ +
+ Scroll down to see the target element +
+ +
+ This is the target element at the bottom of the page +
+
+ ) +} diff --git a/e2e/solid-router/basic-file-based/src/routes/lazy-page.tsx b/e2e/solid-router/basic-file-based/src/routes/lazy-page.tsx new file mode 100644 index 00000000000..9635f38dffc --- /dev/null +++ b/e2e/solid-router/basic-file-based/src/routes/lazy-page.tsx @@ -0,0 +1,14 @@ +import { createFileRoute } from '@tanstack/solid-router' + +export const Route = createFileRoute('/lazy-page')({ + component: LazyPage, +}) + +function LazyPage() { + return ( +
+

Lazy Loaded Page

+

This page was loaded lazily.

+
+ ) +} diff --git a/e2e/solid-start/basic-cloudflare/worker-configuration.d.ts b/e2e/solid-start/basic-cloudflare/worker-configuration.d.ts index cb3e271c882..b0b47f39468 100644 --- a/e2e/solid-start/basic-cloudflare/worker-configuration.d.ts +++ b/e2e/solid-start/basic-cloudflare/worker-configuration.d.ts @@ -2,19 +2,16 @@ // Generated by Wrangler by running `wrangler types` (hash: b11df627d8b3c51b1bf3230a546b0f20) // Runtime types generated with workerd@1.20251118.0 2025-09-24 nodejs_compat declare namespace Cloudflare { - interface Env { - MY_VAR: 'Hello from Cloudflare' - } + interface Env { + MY_VAR: "Hello from Cloudflare"; + } } interface Env extends Cloudflare.Env {} type StringifyValues> = { - [Binding in keyof EnvType]: EnvType[Binding] extends string - ? EnvType[Binding] - : string -} + [Binding in keyof EnvType]: EnvType[Binding] extends string ? EnvType[Binding] : string; +}; declare namespace NodeJS { - interface ProcessEnv - extends StringifyValues> {} + interface ProcessEnv extends StringifyValues> {} } // Begin runtime types From 7b1f05a318e38b50be0a1310c515c66f089ee9f8 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Sat, 22 Nov 2025 19:17:56 +0000 Subject: [PATCH 05/12] ci: apply automated fixes --- .../src/routes/(tests)/normal-page.tsx | 12 ++++++------ .../src/routes/(tests)/normal-page.tsx | 12 ++++++------ .../basic-cloudflare/worker-configuration.d.ts | 15 +++++++++------ 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/e2e/react-router/basic-file-based/src/routes/(tests)/normal-page.tsx b/e2e/react-router/basic-file-based/src/routes/(tests)/normal-page.tsx index 6b9056374a6..fcfdd1b3a18 100644 --- a/e2e/react-router/basic-file-based/src/routes/(tests)/normal-page.tsx +++ b/e2e/react-router/basic-file-based/src/routes/(tests)/normal-page.tsx @@ -8,27 +8,27 @@ function NormalPage() { return (

Normal Page

- + {/* Add the link that the test is looking for */}
Head-/lazy-page
- +
Scroll down to see the target element
- -
This is the target element at the bottom of the page diff --git a/e2e/solid-router/basic-file-based/src/routes/(tests)/normal-page.tsx b/e2e/solid-router/basic-file-based/src/routes/(tests)/normal-page.tsx index d7b73e17648..97dc992b30e 100644 --- a/e2e/solid-router/basic-file-based/src/routes/(tests)/normal-page.tsx +++ b/e2e/solid-router/basic-file-based/src/routes/(tests)/normal-page.tsx @@ -8,27 +8,27 @@ function NormalPage() { return (

Normal Page

- + {/* Add the link that the test is looking for */}
Head-/lazy-page
- +
Scroll down to see the target element
- -
This is the target element at the bottom of the page diff --git a/e2e/solid-start/basic-cloudflare/worker-configuration.d.ts b/e2e/solid-start/basic-cloudflare/worker-configuration.d.ts index b0b47f39468..cb3e271c882 100644 --- a/e2e/solid-start/basic-cloudflare/worker-configuration.d.ts +++ b/e2e/solid-start/basic-cloudflare/worker-configuration.d.ts @@ -2,16 +2,19 @@ // Generated by Wrangler by running `wrangler types` (hash: b11df627d8b3c51b1bf3230a546b0f20) // Runtime types generated with workerd@1.20251118.0 2025-09-24 nodejs_compat declare namespace Cloudflare { - interface Env { - MY_VAR: "Hello from Cloudflare"; - } + interface Env { + MY_VAR: 'Hello from Cloudflare' + } } interface Env extends Cloudflare.Env {} type StringifyValues> = { - [Binding in keyof EnvType]: EnvType[Binding] extends string ? EnvType[Binding] : string; -}; + [Binding in keyof EnvType]: EnvType[Binding] extends string + ? EnvType[Binding] + : string +} declare namespace NodeJS { - interface ProcessEnv extends StringifyValues> {} + interface ProcessEnv + extends StringifyValues> {} } // Begin runtime types From 78b88873d23ef7e03ee92ca223b64e3329a1b15d Mon Sep 17 00:00:00 2001 From: itz_syruz Date: Sun, 23 Nov 2025 00:55:06 +0530 Subject: [PATCH 06/12] fix: add test pages for hash hover scroll test --- .../basic-file-based/src/routes/(tests)/normal-page.tsx | 2 +- .../basic-file-based/src/routes/(tests)/normal-page.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e/react-router/basic-file-based/src/routes/(tests)/normal-page.tsx b/e2e/react-router/basic-file-based/src/routes/(tests)/normal-page.tsx index fcfdd1b3a18..eb3c5ab623a 100644 --- a/e2e/react-router/basic-file-based/src/routes/(tests)/normal-page.tsx +++ b/e2e/react-router/basic-file-based/src/routes/(tests)/normal-page.tsx @@ -1,4 +1,4 @@ -import { createFileRoute, Link } from '@tanstack/react-router' +import { Link, createFileRoute } from '@tanstack/react-router' export const Route = createFileRoute('/(tests)/normal-page')({ component: NormalPage, diff --git a/e2e/solid-router/basic-file-based/src/routes/(tests)/normal-page.tsx b/e2e/solid-router/basic-file-based/src/routes/(tests)/normal-page.tsx index 97dc992b30e..b911e0abace 100644 --- a/e2e/solid-router/basic-file-based/src/routes/(tests)/normal-page.tsx +++ b/e2e/solid-router/basic-file-based/src/routes/(tests)/normal-page.tsx @@ -1,4 +1,4 @@ -import { createFileRoute, Link } from '@tanstack/solid-router' +import { Link, createFileRoute } from '@tanstack/solid-router' export const Route = createFileRoute('/(tests)/normal-page')({ component: NormalPage, From ba6f74e135dfb8aa2e54918f1f0a892c8dd60e2b Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Sat, 22 Nov 2025 23:54:38 +0100 Subject: [PATCH 07/12] add test route hover-preload-hash --- .../basic-file-based/src/routeTree.gen.ts | 21 +++++++++++ .../src/routes/hover-preload-hash.tsx | 37 +++++++++++++++++++ .../basic-file-based/src/routeTree.gen.ts | 21 +++++++++++ .../src/routes/hover-preload-hash.tsx | 37 +++++++++++++++++++ 4 files changed, 116 insertions(+) create mode 100644 e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx create mode 100644 e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx diff --git a/e2e/react-router/basic-file-based/src/routeTree.gen.ts b/e2e/react-router/basic-file-based/src/routeTree.gen.ts index add0a0940d8..3029a7effd6 100644 --- a/e2e/react-router/basic-file-based/src/routeTree.gen.ts +++ b/e2e/react-router/basic-file-based/src/routeTree.gen.ts @@ -13,6 +13,7 @@ import { Route as RemountDepsRouteImport } from './routes/remountDeps' import { Route as PostsRouteImport } from './routes/posts' import { Route as NotRemountDepsRouteImport } from './routes/notRemountDeps' import { Route as LazyPageRouteImport } from './routes/lazy-page' +import { Route as HoverPreloadHashRouteImport } from './routes/hover-preload-hash' import { Route as EditingBRouteImport } from './routes/editing-b' import { Route as EditingARouteImport } from './routes/editing-a' import { Route as ComponentTypesTestRouteImport } from './routes/component-types-test' @@ -132,6 +133,11 @@ const LazyPageRoute = LazyPageRouteImport.update({ path: '/lazy-page', getParentRoute: () => rootRouteImport, } as any) +const HoverPreloadHashRoute = HoverPreloadHashRouteImport.update({ + id: '/hover-preload-hash', + path: '/hover-preload-hash', + getParentRoute: () => rootRouteImport, +} as any) const EditingBRoute = EditingBRouteImport.update({ id: '/editing-b', path: '/editing-b', @@ -671,6 +677,7 @@ export interface FileRoutesByFullPath { '/component-types-test': typeof ComponentTypesTestRoute '/editing-a': typeof EditingARoute '/editing-b': typeof EditingBRoute + '/hover-preload-hash': typeof HoverPreloadHashRoute '/lazy-page': typeof LazyPageRoute '/notRemountDeps': typeof NotRemountDepsRoute '/posts': typeof PostsRouteWithChildren @@ -771,6 +778,7 @@ export interface FileRoutesByTo { '/component-types-test': typeof ComponentTypesTestRoute '/editing-a': typeof EditingARoute '/editing-b': typeof EditingBRoute + '/hover-preload-hash': typeof HoverPreloadHashRoute '/lazy-page': typeof LazyPageRoute '/notRemountDeps': typeof NotRemountDepsRoute '/remountDeps': typeof RemountDepsRoute @@ -865,6 +873,7 @@ export interface FileRoutesById { '/component-types-test': typeof ComponentTypesTestRoute '/editing-a': typeof EditingARoute '/editing-b': typeof EditingBRoute + '/hover-preload-hash': typeof HoverPreloadHashRoute '/lazy-page': typeof LazyPageRoute '/notRemountDeps': typeof NotRemountDepsRoute '/posts': typeof PostsRouteWithChildren @@ -970,6 +979,7 @@ export interface FileRouteTypes { | '/component-types-test' | '/editing-a' | '/editing-b' + | '/hover-preload-hash' | '/lazy-page' | '/notRemountDeps' | '/posts' @@ -1070,6 +1080,7 @@ export interface FileRouteTypes { | '/component-types-test' | '/editing-a' | '/editing-b' + | '/hover-preload-hash' | '/lazy-page' | '/notRemountDeps' | '/remountDeps' @@ -1163,6 +1174,7 @@ export interface FileRouteTypes { | '/component-types-test' | '/editing-a' | '/editing-b' + | '/hover-preload-hash' | '/lazy-page' | '/notRemountDeps' | '/posts' @@ -1268,6 +1280,7 @@ export interface RootRouteChildren { ComponentTypesTestRoute: typeof ComponentTypesTestRoute EditingARoute: typeof EditingARoute EditingBRoute: typeof EditingBRoute + HoverPreloadHashRoute: typeof HoverPreloadHashRoute LazyPageRoute: typeof LazyPageRoute NotRemountDepsRoute: typeof NotRemountDepsRoute PostsRoute: typeof PostsRouteWithChildren @@ -1333,6 +1346,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof LazyPageRouteImport parentRoute: typeof rootRouteImport } + '/hover-preload-hash': { + id: '/hover-preload-hash' + path: '/hover-preload-hash' + fullPath: '/hover-preload-hash' + preLoaderRoute: typeof HoverPreloadHashRouteImport + parentRoute: typeof rootRouteImport + } '/editing-b': { id: '/editing-b' path: '/editing-b' @@ -2442,6 +2462,7 @@ const rootRouteChildren: RootRouteChildren = { ComponentTypesTestRoute: ComponentTypesTestRoute, EditingARoute: EditingARoute, EditingBRoute: EditingBRoute, + HoverPreloadHashRoute: HoverPreloadHashRoute, LazyPageRoute: LazyPageRoute, NotRemountDepsRoute: NotRemountDepsRoute, PostsRoute: PostsRouteWithChildren, diff --git a/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx b/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx new file mode 100644 index 00000000000..f9ba4481570 --- /dev/null +++ b/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx @@ -0,0 +1,37 @@ +import { Link, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/hover-preload-hash')({ + component: function About() { + return <> + +
Hello from About!
+ + To hash + + +

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Hash is here

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+ + }, +}) \ No newline at end of file diff --git a/e2e/solid-router/basic-file-based/src/routeTree.gen.ts b/e2e/solid-router/basic-file-based/src/routeTree.gen.ts index a0f3cfcc406..5b65107965f 100644 --- a/e2e/solid-router/basic-file-based/src/routeTree.gen.ts +++ b/e2e/solid-router/basic-file-based/src/routeTree.gen.ts @@ -13,6 +13,7 @@ import { Route as RemountDepsRouteImport } from './routes/remountDeps' import { Route as PostsRouteImport } from './routes/posts' import { Route as NotRemountDepsRouteImport } from './routes/notRemountDeps' import { Route as LazyPageRouteImport } from './routes/lazy-page' +import { Route as HoverPreloadHashRouteImport } from './routes/hover-preload-hash' import { Route as EditingBRouteImport } from './routes/editing-b' import { Route as EditingARouteImport } from './routes/editing-a' import { Route as ComponentTypesTestRouteImport } from './routes/component-types-test' @@ -133,6 +134,11 @@ const LazyPageRoute = LazyPageRouteImport.update({ path: '/lazy-page', getParentRoute: () => rootRouteImport, } as any) +const HoverPreloadHashRoute = HoverPreloadHashRouteImport.update({ + id: '/hover-preload-hash', + path: '/hover-preload-hash', + getParentRoute: () => rootRouteImport, +} as any) const EditingBRoute = EditingBRouteImport.update({ id: '/editing-b', path: '/editing-b', @@ -678,6 +684,7 @@ export interface FileRoutesByFullPath { '/component-types-test': typeof ComponentTypesTestRoute '/editing-a': typeof EditingARoute '/editing-b': typeof EditingBRoute + '/hover-preload-hash': typeof HoverPreloadHashRoute '/lazy-page': typeof LazyPageRoute '/notRemountDeps': typeof NotRemountDepsRoute '/posts': typeof PostsRouteWithChildren @@ -779,6 +786,7 @@ export interface FileRoutesByTo { '/component-types-test': typeof ComponentTypesTestRoute '/editing-a': typeof EditingARoute '/editing-b': typeof EditingBRoute + '/hover-preload-hash': typeof HoverPreloadHashRoute '/lazy-page': typeof LazyPageRoute '/notRemountDeps': typeof NotRemountDepsRoute '/remountDeps': typeof RemountDepsRoute @@ -874,6 +882,7 @@ export interface FileRoutesById { '/component-types-test': typeof ComponentTypesTestRoute '/editing-a': typeof EditingARoute '/editing-b': typeof EditingBRoute + '/hover-preload-hash': typeof HoverPreloadHashRoute '/lazy-page': typeof LazyPageRoute '/notRemountDeps': typeof NotRemountDepsRoute '/posts': typeof PostsRouteWithChildren @@ -980,6 +989,7 @@ export interface FileRouteTypes { | '/component-types-test' | '/editing-a' | '/editing-b' + | '/hover-preload-hash' | '/lazy-page' | '/notRemountDeps' | '/posts' @@ -1081,6 +1091,7 @@ export interface FileRouteTypes { | '/component-types-test' | '/editing-a' | '/editing-b' + | '/hover-preload-hash' | '/lazy-page' | '/notRemountDeps' | '/remountDeps' @@ -1175,6 +1186,7 @@ export interface FileRouteTypes { | '/component-types-test' | '/editing-a' | '/editing-b' + | '/hover-preload-hash' | '/lazy-page' | '/notRemountDeps' | '/posts' @@ -1281,6 +1293,7 @@ export interface RootRouteChildren { ComponentTypesTestRoute: typeof ComponentTypesTestRoute EditingARoute: typeof EditingARoute EditingBRoute: typeof EditingBRoute + HoverPreloadHashRoute: typeof HoverPreloadHashRoute LazyPageRoute: typeof LazyPageRoute NotRemountDepsRoute: typeof NotRemountDepsRoute PostsRoute: typeof PostsRouteWithChildren @@ -1347,6 +1360,13 @@ declare module '@tanstack/solid-router' { preLoaderRoute: typeof LazyPageRouteImport parentRoute: typeof rootRouteImport } + '/hover-preload-hash': { + id: '/hover-preload-hash' + path: '/hover-preload-hash' + fullPath: '/hover-preload-hash' + preLoaderRoute: typeof HoverPreloadHashRouteImport + parentRoute: typeof rootRouteImport + } '/editing-b': { id: '/editing-b' path: '/editing-b' @@ -2463,6 +2483,7 @@ const rootRouteChildren: RootRouteChildren = { ComponentTypesTestRoute: ComponentTypesTestRoute, EditingARoute: EditingARoute, EditingBRoute: EditingBRoute, + HoverPreloadHashRoute: HoverPreloadHashRoute, LazyPageRoute: LazyPageRoute, NotRemountDepsRoute: NotRemountDepsRoute, PostsRoute: PostsRouteWithChildren, diff --git a/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx b/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx new file mode 100644 index 00000000000..7ffe0feda31 --- /dev/null +++ b/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx @@ -0,0 +1,37 @@ +import { Link, createFileRoute } from '@tanstack/solid-router' + +export const Route = createFileRoute('/hover-preload-hash')({ + component: function About() { + return <> + +
Hello from About!
+ + To hash + + +

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Hash is here

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+ + }, +}) \ No newline at end of file From 03ac986d959e45f1a84280ac60abdf4a8dea311e Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Sun, 23 Nov 2025 00:38:46 +0100 Subject: [PATCH 08/12] use repro for testing --- .../basic-file-based/src/routeTree.gen.ts | 42 ------------------- .../src/routes/(tests)/normal-page.tsx | 38 ----------------- .../src/routes/hover-preload-hash.tsx | 10 +++-- .../basic-file-based/src/routes/lazy-page.tsx | 14 ------- .../tests/hover-preload-hash.spec.ts | 25 ++++++----- .../basic-file-based/src/routeTree.gen.ts | 42 ------------------- .../src/routes/(tests)/normal-page.tsx | 38 ----------------- .../src/routes/hover-preload-hash.tsx | 10 +++-- .../basic-file-based/src/routes/lazy-page.tsx | 14 ------- .../tests/hover-preload-hash.spec.ts | 24 ++++++----- 10 files changed, 41 insertions(+), 216 deletions(-) delete mode 100644 e2e/react-router/basic-file-based/src/routes/(tests)/normal-page.tsx delete mode 100644 e2e/react-router/basic-file-based/src/routes/lazy-page.tsx delete mode 100644 e2e/solid-router/basic-file-based/src/routes/(tests)/normal-page.tsx delete mode 100644 e2e/solid-router/basic-file-based/src/routes/lazy-page.tsx diff --git a/e2e/react-router/basic-file-based/src/routeTree.gen.ts b/e2e/react-router/basic-file-based/src/routeTree.gen.ts index 3029a7effd6..588b2acb7b5 100644 --- a/e2e/react-router/basic-file-based/src/routeTree.gen.ts +++ b/e2e/react-router/basic-file-based/src/routeTree.gen.ts @@ -12,7 +12,6 @@ import { Route as rootRouteImport } from './routes/__root' import { Route as RemountDepsRouteImport } from './routes/remountDeps' import { Route as PostsRouteImport } from './routes/posts' import { Route as NotRemountDepsRouteImport } from './routes/notRemountDeps' -import { Route as LazyPageRouteImport } from './routes/lazy-page' import { Route as HoverPreloadHashRouteImport } from './routes/hover-preload-hash' import { Route as EditingBRouteImport } from './routes/editing-b' import { Route as EditingARouteImport } from './routes/editing-a' @@ -33,7 +32,6 @@ import { Route as SearchParamsDefaultRouteImport } from './routes/search-params/ import { Route as RedirectTargetRouteImport } from './routes/redirect/$target' import { Route as PostsPostIdRouteImport } from './routes/posts.$postId' import { Route as LayoutLayout2RouteImport } from './routes/_layout/_layout-2' -import { Route as testsNormalPageRouteImport } from './routes/(tests)/normal-page' import { Route as groupLazyinsideRouteImport } from './routes/(group)/lazyinside' import { Route as groupInsideRouteImport } from './routes/(group)/inside' import { Route as groupLayoutRouteImport } from './routes/(group)/_layout' @@ -128,11 +126,6 @@ const NotRemountDepsRoute = NotRemountDepsRouteImport.update({ path: '/notRemountDeps', getParentRoute: () => rootRouteImport, } as any) -const LazyPageRoute = LazyPageRouteImport.update({ - id: '/lazy-page', - path: '/lazy-page', - getParentRoute: () => rootRouteImport, -} as any) const HoverPreloadHashRoute = HoverPreloadHashRouteImport.update({ id: '/hover-preload-hash', path: '/hover-preload-hash', @@ -233,11 +226,6 @@ const LayoutLayout2Route = LayoutLayout2RouteImport.update({ id: '/_layout-2', getParentRoute: () => LayoutRoute, } as any) -const testsNormalPageRoute = testsNormalPageRouteImport.update({ - id: '/(tests)/normal-page', - path: '/normal-page', - getParentRoute: () => rootRouteImport, -} as any) const groupLazyinsideRoute = groupLazyinsideRouteImport .update({ id: '/(group)/lazyinside', @@ -678,7 +666,6 @@ export interface FileRoutesByFullPath { '/editing-a': typeof EditingARoute '/editing-b': typeof EditingBRoute '/hover-preload-hash': typeof HoverPreloadHashRoute - '/lazy-page': typeof LazyPageRoute '/notRemountDeps': typeof NotRemountDepsRoute '/posts': typeof PostsRouteWithChildren '/remountDeps': typeof RemountDepsRoute @@ -693,7 +680,6 @@ export interface FileRoutesByFullPath { '/onlyrouteinside': typeof anotherGroupOnlyrouteinsideRoute '/inside': typeof groupInsideRoute '/lazyinside': typeof groupLazyinsideRoute - '/normal-page': typeof testsNormalPageRoute '/posts/$postId': typeof PostsPostIdRoute '/redirect/$target': typeof RedirectTargetRouteWithChildren '/search-params/default': typeof SearchParamsDefaultRoute @@ -779,7 +765,6 @@ export interface FileRoutesByTo { '/editing-a': typeof EditingARoute '/editing-b': typeof EditingBRoute '/hover-preload-hash': typeof HoverPreloadHashRoute - '/lazy-page': typeof LazyPageRoute '/notRemountDeps': typeof NotRemountDepsRoute '/remountDeps': typeof RemountDepsRoute '/non-nested/deep': typeof NonNestedDeepRouteRouteWithChildren @@ -793,7 +778,6 @@ export interface FileRoutesByTo { '/onlyrouteinside': typeof anotherGroupOnlyrouteinsideRoute '/inside': typeof groupInsideRoute '/lazyinside': typeof groupLazyinsideRoute - '/normal-page': typeof testsNormalPageRoute '/posts/$postId': typeof PostsPostIdRoute '/search-params/default': typeof SearchParamsDefaultRoute '/structural-sharing/$enabled': typeof StructuralSharingEnabledRoute @@ -874,7 +858,6 @@ export interface FileRoutesById { '/editing-a': typeof EditingARoute '/editing-b': typeof EditingBRoute '/hover-preload-hash': typeof HoverPreloadHashRoute - '/lazy-page': typeof LazyPageRoute '/notRemountDeps': typeof NotRemountDepsRoute '/posts': typeof PostsRouteWithChildren '/remountDeps': typeof RemountDepsRoute @@ -890,7 +873,6 @@ export interface FileRoutesById { '/(group)/_layout': typeof groupLayoutRouteWithChildren '/(group)/inside': typeof groupInsideRoute '/(group)/lazyinside': typeof groupLazyinsideRoute - '/(tests)/normal-page': typeof testsNormalPageRoute '/_layout/_layout-2': typeof LayoutLayout2RouteWithChildren '/posts/$postId': typeof PostsPostIdRoute '/redirect/$target': typeof RedirectTargetRouteWithChildren @@ -980,7 +962,6 @@ export interface FileRouteTypes { | '/editing-a' | '/editing-b' | '/hover-preload-hash' - | '/lazy-page' | '/notRemountDeps' | '/posts' | '/remountDeps' @@ -995,7 +976,6 @@ export interface FileRouteTypes { | '/onlyrouteinside' | '/inside' | '/lazyinside' - | '/normal-page' | '/posts/$postId' | '/redirect/$target' | '/search-params/default' @@ -1081,7 +1061,6 @@ export interface FileRouteTypes { | '/editing-a' | '/editing-b' | '/hover-preload-hash' - | '/lazy-page' | '/notRemountDeps' | '/remountDeps' | '/non-nested/deep' @@ -1095,7 +1074,6 @@ export interface FileRouteTypes { | '/onlyrouteinside' | '/inside' | '/lazyinside' - | '/normal-page' | '/posts/$postId' | '/search-params/default' | '/structural-sharing/$enabled' @@ -1175,7 +1153,6 @@ export interface FileRouteTypes { | '/editing-a' | '/editing-b' | '/hover-preload-hash' - | '/lazy-page' | '/notRemountDeps' | '/posts' | '/remountDeps' @@ -1191,7 +1168,6 @@ export interface FileRouteTypes { | '/(group)/_layout' | '/(group)/inside' | '/(group)/lazyinside' - | '/(tests)/normal-page' | '/_layout/_layout-2' | '/posts/$postId' | '/redirect/$target' @@ -1281,7 +1257,6 @@ export interface RootRouteChildren { EditingARoute: typeof EditingARoute EditingBRoute: typeof EditingBRoute HoverPreloadHashRoute: typeof HoverPreloadHashRoute - LazyPageRoute: typeof LazyPageRoute NotRemountDepsRoute: typeof NotRemountDepsRoute PostsRoute: typeof PostsRouteWithChildren RemountDepsRoute: typeof RemountDepsRoute @@ -1292,7 +1267,6 @@ export interface RootRouteChildren { groupLayoutRoute: typeof groupLayoutRouteWithChildren groupInsideRoute: typeof groupInsideRoute groupLazyinsideRoute: typeof groupLazyinsideRoute - testsNormalPageRoute: typeof testsNormalPageRoute RedirectTargetRoute: typeof RedirectTargetRouteWithChildren StructuralSharingEnabledRoute: typeof StructuralSharingEnabledRoute ParamsPsIndexRoute: typeof ParamsPsIndexRoute @@ -1339,13 +1313,6 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof NotRemountDepsRouteImport parentRoute: typeof rootRouteImport } - '/lazy-page': { - id: '/lazy-page' - path: '/lazy-page' - fullPath: '/lazy-page' - preLoaderRoute: typeof LazyPageRouteImport - parentRoute: typeof rootRouteImport - } '/hover-preload-hash': { id: '/hover-preload-hash' path: '/hover-preload-hash' @@ -1486,13 +1453,6 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof LayoutLayout2RouteImport parentRoute: typeof LayoutRoute } - '/(tests)/normal-page': { - id: '/(tests)/normal-page' - path: '/normal-page' - fullPath: '/normal-page' - preLoaderRoute: typeof testsNormalPageRouteImport - parentRoute: typeof rootRouteImport - } '/(group)/lazyinside': { id: '/(group)/lazyinside' path: '/lazyinside' @@ -2463,7 +2423,6 @@ const rootRouteChildren: RootRouteChildren = { EditingARoute: EditingARoute, EditingBRoute: EditingBRoute, HoverPreloadHashRoute: HoverPreloadHashRoute, - LazyPageRoute: LazyPageRoute, NotRemountDepsRoute: NotRemountDepsRoute, PostsRoute: PostsRouteWithChildren, RemountDepsRoute: RemountDepsRoute, @@ -2474,7 +2433,6 @@ const rootRouteChildren: RootRouteChildren = { groupLayoutRoute: groupLayoutRouteWithChildren, groupInsideRoute: groupInsideRoute, groupLazyinsideRoute: groupLazyinsideRoute, - testsNormalPageRoute: testsNormalPageRoute, RedirectTargetRoute: RedirectTargetRouteWithChildren, StructuralSharingEnabledRoute: StructuralSharingEnabledRoute, ParamsPsIndexRoute: ParamsPsIndexRoute, diff --git a/e2e/react-router/basic-file-based/src/routes/(tests)/normal-page.tsx b/e2e/react-router/basic-file-based/src/routes/(tests)/normal-page.tsx deleted file mode 100644 index eb3c5ab623a..00000000000 --- a/e2e/react-router/basic-file-based/src/routes/(tests)/normal-page.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { Link, createFileRoute } from '@tanstack/react-router' - -export const Route = createFileRoute('/(tests)/normal-page')({ - component: NormalPage, -}) - -function NormalPage() { - return ( -
-

Normal Page

- - {/* Add the link that the test is looking for */} -
- - Head-/lazy-page - -
- -
- Scroll down to see the target element -
- -
- This is the target element at the bottom of the page -
-
- ) -} diff --git a/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx b/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx index f9ba4481570..796d6da98a1 100644 --- a/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx +++ b/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx @@ -1,7 +1,11 @@ import { Link, createFileRoute } from '@tanstack/react-router' export const Route = createFileRoute('/hover-preload-hash')({ - component: function About() { + component: Page, +}) + +function Page() { + return <>
Hello from About!
@@ -33,5 +37,5 @@ export const Route = createFileRoute('/hover-preload-hash')({

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

- }, -}) \ No newline at end of file + +} \ No newline at end of file diff --git a/e2e/react-router/basic-file-based/src/routes/lazy-page.tsx b/e2e/react-router/basic-file-based/src/routes/lazy-page.tsx deleted file mode 100644 index 93719deee86..00000000000 --- a/e2e/react-router/basic-file-based/src/routes/lazy-page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { createFileRoute } from '@tanstack/react-router' - -export const Route = createFileRoute('/lazy-page')({ - component: LazyPage, -}) - -function LazyPage() { - return ( -
-

Lazy Loaded Page

-

This page was loaded lazily.

-
- ) -} diff --git a/e2e/react-router/basic-file-based/tests/hover-preload-hash.spec.ts b/e2e/react-router/basic-file-based/tests/hover-preload-hash.spec.ts index 9ee14359afe..caa82455404 100644 --- a/e2e/react-router/basic-file-based/tests/hover-preload-hash.spec.ts +++ b/e2e/react-router/basic-file-based/tests/hover-preload-hash.spec.ts @@ -1,22 +1,25 @@ import { expect, test } from '@playwright/test' import { toRuntimePath } from '@tanstack/router-e2e-utils' -// This test guards against a regression where hovering (intent preload) -test('hovering links does not trigger hash scroll (no navigation)', async ({ + +test('clicking hash link then hovering another link does not scroll back to hash', async ({ page, }) => { - // Go to a page with a hash target at the bottom - await page.goto(toRuntimePath('/normal-page#at-the-bottom')) - await expect(page.getByTestId('at-the-bottom')).toBeInViewport() + // Go to the page without hash + await page.goto(toRuntimePath('/hover-preload-hash')) + + // Click the hash link to navigate to position1 + await page.getByRole('link', { name: 'To hash' }).click() + await expect(page.locator('#position1')).toBeInViewport() - // Scroll up so the hash target is no longer in view - await page.evaluate(() => window.scrollBy(0, -300)) - await expect(page.getByTestId('at-the-bottom')).not.toBeInViewport() + // Scroll up so position1 is no longer in view + await page.evaluate(() => window.scrollTo(0, 0)) + await expect(page.locator('#position1')).not.toBeInViewport() - // Hover a header link to trigger intent preload (should NOT change scroll) - await page.getByRole('link', { name: 'Head-/lazy-page' }).hover() + // Hover the link to trigger intent preload (should NOT scroll back) + await page.getByTestId('link-to-only-route-inside-group').hover() await page.waitForTimeout(400) // Ensure we did not jump back to the hash target - await expect(page.getByTestId('at-the-bottom')).not.toBeInViewport() + await expect(page.locator('#position1')).not.toBeInViewport() }) diff --git a/e2e/solid-router/basic-file-based/src/routeTree.gen.ts b/e2e/solid-router/basic-file-based/src/routeTree.gen.ts index 5b65107965f..bf5f4523c77 100644 --- a/e2e/solid-router/basic-file-based/src/routeTree.gen.ts +++ b/e2e/solid-router/basic-file-based/src/routeTree.gen.ts @@ -12,7 +12,6 @@ import { Route as rootRouteImport } from './routes/__root' import { Route as RemountDepsRouteImport } from './routes/remountDeps' import { Route as PostsRouteImport } from './routes/posts' import { Route as NotRemountDepsRouteImport } from './routes/notRemountDeps' -import { Route as LazyPageRouteImport } from './routes/lazy-page' import { Route as HoverPreloadHashRouteImport } from './routes/hover-preload-hash' import { Route as EditingBRouteImport } from './routes/editing-b' import { Route as EditingARouteImport } from './routes/editing-a' @@ -32,7 +31,6 @@ import { Route as SearchParamsDefaultRouteImport } from './routes/search-params/ import { Route as RedirectTargetRouteImport } from './routes/redirect/$target' import { Route as PostsPostIdRouteImport } from './routes/posts.$postId' import { Route as LayoutLayout2RouteImport } from './routes/_layout/_layout-2' -import { Route as testsNormalPageRouteImport } from './routes/(tests)/normal-page' import { Route as groupLazyinsideRouteImport } from './routes/(group)/lazyinside' import { Route as groupInsideRouteImport } from './routes/(group)/inside' import { Route as groupLayoutRouteImport } from './routes/(group)/_layout' @@ -129,11 +127,6 @@ const NotRemountDepsRoute = NotRemountDepsRouteImport.update({ path: '/notRemountDeps', getParentRoute: () => rootRouteImport, } as any) -const LazyPageRoute = LazyPageRouteImport.update({ - id: '/lazy-page', - path: '/lazy-page', - getParentRoute: () => rootRouteImport, -} as any) const HoverPreloadHashRoute = HoverPreloadHashRouteImport.update({ id: '/hover-preload-hash', path: '/hover-preload-hash', @@ -228,11 +221,6 @@ const LayoutLayout2Route = LayoutLayout2RouteImport.update({ id: '/_layout-2', getParentRoute: () => LayoutRoute, } as any) -const testsNormalPageRoute = testsNormalPageRouteImport.update({ - id: '/(tests)/normal-page', - path: '/normal-page', - getParentRoute: () => rootRouteImport, -} as any) const groupLazyinsideRoute = groupLazyinsideRouteImport .update({ id: '/(group)/lazyinside', @@ -685,7 +673,6 @@ export interface FileRoutesByFullPath { '/editing-a': typeof EditingARoute '/editing-b': typeof EditingBRoute '/hover-preload-hash': typeof HoverPreloadHashRoute - '/lazy-page': typeof LazyPageRoute '/notRemountDeps': typeof NotRemountDepsRoute '/posts': typeof PostsRouteWithChildren '/remountDeps': typeof RemountDepsRoute @@ -700,7 +687,6 @@ export interface FileRoutesByFullPath { '/onlyrouteinside': typeof anotherGroupOnlyrouteinsideRoute '/inside': typeof groupInsideRoute '/lazyinside': typeof groupLazyinsideRoute - '/normal-page': typeof testsNormalPageRoute '/posts/$postId': typeof PostsPostIdRoute '/redirect/$target': typeof RedirectTargetRouteWithChildren '/search-params/default': typeof SearchParamsDefaultRoute @@ -787,7 +773,6 @@ export interface FileRoutesByTo { '/editing-a': typeof EditingARoute '/editing-b': typeof EditingBRoute '/hover-preload-hash': typeof HoverPreloadHashRoute - '/lazy-page': typeof LazyPageRoute '/notRemountDeps': typeof NotRemountDepsRoute '/remountDeps': typeof RemountDepsRoute '/non-nested/deep': typeof NonNestedDeepRouteRouteWithChildren @@ -801,7 +786,6 @@ export interface FileRoutesByTo { '/onlyrouteinside': typeof anotherGroupOnlyrouteinsideRoute '/inside': typeof groupInsideRoute '/lazyinside': typeof groupLazyinsideRoute - '/normal-page': typeof testsNormalPageRoute '/posts/$postId': typeof PostsPostIdRoute '/search-params/default': typeof SearchParamsDefaultRoute '/params-ps': typeof ParamsPsIndexRoute @@ -883,7 +867,6 @@ export interface FileRoutesById { '/editing-a': typeof EditingARoute '/editing-b': typeof EditingBRoute '/hover-preload-hash': typeof HoverPreloadHashRoute - '/lazy-page': typeof LazyPageRoute '/notRemountDeps': typeof NotRemountDepsRoute '/posts': typeof PostsRouteWithChildren '/remountDeps': typeof RemountDepsRoute @@ -899,7 +882,6 @@ export interface FileRoutesById { '/(group)/_layout': typeof groupLayoutRouteWithChildren '/(group)/inside': typeof groupInsideRoute '/(group)/lazyinside': typeof groupLazyinsideRoute - '/(tests)/normal-page': typeof testsNormalPageRoute '/_layout/_layout-2': typeof LayoutLayout2RouteWithChildren '/posts/$postId': typeof PostsPostIdRoute '/redirect/$target': typeof RedirectTargetRouteWithChildren @@ -990,7 +972,6 @@ export interface FileRouteTypes { | '/editing-a' | '/editing-b' | '/hover-preload-hash' - | '/lazy-page' | '/notRemountDeps' | '/posts' | '/remountDeps' @@ -1005,7 +986,6 @@ export interface FileRouteTypes { | '/onlyrouteinside' | '/inside' | '/lazyinside' - | '/normal-page' | '/posts/$postId' | '/redirect/$target' | '/search-params/default' @@ -1092,7 +1072,6 @@ export interface FileRouteTypes { | '/editing-a' | '/editing-b' | '/hover-preload-hash' - | '/lazy-page' | '/notRemountDeps' | '/remountDeps' | '/non-nested/deep' @@ -1106,7 +1085,6 @@ export interface FileRouteTypes { | '/onlyrouteinside' | '/inside' | '/lazyinside' - | '/normal-page' | '/posts/$postId' | '/search-params/default' | '/params-ps' @@ -1187,7 +1165,6 @@ export interface FileRouteTypes { | '/editing-a' | '/editing-b' | '/hover-preload-hash' - | '/lazy-page' | '/notRemountDeps' | '/posts' | '/remountDeps' @@ -1203,7 +1180,6 @@ export interface FileRouteTypes { | '/(group)/_layout' | '/(group)/inside' | '/(group)/lazyinside' - | '/(tests)/normal-page' | '/_layout/_layout-2' | '/posts/$postId' | '/redirect/$target' @@ -1294,7 +1270,6 @@ export interface RootRouteChildren { EditingARoute: typeof EditingARoute EditingBRoute: typeof EditingBRoute HoverPreloadHashRoute: typeof HoverPreloadHashRoute - LazyPageRoute: typeof LazyPageRoute NotRemountDepsRoute: typeof NotRemountDepsRoute PostsRoute: typeof PostsRouteWithChildren RemountDepsRoute: typeof RemountDepsRoute @@ -1305,7 +1280,6 @@ export interface RootRouteChildren { groupLayoutRoute: typeof groupLayoutRouteWithChildren groupInsideRoute: typeof groupInsideRoute groupLazyinsideRoute: typeof groupLazyinsideRoute - testsNormalPageRoute: typeof testsNormalPageRoute RedirectTargetRoute: typeof RedirectTargetRouteWithChildren ParamsPsIndexRoute: typeof ParamsPsIndexRoute RedirectIndexRoute: typeof RedirectIndexRoute @@ -1353,13 +1327,6 @@ declare module '@tanstack/solid-router' { preLoaderRoute: typeof NotRemountDepsRouteImport parentRoute: typeof rootRouteImport } - '/lazy-page': { - id: '/lazy-page' - path: '/lazy-page' - fullPath: '/lazy-page' - preLoaderRoute: typeof LazyPageRouteImport - parentRoute: typeof rootRouteImport - } '/hover-preload-hash': { id: '/hover-preload-hash' path: '/hover-preload-hash' @@ -1493,13 +1460,6 @@ declare module '@tanstack/solid-router' { preLoaderRoute: typeof LayoutLayout2RouteImport parentRoute: typeof LayoutRoute } - '/(tests)/normal-page': { - id: '/(tests)/normal-page' - path: '/normal-page' - fullPath: '/normal-page' - preLoaderRoute: typeof testsNormalPageRouteImport - parentRoute: typeof rootRouteImport - } '/(group)/lazyinside': { id: '/(group)/lazyinside' path: '/lazyinside' @@ -2484,7 +2444,6 @@ const rootRouteChildren: RootRouteChildren = { EditingARoute: EditingARoute, EditingBRoute: EditingBRoute, HoverPreloadHashRoute: HoverPreloadHashRoute, - LazyPageRoute: LazyPageRoute, NotRemountDepsRoute: NotRemountDepsRoute, PostsRoute: PostsRouteWithChildren, RemountDepsRoute: RemountDepsRoute, @@ -2495,7 +2454,6 @@ const rootRouteChildren: RootRouteChildren = { groupLayoutRoute: groupLayoutRouteWithChildren, groupInsideRoute: groupInsideRoute, groupLazyinsideRoute: groupLazyinsideRoute, - testsNormalPageRoute: testsNormalPageRoute, RedirectTargetRoute: RedirectTargetRouteWithChildren, ParamsPsIndexRoute: ParamsPsIndexRoute, RedirectIndexRoute: RedirectIndexRoute, diff --git a/e2e/solid-router/basic-file-based/src/routes/(tests)/normal-page.tsx b/e2e/solid-router/basic-file-based/src/routes/(tests)/normal-page.tsx deleted file mode 100644 index b911e0abace..00000000000 --- a/e2e/solid-router/basic-file-based/src/routes/(tests)/normal-page.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { Link, createFileRoute } from '@tanstack/solid-router' - -export const Route = createFileRoute('/(tests)/normal-page')({ - component: NormalPage, -}) - -function NormalPage() { - return ( -
-

Normal Page

- - {/* Add the link that the test is looking for */} -
- - Head-/lazy-page - -
- -
- Scroll down to see the target element -
- -
- This is the target element at the bottom of the page -
-
- ) -} diff --git a/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx b/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx index 7ffe0feda31..e1e0a3418cd 100644 --- a/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx +++ b/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx @@ -1,7 +1,11 @@ import { Link, createFileRoute } from '@tanstack/solid-router' export const Route = createFileRoute('/hover-preload-hash')({ - component: function About() { + component: Page, +}) + +function Page() { + return <>
Hello from About!
@@ -33,5 +37,5 @@ export const Route = createFileRoute('/hover-preload-hash')({

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

- }, -}) \ No newline at end of file + +} \ No newline at end of file diff --git a/e2e/solid-router/basic-file-based/src/routes/lazy-page.tsx b/e2e/solid-router/basic-file-based/src/routes/lazy-page.tsx deleted file mode 100644 index 9635f38dffc..00000000000 --- a/e2e/solid-router/basic-file-based/src/routes/lazy-page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { createFileRoute } from '@tanstack/solid-router' - -export const Route = createFileRoute('/lazy-page')({ - component: LazyPage, -}) - -function LazyPage() { - return ( -
-

Lazy Loaded Page

-

This page was loaded lazily.

-
- ) -} diff --git a/e2e/solid-router/basic-file-based/tests/hover-preload-hash.spec.ts b/e2e/solid-router/basic-file-based/tests/hover-preload-hash.spec.ts index 198a4d9f061..caa82455404 100644 --- a/e2e/solid-router/basic-file-based/tests/hover-preload-hash.spec.ts +++ b/e2e/solid-router/basic-file-based/tests/hover-preload-hash.spec.ts @@ -1,23 +1,25 @@ import { expect, test } from '@playwright/test' import { toRuntimePath } from '@tanstack/router-e2e-utils' -// Solid variant of the hover-preload hash scroll regression test. -test('hovering links does not trigger hash scroll (no navigation) [solid]', async ({ +test('clicking hash link then hovering another link does not scroll back to hash', async ({ page, }) => { - // Go to a page with a hash target at the bottom - await page.goto(toRuntimePath('/normal-page#at-the-bottom')) - await expect(page.getByTestId('at-the-bottom')).toBeInViewport() + // Go to the page without hash + await page.goto(toRuntimePath('/hover-preload-hash')) - // Scroll up so the hash target is no longer in view - await page.evaluate(() => window.scrollBy(0, -300)) - await expect(page.getByTestId('at-the-bottom')).not.toBeInViewport() + // Click the hash link to navigate to position1 + await page.getByRole('link', { name: 'To hash' }).click() + await expect(page.locator('#position1')).toBeInViewport() - // Hover a header link to trigger intent preload (should NOT change scroll) - await page.getByRole('link', { name: 'Head-/lazy-page' }).hover() + // Scroll up so position1 is no longer in view + await page.evaluate(() => window.scrollTo(0, 0)) + await expect(page.locator('#position1')).not.toBeInViewport() + + // Hover the link to trigger intent preload (should NOT scroll back) + await page.getByTestId('link-to-only-route-inside-group').hover() await page.waitForTimeout(400) // Ensure we did not jump back to the hash target - await expect(page.getByTestId('at-the-bottom')).not.toBeInViewport() + await expect(page.locator('#position1')).not.toBeInViewport() }) From ba3bf14cf768a9e07aa65972be45d6392f89bc20 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Sat, 22 Nov 2025 23:44:11 +0000 Subject: [PATCH 09/12] ci: apply automated fixes --- .../src/routes/hover-preload-hash.tsx | 287 ++++++++++++++++-- .../tests/hover-preload-hash.spec.ts | 1 - .../src/routes/hover-preload-hash.tsx | 287 ++++++++++++++++-- .../tests/hover-preload-hash.spec.ts | 1 - 4 files changed, 510 insertions(+), 66 deletions(-) diff --git a/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx b/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx index 796d6da98a1..68e1df69391 100644 --- a/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx +++ b/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx @@ -5,37 +5,260 @@ export const Route = createFileRoute('/hover-preload-hash')({ }) function Page() { - - return <> - -
Hello from About!
- - To hash - + return ( + <> +
Hello from About!
+ + To hash + -

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Hash is here

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

Hash is here

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

- -} \ No newline at end of file + ) +} diff --git a/e2e/react-router/basic-file-based/tests/hover-preload-hash.spec.ts b/e2e/react-router/basic-file-based/tests/hover-preload-hash.spec.ts index caa82455404..6f02d5fada5 100644 --- a/e2e/react-router/basic-file-based/tests/hover-preload-hash.spec.ts +++ b/e2e/react-router/basic-file-based/tests/hover-preload-hash.spec.ts @@ -1,7 +1,6 @@ import { expect, test } from '@playwright/test' import { toRuntimePath } from '@tanstack/router-e2e-utils' - test('clicking hash link then hovering another link does not scroll back to hash', async ({ page, }) => { diff --git a/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx b/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx index e1e0a3418cd..b124cc5e9cd 100644 --- a/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx +++ b/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx @@ -5,37 +5,260 @@ export const Route = createFileRoute('/hover-preload-hash')({ }) function Page() { - - return <> - -
Hello from About!
- - To hash - + return ( + <> +
Hello from About!
+ + To hash + -

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Hash is here

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

Hash is here

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

+

+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, + sed diam voluptua. At vero eos et accusam et justo duo dolores et ea + rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem + ipsum dolor sit amet. +

- -} \ No newline at end of file + ) +} diff --git a/e2e/solid-router/basic-file-based/tests/hover-preload-hash.spec.ts b/e2e/solid-router/basic-file-based/tests/hover-preload-hash.spec.ts index caa82455404..6f02d5fada5 100644 --- a/e2e/solid-router/basic-file-based/tests/hover-preload-hash.spec.ts +++ b/e2e/solid-router/basic-file-based/tests/hover-preload-hash.spec.ts @@ -1,7 +1,6 @@ import { expect, test } from '@playwright/test' import { toRuntimePath } from '@tanstack/router-e2e-utils' - test('clicking hash link then hovering another link does not scroll back to hash', async ({ page, }) => { From e6eb4c69e4ed7324757cc9f731244c264bc36c08 Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Sun, 23 Nov 2025 00:51:43 +0100 Subject: [PATCH 10/12] use test id to locate element --- .../src/routes/hover-preload-hash.tsx | 17 +++++++---------- .../tests/hover-preload-hash.spec.ts | 2 +- .../src/routes/hover-preload-hash.tsx | 17 +++++++---------- .../tests/hover-preload-hash.spec.ts | 2 +- 4 files changed, 16 insertions(+), 22 deletions(-) diff --git a/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx b/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx index 68e1df69391..4d96915bc12 100644 --- a/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx +++ b/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx @@ -5,16 +5,13 @@ export const Route = createFileRoute('/hover-preload-hash')({ }) function Page() { - return ( - <> -
Hello from About!
- - To hash - + + return <> + +
Hello from About!
+ + To hash +

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy diff --git a/e2e/react-router/basic-file-based/tests/hover-preload-hash.spec.ts b/e2e/react-router/basic-file-based/tests/hover-preload-hash.spec.ts index 6f02d5fada5..b090c2a6b7e 100644 --- a/e2e/react-router/basic-file-based/tests/hover-preload-hash.spec.ts +++ b/e2e/react-router/basic-file-based/tests/hover-preload-hash.spec.ts @@ -8,7 +8,7 @@ test('clicking hash link then hovering another link does not scroll back to hash await page.goto(toRuntimePath('/hover-preload-hash')) // Click the hash link to navigate to position1 - await page.getByRole('link', { name: 'To hash' }).click() + await page.getByTestId('link-to-hash').click() await expect(page.locator('#position1')).toBeInViewport() // Scroll up so position1 is no longer in view diff --git a/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx b/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx index b124cc5e9cd..71da2a35c97 100644 --- a/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx +++ b/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx @@ -5,16 +5,13 @@ export const Route = createFileRoute('/hover-preload-hash')({ }) function Page() { - return ( - <> -

Hello from About!
- - To hash - + + return <> + +
Hello from About!
+ + To hash +

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy diff --git a/e2e/solid-router/basic-file-based/tests/hover-preload-hash.spec.ts b/e2e/solid-router/basic-file-based/tests/hover-preload-hash.spec.ts index 6f02d5fada5..b090c2a6b7e 100644 --- a/e2e/solid-router/basic-file-based/tests/hover-preload-hash.spec.ts +++ b/e2e/solid-router/basic-file-based/tests/hover-preload-hash.spec.ts @@ -8,7 +8,7 @@ test('clicking hash link then hovering another link does not scroll back to hash await page.goto(toRuntimePath('/hover-preload-hash')) // Click the hash link to navigate to position1 - await page.getByRole('link', { name: 'To hash' }).click() + await page.getByTestId('link-to-hash').click() await expect(page.locator('#position1')).toBeInViewport() // Scroll up so position1 is no longer in view From ed724fb8fc9932b65b50205215d577a64f45110a Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Sun, 23 Nov 2025 00:55:17 +0100 Subject: [PATCH 11/12] format --- .../basic-file-based/src/routes/hover-preload-hash.tsx | 2 +- .../basic-file-based/src/routes/hover-preload-hash.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx b/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx index 4d96915bc12..d890cc66091 100644 --- a/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx +++ b/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx @@ -257,5 +257,5 @@ function Page() { ipsum dolor sit amet.

- ) + } diff --git a/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx b/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx index 71da2a35c97..2a6a0153e10 100644 --- a/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx +++ b/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx @@ -257,5 +257,5 @@ function Page() { ipsum dolor sit amet.

- ) + } From a8fcb2e1e9fab2d27904058476a15a9d01f9a97a Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Sun, 23 Nov 2025 00:55:34 +0100 Subject: [PATCH 12/12] format --- .../src/routes/hover-preload-hash.tsx | 20 +++++++++++-------- .../src/routes/hover-preload-hash.tsx | 20 +++++++++++-------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx b/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx index d890cc66091..6b62bac50a8 100644 --- a/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx +++ b/e2e/react-router/basic-file-based/src/routes/hover-preload-hash.tsx @@ -5,13 +5,17 @@ export const Route = createFileRoute('/hover-preload-hash')({ }) function Page() { - - return <> - -
Hello from About!
- - To hash - + return ( + <> +
Hello from About!
+ + To hash +

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy @@ -257,5 +261,5 @@ function Page() { ipsum dolor sit amet.

- + ) } diff --git a/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx b/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx index 2a6a0153e10..9b9da8bb900 100644 --- a/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx +++ b/e2e/solid-router/basic-file-based/src/routes/hover-preload-hash.tsx @@ -5,13 +5,17 @@ export const Route = createFileRoute('/hover-preload-hash')({ }) function Page() { - - return <> - -
Hello from About!
- - To hash - + return ( + <> +
Hello from About!
+ + To hash +

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy @@ -257,5 +261,5 @@ function Page() { ipsum dolor sit amet.

- + ) }