[Optimization] parallel testing (#4075)
* add: vitest projects (multiple) preparations for parallel testing * update: tests workflow better parallel testing
This commit is contained in:
parent
e6a574c48f
commit
ae50db7710
|
@ -15,8 +15,8 @@ on:
|
||||||
types: [checks_requested]
|
types: [checks_requested]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
run-tests: # Define a job named "run-tests"
|
run-misc-tests: # Define a job named "run-tests"
|
||||||
name: Run tests # Human-readable name for the job
|
name: Run misc tests # Human-readable name for the job
|
||||||
runs-on: ubuntu-latest # Specify the latest Ubuntu runner for the job
|
runs-on: ubuntu-latest # Specify the latest Ubuntu runner for the job
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
@ -31,5 +31,75 @@ jobs:
|
||||||
- name: Install Node.js dependencies # Step to install Node.js dependencies
|
- name: Install Node.js dependencies # Step to install Node.js dependencies
|
||||||
run: npm ci # Use 'npm ci' to install dependencies
|
run: npm ci # Use 'npm ci' to install dependencies
|
||||||
|
|
||||||
- name: tests # Step to run tests
|
- name: pre-test # pre-test to check overrides
|
||||||
run: npm run test:silent
|
run: npx vitest run --project pre
|
||||||
|
- name: test misc
|
||||||
|
run: npx vitest --project misc
|
||||||
|
|
||||||
|
run-abilities-tests:
|
||||||
|
name: Run abilities tests
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Check out Git repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Set up Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
- name: Install Node.js dependencies
|
||||||
|
run: npm ci
|
||||||
|
- name: pre-test
|
||||||
|
run: npx vitest run --project pre
|
||||||
|
- name: test abilities
|
||||||
|
run: npx vitest --project abilities
|
||||||
|
|
||||||
|
run-items-tests:
|
||||||
|
name: Run items tests
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Check out Git repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Set up Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
- name: Install Node.js dependencies
|
||||||
|
run: npm ci
|
||||||
|
- name: pre-test
|
||||||
|
run: npx vitest run --project pre
|
||||||
|
- name: test items
|
||||||
|
run: npx vitest --project items
|
||||||
|
|
||||||
|
run-moves-tests:
|
||||||
|
name: Run moves tests
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Check out Git repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Set up Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
- name: Install Node.js dependencies
|
||||||
|
run: npm ci
|
||||||
|
- name: pre-test
|
||||||
|
run: npx vitest run --project pre
|
||||||
|
- name: test moves
|
||||||
|
run: npx vitest --project moves
|
||||||
|
|
||||||
|
run-battle-tests:
|
||||||
|
name: Run battle tests
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Check out Git repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Set up Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
- name: Install Node.js dependencies
|
||||||
|
run: npm ci
|
||||||
|
- name: pre-test
|
||||||
|
run: npx vitest run --project pre
|
||||||
|
- name: test battle
|
||||||
|
run: npx vitest --project battle
|
|
@ -1,38 +1,43 @@
|
||||||
import { defineProject } from 'vitest/config';
|
import { defineProject, UserWorkspaceConfig } from 'vitest/config';
|
||||||
import { defaultConfig } from './vite.config';
|
import { defaultConfig } from './vite.config';
|
||||||
|
|
||||||
|
export const defaultProjectTestConfig: UserWorkspaceConfig["test"] = {
|
||||||
|
setupFiles: ['./src/test/vitest.setup.ts'],
|
||||||
|
server: {
|
||||||
|
deps: {
|
||||||
|
inline: ['vitest-canvas-mock'],
|
||||||
|
//@ts-ignore
|
||||||
|
optimizer: {
|
||||||
|
web: {
|
||||||
|
include: ['vitest-canvas-mock'],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
environment: 'jsdom' as const,
|
||||||
|
environmentOptions: {
|
||||||
|
jsdom: {
|
||||||
|
resources: 'usable',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
threads: false,
|
||||||
|
trace: true,
|
||||||
|
restoreMocks: true,
|
||||||
|
watch: false,
|
||||||
|
coverage: {
|
||||||
|
provider: 'istanbul' as const,
|
||||||
|
reportsDirectory: 'coverage' as const,
|
||||||
|
reporters: ['text-summary', 'html'],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
export default defineProject(({ mode }) => ({
|
export default defineProject(({ mode }) => ({
|
||||||
...defaultConfig,
|
...defaultConfig,
|
||||||
test: {
|
test: {
|
||||||
|
...defaultProjectTestConfig,
|
||||||
name: "main",
|
name: "main",
|
||||||
include: ["./src/test/**/*.{test,spec}.ts"],
|
include: ["./src/test/**/*.{test,spec}.ts"],
|
||||||
exclude: ["./src/test/pre.test.ts"],
|
exclude: ["./src/test/pre.test.ts"],
|
||||||
setupFiles: ['./src/test/vitest.setup.ts'],
|
|
||||||
server: {
|
|
||||||
deps: {
|
|
||||||
inline: ['vitest-canvas-mock'],
|
|
||||||
optimizer: {
|
|
||||||
web: {
|
|
||||||
include: ['vitest-canvas-mock'],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
environment: 'jsdom' as const,
|
|
||||||
environmentOptions: {
|
|
||||||
jsdom: {
|
|
||||||
resources: 'usable',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
threads: false,
|
|
||||||
trace: true,
|
|
||||||
restoreMocks: true,
|
|
||||||
watch: false,
|
|
||||||
coverage: {
|
|
||||||
provider: 'istanbul' as const,
|
|
||||||
reportsDirectory: 'coverage' as const,
|
|
||||||
reporters: ['text-summary', 'html'],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
esbuild: {
|
esbuild: {
|
||||||
pure: mode === 'production' ? [ 'console.log' ] : [],
|
pure: mode === 'production' ? [ 'console.log' ] : [],
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import { defineWorkspace } from "vitest/config";
|
import { defineWorkspace } from "vitest/config";
|
||||||
import { defaultConfig } from "./vite.config";
|
import { defaultConfig } from "./vite.config";
|
||||||
|
import { defaultProjectTestConfig } from "./vitest.config";
|
||||||
|
|
||||||
export default defineWorkspace([
|
export default defineWorkspace([
|
||||||
{
|
{
|
||||||
|
@ -10,5 +11,58 @@ export default defineWorkspace([
|
||||||
environment: "jsdom",
|
environment: "jsdom",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
...defaultConfig,
|
||||||
|
test: {
|
||||||
|
...defaultProjectTestConfig,
|
||||||
|
name: "misc",
|
||||||
|
include: [
|
||||||
|
"src/test/achievements/**/*.{test,spec}.ts",
|
||||||
|
"src/test/arena/**/*.{test,spec}.ts",
|
||||||
|
"src/test/battlerTags/**/*.{test,spec}.ts",
|
||||||
|
"src/test/eggs/**/*.{test,spec}.ts",
|
||||||
|
"src/test/field/**/*.{test,spec}.ts",
|
||||||
|
"src/test/inputs/**/*.{test,spec}.ts",
|
||||||
|
"src/test/localization/**/*.{test,spec}.ts",
|
||||||
|
"src/test/phases/**/*.{test,spec}.ts",
|
||||||
|
"src/test/settingMenu/**/*.{test,spec}.ts",
|
||||||
|
"src/test/sprites/**/*.{test,spec}.ts",
|
||||||
|
"src/test/ui/**/*.{test,spec}.ts",
|
||||||
|
"src/test/*.{test,spec}.ts",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
...defaultConfig,
|
||||||
|
test: {
|
||||||
|
...defaultProjectTestConfig,
|
||||||
|
name: "abilities",
|
||||||
|
include: ["src/test/abilities/**/*.{test,spec}.ts"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
...defaultConfig,
|
||||||
|
test: {
|
||||||
|
...defaultProjectTestConfig,
|
||||||
|
name: "battle",
|
||||||
|
include: ["src/test/battle/**/*.{test,spec}.ts"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
...defaultConfig,
|
||||||
|
test: {
|
||||||
|
...defaultProjectTestConfig,
|
||||||
|
name: "items",
|
||||||
|
include: ["src/test/items/**/*.{test,spec}.ts"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
...defaultConfig,
|
||||||
|
test: {
|
||||||
|
...defaultProjectTestConfig,
|
||||||
|
name: "moves",
|
||||||
|
include: ["src/test/moves/**/*.{test,spec}.ts"],
|
||||||
|
},
|
||||||
|
},
|
||||||
"./vitest.config.ts",
|
"./vitest.config.ts",
|
||||||
]);
|
]);
|
||||||
|
|
Loading…
Reference in New Issue