Skip to content

Commit 32496cb

Browse files
chore: upgrade Effect and Vitest
- Upgrade Effect packages to rc.110 and Vitest tooling to 4.1.10 - Update browser tests and Playwright providers for Vitest 4
1 parent 9cc8b55 commit 32496cb

16 files changed

Lines changed: 945 additions & 961 deletions

File tree

examples/backend-adapters/server/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313
"dev:effect": "NODE_ENV=development PORT=3003 tsx watch src/effect-platform.ts"
1414
},
1515
"dependencies": {
16-
"@effect/platform-node": "4.0.0-beta.93",
16+
"@effect/platform-node": "4.0.0-rc.110",
1717
"@elysiajs/cors": "^1.2.0",
1818
"@fastify/cors": "^10.0.1",
1919
"@hono/node-server": "^1.13.7",
2020
"@sinclair/typebox": "^0.34.13",
2121
"cors": "^2.8.5",
2222
"dotenv": "^16.4.5",
23-
"effect": "4.0.0-beta.93",
23+
"effect": "4.0.0-rc.110",
2424
"elysia": "^1.2.9",
2525
"express": "^5.0.1",
2626
"fastify": "^5.2.0",

packages/nuxt/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
"nuxt": "^3.15.0",
4848
"uploadthing": "workspace:*",
4949
"vite": "^6.3.4",
50-
"vitest": "3.2.4"
50+
"vitest": "4.1.10"
5151
},
5252
"peerDependencies": {
5353
"uploadthing": "^7.2.0"

packages/react/package.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,9 @@
8484
"@uploadthing/eslint-config": "workspace:*",
8585
"@uploadthing/tsconfig": "workspace:*",
8686
"@uploadthing/vitest-config": "workspace:*",
87-
"@vitest/browser": "3.2.4",
88-
"@vitest/coverage-istanbul": "3.2.4",
87+
"@vitest/browser": "4.1.10",
88+
"@vitest/browser-playwright": "4.1.10",
89+
"@vitest/coverage-istanbul": "4.1.10",
8990
"concurrently": "^9.1.2",
9091
"eslint": "9.25.1",
9192
"msw": "2.7.5",
@@ -96,8 +97,8 @@
9697
"tsdown": "0.14.1",
9798
"typescript": "5.8.3",
9899
"uploadthing": "workspace:*",
99-
"vitest": "3.2.4",
100-
"vitest-browser-react": "0.3.0",
100+
"vitest": "4.1.10",
101+
"vitest-browser-react": "2.2.0",
101102
"wait-on": "^8.0.1",
102103
"zod": "^3.24.1"
103104
}

packages/react/test/upload-button.browser.test.tsx

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { page, userEvent } from "@vitest/browser/context";
21
import { http, HttpResponse } from "msw";
32
import { setupWorker } from "msw/browser";
43
import { afterAll, beforeAll, describe, expect, it, vi } from "vitest";
54
import { render } from "vitest-browser-react";
5+
import { page, userEvent } from "vitest/browser";
66

77
import {
88
createRouteHandler,
@@ -86,7 +86,7 @@ afterAll(() => worker.stop());
8686

8787
describe("UploadButton - basic", () => {
8888
it("fetches and displays route config", async () => {
89-
const utils = render(<UploadButton endpoint="image" />);
89+
const utils = await render(<UploadButton endpoint="image" />);
9090
const label = utils.container.querySelector("label");
9191

9292
if (!label) throw new Error("No label found");
@@ -106,7 +106,7 @@ describe("UploadButton - basic", () => {
106106
});
107107

108108
it("fetches and displays route config (with callback endpoint arg)", async () => {
109-
const utils = render(
109+
const utils = await render(
110110
<UploadButton endpoint={(routeRegistry) => routeRegistry.image} />,
111111
);
112112
const label = utils.container.querySelector("label");
@@ -128,7 +128,7 @@ describe("UploadButton - basic", () => {
128128
});
129129

130130
it("shows plural when maxFileCount is > 1", async () => {
131-
const utils = render(<UploadButton endpoint="multi" />);
131+
const utils = await render(<UploadButton endpoint="multi" />);
132132
const label = utils.container.querySelector("label");
133133

134134
if (!label) throw new Error("No label found");
@@ -146,15 +146,15 @@ describe("UploadButton - basic", () => {
146146
it("picks up route config from global and skips fetch", async () => {
147147
(window as any).__UPLOADTHING = extractRouterConfig(testRouter);
148148

149-
render(<UploadButton endpoint="image" />);
149+
await render(<UploadButton endpoint="image" />);
150150
await expect.element(page.getByText("Image (4MB)")).toBeVisible();
151151
expect(utGet).not.toHaveBeenCalled();
152152

153153
delete (window as any).__UPLOADTHING;
154154
});
155155

156156
it("requests URLs when a file is selected", async () => {
157-
const utils = render(<UploadButton endpoint="image" />);
157+
const utils = await render(<UploadButton endpoint="image" />);
158158
const label = utils.container.querySelector("label");
159159
await vi.waitFor(() =>
160160
expect(label).toHaveAttribute("data-state", "ready"),
@@ -171,7 +171,7 @@ describe("UploadButton - basic", () => {
171171
{
172172
name: "foo.txt",
173173
type: "text/plain",
174-
size: 18,
174+
size: 3,
175175
lastModified: expect.any(Number),
176176
},
177177
],
@@ -182,7 +182,7 @@ describe("UploadButton - basic", () => {
182182
});
183183

184184
it("manual mode requires extra click", async () => {
185-
const utils = render(
185+
const utils = await render(
186186
<UploadButton endpoint="image" config={{ mode: "manual" }} />,
187187
);
188188
const label = utils.container.querySelector("label");
@@ -209,7 +209,7 @@ describe("UploadButton - basic", () => {
209209

210210
// https://discord.com/channels/966627436387266600/1102510616326967306/1267098160468197409
211211
it.skip("disabled", async () => {
212-
const utils = render(<UploadButton endpoint="image" disabled />);
212+
const utils = await render(<UploadButton endpoint="image" disabled />);
213213
const label = utils.container.querySelector("label");
214214
await vi.waitFor(() => expect(label).toHaveTextContent("Choose File"));
215215
expect(label).toHaveAttribute("disabled");
@@ -218,7 +218,7 @@ describe("UploadButton - basic", () => {
218218

219219
describe("UploadButton - lifecycle hooks", () => {
220220
it("onBeforeUploadBegin alters the requested files", async () => {
221-
const utils = render(
221+
const utils = await render(
222222
<UploadButton
223223
endpoint="image"
224224
onBeforeUploadBegin={() => {
@@ -245,7 +245,7 @@ describe("UploadButton - lifecycle hooks", () => {
245245

246246
it("onUploadBegin runs before uploading", async () => {
247247
const onUploadBegin = vi.fn();
248-
const utils = render(
248+
const utils = await render(
249249
<UploadButton endpoint="multi" onUploadBegin={onUploadBegin} />,
250250
);
251251

@@ -265,7 +265,7 @@ describe("UploadButton - lifecycle hooks", () => {
265265

266266
describe("UploadButton - Theming", () => {
267267
it("renders custom styles", async () => {
268-
render(
268+
await render(
269269
<UploadButton
270270
endpoint="image"
271271
appearance={{
@@ -284,7 +284,7 @@ describe("UploadButton - Theming", () => {
284284

285285
describe("UploadButton - Content Customization", () => {
286286
it("renders custom content", async () => {
287-
render(
287+
await render(
288288
<UploadButton
289289
endpoint="image"
290290
content={{

packages/react/test/upload-dropzone.browser.test.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { page } from "@vitest/browser/context";
21
import { http, HttpResponse } from "msw";
32
import { setupWorker } from "msw/browser";
43
import { afterAll, beforeAll, describe, expect, it, vi } from "vitest";
54
import { render } from "vitest-browser-react";
5+
import { page } from "vitest/browser";
66

77
import { createRouteHandler, createUploadthing } from "uploadthing/server";
88

@@ -53,7 +53,7 @@ afterAll(() => worker.stop());
5353

5454
describe("UploadDropzone - basic", () => {
5555
it("fetches and displays route config", async () => {
56-
const utils = render(<UploadDropzone endpoint="image" />);
56+
const utils = await render(<UploadDropzone endpoint="image" />);
5757
const label = utils.container.querySelector("label");
5858

5959
if (!label) throw new Error("No label found");
@@ -73,7 +73,7 @@ describe("UploadDropzone - basic", () => {
7373
});
7474

7575
it("shows plural when maxFileCount is > 1", async () => {
76-
const utils = render(<UploadDropzone endpoint="multi" />);
76+
const utils = await render(<UploadDropzone endpoint="multi" />);
7777
const label = utils.container.querySelector("label");
7878

7979
if (!label) throw new Error("No label found");

packages/react/vitest.config.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { playwright } from "@vitest/browser-playwright";
12
import { defineConfig, mergeConfig } from "vitest/config";
23

34
import { baseConfig } from "@uploadthing/vitest-config/base";
@@ -9,7 +10,7 @@ export default mergeConfig(
910
name: "browser",
1011
browser: {
1112
instances: [{ browser: "chromium" }],
12-
provider: "playwright",
13+
provider: playwright(),
1314
enabled: true,
1415
},
1516
},

packages/shared/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,22 +42,22 @@
4242
},
4343
"dependencies": {
4444
"@uploadthing/mime-types": "workspace:*",
45-
"effect": "4.0.0-beta.93",
45+
"effect": "4.0.0-rc.110",
4646
"sqids": "^0.3.0"
4747
},
4848
"devDependencies": {
49-
"@effect/vitest": "4.0.0-beta.93",
49+
"@effect/vitest": "4.0.0-rc.110",
5050
"@types/react": "19.2.7",
5151
"@uploadthing/eslint-config": "workspace:",
5252
"@uploadthing/tsconfig": "workspace:",
5353
"@uploadthing/vitest-config": "workspace:",
54-
"@vitest/coverage-istanbul": "3.2.4",
54+
"@vitest/coverage-istanbul": "4.1.10",
5555
"eslint": "9.25.1",
5656
"react": "19.2.2",
5757
"solid-js": "^1.9.3",
5858
"tsdown": "0.14.1",
5959
"typescript": "5.8.3",
60-
"vitest": "3.2.4",
60+
"vitest": "4.1.10",
6161
"vue": "^3.4.21",
6262
"wait-on": "^8.0.1"
6363
}

packages/uploadthing/package.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,10 +162,10 @@
162162
"@standard-schema/spec": "1.0.0-beta.4",
163163
"@uploadthing/mime-types": "workspace:*",
164164
"@uploadthing/shared": "workspace:*",
165-
"effect": "4.0.0-beta.93"
165+
"effect": "4.0.0-rc.110"
166166
},
167167
"devDependencies": {
168-
"@effect/vitest": "4.0.0-beta.93",
168+
"@effect/vitest": "4.0.0-rc.110",
169169
"@remix-run/server-runtime": "^2.12.0",
170170
"@types/body-parser": "^1.19.5",
171171
"@types/express": "^5.0.0",
@@ -174,7 +174,8 @@
174174
"@uploadthing/eslint-config": "workspace:*",
175175
"@uploadthing/tsconfig": "workspace:*",
176176
"@uploadthing/vitest-config": "workspace:*",
177-
"@vitest/coverage-istanbul": "3.2.4",
177+
"@vitest/browser-playwright": "4.1.10",
178+
"@vitest/coverage-istanbul": "4.1.10",
178179
"body-parser": "^1.20.2",
179180
"eslint": "9.25.1",
180181
"express": "^5.0.1",
@@ -187,7 +188,7 @@
187188
"tsdown": "0.14.1",
188189
"typescript": "5.8.3",
189190
"valibot": "1.0.0-beta.9",
190-
"vitest": "3.2.4",
191+
"vitest": "4.1.10",
191192
"vue": "^3.4.21",
192193
"wait-on": "^8.0.1",
193194
"zod": "^3.24.1"

packages/uploadthing/test/node/request-handler.test.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,7 @@ describe("errors for invalid request input", () => {
113113
expect(res.status).toBe(400);
114114
await expect(res.json()).resolves.toEqual({
115115
message: "Invalid input",
116-
cause: expect.stringContaining(
117-
'Expected "upload" | undefined, got "invalid"',
118-
),
116+
cause: expect.stringContaining('Expected "upload" | undefined'),
119117
});
120118
});
121119
});

packages/uploadthing/vitest.config.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
1-
import { defaultExclude, defineConfig, mergeConfig } from "vitest/config";
1+
import { playwright } from "@vitest/browser-playwright";
2+
import {
3+
defaultExclude,
4+
defineConfig,
5+
defineProject,
6+
mergeConfig,
7+
} from "vitest/config";
28

39
import { baseConfig } from "@uploadthing/vitest-config/base";
410

511
export default mergeConfig(
612
baseConfig,
713
defineConfig({
814
test: {
9-
workspace: [
15+
projects: [
1016
mergeConfig(
1117
baseConfig,
12-
defineConfig({
18+
defineProject({
1319
test: {
1420
include: ["test/node/**/*.test.{ts,tsx}"],
1521
exclude: [...defaultExclude, "test/browser/**"],
@@ -20,14 +26,14 @@ export default mergeConfig(
2026
),
2127
mergeConfig(
2228
baseConfig,
23-
defineConfig({
29+
defineProject({
2430
test: {
2531
include: ["test/browser/**/*.test.{ts,tsx}"],
2632
exclude: [...defaultExclude, "test/node/**"],
2733
name: "browser",
2834
browser: {
2935
instances: [{ browser: "chromium" }],
30-
provider: "playwright",
36+
provider: playwright(),
3137
enabled: true,
3238
},
3339
},

0 commit comments

Comments
 (0)