Skip to content

Commit 7732175

Browse files
feat: vitest 4 migration
1 parent 3f944c5 commit 7732175

File tree

10 files changed

+235
-365
lines changed

10 files changed

+235
-365
lines changed

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,23 +60,23 @@
6060
},
6161
"peerDependencies": {
6262
"@builder.io/qwik": ">=1.14.1",
63-
"@vitest/browser": "^3.2.4",
63+
"@vitest/browser-playwright": "^4.0.0",
6464
"vite": ">=6.3.5",
65-
"vitest": "^3.1.3"
65+
"vitest": "^4.0.0"
6666
},
6767
"devDependencies": {
6868
"@biomejs/biome": "2.0.0",
6969
"@builder.io/qwik": "^1.15",
7070
"@oxc-project/types": "^0.73.2",
7171
"@playwright/test": "see flake.nix",
7272
"@types/node": "^22.15.17",
73-
"@vitest/browser": "^3.2.4",
73+
"@vitest/browser-playwright": "^4.0.0",
7474
"bumpp": "^10.1.0",
7575
"oxc-resolver": "^11.2.0",
7676
"oxc-walker": "^0.3.0",
7777
"tsdown": "^0.11.9",
7878
"typescript": "^5.8.3",
79-
"vitest": "^3.1.3"
79+
"vitest": "^4.0.0"
8080
},
8181
"pnpm": {
8282
"overrides": {

pnpm-lock.yaml

Lines changed: 181 additions & 333 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { JSXNode, JSXOutput } from "@builder.io/qwik";
2-
import { page } from "@vitest/browser/context";
32
import { beforeEach } from "vitest";
3+
import { page } from "vitest/browser";
44
import { cleanup, type RenderResult, render, renderServerHTML } from "./pure";
55

66
export function renderSSR(jsxNode: JSXOutput): Promise<RenderResult> {
@@ -32,7 +32,7 @@ beforeEach(async () => {
3232
await cleanup();
3333
});
3434

35-
declare module "@vitest/browser/context" {
35+
declare module "vitest/browser" {
3636
interface BrowserPage {
3737
render: typeof render;
3838
renderServerHTML: typeof renderServerHTML;

src/pure.tsx

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
import type { JSXOutput } from "@builder.io/qwik";
22
import { component$, render as qwikRender } from "@builder.io/qwik";
33
import { getQwikLoaderScript } from "@builder.io/qwik/server";
4-
import type { Locator, LocatorSelectors } from "@vitest/browser/context";
5-
import {
6-
debug,
7-
getElementLocatorSelectors,
8-
type PrettyDOMOptions,
9-
} from "@vitest/browser/utils";
4+
import type { Locator, LocatorSelectors } from "vitest/browser";
5+
import { type PrettyDOMOptions, utils } from "vitest/browser";
6+
7+
const { debug, getElementLocatorSelectors } = utils;
108

119
export interface RenderResult extends LocatorSelectors {
1210
container: HTMLElement;

src/ssr-plugin-utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ export function resolveComponentPath(
216216
export function hasCommandsImport(node: Node): boolean {
217217
if (
218218
!isImportDeclaration(node) ||
219-
node.source?.value !== "@vitest/browser/context" ||
219+
node.source?.value !== "vitest/browser" ||
220220
!node.specifiers
221221
) {
222222
return false;

src/ssr-plugin.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ export function testSSR(): Plugin {
299299
if (lastImportEnd > 0) {
300300
s.appendLeft(
301301
lastImportEnd,
302-
'\nimport { commands } from "@vitest/browser/context";\nimport { renderServerHTML } from "vitest-browser-qwik";',
302+
'\nimport { commands } from "vitest/browser";\nimport { renderServerHTML } from "vitest-browser-qwik";',
303303
);
304304
}
305305
}

test/render.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { component$, useSignal } from "@builder.io/qwik";
2-
import { page } from "@vitest/browser/context";
32
// import { Button } from "react-aria-components";
43
import { expect, test } from "vitest";
4+
import { page } from "vitest/browser";
55
import { render } from "../src/index";
66
import { Counter } from "./fixtures/Counter";
77
import { HelloWorld } from "./fixtures/HelloWorld";

test/ssr-plugin.test.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ describe("SSR Transform Plugin", () => {
210210
expect(result.code).toContain('"Counter"');
211211
expect(result.code).toContain('"initialCount": 5');
212212
expect(result.code).toContain(
213-
'import { commands } from "@vitest/browser/context"',
213+
'import { commands } from "vitest/browser"',
214214
);
215215
});
216216

@@ -260,19 +260,19 @@ describe("SSR Transform Plugin", () => {
260260
const transform = plugin.transform as TransformFunction;
261261

262262
const code = `
263-
import { commands } from "@vitest/browser/context";
264-
import { Counter } from "./fixtures/Counter";
265-
266-
test("example", () => {
267-
renderSSR(<Counter />);
268-
});
269-
`;
263+
import { commands } from "vitest/browser";
264+
import { Counter } from "./fixtures/Counter";
265+
266+
test("example", () => {
267+
renderSSR(<Counter />);
268+
});
269+
`;
270270

271271
const result = await transform(code, "/test/existing-commands.test.tsx");
272272
expect(result).not.toBeNull();
273273
// Should not add duplicate import
274274
const importMatches = result.code.match(
275-
/import.*commands.*from.*@vitest\/browser\/context/g,
275+
/import.*commands.*from.*vitest\/browser/g,
276276
);
277277
expect(importMatches).toHaveLength(1);
278278
});

tsdown.config.ts

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,27 @@
11
import { defineConfig } from "tsdown";
22

3-
export default defineConfig({
4-
entry: ["./src/index.ts", "./src/pure.tsx", "./src/ssr-plugin.ts"],
5-
format: ["esm"],
6-
dts: true,
7-
platform: "browser",
8-
});
3+
export default defineConfig([
4+
{
5+
entry: ["./src/index.ts", "./src/pure.tsx"],
6+
format: ["esm"],
7+
dts: true,
8+
platform: "browser",
9+
},
10+
{
11+
entry: ["./src/ssr-plugin.ts"],
12+
format: ["esm"],
13+
dts: true,
14+
platform: "neutral",
15+
external: [
16+
/^node:/,
17+
"oxc-parser",
18+
"oxc-resolver",
19+
"magic-string",
20+
"@builder.io/qwik",
21+
"@builder.io/qwik/optimizer",
22+
"@builder.io/qwik/server",
23+
"vitest/config",
24+
"vitest/node",
25+
],
26+
},
27+
]);

vitest.config.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
import { qwikVite } from "@builder.io/qwik/optimizer";
2+
import { playwright } from "@vitest/browser-playwright";
23
import { defineConfig } from "vitest/config";
34
import { testSSR } from "./src/ssr-plugin";
45

56
export default defineConfig({
67
plugins: [testSSR(), qwikVite()],
78
test: {
9+
testTimeout: 2000,
810
browser: {
911
enabled: true,
10-
provider: "playwright",
12+
provider: playwright({
13+
launchOptions: {
14+
headless: false,
15+
},
16+
}),
1117
instances: [{ browser: "chromium" }],
12-
headless: true,
1318
},
1419
exclude: ["node_modules", "test/ssr-plugin.test.ts"],
1520
},

0 commit comments

Comments
 (0)