diff --git a/examples/react/package.json b/examples/react/package.json
index 3870d59da..58928dd05 100644
--- a/examples/react/package.json
+++ b/examples/react/package.json
@@ -24,12 +24,13 @@
"@types/react": "^19.0.10",
"@types/react-dom": "^19.0.4",
"@vitejs/plugin-react": "^4.6.0",
- "@vitest/browser": "^3.2.4",
+ "@vitest/browser": "^4.1.6",
+ "@vitest/browser-playwright": "^4.1.6",
"msw": "^2.10.4",
"playwright": "1.57.0",
"typescript": "^5.7.3",
"vite": "^7.1.11",
- "vitest": "^3.2.4",
- "vitest-browser-react": "^1.0.0"
+ "vitest": "^4.1.6",
+ "vitest-browser-react": "^2.2.0"
}
}
diff --git a/examples/react/test/index.test.tsx b/examples/react/test/index.test.tsx
index 886023456..53fe0ca7e 100644
--- a/examples/react/test/index.test.tsx
+++ b/examples/react/test/index.test.tsx
@@ -1,6 +1,6 @@
-import { userEvent } from '@vitest/browser/context'
import { setupWorker } from 'msw/browser'
import { afterAll, beforeAll, describe, expect, test } from 'vitest'
+import { userEvent } from 'vitest/browser'
import { render } from 'vitest-browser-react'
import { tusHandlers } from '../../shared/tusHandlers.js'
import App from '../src/App'
@@ -19,7 +19,7 @@ const createMockFile = (name: string, type: string, size: number = 1024) => {
describe('App', () => {
test('renders all main sections and upload button is initially disabled', async () => {
- const screen = render()
+ const screen = await render()
await expect.element(screen.getByText('With list')).toBeInTheDocument()
await expect.element(screen.getByText('With grid')).toBeInTheDocument()
@@ -33,7 +33,7 @@ describe('App', () => {
})
test('can add and remove files and upload', async () => {
- const screen = render()
+ const screen = await render()
const fileInput = document.getElementById(
'uppy-dropzone-file-input-uppy',
@@ -59,7 +59,7 @@ describe('App', () => {
describe('ScreenCapture Component', () => {
test('renders with title, control buttons, and close functionality works', async () => {
- const screen = render()
+ const screen = await render()
await screen.getByRole('button', { name: 'Screen Capture' }).click()
@@ -90,7 +90,7 @@ describe('ScreenCapture Component', () => {
describe('Webcam Component', () => {
test('renders with title, control buttons, and close functionality works', async () => {
- const screen = render()
+ const screen = await render()
await screen.getByRole('button', { name: 'Webcam' }).click()
@@ -121,7 +121,7 @@ describe('Webcam Component', () => {
describe('RemoteSource Component', () => {
test('renders login button and login interaction works', async () => {
- const screen = render()
+ const screen = await render()
await screen.getByRole('button', { name: 'Dropbox' }).click()
diff --git a/examples/react/vitest.config.ts b/examples/react/vitest.config.ts
index b054ef272..8f6e0a434 100644
--- a/examples/react/vitest.config.ts
+++ b/examples/react/vitest.config.ts
@@ -1,5 +1,6 @@
import tailwindcss from '@tailwindcss/vite'
import react from '@vitejs/plugin-react'
+import { playwright } from '@vitest/browser-playwright'
import { defineConfig } from 'vitest/config'
export default defineConfig({
@@ -7,7 +8,7 @@ export default defineConfig({
test: {
browser: {
enabled: true,
- provider: 'playwright',
+ provider: playwright(),
instances: [{ browser: 'chromium' }],
},
},
diff --git a/examples/sveltekit/package.json b/examples/sveltekit/package.json
index 07f02607d..b3fc6e5aa 100644
--- a/examples/sveltekit/package.json
+++ b/examples/sveltekit/package.json
@@ -26,7 +26,8 @@
"@sveltejs/kit": "^2.49.5",
"@sveltejs/vite-plugin-svelte": "^5.0.0",
"@tailwindcss/vite": "^4.0.0",
- "@vitest/browser": "^3.2.4",
+ "@vitest/browser": "^4.1.6",
+ "@vitest/browser-playwright": "^4.1.6",
"msw": "^2.10.4",
"playwright": "1.57.0",
"svelte": "^5.0.0",
@@ -34,7 +35,7 @@
"tailwindcss": "^4.0.0",
"typescript": "^5.0.0",
"vite": "^6.2.5",
- "vitest": "^3.2.4",
- "vitest-browser-svelte": "^1.0.0"
+ "vitest": "^4.1.6",
+ "vitest-browser-svelte": "^2.1.1"
}
}
diff --git a/examples/sveltekit/test/index.test.ts b/examples/sveltekit/test/index.test.ts
index a14fb3537..b2c019428 100644
--- a/examples/sveltekit/test/index.test.ts
+++ b/examples/sveltekit/test/index.test.ts
@@ -1,6 +1,6 @@
-import { userEvent } from '@vitest/browser/context'
import { setupWorker } from 'msw/browser'
import { afterAll, beforeAll, describe, expect, test } from 'vitest'
+import { userEvent } from 'vitest/browser'
import { render } from 'vitest-browser-svelte'
import { tusHandlers } from '../../shared/tusHandlers.js'
import PropsReactivity from '../src/components/test/props-reactivity.svelte'
@@ -20,7 +20,7 @@ const createMockFile = (name: string, type: string, size: number = 1024) => {
describe('App', () => {
test('renders all main sections and upload button is initially disabled', async () => {
- const screen = render(App)
+ const screen = await render(App)
await expect.element(screen.getByText('With list')).toBeInTheDocument()
await expect.element(screen.getByText('With grid')).toBeInTheDocument()
@@ -34,7 +34,7 @@ describe('App', () => {
})
test('can add and remove files and upload', async () => {
- const screen = render(App)
+ const screen = await render(App)
const fileInput = document.getElementById(
'uppy-dropzone-file-input-uppy',
@@ -60,7 +60,7 @@ describe('App', () => {
describe('ScreenCapture Component', () => {
test('renders with title, control buttons, and close functionality works', async () => {
- const screen = render(App)
+ const screen = await render(App)
await screen
.getByRole('button', { name: 'Screen Capture', exact: true })
@@ -93,7 +93,7 @@ describe('ScreenCapture Component', () => {
describe('Webcam Component', () => {
test('renders with title, control buttons, and close functionality works', async () => {
- const screen = render(App)
+ const screen = await render(App)
await screen.getByRole('button', { name: 'Webcam', exact: true }).click()
@@ -124,7 +124,7 @@ describe('Webcam Component', () => {
describe('RemoteSource Component', () => {
test('renders login button and login interaction works', async () => {
- const screen = render(App)
+ const screen = await render(App)
await screen.getByRole('button', { name: 'Dropbox', exact: true }).click()
@@ -136,7 +136,7 @@ describe('RemoteSource Component', () => {
})
test('Dashboard reacts to prop changes', async () => {
- const screen = render(PropsReactivity)
+ const screen = await render(PropsReactivity)
const toggleButton = screen.getByText('Toggle dashboard')
const dashboard = screen.container.querySelector('.uppy-Dashboard')
@@ -147,7 +147,7 @@ test('Dashboard reacts to prop changes', async () => {
})
test('StatusBar reacts to prop changes', async () => {
- const screen = render(PropsReactivity)
+ const screen = await render(PropsReactivity)
const toggleButton = screen.getByText('Toggle statusbar')
expect(
diff --git a/examples/sveltekit/vitest.config.ts b/examples/sveltekit/vitest.config.ts
index 924d3f7db..5a22254af 100644
--- a/examples/sveltekit/vitest.config.ts
+++ b/examples/sveltekit/vitest.config.ts
@@ -1,5 +1,6 @@
import { sveltekit } from '@sveltejs/kit/vite'
import tailwindcss from '@tailwindcss/vite'
+import { playwright } from '@vitest/browser-playwright'
import { defineConfig } from 'vite'
export default defineConfig({
@@ -7,7 +8,7 @@ export default defineConfig({
test: {
browser: {
enabled: true,
- provider: 'playwright',
+ provider: playwright(),
instances: [{ browser: 'chromium' }],
},
},
diff --git a/examples/vue/package.json b/examples/vue/package.json
index 03ab1288a..417f57875 100644
--- a/examples/vue/package.json
+++ b/examples/vue/package.json
@@ -22,12 +22,13 @@
"devDependencies": {
"@tailwindcss/vite": "^4.1.11",
"@vitejs/plugin-vue": "^6.0.1",
- "@vitest/browser": "^3.2.4",
+ "@vitest/browser": "^4.1.6",
+ "@vitest/browser-playwright": "^4.1.6",
"msw": "^2.10.4",
"playwright": "1.57.0",
"tailwindcss": "^4.0.0",
"vite": "^7.1.11",
- "vitest": "^3.2.4",
- "vitest-browser-vue": "^1.0.0"
+ "vitest": "^4.1.6",
+ "vitest-browser-vue": "^2.1.0"
}
}
diff --git a/examples/vue/test/index.test.ts b/examples/vue/test/index.test.ts
index 1aa54275d..183749623 100644
--- a/examples/vue/test/index.test.ts
+++ b/examples/vue/test/index.test.ts
@@ -1,6 +1,6 @@
-import { userEvent } from '@vitest/browser/context'
import { setupWorker } from 'msw/browser'
import { afterAll, beforeAll, describe, expect, test } from 'vitest'
+import { userEvent } from 'vitest/browser'
import { render } from 'vitest-browser-vue'
import { tusHandlers } from '../../shared/tusHandlers.js'
import App from '../src/App.vue'
@@ -19,7 +19,7 @@ const createMockFile = (name: string, type: string, size: number = 1024) => {
describe('App', () => {
test('renders all main sections and upload button is initially disabled', async () => {
- const screen = render(App)
+ const screen = await render(App)
await expect.element(screen.getByText('With list')).toBeInTheDocument()
await expect.element(screen.getByText('With grid')).toBeInTheDocument()
@@ -33,7 +33,7 @@ describe('App', () => {
})
test('can add and remove files and upload', async () => {
- const screen = render(App)
+ const screen = await render(App)
const fileInput = document.getElementById(
'uppy-dropzone-file-input-uppy',
@@ -59,7 +59,7 @@ describe('App', () => {
describe('ScreenCapture Component', () => {
test('renders with title, control buttons, and close functionality works', async () => {
- const screen = render(App)
+ const screen = await render(App)
await screen
.getByRole('button', { name: 'Screen Capture', exact: true })
@@ -92,7 +92,7 @@ describe('ScreenCapture Component', () => {
describe('Webcam Component', () => {
test('renders with title, control buttons, and close functionality works', async () => {
- const screen = render(App)
+ const screen = await render(App)
await screen.getByRole('button', { name: 'Webcam', exact: true }).click()
@@ -123,7 +123,7 @@ describe('Webcam Component', () => {
describe('RemoteSource Component', () => {
test('renders login button and login interaction works', async () => {
- const screen = render(App)
+ const screen = await render(App)
await screen.getByRole('button', { name: 'Dropbox', exact: true }).click()
diff --git a/examples/vue/vitest.config.ts b/examples/vue/vitest.config.ts
index 77d0e1624..308255596 100644
--- a/examples/vue/vitest.config.ts
+++ b/examples/vue/vitest.config.ts
@@ -1,5 +1,6 @@
import tailwindcss from '@tailwindcss/vite'
import vue from '@vitejs/plugin-vue'
+import { playwright } from '@vitest/browser-playwright'
import { defineConfig } from 'vite'
export default defineConfig({
@@ -7,7 +8,7 @@ export default defineConfig({
test: {
browser: {
enabled: true,
- provider: 'playwright',
+ provider: playwright(),
instances: [{ browser: 'chromium' }],
},
},
diff --git a/packages/@uppy/audio/package.json b/packages/@uppy/audio/package.json
index d7a7285e7..e6299125c 100644
--- a/packages/@uppy/audio/package.json
+++ b/packages/@uppy/audio/package.json
@@ -50,7 +50,7 @@
"postcss-cli": "^11.0.1",
"sass": "^1.89.2",
"typescript": "^5.8.3",
- "vitest": "^3.2.4"
+ "vitest": "^4.1.6"
},
"peerDependencies": {
"@uppy/core": "workspace:^"
diff --git a/packages/@uppy/aws-s3/package.json b/packages/@uppy/aws-s3/package.json
index 840997fad..2be35d170 100644
--- a/packages/@uppy/aws-s3/package.json
+++ b/packages/@uppy/aws-s3/package.json
@@ -44,11 +44,12 @@
"devDependencies": {
"@aws-sdk/client-s3": "^3.362.0",
"@aws-sdk/s3-request-presigner": "^3.362.0",
+ "@types/node": "^20.19.0",
"@uppy/core": "workspace:^",
"jsdom": "^26.1.0",
"nock": "^13.1.0",
"typescript": "^5.8.3",
- "vitest": "^3.2.4",
+ "vitest": "^4.1.6",
"whatwg-fetch": "3.6.2"
},
"peerDependencies": {
diff --git a/packages/@uppy/aws-s3/tsconfig.json b/packages/@uppy/aws-s3/tsconfig.json
index 4c4f37f88..324ec94b3 100644
--- a/packages/@uppy/aws-s3/tsconfig.json
+++ b/packages/@uppy/aws-s3/tsconfig.json
@@ -2,7 +2,8 @@
"extends": "../../../tsconfig.shared",
"compilerOptions": {
"emitDeclarationOnly": false,
- "noEmit": true
+ "noEmit": true,
+ "types": ["preact", "node"]
},
"include": ["./package.json", "./src/**/*.*"],
"references": [
diff --git a/packages/@uppy/companion-client/package.json b/packages/@uppy/companion-client/package.json
index 4da8b79e7..b6741da4c 100644
--- a/packages/@uppy/companion-client/package.json
+++ b/packages/@uppy/companion-client/package.json
@@ -43,7 +43,7 @@
"devDependencies": {
"jsdom": "^26.1.0",
"typescript": "^5.8.3",
- "vitest": "^3.2.4"
+ "vitest": "^4.1.6"
},
"peerDependencies": {
"@uppy/core": "workspace:^"
diff --git a/packages/@uppy/compressor/package.json b/packages/@uppy/compressor/package.json
index 4c4768f60..cb116dfda 100644
--- a/packages/@uppy/compressor/package.json
+++ b/packages/@uppy/compressor/package.json
@@ -44,9 +44,10 @@
"access": "public"
},
"devDependencies": {
+ "@types/node": "^20.19.0",
"jsdom": "^26.1.0",
"typescript": "^5.8.3",
- "vitest": "^3.2.4"
+ "vitest": "^4.1.6"
},
"scripts": {
"build": "tsc --build tsconfig.build.json",
diff --git a/packages/@uppy/compressor/tsconfig.json b/packages/@uppy/compressor/tsconfig.json
index 991d79cbd..c761a6e68 100644
--- a/packages/@uppy/compressor/tsconfig.json
+++ b/packages/@uppy/compressor/tsconfig.json
@@ -2,7 +2,8 @@
"extends": "../../../tsconfig.shared",
"compilerOptions": {
"emitDeclarationOnly": false,
- "noEmit": true
+ "noEmit": true,
+ "types": ["preact", "node"]
},
"include": ["./package.json", "./src/**/*.*"],
"references": [
diff --git a/packages/@uppy/core/package.json b/packages/@uppy/core/package.json
index 6c9b2089b..e97a2c1d0 100644
--- a/packages/@uppy/core/package.json
+++ b/packages/@uppy/core/package.json
@@ -52,6 +52,7 @@
},
"devDependencies": {
"@types/deep-freeze": "^0",
+ "@types/node": "^20.19.0",
"cssnano": "^7.0.7",
"deep-freeze": "^0.0.1",
"jsdom": "^26.1.0",
@@ -59,6 +60,6 @@
"postcss-cli": "^11.0.1",
"sass": "^1.89.2",
"typescript": "^5.8.3",
- "vitest": "^3.2.4"
+ "vitest": "^4.1.6"
}
}
diff --git a/packages/@uppy/core/src/mocks/acquirerPlugin1.ts b/packages/@uppy/core/src/mocks/acquirerPlugin1.ts
index 3495fc72a..baf98f18a 100644
--- a/packages/@uppy/core/src/mocks/acquirerPlugin1.ts
+++ b/packages/@uppy/core/src/mocks/acquirerPlugin1.ts
@@ -1,8 +1,8 @@
-import { vi } from 'vitest'
+import { type Mock, vi } from 'vitest'
import UIPlugin from '../UIPlugin.js'
import type Uppy from '../Uppy.js'
-type mock = ReturnType
+type mock = Mock<(...args: any[]) => any>
export default class TestSelector1 extends UIPlugin {
name: string
diff --git a/packages/@uppy/core/src/mocks/acquirerPlugin2.ts b/packages/@uppy/core/src/mocks/acquirerPlugin2.ts
index bced2d75a..917de0b1f 100644
--- a/packages/@uppy/core/src/mocks/acquirerPlugin2.ts
+++ b/packages/@uppy/core/src/mocks/acquirerPlugin2.ts
@@ -1,8 +1,8 @@
-import { vi } from 'vitest'
+import { type Mock, vi } from 'vitest'
import UIPlugin from '../UIPlugin.js'
import type Uppy from '../Uppy.js'
-type mock = ReturnType
+type mock = Mock<(...args: any[]) => any>
export default class TestSelector2 extends UIPlugin {
name: string
diff --git a/packages/@uppy/core/tsconfig.json b/packages/@uppy/core/tsconfig.json
index 2362543d8..66c8a6882 100644
--- a/packages/@uppy/core/tsconfig.json
+++ b/packages/@uppy/core/tsconfig.json
@@ -2,7 +2,8 @@
"extends": "../../../tsconfig.shared",
"compilerOptions": {
"emitDeclarationOnly": false,
- "noEmit": true
+ "noEmit": true,
+ "types": ["preact", "node"]
},
"include": ["./package.json", "./src/**/*.*"],
"references": [
diff --git a/packages/@uppy/dashboard/package.json b/packages/@uppy/dashboard/package.json
index 2969589b9..338dbe132 100644
--- a/packages/@uppy/dashboard/package.json
+++ b/packages/@uppy/dashboard/package.json
@@ -60,7 +60,8 @@
"@uppy/google-drive": "workspace:^",
"@uppy/url": "workspace:^",
"@uppy/webcam": "workspace:^",
- "@vitest/browser": "^3.2.4",
+ "@vitest/browser": "^4.1.6",
+ "@vitest/browser-playwright": "^4.1.6",
"cssnano": "^7.0.7",
"jsdom": "^26.1.0",
"playwright": "1.57.0",
@@ -69,7 +70,7 @@
"resize-observer-polyfill": "^1.5.0",
"sass": "^1.89.2",
"typescript": "^5.8.3",
- "vitest": "^3.2.4"
+ "vitest": "^4.1.6"
},
"peerDependencies": {
"@uppy/core": "workspace:^"
diff --git a/packages/@uppy/dashboard/src/GlobalSearch.browser.test.ts b/packages/@uppy/dashboard/src/GlobalSearch.browser.test.ts
index 16eaa00df..5222ee753 100644
--- a/packages/@uppy/dashboard/src/GlobalSearch.browser.test.ts
+++ b/packages/@uppy/dashboard/src/GlobalSearch.browser.test.ts
@@ -3,8 +3,8 @@ import Dashboard from '@uppy/dashboard'
import Dropbox from '@uppy/dropbox'
import GoogleDrive from '@uppy/google-drive'
import { ProviderViews } from '@uppy/provider-views'
-import { page, userEvent } from '@vitest/browser/context'
import { afterAll, afterEach, beforeAll, describe, expect, test } from 'vitest'
+import { page, userEvent } from 'vitest/browser'
import { worker } from './setup.js'
import '@uppy/core/css/style.css'
diff --git a/packages/@uppy/dashboard/src/index.browser.test.ts b/packages/@uppy/dashboard/src/index.browser.test.ts
index 4d5f03be6..584672fbc 100644
--- a/packages/@uppy/dashboard/src/index.browser.test.ts
+++ b/packages/@uppy/dashboard/src/index.browser.test.ts
@@ -1,6 +1,6 @@
import Uppy from '@uppy/core'
-import { page, userEvent } from '@vitest/browser/context'
import { expect, test } from 'vitest'
+import { page, userEvent } from 'vitest/browser'
import Dashboard from './Dashboard.js'
import '@uppy/core/css/style.css'
import '@uppy/dashboard/css/style.css'
diff --git a/packages/@uppy/dashboard/vitest.config.ts b/packages/@uppy/dashboard/vitest.config.ts
index b316316fc..6e0dfd6b1 100644
--- a/packages/@uppy/dashboard/vitest.config.ts
+++ b/packages/@uppy/dashboard/vitest.config.ts
@@ -1,3 +1,4 @@
+import { playwright } from '@vitest/browser-playwright'
import { defineConfig } from 'vitest/config'
export default defineConfig({
@@ -19,7 +20,7 @@ export default defineConfig({
include: ['src/**/*.browser.test.{ts,tsx}'],
browser: {
enabled: true,
- provider: 'playwright',
+ provider: playwright(),
instances: [{ browser: 'chromium' }],
},
},
diff --git a/packages/@uppy/golden-retriever/package.json b/packages/@uppy/golden-retriever/package.json
index f1c17b8c7..f6ef682a5 100644
--- a/packages/@uppy/golden-retriever/package.json
+++ b/packages/@uppy/golden-retriever/package.json
@@ -52,8 +52,10 @@
"@uppy/core": "workspace:^",
"@uppy/dashboard": "workspace:^",
"@uppy/xhr-upload": "workspace:^",
- "@vitest/browser": "^3.2.4",
+ "@vitest/browser": "^4.1.6",
+ "@vitest/browser-playwright": "^4.1.6",
+ "playwright": "1.57.0",
"typescript": "^5.8.3",
- "vitest": "^3.2.4"
+ "vitest": "^4.1.6"
}
}
diff --git a/packages/@uppy/golden-retriever/src/goldenRetriever.browser.test.ts b/packages/@uppy/golden-retriever/src/goldenRetriever.browser.test.ts
index 3e351a8bf..a40216b81 100644
--- a/packages/@uppy/golden-retriever/src/goldenRetriever.browser.test.ts
+++ b/packages/@uppy/golden-retriever/src/goldenRetriever.browser.test.ts
@@ -1,8 +1,8 @@
import Uppy, { type UppyEventMap, type UppyOptions } from '@uppy/core'
import Dashboard from '@uppy/dashboard'
import XHRUpload from '@uppy/xhr-upload'
-import { page, userEvent } from '@vitest/browser/context'
import { beforeEach, describe, expect } from 'vitest'
+import { page, userEvent } from 'vitest/browser'
import '@uppy/core/css/style.css'
import '@uppy/dashboard/css/style.css'
import { HttpResponse, http } from 'msw'
diff --git a/packages/@uppy/golden-retriever/vitest.config.ts b/packages/@uppy/golden-retriever/vitest.config.ts
index b316316fc..6e0dfd6b1 100644
--- a/packages/@uppy/golden-retriever/vitest.config.ts
+++ b/packages/@uppy/golden-retriever/vitest.config.ts
@@ -1,3 +1,4 @@
+import { playwright } from '@vitest/browser-playwright'
import { defineConfig } from 'vitest/config'
export default defineConfig({
@@ -19,7 +20,7 @@ export default defineConfig({
include: ['src/**/*.browser.test.{ts,tsx}'],
browser: {
enabled: true,
- provider: 'playwright',
+ provider: playwright(),
instances: [{ browser: 'chromium' }],
},
},
diff --git a/packages/@uppy/provider-views/package.json b/packages/@uppy/provider-views/package.json
index 074b6048c..2a081c544 100644
--- a/packages/@uppy/provider-views/package.json
+++ b/packages/@uppy/provider-views/package.json
@@ -57,7 +57,7 @@
"postcss-cli": "^11.0.1",
"sass": "^1.89.2",
"typescript": "^5.8.3",
- "vitest": "^3.2.4"
+ "vitest": "^4.1.6"
},
"peerDependencies": {
"@uppy/core": "workspace:^"
diff --git a/packages/@uppy/react/package.json b/packages/@uppy/react/package.json
index fad40892d..09d5951e9 100644
--- a/packages/@uppy/react/package.json
+++ b/packages/@uppy/react/package.json
@@ -50,7 +50,7 @@
"react": "^19.2.6",
"react-dom": "^19.2.6",
"typescript": "^5.8.3",
- "vitest": "^3.2.4"
+ "vitest": "^4.1.6"
},
"exports": {
".": "./lib/index.js",
diff --git a/packages/@uppy/remote-sources/package.json b/packages/@uppy/remote-sources/package.json
index 0648b4e77..425e07639 100644
--- a/packages/@uppy/remote-sources/package.json
+++ b/packages/@uppy/remote-sources/package.json
@@ -61,6 +61,6 @@
"jsdom": "^26.1.0",
"resize-observer-polyfill": "^1.5.1",
"typescript": "^5.8.3",
- "vitest": "^3.2.4"
+ "vitest": "^4.1.6"
}
}
diff --git a/packages/@uppy/store-default/package.json b/packages/@uppy/store-default/package.json
index 038e518cc..be4e10858 100644
--- a/packages/@uppy/store-default/package.json
+++ b/packages/@uppy/store-default/package.json
@@ -21,9 +21,10 @@
"url": "https://github.com/transloadit/uppy/issues"
},
"devDependencies": {
+ "@types/node": "^20.19.0",
"jsdom": "^26.1.0",
"typescript": "^5.8.3",
- "vitest": "^3.2.4"
+ "vitest": "^4.1.6"
},
"repository": {
"type": "git",
diff --git a/packages/@uppy/store-default/tsconfig.json b/packages/@uppy/store-default/tsconfig.json
index 687288fd8..4fc6da5a4 100644
--- a/packages/@uppy/store-default/tsconfig.json
+++ b/packages/@uppy/store-default/tsconfig.json
@@ -2,7 +2,8 @@
"extends": "../../../tsconfig.shared",
"compilerOptions": {
"emitDeclarationOnly": false,
- "noEmit": true
+ "noEmit": true,
+ "types": ["preact", "node"]
},
"include": ["./package.json", "./src/**/*.*"],
"references": []
diff --git a/packages/@uppy/thumbnail-generator/package.json b/packages/@uppy/thumbnail-generator/package.json
index 894de2e5f..60eca96de 100644
--- a/packages/@uppy/thumbnail-generator/package.json
+++ b/packages/@uppy/thumbnail-generator/package.json
@@ -44,7 +44,7 @@
"jsdom": "^26.1.0",
"namespace-emitter": "2.0.1",
"typescript": "^5.8.3",
- "vitest": "^3.2.4"
+ "vitest": "^4.1.6"
},
"peerDependencies": {
"@uppy/core": "workspace:^"
diff --git a/packages/@uppy/transloadit/package.json b/packages/@uppy/transloadit/package.json
index 73bcadfe2..c2336b4f9 100644
--- a/packages/@uppy/transloadit/package.json
+++ b/packages/@uppy/transloadit/package.json
@@ -55,7 +55,7 @@
"jsdom": "^26.1.0",
"msw": "^2.10.4",
"typescript": "^5.8.3",
- "vitest": "^3.2.4",
+ "vitest": "^4.1.6",
"whatwg-fetch": "^3.6.2"
}
}
diff --git a/packages/@uppy/transloadit/src/index.test.js b/packages/@uppy/transloadit/src/index.test.js
index 0bd6f1854..999e64c3c 100644
--- a/packages/@uppy/transloadit/src/index.test.js
+++ b/packages/@uppy/transloadit/src/index.test.js
@@ -5,12 +5,16 @@ import { describe, expect, it, vi } from 'vitest'
import Transloadit from './index.ts'
import 'whatwg-fetch'
-// Mock EventSource for testing
-global.EventSource = vi.fn(() => ({
- addEventListener: vi.fn(),
- removeEventListener: vi.fn(),
- close: vi.fn(),
-}))
+// Mock EventSource for testing. Vitest 4 made `vi.fn()` callable as a constructor,
+// but arrow-function implementations throw "is not a constructor" when invoked
+// with `new`. Use a regular function so `new EventSource(...)` works.
+global.EventSource = vi.fn(function MockEventSource() {
+ return {
+ addEventListener: vi.fn(),
+ removeEventListener: vi.fn(),
+ close: vi.fn(),
+ }
+})
describe('Transloadit', () => {
it('Does not leave lingering progress if getAssemblyOptions fails', () => {
diff --git a/packages/@uppy/tus/package.json b/packages/@uppy/tus/package.json
index 1595c2ee2..4227b33e4 100644
--- a/packages/@uppy/tus/package.json
+++ b/packages/@uppy/tus/package.json
@@ -45,7 +45,7 @@
"@uppy/core": "workspace:^",
"jsdom": "^26.1.0",
"typescript": "^5.8.3",
- "vitest": "^3.2.4"
+ "vitest": "^4.1.6"
},
"peerDependencies": {
"@uppy/core": "workspace:^"
diff --git a/packages/@uppy/url/package.json b/packages/@uppy/url/package.json
index 8d9375477..be8e6209d 100644
--- a/packages/@uppy/url/package.json
+++ b/packages/@uppy/url/package.json
@@ -55,13 +55,14 @@
},
"devDependencies": {
"@uppy/core": "workspace:^",
- "@vitest/browser": "^3.2.4",
+ "@vitest/browser": "^4.1.6",
+ "@vitest/browser-playwright": "^4.1.6",
"cssnano": "^7.0.7",
"playwright": "1.57.0",
"postcss": "^8.5.6",
"postcss-cli": "^11.0.1",
"sass": "^1.89.2",
"typescript": "^5.8.3",
- "vitest": "^3.2.4"
+ "vitest": "^4.1.6"
}
}
diff --git a/packages/@uppy/url/src/Url.browser.test.ts b/packages/@uppy/url/src/Url.browser.test.ts
index 1485f6d6d..c0fbbf9e2 100644
--- a/packages/@uppy/url/src/Url.browser.test.ts
+++ b/packages/@uppy/url/src/Url.browser.test.ts
@@ -1,6 +1,6 @@
import Uppy from '@uppy/core'
-import { page } from '@vitest/browser/context'
import { expect, test } from 'vitest'
+import { page } from 'vitest/browser'
import Url from './Url.js'
// Normally you would use one of vitest's framework renderers, such as vitest-browser-react,
diff --git a/packages/@uppy/url/vitest.config.ts b/packages/@uppy/url/vitest.config.ts
index 08eeefd25..657a2de41 100644
--- a/packages/@uppy/url/vitest.config.ts
+++ b/packages/@uppy/url/vitest.config.ts
@@ -1,3 +1,4 @@
+import { playwright } from '@vitest/browser-playwright'
import { defineConfig } from 'vitest/config'
export default defineConfig({
@@ -10,7 +11,7 @@ export default defineConfig({
globalSetup: './vitest.setup.ts',
browser: {
enabled: true,
- provider: 'playwright',
+ provider: playwright(),
instances: [{ browser: 'chromium' }],
},
},
diff --git a/packages/@uppy/utils/package.json b/packages/@uppy/utils/package.json
index e37471d8c..5ca0a0238 100644
--- a/packages/@uppy/utils/package.json
+++ b/packages/@uppy/utils/package.json
@@ -40,6 +40,6 @@
"@types/lodash": "^4.14.199",
"jsdom": "^26.1.0",
"typescript": "^5.8.3",
- "vitest": "^3.2.4"
+ "vitest": "^4.1.6"
}
}
diff --git a/packages/@uppy/utils/src/AbortController.test.ts b/packages/@uppy/utils/src/AbortController.test.ts
index 9ae956e58..d1bc6d64c 100644
--- a/packages/@uppy/utils/src/AbortController.test.ts
+++ b/packages/@uppy/utils/src/AbortController.test.ts
@@ -1,3 +1,8 @@
+// @vitest-environment node
+// `AbortController`/`AbortSignal` resolve to Node's globals; their abort event
+// is a Node `Event`. Under the jsdom environment vitest 4 swaps in jsdom's
+// `Event`, so cross-realm `instanceof Event` fails. This shim is DOM-agnostic,
+// so the node environment keeps both in the same realm.
import { describe, expect, it, vi } from 'vitest'
import { AbortController, AbortSignal } from './AbortController.js'
diff --git a/packages/@uppy/webcam/package.json b/packages/@uppy/webcam/package.json
index a80ecc19a..c9c27fb71 100644
--- a/packages/@uppy/webcam/package.json
+++ b/packages/@uppy/webcam/package.json
@@ -58,7 +58,7 @@
"postcss-cli": "^11.0.1",
"sass": "^1.89.2",
"typescript": "^5.8.3",
- "vitest": "^3.2.4"
+ "vitest": "^4.1.6"
},
"peerDependencies": {
"@uppy/core": "workspace:^"
diff --git a/packages/@uppy/xhr-upload/package.json b/packages/@uppy/xhr-upload/package.json
index 8b06983ac..69652ee1d 100644
--- a/packages/@uppy/xhr-upload/package.json
+++ b/packages/@uppy/xhr-upload/package.json
@@ -46,13 +46,14 @@
"devDependencies": {
"@uppy/core": "workspace:^",
"@uppy/dashboard": "workspace:^",
- "@vitest/browser": "^3.2.4",
+ "@vitest/browser": "^4.1.6",
+ "@vitest/browser-playwright": "^4.1.6",
"jsdom": "^26.1.0",
"msw": "^2.10.4",
"nock": "^13.1.0",
"playwright": "1.57.0",
"typescript": "^5.8.3",
- "vitest": "^3.2.4"
+ "vitest": "^4.1.6"
},
"peerDependencies": {
"@uppy/core": "workspace:^"
diff --git a/packages/@uppy/xhr-upload/src/xhrUpload.browser.test.ts b/packages/@uppy/xhr-upload/src/xhrUpload.browser.test.ts
index 722a0e426..f89bee6a4 100644
--- a/packages/@uppy/xhr-upload/src/xhrUpload.browser.test.ts
+++ b/packages/@uppy/xhr-upload/src/xhrUpload.browser.test.ts
@@ -1,8 +1,8 @@
import Uppy, { type UppyEventMap } from '@uppy/core'
import Dashboard from '@uppy/dashboard'
-import { page, userEvent } from '@vitest/browser/context'
import { HttpResponse, http } from 'msw'
import { afterEach, beforeEach, describe, expect } from 'vitest'
+import { page, userEvent } from 'vitest/browser'
import '@uppy/core/css/style.css'
import '@uppy/dashboard/css/style.css'
import XHRUpload from './index.js'
diff --git a/packages/@uppy/xhr-upload/vitest.config.ts b/packages/@uppy/xhr-upload/vitest.config.ts
index b316316fc..6e0dfd6b1 100644
--- a/packages/@uppy/xhr-upload/vitest.config.ts
+++ b/packages/@uppy/xhr-upload/vitest.config.ts
@@ -1,3 +1,4 @@
+import { playwright } from '@vitest/browser-playwright'
import { defineConfig } from 'vitest/config'
export default defineConfig({
@@ -19,7 +20,7 @@ export default defineConfig({
include: ['src/**/*.browser.test.{ts,tsx}'],
browser: {
enabled: true,
- provider: 'playwright',
+ provider: playwright(),
instances: [{ browser: 'chromium' }],
},
},
diff --git a/yarn.lock b/yarn.lock
index c502a17e5..e509a536b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3061,6 +3061,13 @@ __metadata:
languageName: node
linkType: hard
+"@blazediff/core@npm:1.9.1":
+ version: 1.9.1
+ resolution: "@blazediff/core@npm:1.9.1"
+ checksum: 10/6bb615f104da313934bcabc09627f3c803461bf85182453d5c13a6a354be4d32b35504b84f1043c21e95d0f6c0acb45083caeb72e72c1d6a76ca5e1f61f25510
+ languageName: node
+ linkType: hard
+
"@bundled-es-modules/cookie@npm:^2.0.1":
version: 2.0.1
resolution: "@bundled-es-modules/cookie@npm:2.0.1"
@@ -7651,12 +7658,12 @@ __metadata:
languageName: node
linkType: hard
-"@testing-library/user-event@npm:^14.6.1":
- version: 14.6.1
- resolution: "@testing-library/user-event@npm:14.6.1"
+"@testing-library/svelte-core@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "@testing-library/svelte-core@npm:1.0.0"
peerDependencies:
- "@testing-library/dom": ">=7.21.4"
- checksum: 10/34b74fff56a0447731a94b40d4cf246deb8dbc1c1e3aec93acd1c3377a760bb062e979f1572bb34ec164ad28ee2a391744b42d0d6d6cc16c4ce527e5e09610e1
+ svelte: ^3 || ^4 || ^5 || ^5.0.0-next.0
+ checksum: 10/f2556ae13411860ab7d3f73e563374502e23d08157c2dc67419f9057b50f81f1d944de674affca31c633d56c9ff39f0539db4201b9b0942adcb2bf456107f8e9
languageName: node
linkType: hard
@@ -8510,7 +8517,7 @@ __metadata:
preact: "npm:^10.29.2"
sass: "npm:^1.89.2"
typescript: "npm:^5.8.3"
- vitest: "npm:^3.2.4"
+ vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@@ -8522,13 +8529,14 @@ __metadata:
dependencies:
"@aws-sdk/client-s3": "npm:^3.362.0"
"@aws-sdk/s3-request-presigner": "npm:^3.362.0"
+ "@types/node": "npm:^20.19.0"
"@uppy/companion-client": "workspace:^"
"@uppy/core": "workspace:^"
"@uppy/utils": "workspace:^"
jsdom: "npm:^26.1.0"
nock: "npm:^13.1.0"
typescript: "npm:^5.8.3"
- vitest: "npm:^3.2.4"
+ vitest: "npm:^4.1.6"
whatwg-fetch: "npm:3.6.2"
peerDependencies:
"@uppy/core": "workspace:^"
@@ -8559,7 +8567,7 @@ __metadata:
namespace-emitter: "npm:^2.0.1"
p-retry: "npm:^6.1.0"
typescript: "npm:^5.8.3"
- vitest: "npm:^3.2.4"
+ vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@@ -8678,13 +8686,14 @@ __metadata:
resolution: "@uppy/compressor@workspace:packages/@uppy/compressor"
dependencies:
"@transloadit/prettier-bytes": "npm:^0.3.4"
+ "@types/node": "npm:^20.19.0"
"@uppy/utils": "workspace:^"
compressorjs: "npm:^1.3.0"
jsdom: "npm:^26.1.0"
preact: "npm:^10.29.2"
promise-queue: "npm:^2.2.5"
typescript: "npm:^5.8.3"
- vitest: "npm:^3.2.4"
+ vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@@ -8696,6 +8705,7 @@ __metadata:
dependencies:
"@transloadit/prettier-bytes": "npm:^0.3.4"
"@types/deep-freeze": "npm:^0"
+ "@types/node": "npm:^20.19.0"
"@uppy/store-default": "workspace:^"
"@uppy/utils": "workspace:^"
cssnano: "npm:^7.0.7"
@@ -8710,7 +8720,7 @@ __metadata:
preact: "npm:^10.29.2"
sass: "npm:^1.89.2"
typescript: "npm:^5.8.3"
- vitest: "npm:^3.2.4"
+ vitest: "npm:^4.1.6"
languageName: unknown
linkType: soft
@@ -8727,7 +8737,8 @@ __metadata:
"@uppy/url": "workspace:^"
"@uppy/utils": "workspace:^"
"@uppy/webcam": "workspace:^"
- "@vitest/browser": "npm:^3.2.4"
+ "@vitest/browser": "npm:^4.1.6"
+ "@vitest/browser-playwright": "npm:^4.1.6"
classnames: "npm:^2.5.1"
cssnano: "npm:^7.0.7"
jsdom: "npm:^26.1.0"
@@ -8741,7 +8752,7 @@ __metadata:
sass: "npm:^1.89.2"
shallow-equal: "npm:^3.1.0"
typescript: "npm:^5.8.3"
- vitest: "npm:^3.2.4"
+ vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@@ -8828,10 +8839,12 @@ __metadata:
"@uppy/dashboard": "workspace:^"
"@uppy/utils": "workspace:^"
"@uppy/xhr-upload": "workspace:^"
- "@vitest/browser": "npm:^3.2.4"
+ "@vitest/browser": "npm:^4.1.6"
+ "@vitest/browser-playwright": "npm:^4.1.6"
lodash: "npm:^4.18.1"
+ playwright: "npm:1.57.0"
typescript: "npm:^5.8.3"
- vitest: "npm:^3.2.4"
+ vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@@ -8963,7 +8976,7 @@ __metadata:
preact: "npm:^10.29.2"
sass: "npm:^1.89.2"
typescript: "npm:^5.8.3"
- vitest: "npm:^3.2.4"
+ vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@@ -8986,7 +8999,7 @@ __metadata:
react-dom: "npm:^19.2.6"
typescript: "npm:^5.8.3"
use-sync-external-store: "npm:^1.6.0"
- vitest: "npm:^3.2.4"
+ vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
"@uppy/dashboard": "workspace:^"
@@ -9024,7 +9037,7 @@ __metadata:
jsdom: "npm:^26.1.0"
resize-observer-polyfill: "npm:^1.5.1"
typescript: "npm:^5.8.3"
- vitest: "npm:^3.2.4"
+ vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@@ -9068,9 +9081,10 @@ __metadata:
version: 0.0.0-use.local
resolution: "@uppy/store-default@workspace:packages/@uppy/store-default"
dependencies:
+ "@types/node": "npm:^20.19.0"
jsdom: "npm:^26.1.0"
typescript: "npm:^5.8.3"
- vitest: "npm:^3.2.4"
+ vitest: "npm:^4.1.6"
languageName: unknown
linkType: soft
@@ -9118,7 +9132,7 @@ __metadata:
jsdom: "npm:^26.1.0"
namespace-emitter: "npm:2.0.1"
typescript: "npm:^5.8.3"
- vitest: "npm:^3.2.4"
+ vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@@ -9136,7 +9150,7 @@ __metadata:
jsdom: "npm:^26.1.0"
msw: "npm:^2.10.4"
typescript: "npm:^5.8.3"
- vitest: "npm:^3.2.4"
+ vitest: "npm:^4.1.6"
whatwg-fetch: "npm:^3.6.2"
peerDependencies:
"@uppy/core": "workspace:^"
@@ -9153,7 +9167,7 @@ __metadata:
jsdom: "npm:^26.1.0"
tus-js-client: "npm:^4.3.1"
typescript: "npm:^5.8.3"
- vitest: "npm:^3.2.4"
+ vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@@ -9181,7 +9195,8 @@ __metadata:
"@uppy/companion-client": "workspace:^"
"@uppy/core": "workspace:^"
"@uppy/utils": "workspace:^"
- "@vitest/browser": "npm:^3.2.4"
+ "@vitest/browser": "npm:^4.1.6"
+ "@vitest/browser-playwright": "npm:^4.1.6"
cssnano: "npm:^7.0.7"
nanoid: "npm:^5.1.11"
playwright: "npm:1.57.0"
@@ -9190,7 +9205,7 @@ __metadata:
preact: "npm:^10.29.2"
sass: "npm:^1.89.2"
typescript: "npm:^5.8.3"
- vitest: "npm:^3.2.4"
+ vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@@ -9205,7 +9220,7 @@ __metadata:
lodash: "npm:^4.18.1"
preact: "npm:^10.29.2"
typescript: "npm:^5.8.3"
- vitest: "npm:^3.2.4"
+ vitest: "npm:^4.1.6"
languageName: unknown
linkType: soft
@@ -9251,7 +9266,7 @@ __metadata:
preact: "npm:^10.29.2"
sass: "npm:^1.89.2"
typescript: "npm:^5.8.3"
- vitest: "npm:^3.2.4"
+ vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@@ -9280,13 +9295,14 @@ __metadata:
"@uppy/core": "workspace:^"
"@uppy/dashboard": "workspace:^"
"@uppy/utils": "workspace:^"
- "@vitest/browser": "npm:^3.2.4"
+ "@vitest/browser": "npm:^4.1.6"
+ "@vitest/browser-playwright": "npm:^4.1.6"
jsdom: "npm:^26.1.0"
msw: "npm:^2.10.4"
nock: "npm:^13.1.0"
playwright: "npm:1.57.0"
typescript: "npm:^5.8.3"
- vitest: "npm:^3.2.4"
+ vitest: "npm:^4.1.6"
peerDependencies:
"@uppy/core": "workspace:^"
languageName: unknown
@@ -9344,43 +9360,38 @@ __metadata:
languageName: node
linkType: hard
-"@vitest/browser@npm:^3.2.4":
- version: 3.2.4
- resolution: "@vitest/browser@npm:3.2.4"
+"@vitest/browser-playwright@npm:^4.1.6":
+ version: 4.1.6
+ resolution: "@vitest/browser-playwright@npm:4.1.6"
dependencies:
- "@testing-library/dom": "npm:^10.4.0"
- "@testing-library/user-event": "npm:^14.6.1"
- "@vitest/mocker": "npm:3.2.4"
- "@vitest/utils": "npm:3.2.4"
- magic-string: "npm:^0.30.17"
- sirv: "npm:^3.0.1"
- tinyrainbow: "npm:^2.0.0"
- ws: "npm:^8.18.2"
+ "@vitest/browser": "npm:4.1.6"
+ "@vitest/mocker": "npm:4.1.6"
+ tinyrainbow: "npm:^3.1.0"
peerDependencies:
playwright: "*"
- vitest: 3.2.4
- webdriverio: ^7.0.0 || ^8.0.0 || ^9.0.0
+ vitest: 4.1.6
peerDependenciesMeta:
playwright:
- optional: true
- safaridriver:
- optional: true
- webdriverio:
- optional: true
- checksum: 10/f8ec0bff4006a81c3b843b5cf04f4ba1ffd8226eb5d4a98b134eddb83de8decced8788d2569aa632920ed6a346d3cfd856fcd53ee9083080a78c5baae3aae2de
+ optional: false
+ checksum: 10/a899da787418f3748b0076ab3e63261b968dd53bbcd9a0323f2a29ce45a439c7bf8b5746fbe331ac675a166b0a789e6643b22df81965767f8c1a8b9f904ece00
languageName: node
linkType: hard
-"@vitest/expect@npm:3.2.4":
- version: 3.2.4
- resolution: "@vitest/expect@npm:3.2.4"
+"@vitest/browser@npm:4.1.6, @vitest/browser@npm:^4.1.6":
+ version: 4.1.6
+ resolution: "@vitest/browser@npm:4.1.6"
dependencies:
- "@types/chai": "npm:^5.2.2"
- "@vitest/spy": "npm:3.2.4"
- "@vitest/utils": "npm:3.2.4"
- chai: "npm:^5.2.0"
- tinyrainbow: "npm:^2.0.0"
- checksum: 10/dc69ce886c13714dfbbff78f2d2cb7eb536017e82301a73c42d573a9e9d2bf91005ac7abd9b977adf0a3bd431209f45a8ac2418029b68b0a377e092607c843ce
+ "@blazediff/core": "npm:1.9.1"
+ "@vitest/mocker": "npm:4.1.6"
+ "@vitest/utils": "npm:4.1.6"
+ magic-string: "npm:^0.30.21"
+ pngjs: "npm:^7.0.0"
+ sirv: "npm:^3.0.2"
+ tinyrainbow: "npm:^3.1.0"
+ ws: "npm:^8.19.0"
+ peerDependencies:
+ vitest: 4.1.6
+ checksum: 10/d62d0d5d67880f09799faa1c496377dcf0270343b15bf17cac9d27416c93e24db91498bebd8c33e102fc982caeb11693cf2f82bdf07f59b43589be4f2f03c693
languageName: node
linkType: hard
@@ -9398,25 +9409,6 @@ __metadata:
languageName: node
linkType: hard
-"@vitest/mocker@npm:3.2.4":
- version: 3.2.4
- resolution: "@vitest/mocker@npm:3.2.4"
- dependencies:
- "@vitest/spy": "npm:3.2.4"
- estree-walker: "npm:^3.0.3"
- magic-string: "npm:^0.30.17"
- peerDependencies:
- msw: ^2.4.9
- vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0
- peerDependenciesMeta:
- msw:
- optional: true
- vite:
- optional: true
- checksum: 10/5e92431b6ed9fc1679060e4caef3e4623f4750542a5d7cd944774f8217c4d231e273202e8aea00bab33260a5a9222ecb7005d80da0348c3c829bd37d123071a8
- languageName: node
- linkType: hard
-
"@vitest/mocker@npm:4.1.6":
version: 4.1.6
resolution: "@vitest/mocker@npm:4.1.6"
@@ -9436,15 +9428,6 @@ __metadata:
languageName: node
linkType: hard
-"@vitest/pretty-format@npm:3.2.4, @vitest/pretty-format@npm:^3.2.4":
- version: 3.2.4
- resolution: "@vitest/pretty-format@npm:3.2.4"
- dependencies:
- tinyrainbow: "npm:^2.0.0"
- checksum: 10/8dd30cbf956e01fbab042fe651fb5175d9f0cd00b7b569a46cd98df89c4fec47dab12916201ad6e09a4f25f2a2ec8927a4bfdc61118593097f759c90b18a51d4
- languageName: node
- linkType: hard
-
"@vitest/pretty-format@npm:4.1.6":
version: 4.1.6
resolution: "@vitest/pretty-format@npm:4.1.6"
@@ -9454,17 +9437,6 @@ __metadata:
languageName: node
linkType: hard
-"@vitest/runner@npm:3.2.4":
- version: 3.2.4
- resolution: "@vitest/runner@npm:3.2.4"
- dependencies:
- "@vitest/utils": "npm:3.2.4"
- pathe: "npm:^2.0.3"
- strip-literal: "npm:^3.0.0"
- checksum: 10/197bd55def519ef202f990b7c1618c212380831827c116240871033e4973decb780503c705ba9245a12bd8121f3ac4086ffcb3e302148b62d9bd77fd18dd1deb
- languageName: node
- linkType: hard
-
"@vitest/runner@npm:4.1.6":
version: 4.1.6
resolution: "@vitest/runner@npm:4.1.6"
@@ -9475,17 +9447,6 @@ __metadata:
languageName: node
linkType: hard
-"@vitest/snapshot@npm:3.2.4":
- version: 3.2.4
- resolution: "@vitest/snapshot@npm:3.2.4"
- dependencies:
- "@vitest/pretty-format": "npm:3.2.4"
- magic-string: "npm:^0.30.17"
- pathe: "npm:^2.0.3"
- checksum: 10/acfb682491b9ca9345bf9fed02c2779dec43e0455a380c1966b0aad8dd81c79960902cf34621ab48fe80a0eaf8c61cc42dec186a1321dc3c9897ef2ebd5f1bc4
- languageName: node
- linkType: hard
-
"@vitest/snapshot@npm:4.1.6":
version: 4.1.6
resolution: "@vitest/snapshot@npm:4.1.6"
@@ -9498,15 +9459,6 @@ __metadata:
languageName: node
linkType: hard
-"@vitest/spy@npm:3.2.4":
- version: 3.2.4
- resolution: "@vitest/spy@npm:3.2.4"
- dependencies:
- tinyspy: "npm:^4.0.3"
- checksum: 10/7d38c299f42a8c7e5e41652b203af98ca54e63df69c3b072d0e401d5a57fbbba3e39d8538ac1b3022c26718a6388d0bcc222bc2f07faab75942543b9247c007d
- languageName: node
- linkType: hard
-
"@vitest/spy@npm:4.1.6":
version: 4.1.6
resolution: "@vitest/spy@npm:4.1.6"
@@ -9514,17 +9466,6 @@ __metadata:
languageName: node
linkType: hard
-"@vitest/utils@npm:3.2.4":
- version: 3.2.4
- resolution: "@vitest/utils@npm:3.2.4"
- dependencies:
- "@vitest/pretty-format": "npm:3.2.4"
- loupe: "npm:^3.1.4"
- tinyrainbow: "npm:^2.0.0"
- checksum: 10/7f12ef63bd8ee13957744d1f336b0405f164ade4358bf9dfa531f75bbb58ffac02bf61aba65724311ddbc50b12ba54853a169e59c6b837c16086173b9a480710
- languageName: node
- linkType: hard
-
"@vitest/utils@npm:4.1.6":
version: 4.1.6
resolution: "@vitest/utils@npm:4.1.6"
@@ -10220,13 +10161,6 @@ __metadata:
languageName: node
linkType: hard
-"assertion-error@npm:^2.0.1":
- version: 2.0.1
- resolution: "assertion-error@npm:2.0.1"
- checksum: 10/a0789dd882211b87116e81e2648ccb7f60340b34f19877dd020b39ebb4714e475eb943e14ba3e22201c221ef6645b7bfe10297e76b6ac95b48a9898c1211ce66
- languageName: node
- linkType: hard
-
"asynckit@npm:^0.4.0":
version: 0.4.0
resolution: "asynckit@npm:0.4.0"
@@ -10808,19 +10742,6 @@ __metadata:
languageName: node
linkType: hard
-"chai@npm:^5.2.0":
- version: 5.2.1
- resolution: "chai@npm:5.2.1"
- dependencies:
- assertion-error: "npm:^2.0.1"
- check-error: "npm:^2.1.1"
- deep-eql: "npm:^5.0.1"
- loupe: "npm:^3.1.0"
- pathval: "npm:^2.0.0"
- checksum: 10/2d9b14c9bbb9b791641ecee0d74a53f34d2c86f05c10b5567041ed376177f87af9dc7f5398207fd2711affbfeb9f0f1f60e11bcaf021f78ef37b7c65a6d94e7d
- languageName: node
- linkType: hard
-
"chai@npm:^6.2.2":
version: 6.2.2
resolution: "chai@npm:6.2.2"
@@ -10880,13 +10801,6 @@ __metadata:
languageName: node
linkType: hard
-"check-error@npm:^2.1.1":
- version: 2.1.1
- resolution: "check-error@npm:2.1.1"
- checksum: 10/d785ed17b1d4a4796b6e75c765a9a290098cf52ff9728ce0756e8ffd4293d2e419dd30c67200aee34202463b474306913f2fcfaf1890641026d9fc6966fea27a
- languageName: node
- linkType: hard
-
"chokidar@npm:^3.3.0, chokidar@npm:^3.5.1, chokidar@npm:^3.6.0":
version: 3.6.0
resolution: "chokidar@npm:3.6.0"
@@ -11908,13 +11822,6 @@ __metadata:
languageName: node
linkType: hard
-"deep-eql@npm:^5.0.1":
- version: 5.0.2
- resolution: "deep-eql@npm:5.0.2"
- checksum: 10/a529b81e2ef8821621d20a36959a0328873a3e49d393ad11f8efe8559f31239494c2eb889b80342808674c475802ba95b9d6c4c27641b9a029405104c1b59fcf
- languageName: node
- linkType: hard
-
"deep-freeze@npm:^0.0.1":
version: 0.0.1
resolution: "deep-freeze@npm:0.0.1"
@@ -13158,7 +13065,8 @@ __metadata:
"@uppy/tus": "workspace:*"
"@uppy/webcam": "workspace:*"
"@vitejs/plugin-react": "npm:^4.6.0"
- "@vitest/browser": "npm:^3.2.4"
+ "@vitest/browser": "npm:^4.1.6"
+ "@vitest/browser-playwright": "npm:^4.1.6"
msw: "npm:^2.10.4"
playwright: "npm:1.57.0"
react: "npm:^19.0.0"
@@ -13166,8 +13074,8 @@ __metadata:
tailwindcss: "npm:^4.0.9"
typescript: "npm:^5.7.3"
vite: "npm:^7.1.11"
- vitest: "npm:^3.2.4"
- vitest-browser-react: "npm:^1.0.0"
+ vitest: "npm:^4.1.6"
+ vitest-browser-react: "npm:^2.2.0"
languageName: unknown
linkType: soft
@@ -13215,7 +13123,8 @@ __metadata:
"@uppy/svelte": "workspace:*"
"@uppy/tus": "workspace:*"
"@uppy/webcam": "workspace:*"
- "@vitest/browser": "npm:^3.2.4"
+ "@vitest/browser": "npm:^4.1.6"
+ "@vitest/browser-playwright": "npm:^4.1.6"
msw: "npm:^2.10.4"
playwright: "npm:1.57.0"
svelte: "npm:^5.0.0"
@@ -13223,8 +13132,8 @@ __metadata:
tailwindcss: "npm:^4.0.0"
typescript: "npm:^5.0.0"
vite: "npm:^6.2.5"
- vitest: "npm:^3.2.4"
- vitest-browser-svelte: "npm:^1.0.0"
+ vitest: "npm:^4.1.6"
+ vitest-browser-svelte: "npm:^2.1.1"
languageName: unknown
linkType: soft
@@ -13260,13 +13169,14 @@ __metadata:
"@uppy/vue": "workspace:*"
"@uppy/webcam": "workspace:*"
"@vitejs/plugin-vue": "npm:^6.0.1"
- "@vitest/browser": "npm:^3.2.4"
+ "@vitest/browser": "npm:^4.1.6"
+ "@vitest/browser-playwright": "npm:^4.1.6"
msw: "npm:^2.10.4"
playwright: "npm:1.57.0"
tailwindcss: "npm:^4.0.0"
vite: "npm:^7.1.11"
- vitest: "npm:^3.2.4"
- vitest-browser-vue: "npm:^1.0.0"
+ vitest: "npm:^4.1.6"
+ vitest-browser-vue: "npm:^2.1.0"
vue: "npm:^3.5.14"
languageName: unknown
linkType: soft
@@ -13360,13 +13270,6 @@ __metadata:
languageName: node
linkType: hard
-"expect-type@npm:^1.2.1":
- version: 1.2.2
- resolution: "expect-type@npm:1.2.2"
- checksum: 10/1703e6e47b575f79d801d87f24c639f4d0af71b327a822e6922d0ccb7eb3f6559abb240b8bd43bab6a477903de4cc322908e194d05132c18f52a217115e8e870
- languageName: node
- linkType: hard
-
"expect-type@npm:^1.3.0":
version: 1.3.0
resolution: "expect-type@npm:1.3.0"
@@ -15611,13 +15514,6 @@ __metadata:
languageName: node
linkType: hard
-"js-tokens@npm:^9.0.1":
- version: 9.0.1
- resolution: "js-tokens@npm:9.0.1"
- checksum: 10/3288ba73bb2023adf59501979fb4890feb6669cc167b13771b226814fde96a1583de3989249880e3f4d674040d1815685db9a9880db9153307480d39dc760365
- languageName: node
- linkType: hard
-
"js-yaml@npm:^3.13.1, js-yaml@npm:^3.6.1":
version: 3.14.2
resolution: "js-yaml@npm:3.14.2"
@@ -16758,13 +16654,6 @@ __metadata:
languageName: node
linkType: hard
-"loupe@npm:^3.1.0, loupe@npm:^3.1.4":
- version: 3.1.4
- resolution: "loupe@npm:3.1.4"
- checksum: 10/06ab1893731f167f2ce71f464a8a68372dc4cb807ecae20f9b844660c93813a298ca76bcd747ba6568b057af725ea63f0034ba3140c8f1d1fbb482d797e593ef
- languageName: node
- linkType: hard
-
"lower-case@npm:^2.0.2":
version: 2.0.2
resolution: "lower-case@npm:2.0.2"
@@ -18824,13 +18713,6 @@ __metadata:
languageName: node
linkType: hard
-"pathval@npm:^2.0.0":
- version: 2.0.1
- resolution: "pathval@npm:2.0.1"
- checksum: 10/f5e8b82f6b988a5bba197970af050268fd800780d0f9ee026e6f0b544ac4b17ab52bebeabccb790d63a794530a1641ae399ad07ecfc67ad337504c85dc9e5693
- languageName: node
- linkType: hard
-
"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.0, picocolors@npm:^1.1.1":
version: 1.1.1
resolution: "picocolors@npm:1.1.1"
@@ -18973,6 +18855,13 @@ __metadata:
languageName: node
linkType: hard
+"pngjs@npm:^7.0.0":
+ version: 7.0.0
+ resolution: "pngjs@npm:7.0.0"
+ checksum: 10/e843ebbb0df092ee0f3a3e7dbd91ff87a239a4e4c4198fff202916bfb33b67622f4b83b3c29f3ccae94fcb97180c289df06068624554f61686fe6b9a4811f7db
+ languageName: node
+ linkType: hard
+
"possible-typed-array-names@npm:^1.0.0":
version: 1.0.0
resolution: "possible-typed-array-names@npm:1.0.0"
@@ -21198,7 +21087,7 @@ __metadata:
languageName: node
linkType: hard
-"sirv@npm:^3.0.0, sirv@npm:^3.0.1":
+"sirv@npm:^3.0.0":
version: 3.0.1
resolution: "sirv@npm:3.0.1"
dependencies:
@@ -21209,6 +21098,17 @@ __metadata:
languageName: node
linkType: hard
+"sirv@npm:^3.0.2":
+ version: 3.0.2
+ resolution: "sirv@npm:3.0.2"
+ dependencies:
+ "@polka/url": "npm:^1.0.0-next.24"
+ mrmime: "npm:^2.0.0"
+ totalist: "npm:^3.0.0"
+ checksum: 10/259617f4ab57664be6d963f5b27b38a6351d3e91ce70d6726985d087b40efd595fcf7f72ae010babf5e0acb63bcb3e3d6db8de34604da1011be6e28ee32aa15d
+ languageName: node
+ linkType: hard
+
"slash@npm:^3.0.0":
version: 3.0.0
resolution: "slash@npm:3.0.0"
@@ -21536,13 +21436,6 @@ __metadata:
languageName: node
linkType: hard
-"std-env@npm:^3.9.0":
- version: 3.9.0
- resolution: "std-env@npm:3.9.0"
- checksum: 10/3044b2c54a74be4f460db56725571241ab3ac89a91f39c7709519bc90fa37148784bc4cd7d3a301aa735f43bd174496f263563f76703ce3e81370466ab7c235b
- languageName: node
- linkType: hard
-
"std-env@npm:^4.0.0-rc.1":
version: 4.1.0
resolution: "std-env@npm:4.1.0"
@@ -21737,15 +21630,6 @@ __metadata:
languageName: node
linkType: hard
-"strip-literal@npm:^3.0.0":
- version: 3.0.0
- resolution: "strip-literal@npm:3.0.0"
- dependencies:
- js-tokens: "npm:^9.0.1"
- checksum: 10/da1616f654f3ff481e078597b4565373a5eeed78b83de4a11a1a1b98292a9036f2474e528eff19b6eed93370428ff957a473827057c117495086436725d7efad
- languageName: node
- linkType: hard
-
"strnum@npm:^2.1.0":
version: 2.1.1
resolution: "strnum@npm:2.1.1"
@@ -22127,13 +22011,6 @@ __metadata:
languageName: node
linkType: hard
-"tinyexec@npm:^0.3.2":
- version: 0.3.2
- resolution: "tinyexec@npm:0.3.2"
- checksum: 10/b9d5fed3166fb1acd1e7f9a89afcd97ccbe18b9c1af0278e429455f6976d69271ba2d21797e7c36d57d6b05025e525d2882d88c2ab435b60d1ddf2fea361de57
- languageName: node
- linkType: hard
-
"tinyexec@npm:^1.0.2":
version: 1.1.2
resolution: "tinyexec@npm:1.1.2"
@@ -22161,20 +22038,6 @@ __metadata:
languageName: node
linkType: hard
-"tinypool@npm:^1.1.1":
- version: 1.1.1
- resolution: "tinypool@npm:1.1.1"
- checksum: 10/0d54139e9dbc6ef33349768fa78890a4d708d16a7ab68e4e4ef3bb740609ddf0f9fd13292c2f413fbba756166c97051a657181c8f7ae92ade690604f183cc01d
- languageName: node
- linkType: hard
-
-"tinyrainbow@npm:^2.0.0":
- version: 2.0.0
- resolution: "tinyrainbow@npm:2.0.0"
- checksum: 10/94d4e16246972614a5601eeb169ba94f1d49752426312d3cf8cc4f2cc663a2e354ffc653aa4de4eebccbf9eeebdd0caef52d1150271fdfde65d7ae7f3dcb9eb5
- languageName: node
- linkType: hard
-
"tinyrainbow@npm:^3.1.0":
version: 3.1.0
resolution: "tinyrainbow@npm:3.1.0"
@@ -22182,13 +22045,6 @@ __metadata:
languageName: node
linkType: hard
-"tinyspy@npm:^4.0.3":
- version: 4.0.3
- resolution: "tinyspy@npm:4.0.3"
- checksum: 10/b6a3ed40dd76a2b3c020250cf1401506b456509d1fb9dba0c7b0e644d258dac722843b85c57ccc36c8687db1e7978cb6adcc43e3b71c475910c085b96d41cb53
- languageName: node
- linkType: hard
-
"tldts-core@npm:^6.1.86":
version: 6.1.86
resolution: "tldts-core@npm:6.1.86"
@@ -22950,7 +22806,7 @@ __metadata:
languageName: node
linkType: hard
-"vite-node@npm:3.2.4, vite-node@npm:^3.2.2":
+"vite-node@npm:^3.2.2":
version: 3.2.4
resolution: "vite-node@npm:3.2.4"
dependencies:
@@ -23208,50 +23064,49 @@ __metadata:
languageName: node
linkType: hard
-"vitest-browser-react@npm:^1.0.0":
- version: 1.0.0
- resolution: "vitest-browser-react@npm:1.0.0"
+"vitest-browser-react@npm:^2.2.0":
+ version: 2.2.0
+ resolution: "vitest-browser-react@npm:2.2.0"
peerDependencies:
"@types/react": ^18.0.0 || ^19.0.0
"@types/react-dom": ^18.0.0 || ^19.0.0
- "@vitest/browser": ^2.1.0 || ^3.0.0 || ^4.0.0-0
react: ^18.0.0 || ^19.0.0
react-dom: ^18.0.0 || ^19.0.0
- vitest: ^2.1.0 || ^3.0.0 || ^4.0.0-0
+ vitest: ^4.0.0
peerDependenciesMeta:
"@types/react":
optional: true
"@types/react-dom":
optional: true
- checksum: 10/1e397bd5157e765fb82a714601b0fb6e8936c3cc631b9fb3d2eb24a407fd9a3144750765447ba33159fad2962965925e71592729c61f852e912f1a2c8f936fd5
+ checksum: 10/44d1e9cabec5bb51f2a422abbb080db1a47c7efbcab4461fa24049cc2e8caf5cbe0204e99fe224b2141931ba23a753e35caf412db4875129c1768e9a1e6a81a0
languageName: node
linkType: hard
-"vitest-browser-svelte@npm:^1.0.0":
- version: 1.0.0
- resolution: "vitest-browser-svelte@npm:1.0.0"
+"vitest-browser-svelte@npm:^2.1.1":
+ version: 2.1.1
+ resolution: "vitest-browser-svelte@npm:2.1.1"
+ dependencies:
+ "@testing-library/svelte-core": "npm:^1.0.0"
peerDependencies:
- "@vitest/browser": ^2.1.0 || ^3.0.0 || ^4.0.0-0
svelte: ^3 || ^4 || ^5 || ^5.0.0-next.0
- vitest: ^2.1.0 || ^3.0.0 || ^4.0.0-0
- checksum: 10/2416f780e195611a917b2dbe7769058d6fe43f85a4edd279e87a7678914faa8f053bca7b43fecdd2e45fba7f03c5fcd6bca8210aa088996059d9380be141a44c
+ vitest: ^4.0.0
+ checksum: 10/a8569cdfed512bcc406a171b40cf477429aea446f18211f9e5f908a846d52894774278d27c313b004baf9bfa145f5d874714e7825284c646b2bce938c912d488
languageName: node
linkType: hard
-"vitest-browser-vue@npm:^1.0.0":
- version: 1.0.0
- resolution: "vitest-browser-vue@npm:1.0.0"
+"vitest-browser-vue@npm:^2.1.0":
+ version: 2.1.0
+ resolution: "vitest-browser-vue@npm:2.1.0"
dependencies:
"@vue/test-utils": "npm:^2.4.6"
peerDependencies:
- "@vitest/browser": ^2.1.0 || ^3.0.0 || ^4.0.0-0
- vitest: ^2.1.0 || ^3.0.0 || ^4.0.0-0
+ vitest: ^4.0.0-0
vue: ^3.0.0
- checksum: 10/e28150c03fef9c3763b52add83f565c4b0e5b15c2c0f0cf73b1b98a4028e917eb33d0628257e700e6cce9a267cd26bc2215b9884f60de14227222dff26a580a7
+ checksum: 10/45d5586270fa6e92a645fcfcf2f7953bc08beff63a9046834da3a47008ecac5b7029ad5cc6a573bec0236f15310a80bbf1dabaa1896c46a1f048d3f112f29704
languageName: node
linkType: hard
-"vitest@npm:4.1.6":
+"vitest@npm:4.1.6, vitest@npm:^4.1.6":
version: 4.1.6
resolution: "vitest@npm:4.1.6"
dependencies:
@@ -23319,62 +23174,6 @@ __metadata:
languageName: node
linkType: hard
-"vitest@npm:^3.2.4":
- version: 3.2.4
- resolution: "vitest@npm:3.2.4"
- dependencies:
- "@types/chai": "npm:^5.2.2"
- "@vitest/expect": "npm:3.2.4"
- "@vitest/mocker": "npm:3.2.4"
- "@vitest/pretty-format": "npm:^3.2.4"
- "@vitest/runner": "npm:3.2.4"
- "@vitest/snapshot": "npm:3.2.4"
- "@vitest/spy": "npm:3.2.4"
- "@vitest/utils": "npm:3.2.4"
- chai: "npm:^5.2.0"
- debug: "npm:^4.4.1"
- expect-type: "npm:^1.2.1"
- magic-string: "npm:^0.30.17"
- pathe: "npm:^2.0.3"
- picomatch: "npm:^4.0.2"
- std-env: "npm:^3.9.0"
- tinybench: "npm:^2.9.0"
- tinyexec: "npm:^0.3.2"
- tinyglobby: "npm:^0.2.14"
- tinypool: "npm:^1.1.1"
- tinyrainbow: "npm:^2.0.0"
- vite: "npm:^5.0.0 || ^6.0.0 || ^7.0.0-0"
- vite-node: "npm:3.2.4"
- why-is-node-running: "npm:^2.3.0"
- peerDependencies:
- "@edge-runtime/vm": "*"
- "@types/debug": ^4.1.12
- "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0
- "@vitest/browser": 3.2.4
- "@vitest/ui": 3.2.4
- happy-dom: "*"
- jsdom: "*"
- peerDependenciesMeta:
- "@edge-runtime/vm":
- optional: true
- "@types/debug":
- optional: true
- "@types/node":
- optional: true
- "@vitest/browser":
- optional: true
- "@vitest/ui":
- optional: true
- happy-dom:
- optional: true
- jsdom:
- optional: true
- bin:
- vitest: vitest.mjs
- checksum: 10/f10bbce093ecab310ecbe484536ef4496fb9151510b2be0c5907c65f6d31482d9c851f3182531d1d27d558054aa78e8efd9d4702ba6c82058657e8b6a52507ee
- languageName: node
- linkType: hard
-
"void-elements@npm:^2.0.0":
version: 2.0.1
resolution: "void-elements@npm:2.0.1"
@@ -23851,7 +23650,7 @@ __metadata:
languageName: node
linkType: hard
-"ws@npm:8.20.1":
+"ws@npm:8.20.1, ws@npm:^8.19.0":
version: 8.20.1
resolution: "ws@npm:8.20.1"
peerDependencies:
@@ -23881,7 +23680,7 @@ __metadata:
languageName: node
linkType: hard
-"ws@npm:^8.18.0, ws@npm:^8.18.2":
+"ws@npm:^8.18.0":
version: 8.18.3
resolution: "ws@npm:8.18.3"
peerDependencies: