|
1 | 1 | import { test as testBase, expect } from '@playwright/test'
|
2 |
| -import { type Register, generatePath } from 'react-router' |
3 |
| - |
4 |
| -type Pages = Register['pages'] |
5 |
| - |
6 |
| -type Routes<P extends Record<string, any>> = { |
7 |
| - [K in keyof P]: K & string |
8 |
| -}[keyof P] & {} |
9 |
| - |
10 |
| -type Params< |
11 |
| - R extends string, |
12 |
| - Pages extends Record<string, any>, |
13 |
| -> = keyof Pages[R]['params'] extends never ? never : Pages[R]['params'] |
| 2 | +import { href, type Register } from 'react-router' |
14 | 3 |
|
15 | 4 | interface Fixtures {
|
16 |
| - navigate: <R extends Routes<Pages>>( |
17 |
| - ...args: [Params<R, Pages>] extends [never] |
18 |
| - ? [route: R, params?: never] |
19 |
| - : [route: R, params: Params<R, Pages>] |
| 5 | + navigate: <T extends keyof Register['pages']>( |
| 6 | + ...args: Parameters<typeof href<T>> |
20 | 7 | ) => Promise<void>
|
21 | 8 | }
|
22 | 9 |
|
23 | 10 | export const test = testBase.extend<Fixtures>({
|
24 | 11 | async navigate({ page }, use) {
|
25 |
| - await use( |
26 |
| - async ( |
27 |
| - ...args: |
28 |
| - | [route: string, route?: never] |
29 |
| - | [route: string, params: Record<string, any>] |
30 |
| - ) => { |
31 |
| - const [route, params] = args |
32 |
| - await page.goto(generatePath(route, params)) |
33 |
| - }, |
34 |
| - ) |
| 12 | + await use(async (...args) => { |
| 13 | + await page.goto(href(...args)) |
| 14 | + }) |
35 | 15 | },
|
36 | 16 | })
|
37 | 17 |
|
|
0 commit comments