From 6bf193f6aa08fa842966c0ad013d6c23ffe8bd4a Mon Sep 17 00:00:00 2001 From: 9aoy <9aoyuao@gmail.com> Date: Wed, 14 Jan 2026 17:56:28 +0800 Subject: [PATCH 1/4] test: use rstest projects --- package.json | 2 +- pnpm-lock.yaml | 14 ++++---- tests/rspack-test/package.json | 10 +++--- tests/rspack-test/rstest.config.hot.ts | 7 ---- tests/rspack-test/rstest.config.ts | 46 +++++++++++++++++--------- 5 files changed, 44 insertions(+), 35 deletions(-) delete mode 100644 tests/rspack-test/rstest.config.hot.ts diff --git a/package.json b/package.json index bb382484ad95..8132001260ce 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "cross-env": "^10.1.0", "husky": "^9.1.7", "is-ci": "4.1.0", - "@rstest/core": "^0.7.8", + "@rstest/core": "^0.7.9", "lint-staged": "^16.2.7", "prettier": "3.7.4", "prettier-2": "npm:prettier@2.8.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1cf733f19309..78cf7d83faac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,8 +29,8 @@ importers: specifier: workspace:* version: link:packages/rspack-cli '@rstest/core': - specifier: ^0.7.8 - version: 0.7.8(jsdom@26.1.0) + specifier: ^0.7.9 + version: 0.7.9(jsdom@26.1.0) '@taplo/cli': specifier: ^0.7.0 version: 0.7.0 @@ -733,8 +733,8 @@ importers: specifier: workspace:* version: link:../../packages/rspack-test-tools '@rstest/core': - specifier: ^0.7.8 - version: 0.7.8(jsdom@26.1.0) + specifier: ^0.7.9 + version: 0.7.9(jsdom@26.1.0) '@swc/helpers': specifier: 0.5.18 version: 0.5.18 @@ -3582,8 +3582,8 @@ packages: '@rstack-dev/doc-ui@1.12.2': resolution: {integrity: sha512-4C+tfhODxCp81ohCik9baOdbhYGNFqdwcwQMAESncF0YX3EawdNCORI1E26DqkY/F3ggfKG4qOlEAu+oOxrPxg==} - '@rstest/core@0.7.8': - resolution: {integrity: sha512-A7oN5GLMYuVkTGjXTH+69nz3wR0lxHUkWax+hVq+jNQmcf81ZqJosTLqN6jwFZdmCfHbj3iTd9ku6boo8tJlnA==} + '@rstest/core@0.7.9': + resolution: {integrity: sha512-RHNPS1MDUxtf+1Z0YZi+vIQ13SdvCbcbpzDA7XHcPziTRy2mAPg8nfcms+XzbIp95KXH75ucAhgAKNFO0QgARA==} engines: {node: '>=18.12.0'} hasBin: true peerDependencies: @@ -11237,7 +11237,7 @@ snapshots: - react - react-dom - '@rstest/core@0.7.8(jsdom@26.1.0)': + '@rstest/core@0.7.9(jsdom@26.1.0)': dependencies: '@rsbuild/core': 1.7.1 '@types/chai': 5.2.3 diff --git a/tests/rspack-test/package.json b/tests/rspack-test/package.json index e1ad121a7ae5..fe7ec3a9c3b2 100644 --- a/tests/rspack-test/package.json +++ b/tests/rspack-test/package.json @@ -7,10 +7,10 @@ "author": "", "license": "ISC", "scripts": { - "test": "cross-env RUST_BACKTRACE=full pnpm run --stream /^test:.*/", - "testu": "pnpm run --stream /^test:.*/ -u", - "test:base": "rstest", - "test:hot": "cross-env RSPACK_HOT_TEST=true node --no-warnings --expose-gc --max-old-space-size=8192 --experimental-vm-modules ../../node_modules/@rstest/core/bin/rstest --config ./rstest.config.hot.ts --passWithNoTests" + "test": "rstest", + "testu": "rstest -u", + "test:base": "rstest --project base", + "test:hot": "rstest --project hottest" }, "devDependencies": { "@rspack/cli": "workspace:*", @@ -19,7 +19,7 @@ "@rspack/plugin-preact-refresh": "1.1.4", "@rspack/plugin-react-refresh": "^1.6.0", "@rspack/test-tools": "workspace:*", - "@rstest/core": "^0.7.8", + "@rstest/core": "^0.7.9", "@swc/helpers": "0.5.18", "@swc/plugin-remove-console": "^12.1.0", "@types/babel__generator": "7.27.0", diff --git a/tests/rspack-test/rstest.config.hot.ts b/tests/rspack-test/rstest.config.hot.ts deleted file mode 100644 index 158301288274..000000000000 --- a/tests/rspack-test/rstest.config.hot.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from '@rstest/core'; -import config from './rstest.config' - -export default defineConfig({ - ...config, - include: process.env.WASM ? [] : ["/*.hottest.js"] -}); diff --git a/tests/rspack-test/rstest.config.ts b/tests/rspack-test/rstest.config.ts index d2ec3209a5b3..90636ffe8fad 100644 --- a/tests/rspack-test/rstest.config.ts +++ b/tests/rspack-test/rstest.config.ts @@ -1,5 +1,6 @@ import path from 'node:path'; -import { defineConfig } from '@rstest/core'; +import { defineConfig, defineProject, type ProjectConfig } from '@rstest/core'; + const root = path.resolve(__dirname, "../../"); process.env.NO_COLOR = '1'; @@ -9,7 +10,7 @@ const setupFilesAfterEnv = [ "@rspack/test-tools/setup-expect", ]; -const wasmConfig = process.env.WASM && defineConfig({ +const wasmConfig = process.env.WASM && defineProject({ setupFiles: [...setupFilesAfterEnv, "@rspack/test-tools/setup-wasm"], exclude: [ // Skip because they rely on snapshots @@ -31,20 +32,17 @@ const wasmConfig = process.env.WASM && defineConfig({ "NativeWatcher*.test.js", ], maxConcurrency: 1, - pool: { - maxWorkers: 1, - execArgv: ['--no-warnings', '--expose-gc', '--max-old-space-size=6144', '--experimental-vm-modules'], - } }); -export default defineConfig({ +const sharedConfig = defineProject({ setupFiles: setupFilesAfterEnv, + name: 'base', testTimeout: process.env.CI ? 60000 : 30000, include: [ "*.test.js", ], slowTestThreshold: 5000, - // Retry on CI to reduce flakes + // Retry on CI to reduce flakes retry: process.env.CI ? 3 : 0, resolve: { alias: { @@ -70,13 +68,9 @@ export default defineConfig({ chaiConfig: process.env.CI ? { // show all info on CI truncateThreshold: 5000, - } : undefined, - pool: { - maxWorkers: "80%", - execArgv: ['--no-warnings', '--expose-gc', '--max-old-space-size=8192', '--experimental-vm-modules'], - }, env: { + RUST_BACKTRACE: 'full', updateSnapshot: process.argv.includes("-u") || process.argv.includes("--updateSnapshot") ? 'true' : 'false', RSPACK_DEV: 'false', @@ -104,8 +98,30 @@ export default defineConfig({ __RSPACK_TEST_TOOLS_PATH__: path.resolve(root, "packages/rspack-test-tools"), __DEBUG__: process.env.DEBUG === "test" ? 'true' : 'false', }, - hideSkippedTests: true, - reporters: ['default'], ...(wasmConfig || {}), +}) as ProjectConfig; + + +export default defineConfig({ + projects: [{ + extends: sharedConfig, + name: 'base', + }, { + extends: sharedConfig, + name: 'hottest', + include: process.env.WASM ? [] : ["/*.hottest.js"], + env: { + RSPACK_HOT_TEST: 'true', + }, + }], + reporters: ['default'], + hideSkippedTests: true, + pool: process.env.WASM ? { + maxWorkers: 1, + execArgv: ['--no-warnings', '--expose-gc', '--max-old-space-size=6144', '--experimental-vm-modules'], + } : { + maxWorkers: "80%", + execArgv: ['--no-warnings', '--expose-gc', '--max-old-space-size=8192', '--experimental-vm-modules'], + }, }); From 1bf4e3eec32d214e605bbdb62106311e0238073d Mon Sep 17 00:00:00 2001 From: 9aoy <9aoyuao@gmail.com> Date: Wed, 14 Jan 2026 17:58:52 +0800 Subject: [PATCH 2/4] test: update --- tests/rspack-test/rstest.config.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/tests/rspack-test/rstest.config.ts b/tests/rspack-test/rstest.config.ts index 90636ffe8fad..be7af71c9c82 100644 --- a/tests/rspack-test/rstest.config.ts +++ b/tests/rspack-test/rstest.config.ts @@ -101,7 +101,6 @@ const sharedConfig = defineProject({ ...(wasmConfig || {}), }) as ProjectConfig; - export default defineConfig({ projects: [{ extends: sharedConfig, @@ -116,11 +115,8 @@ export default defineConfig({ }], reporters: ['default'], hideSkippedTests: true, - pool: process.env.WASM ? { - maxWorkers: 1, - execArgv: ['--no-warnings', '--expose-gc', '--max-old-space-size=6144', '--experimental-vm-modules'], - } : { - maxWorkers: "80%", + pool: { + maxWorkers: process.env.WASM ? 1 : "80%", execArgv: ['--no-warnings', '--expose-gc', '--max-old-space-size=8192', '--experimental-vm-modules'], }, }); From 70f7ea7b423c2e6cf397da71adfc69cb166ab215 Mon Sep 17 00:00:00 2001 From: 9aoy <9aoyuao@gmail.com> Date: Wed, 14 Jan 2026 18:12:28 +0800 Subject: [PATCH 3/4] test: output.module --- packages/rspack-cli/rstest.config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/rspack-cli/rstest.config.ts b/packages/rspack-cli/rstest.config.ts index 17b6894cc8d6..ab1b0e96ae29 100644 --- a/packages/rspack-cli/rstest.config.ts +++ b/packages/rspack-cli/rstest.config.ts @@ -22,6 +22,7 @@ export default defineConfig({ }, output: { externals: [/@rspack\/core/], + module: false, }, env: { RUST_BACKTRACE: 'full', From e77d3b82be9460d667b0b1dd8296c48728467356 Mon Sep 17 00:00:00 2001 From: 9aoy <9aoyuao@gmail.com> Date: Wed, 14 Jan 2026 18:55:18 +0800 Subject: [PATCH 4/4] test: update --- tests/rspack-test/rstest.config.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/rspack-test/rstest.config.ts b/tests/rspack-test/rstest.config.ts index be7af71c9c82..aa8c2ead2b58 100644 --- a/tests/rspack-test/rstest.config.ts +++ b/tests/rspack-test/rstest.config.ts @@ -36,7 +36,6 @@ const wasmConfig = process.env.WASM && defineProject({ const sharedConfig = defineProject({ setupFiles: setupFilesAfterEnv, - name: 'base', testTimeout: process.env.CI ? 60000 : 30000, include: [ "*.test.js", @@ -116,7 +115,7 @@ export default defineConfig({ reporters: ['default'], hideSkippedTests: true, pool: { - maxWorkers: process.env.WASM ? 1 : "80%", + maxWorkers: process.env.WASM ? 1 : "80%", execArgv: ['--no-warnings', '--expose-gc', '--max-old-space-size=8192', '--experimental-vm-modules'], }, });