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/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', 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..aa8c2ead2b58 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,16 @@ 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, 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 +67,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 +97,26 @@ 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: { + maxWorkers: process.env.WASM ? 1 : "80%", + execArgv: ['--no-warnings', '--expose-gc', '--max-old-space-size=8192', '--experimental-vm-modules'], + }, });