Skip to content

Commit c83e01e

Browse files
committed
test: Add linking tests to React
1 parent 160f5a7 commit c83e01e

8 files changed

+82
-8
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { testLinking } from 'e2e-shared/specs/linking.cy'
2+
3+
testLinking({
4+
hook: 'useQueryState',
5+
path: '/linking/useQueryState'
6+
})
7+
8+
testLinking({
9+
hook: 'useQueryStates',
10+
path: '/linking/useQueryStates'
11+
})

packages/e2e/react/src/layout.tsx

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { HydrationMarker } from 'e2e-shared/components/hydration-marker'
2+
import { LinkProvider, type LinkProps } from 'e2e-shared/components/link'
3+
import { RouterProvider, type Router } from 'e2e-shared/components/router'
4+
import type { ReactNode } from 'react'
5+
6+
function Link({ href, ...props }: LinkProps) {
7+
return <a href={href} {...props} />
8+
}
9+
10+
export function RootLayout({ children }: { children: ReactNode }) {
11+
return (
12+
<>
13+
<HydrationMarker />
14+
<LinkProvider Link={Link}>
15+
<RouterProvider useRouter={useRouter}>{children}</RouterProvider>
16+
</LinkProvider>
17+
</>
18+
)
19+
}
20+
21+
function useRouter(): Router {
22+
return {
23+
replace(url, options) {
24+
if (options.shallow) {
25+
history.replaceState(history.state, '', url)
26+
} else {
27+
location.replace(url)
28+
}
29+
},
30+
push(url, options) {
31+
if (options.shallow) {
32+
history.pushState(history.state, '', url)
33+
} else {
34+
location.assign(url)
35+
}
36+
}
37+
}
38+
}

packages/e2e/react/src/main.tsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
import { HydrationMarker } from 'e2e-shared/components/hydration-marker'
21
import { NuqsAdapter } from 'nuqs/adapters/react'
32
import { StrictMode } from 'react'
43
import { createRoot } from 'react-dom/client'
4+
import { RootLayout } from './layout'
55
import { Router } from './routes'
66

77
createRoot(document.getElementById('root')!).render(
88
<StrictMode>
9-
<HydrationMarker />
109
<NuqsAdapter>
11-
<Router />
10+
<RootLayout>
11+
<Router />
12+
</RootLayout>
1213
</NuqsAdapter>
1314
</StrictMode>
1415
)

packages/e2e/react/src/routes.tsx

+9-5
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,15 @@ import { JSX, lazy } from 'react'
22

33
// prettier-ignore
44
const routes: Record<string, React.LazyExoticComponent<() => JSX.Element>> = {
5-
'/hash-preservation': lazy(() => import('./routes/hash-preservation')),
6-
'/basic-io/useQueryState': lazy(() => import('./routes/basic-io.useQueryState')),
7-
'/basic-io/useQueryStates': lazy(() => import('./routes/basic-io.useQueryStates')),
8-
'/push/useQueryState': lazy(() => import('./routes/push.useQueryState')),
9-
'/push/useQueryStates': lazy(() => import('./routes/push.useQueryStates')),
5+
'/hash-preservation': lazy(() => import('./routes/hash-preservation')),
6+
'/basic-io/useQueryState': lazy(() => import('./routes/basic-io.useQueryState')),
7+
'/basic-io/useQueryStates': lazy(() => import('./routes/basic-io.useQueryStates')),
8+
'/push/useQueryState': lazy(() => import('./routes/push.useQueryState')),
9+
'/push/useQueryStates': lazy(() => import('./routes/push.useQueryStates')),
10+
'/linking/useQueryState': lazy(() => import('./routes/linking.useQueryState')),
11+
'/linking/useQueryState/other': lazy(() => import('./routes/linking.useQueryState.other')),
12+
'/linking/useQueryStates': lazy(() => import('./routes/linking.useQueryStates')),
13+
'/linking/useQueryStates/other': lazy(() => import('./routes/linking.useQueryStates.other')),
1014
}
1115

1216
export function Router() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { LinkingUseQueryState } from 'e2e-shared/specs/linking'
2+
3+
export default function Page() {
4+
return <LinkingUseQueryState path="/linking/useQueryState" />
5+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { LinkingUseQueryState } from 'e2e-shared/specs/linking'
2+
3+
export default function Page() {
4+
return <LinkingUseQueryState path="/linking/useQueryState" />
5+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { LinkingUseQueryStates } from 'e2e-shared/specs/linking'
2+
3+
export default function Page() {
4+
return <LinkingUseQueryStates path="/linking/useQueryStates" />
5+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { LinkingUseQueryStates } from 'e2e-shared/specs/linking'
2+
3+
export default function Page() {
4+
return <LinkingUseQueryStates path="/linking/useQueryStates" />
5+
}

0 commit comments

Comments
 (0)