Skip to content

Commit 3f1f24f

Browse files
authoredJan 31, 2025··
tests: create shared, non-published package for e2e utils (#3296)
1 parent c5b3f54 commit 3f1f24f

40 files changed

+167
-47
lines changed
 

‎e2e/e2e-utils/eslint.config.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// @ts-check
2+
3+
import rootConfig from '../../eslint.config.js'
4+
5+
export default [...rootConfig]

‎e2e/e2e-utils/package.json

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"name": "@tanstack/router-e2e-utils",
3+
"private": true,
4+
"scripts": {
5+
"clean": "rimraf ./dist && rimraf ./coverage",
6+
"test:eslint": "eslint ./src",
7+
"test:unit": "exit 0; vitest --typecheck",
8+
"build": "vite build && tsc --noEmit"
9+
},
10+
"type": "module",
11+
"types": "dist/esm/index.d.ts",
12+
"main": "dist/cjs/index.cjs",
13+
"module": "dist/esm/index.js",
14+
"exports": {
15+
".": {
16+
"import": {
17+
"types": "./dist/esm/index.d.ts",
18+
"default": "./dist/esm/index.js"
19+
},
20+
"require": {
21+
"types": "./dist/cjs/index.d.cts",
22+
"default": "./dist/cjs/index.cjs"
23+
}
24+
},
25+
"./package.json": "./package.json"
26+
},
27+
"dependencies": {},
28+
"devDependencies": {}
29+
}

‎e2e/utils.js ‎e2e/e2e-utils/src/derivePort.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@ import * as crypto from 'node:crypto'
77
* @param {number} max - Maximum port value.
88
* @returns {number} A port within the range [min, max].
99
*/
10-
export function derivePort(input, min = 5600, max = 65535) {
10+
export function derivePort(
11+
input: string,
12+
min: number = 5600,
13+
max: number = 65535,
14+
): number {
1115
// Hash the input using SHA-256
1216
const hash = crypto.createHash('sha256').update(input).digest('hex')
1317

‎e2e/e2e-utils/src/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { derivePort } from './derivePort'

‎e2e/e2e-utils/tsconfig.json

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"extends": "../../tsconfig.json",
3+
"include": ["src", "vite.config.ts", "tests"]
4+
}

‎e2e/e2e-utils/vite.config.ts

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { defineConfig, mergeConfig } from 'vitest/config'
2+
import { tanstackViteConfig } from '@tanstack/config/vite'
3+
import packageJson from './package.json'
4+
5+
const config = defineConfig({
6+
test: {
7+
name: packageJson.name,
8+
dir: './tests',
9+
watch: false,
10+
typecheck: { enabled: true },
11+
},
12+
})
13+
14+
export default mergeConfig(
15+
config,
16+
tanstackViteConfig({
17+
entry: './src/index.ts',
18+
srcDir: './src',
19+
}),
20+
)

‎e2e/react-router/basic-esbuild-file-based/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"type": "module",
55
"scripts": {
66
"dev": "esbuild src/main.tsx --serve=5601 --bundle --outfile=dist/main.js --watch --servedir=.",
7-
"build": "esbuild src/main.tsx --bundle --outfile=dist/main.js",
7+
"build": "esbuild src/main.tsx --bundle --outfile=dist/main.js && tsc --noEmit",
88
"serve": "esbuild src/main.tsx --bundle --outfile=dist/main.js --servedir=.",
99
"start": "dev",
1010
"test:e2e": "playwright test --project=chromium"
@@ -21,6 +21,7 @@
2121
},
2222
"devDependencies": {
2323
"@playwright/test": "^1.50.0",
24+
"@tanstack/router-e2e-utils": "workspace:^",
2425
"@types/react": "^18.2.47",
2526
"@types/react-dom": "^18.2.18",
2627
"esbuild": "^0.24.2"

‎e2e/react-router/basic-esbuild-file-based/playwright.config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { defineConfig, devices } from '@playwright/test'
2-
import { derivePort } from '../../utils.js'
2+
import { derivePort } from '@tanstack/router-e2e-utils'
33
import packageJson from './package.json' with { type: 'json' }
44

55
const PORT = derivePort(packageJson.name)

‎e2e/react-router/basic-file-based-code-splitting/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
},
2424
"devDependencies": {
2525
"@playwright/test": "^1.50.0",
26+
"@tanstack/router-e2e-utils": "workspace:^",
2627
"@types/react": "^18.2.47",
2728
"@types/react-dom": "^18.2.18",
2829
"@vitejs/plugin-react": "^4.3.4",

‎e2e/react-router/basic-file-based-code-splitting/playwright.config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { defineConfig, devices } from '@playwright/test'
2-
import { derivePort } from '../../utils.js'
2+
import { derivePort } from '@tanstack/router-e2e-utils'
33
import packageJson from './package.json' with { type: 'json' }
44

55
const PORT = derivePort(packageJson.name)

‎e2e/react-router/basic-file-based/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
},
2626
"devDependencies": {
2727
"@playwright/test": "^1.50.0",
28+
"@tanstack/router-e2e-utils": "workspace:^",
2829
"@types/react": "^18.2.47",
2930
"@types/react-dom": "^18.2.18",
3031
"@vitejs/plugin-react": "^4.3.4",

‎e2e/react-router/basic-file-based/playwright.config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { defineConfig, devices } from '@playwright/test'
2-
import { derivePort } from '../../utils.js'
2+
import { derivePort } from '@tanstack/router-e2e-utils'
33
import packageJson from './package.json' with { type: 'json' }
44

55
const PORT = derivePort(packageJson.name)

‎e2e/react-router/basic-file-based/tests/redirect.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { expect, test } from '@playwright/test'
22
import combinateImport from 'combinate'
3-
import { derivePort } from '../../../utils'
3+
import { derivePort } from '@tanstack/router-e2e-utils'
44
import packageJson from '../package.json' with { type: 'json' }
55

66
// somehow playwright does not correctly import default exports

‎e2e/react-router/basic-react-query-file-based/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
},
2727
"devDependencies": {
2828
"@playwright/test": "^1.50.0",
29+
"@tanstack/router-e2e-utils": "workspace:^",
2930
"@types/react": "^18.2.47",
3031
"@types/react-dom": "^18.2.18",
3132
"@vitejs/plugin-react": "^4.3.4",

‎e2e/react-router/basic-react-query-file-based/playwright.config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { defineConfig, devices } from '@playwright/test'
2-
import { derivePort } from '../../utils.js'
2+
import { derivePort } from '@tanstack/router-e2e-utils'
33
import packageJson from './package.json' with { type: 'json' }
44

55
const PORT = derivePort(packageJson.name)

‎e2e/react-router/basic/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
},
2323
"devDependencies": {
2424
"@playwright/test": "^1.50.0",
25+
"@tanstack/router-e2e-utils": "workspace:^",
2526
"@types/react": "^18.2.47",
2627
"@types/react-dom": "^18.2.18",
2728
"@vitejs/plugin-react": "^4.3.4",

‎e2e/react-router/basic/playwright.config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { defineConfig, devices } from '@playwright/test'
2-
import { derivePort } from '../../utils.js'
2+
import { derivePort } from '@tanstack/router-e2e-utils'
33
import packageJson from './package.json' with { type: 'json' }
44

55
const PORT = derivePort(packageJson.name)

‎e2e/react-router/scroll-restoration-sandbox-vite/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"scripts": {
66
"dev": "vite --port 3000",
77
"dev:e2e": "vite",
8-
"build": "vite build",
8+
"build": "vite build && tsc --noEmit",
99
"serve": "vite preview",
1010
"start": "vite",
1111
"test:e2e": "playwright test --project=chromium"
@@ -25,6 +25,7 @@
2525
},
2626
"devDependencies": {
2727
"@playwright/test": "^1.50.0",
28+
"@tanstack/router-e2e-utils": "workspace:^",
2829
"@types/react": "^18.2.47",
2930
"@types/react-dom": "^18.2.18",
3031
"@vitejs/plugin-react": "^4.3.4",

‎e2e/react-router/scroll-restoration-sandbox-vite/playwright.config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { defineConfig, devices } from '@playwright/test'
2-
import { derivePort } from '../../utils.js'
2+
import { derivePort } from '@tanstack/router-e2e-utils'
33
import packageJson from './package.json' with { type: 'json' }
44

55
const PORT = derivePort(packageJson.name)

‎e2e/react-router/sentry-integration/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
},
2626
"devDependencies": {
2727
"@playwright/test": "^1.50.0",
28+
"@tanstack/router-e2e-utils": "workspace:^",
2829
"@types/react": "^18.2.47",
2930
"@types/react-dom": "^18.2.18",
3031
"@vitejs/plugin-react": "^4.3.4",

‎e2e/react-router/sentry-integration/playwright.config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { defineConfig, devices } from '@playwright/test'
2-
import { derivePort } from '../../utils.js'
2+
import { derivePort } from '@tanstack/router-e2e-utils'
33
import packageJson from './package.json' with { type: 'json' }
44

55
const PORT = derivePort(packageJson.name)

‎e2e/start/basic-auth/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
},
2626
"devDependencies": {
2727
"@playwright/test": "^1.50.0",
28+
"@tanstack/router-e2e-utils": "workspace:^",
2829
"@types/node": "^22.10.2",
2930
"@types/react": "^18.2.65",
3031
"@types/react-dom": "^18.2.21",

‎e2e/start/basic-auth/playwright.config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { defineConfig, devices } from '@playwright/test'
2-
import { derivePort } from '../../utils.js'
2+
import { derivePort } from '@tanstack/router-e2e-utils'
33
import packageJson from './package.json' with { type: 'json' }
44

55
const PORT = derivePort(packageJson.name)

‎e2e/start/basic-react-query/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"scripts": {
77
"dev": "vinxi dev --port 3000",
88
"dev:e2e": "vinxi dev",
9-
"build": "vinxi build",
9+
"build": "vinxi build && tsc --noEmit",
1010
"start": "vinxi start",
1111
"test:e2e": "playwright test --project=chromium"
1212
},
@@ -25,6 +25,7 @@
2525
},
2626
"devDependencies": {
2727
"@playwright/test": "^1.50.0",
28+
"@tanstack/router-e2e-utils": "workspace:^",
2829
"@types/node": "^22.10.2",
2930
"@types/react": "^18.2.65",
3031
"@types/react-dom": "^18.2.21",

‎e2e/start/basic-react-query/playwright.config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { defineConfig, devices } from '@playwright/test'
2-
import { derivePort } from '../../utils.js'
2+
import { derivePort } from '@tanstack/router-e2e-utils'
33
import packageJson from './package.json' with { type: 'json' }
44

55
const PORT = derivePort(packageJson.name)

‎e2e/start/basic-tsr-config/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"scripts": {
77
"dev": "vinxi dev --port 3000",
88
"dev:e2e": "vinxi dev",
9-
"build": "vinxi build",
9+
"build": "vinxi build && tsc --noEmit",
1010
"start": "vinxi start",
1111
"test:e2e": "playwright test --project=chromium"
1212
},
@@ -18,6 +18,7 @@
1818
"vinxi": "0.5.1"
1919
},
2020
"devDependencies": {
21+
"@tanstack/router-e2e-utils": "workspace:^",
2122
"@types/node": "^22.10.2",
2223
"@types/react": "^18.2.65",
2324
"@types/react-dom": "^18.2.21",

‎e2e/start/basic-tsr-config/playwright.config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { defineConfig, devices } from '@playwright/test'
2-
import { derivePort } from '../../utils.js'
2+
import { derivePort } from '@tanstack/router-e2e-utils'
33
import packageJson from './package.json' with { type: 'json' }
44

55
const PORT = derivePort(packageJson.name)

‎e2e/start/basic/app/client.tsx

+1-3
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ import { hydrateRoot } from 'react-dom/client'
33
import { StartClient } from '@tanstack/start'
44
import { createRouter } from './router'
55

6-
const router = createRouter({
7-
scrollRestoration: true,
8-
})
6+
const router = createRouter()
97

108
hydrateRoot(document, <StartClient router={router} />)

‎e2e/start/basic/app/routes/stream.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ const decoder = new TextDecoder('utf-8')
2525

2626
function Home() {
2727
const { promise, stream } = Route.useLoaderData()
28-
const [streamData, setStreamData] = useState([])
28+
const [streamData, setStreamData] = useState<Array<string>>([])
2929

3030
useEffect(() => {
3131
async function fetchStream() {

‎e2e/start/basic/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"scripts": {
77
"dev": "vinxi dev --port 3000",
88
"dev:e2e": "vinxi dev",
9-
"build": "vinxi build",
9+
"build": "vinxi build && tsc --noEmit",
1010
"start": "vinxi start",
1111
"test:e2e": "playwright test --project=chromium"
1212
},
@@ -26,6 +26,7 @@
2626
"@types/node": "^22.10.2",
2727
"@types/react": "^18.2.65",
2828
"@types/react-dom": "^18.2.21",
29+
"@tanstack/router-e2e-utils": "workspace:^",
2930
"@vitejs/plugin-react": "^4.3.4",
3031
"combinate": "^1.1.11",
3132
"postcss": "^8.5.1",

‎e2e/start/basic/playwright.config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { defineConfig, devices } from '@playwright/test'
2-
import { derivePort } from '../../utils.js'
2+
import { derivePort } from '@tanstack/router-e2e-utils'
33
import packageJson from './package.json' with { type: 'json' }
44

55
const PORT = derivePort(packageJson.name)

‎e2e/start/basic/tests/redirect.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { expect } from '@playwright/test'
22
import combinateImport from 'combinate'
3-
import { derivePort } from '../../../utils'
3+
import { derivePort } from '@tanstack/router-e2e-utils'
44
import packageJson from '../package.json' with { type: 'json' }
55
import { test } from './fixture'
66

‎e2e/start/clerk-basic/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
},
2424
"devDependencies": {
2525
"@playwright/test": "^1.50.0",
26+
"@tanstack/router-e2e-utils": "workspace:^",
2627
"@types/node": "^22.10.2",
2728
"@types/react": "^18.2.65",
2829
"@types/react-dom": "^18.2.21",

‎e2e/start/clerk-basic/playwright.config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { defineConfig, devices } from '@playwright/test'
2-
import { derivePort } from '../../utils.js'
2+
import { derivePort } from '@tanstack/router-e2e-utils'
33
import packageJson from './package.json' with { type: 'json' }
44

55
const PORT = derivePort(packageJson.name)

‎e2e/start/scroll-restoration/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"scripts": {
77
"dev": "vinxi dev --port 3000",
88
"dev:e2e": "vinxi dev",
9-
"build": "vinxi build",
9+
"build": "vinxi build && tsc --noEmit",
1010
"start": "vinxi start",
1111
"test:e2e": "playwright test --project=chromium"
1212
},
@@ -24,6 +24,7 @@
2424
},
2525
"devDependencies": {
2626
"@playwright/test": "^1.50.0",
27+
"@tanstack/router-e2e-utils": "workspace:^",
2728
"@types/node": "^22.10.2",
2829
"@types/react": "^18.2.65",
2930
"@types/react-dom": "^18.2.21",

‎e2e/start/scroll-restoration/playwright.config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { defineConfig, devices } from '@playwright/test'
2-
import { derivePort } from '../../utils.js'
2+
import { derivePort } from '@tanstack/router-e2e-utils'
33
import packageJson from './package.json' with { type: 'json' }
44

55
const PORT = derivePort(packageJson.name)

‎e2e/start/website/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"scripts": {
77
"dev": "vinxi dev --port 3000",
88
"dev:e2e": "vinxi dev",
9-
"build": "vinxi build",
9+
"build": "vinxi build && tsc --noEmit",
1010
"start": "vinxi start",
1111
"test:e2e": "playwright test --project=chromium"
1212
},
@@ -23,6 +23,7 @@
2323
},
2424
"devDependencies": {
2525
"@playwright/test": "^1.50.0",
26+
"@tanstack/router-e2e-utils": "workspace:^",
2627
"@types/node": "^22.10.2",
2728
"@types/react": "^18.2.65",
2829
"@types/react-dom": "^18.2.21",

‎e2e/start/website/playwright.config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { defineConfig, devices } from '@playwright/test'
2-
import { derivePort } from '../../utils.js'
2+
import { derivePort } from '@tanstack/router-e2e-utils'
33
import packageJson from './package.json' with { type: 'json' }
44

55
const PORT = derivePort(packageJson.name)

‎pnpm-lock.yaml

+63-19
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎pnpm-workspace.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@ packages:
44
- 'examples/react/router-monorepo-react-query/packages/*'
55
- 'examples/react/router-monorepo-simple/packages/*'
66
- 'examples/react/router-monorepo-simple-lazy/packages/*'
7+
- 'e2e/e2e-utils'
78
- 'e2e/react-router/*'
89
- 'e2e/start/*'

0 commit comments

Comments
 (0)
Please sign in to comment.